Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Setting up feedforward torque to servo loop via virtual motors
#1
Hi DT support,

I am trying to set up a feedforward torque control delta robot. The inverse dynamics has been calculated and I plan to upload a list of compensating torque to the 3 motors used to actuate the manipulator.

Currently, a PMAC card
(VERSION: 1.17C ;TYPE: PMAC1, ISA/VME, FLASH, PID, CLK X2)
is used control the robot through the on board position servo loop. I hope to reduce following errors by introducing this compensating torque.

I wonder if it is possible to use virtual motors to update the torque compensating tables of the real motors for every servo cycle? I hope to map the 'commanded position' of the virtual motors (really the calculated torque) to the torque compensation tables or the real motors.

Would a PLC program be sufficient to do this?

Ideally, I hope to implement a motion program script which would look something like this:

%%%%%%%%%%%%%%%%%%%%%%%%
SPLINE1 TA50
X45 Y45 Z45 A(torquetermX) B(torquetermY) C(torquetermZ)
...
%%%%%%%%%%%%%%%%%%%%%%%%
or
%%%%%%%%%%%%%%%%%%%%%%%%
PVT 50
X45:00 Y45:00 Z45:00 A(TorqueX:TorqueX') B(TorqueY:TorqueY') C(TorqueZ:TorqueZ')
....
%%%%%%%%%%%%%%%%%%%%%%%%

where X,Y,Z are the real motor angles and A,B,C are the virtual coordinate systems.

Thanks in advance!
Reply
#2
I think you have a good strategy here. To implement this, assuming X, Y, and Z use Motors 1, 2, and 3 in C.S. 1:

- Assign your A, B, and C "axes" in C.S. 1 to PMAC Motors 4, 5, and 6. These will operate as virtual motors.

- Set Ix03 and Ix04 for these motors to the address of a register that always holds a zero value (e.g. X:$0770). This means that the following error will be equal to the motor command "position" (which is a torque value for you).

- Set all servo gains except Ix30 to 0. The proportional gain term Ix30 will act as a scale factor to the output.

- Set the Ix02 servo output address parameter to the address of the torque offset register for the real motor you want to affect. The addresses are $45 for Motor 1, $81 for Motor 2, and $BD for Motor 3.

- Set Ix11 for the virtual motors to 0 to disable fatal following error limit.

- Set bit 20 and bit 17 of Ix25 to 1 on virtual motors to disable amplifier fault and overtravel limit functions.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)