lanenwie Posted September 14, 2014 Share Posted September 14, 2014 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! Link to comment Share on other sites More sharing options...
curtwilson Posted September 15, 2014 Share Posted September 15, 2014 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. Link to comment Share on other sites More sharing options...
Recommended Posts