07-31-2009 12:16 PM
Hello,
I really hope to find somee help here...I have a UMI-7744 and I would like to do force control for a servo motor. I have tried the NI-Motion example "Torque Cntrl Using Monitoring Force"...it seems to be quite easy - it constantly measures the current force and compares the ADC-values with the target force. The difference between the two is then new relativ position...
When I test it with an actuator that does not touch the workpiece (current force==>0N) and then tell it to apply 50N (ADC-value of ~1000) then of course it starts moving towards the workpiece, but then overshoots quite significantly when it touches it, then undershoots, then overshoots, then undershoots....etc....
(1) Apart from the big overshoot, I would have assumed that the failure decreases over time and the force will be maintained at some point, but the actuator keeps on oscilating around the target force with quite high amplitudes...:(....does any body have an idea for the reason?????....How is it possible that the controller actually approaches the target force, ie. the over/undershoot should get smaller with every cycle...
(2) I was assuming that the problem is because I load quite large relative positions (1000 - 0 = 1000) while the actuator is not yet in contact with the workpiece which then causes the overshoot when the actuator touches the workpiece. Hence, I tried limiting the relative positions to +/- 100, but it seems that it does not improve anything. The actuator still never maintains a steady force.Any idea, why limiting the relative positions does not have an effect on the oscillation??
(3) I have seen that the use a delay of 50ms. Hence every 50ms a new target position is loaded. Is there any experience of what the BEST time delay is for motion control???? Is it better to decrease the delay to adjust the relative position more often OR would this have negative effects because the moves don;t have enough time to complete??????
I am grateful for any reply...
08-03-2009 06:42 AM
Hello,
both, position and torque control are closed loop control processes that require tuning. If you see significant oscillations the first suspects are wrong PID parameters. Please refer to this page for further information about tuning. For the torque tuning process you should make sure that the axis' is already in contact with the workpiece or a substitute. Otherwise the only way to generate torque is building up acceleration, which could result in a massive crash.
As most terms that are used in the documentation of NI-Motion are related to position control, please refer to this document, that provides information about the concepts of force/torque control.
Kind regards,
Jochen Klier
National Instruments
08-06-2009 11:38 AM
Hello Jochen,
first of all - thanks a lot for taking the time to help me. However, I still have some questions.....
(1) As said before we are using torque control with monitoring force. I have NOT directly cabled the force sensor to the ADC input of the axis though. Instead, the torque feedback is read by the application programme using NI-DAQmx routines (this works fine - I get the correct ADC-values from the force sensor). This should not be a problem as long as the force feedback resolution is the same as the position feedback resolution of the motion controller, correct???...i.e. the force feedback is a 16-bit DAC-value (0..+10V, 0->0N, 65536->3000N) --> if I set the encoder resolution to 65536 steps per rev, this should be fine, correct??...Or do I have to cable the force sensor into the UMI-board in any case?????....
(2) In the code example of "Torque control using Monitoring Force" the operation mode is set to RELATIVE and the difference between the current and desired DAC-values is loaded as a relative position. Now, I am wondering about the effects of this....IF the while-loop in the program begins a new cycle while the controller is still busy with the last relative movement, I understand from the manual that the new relative position will NOT be relative to the current position, but relative to the target position of the current move. In other words, the motor will complete its current motion before doing the next relative move. Therefore, would the relative positions not accumulate to large values IF my while-loop loads a new relative position, before the current motion is actually complete???....Should the correct behaviour not be that the current move is stopped and the motor does the relative movement from its current position??
(3) "For the torque tuning process you should make sure that the axis' is already in contact with the workpiece or a substitute." --> you mean I shall put a workpiece infront of the acutator and do a step response??...
Thanks a lot for any reply.
08-10-2009 06:56 AM
Regards,
Jochen
08-10-2009 08:16 AM
Hello Jochen,
thanks again for the answer. I have the "Torque control using monitonitoring Force"-example from the NI-motion manual (http://www.ni.com/pdf/manuals/371242b.pdf), chapter 13., page 13.11.
As I understand the example, you have two closed loop. One inner PID-closed loop for position, and one outer loop for the force which adjusts the force programmatically in the application software. Since the second (outer) loop for the force actually happens in the application program, I dont really see why I MUST get the force signal from the motion controller's DAC...
Also, I am a bit confused now by your answer to question (1) - because you sound like that the "Torque Control using monitoring force"-approach as described in the NI-Motion manual is not a good way to do???? It seems that you assume I am doing the "Torque Control using Analog Feedback"-approach, but I am not (at least not atm..:)..).
Finally, if I choose to do "Torque Control using monitoring Force" - is it correct that my motor needs to run in Position-Mode (and not Torque mode), because the inner PID-Loop is for the Position and not the torque??.....maybe it was one of my mistakes that I tried this example while the Motor was set up in Torque mode....
08-10-2009 10:16 AM - edited 08-10-2009 10:20 AM
Well, let's take it like that: The second approach is ok, if the dynamics of the torque are very low. The worst case scenario for this approach is a solid actuator pressing against a solid workpiece. When these two pieces meet, a force occurrs almost instantaneously. That means, that very short move distances result in high force differences. With your current approach this means that it's very hard to control the force, as in fact the only way to generate force is to move the axis a bit. If you control the force directly instead (analog feedback), you will get a much better control behavior.
To clarify the idea behind that:
Just think of two metal plates lying on each other on the floor. Now you step on the upper metal plate. Does the upper metal plate move? No. Is there a change of the force applied to the lower plate? Yes.
To summarize: 'Torque Control using monitoring force' works best in systems with very low dynamics and a soft contact between actuator and workpiece. still all the limitations that I have mentioned in my first post are true, so I strongly recommend to use analog force feedback.
Your last statement about running the motor in position or torque mode is not clear to me. Are you referring to operation modes of your drive (by the way, which drive are you using?). In this case the clear recommendation is to configure your drive always in torque mode, regardless of the type of control provided by the 73xx device that you are using. From a drive's point of view 'torque mode' means, that the analog input voltage (command input) is converted into a proportional current signal and that's in both modes the best option.
Jochen
08-10-2009 10:41 AM
Hi Jochen,
thanks for the clarification on the pros and cons of the two Torque control approaches...very enlightening...:)...
To clarify my previous question: I am using the S200VTS-Servo Drive from Danaher Motion. The drive is able to run in Torque-mode, Velocity-mode and Position-mode. In the latter case it needs a "step and direction" input, instead of an analog input. My idea was to setup the S200-drive in Position-mode because in the "Torque Control using monitoring Force"-example the inner PID loop is for the position...so I thought, why shall I setup the S200-drive in torque mode, when actually the PID-loop tries to control the Position.....you know what I mean? It appeared to me, that with setting up the drive in torque mode and running the example code with the positional PID-loop I am mixing force and position....
Kind regards and thanks a lot for your efforts.
Well, let's take it like that: The second approach is ok, if the dynamics of the torque are very low. The worst case scenario for this approach is a solid actuator pressing against a solid workpiece. When these two pieces meet, a force occurrs almost instantaneously. That means, that very short move distances result in high force differences. With your current approach this means that it's very hard to control the force, as in fact the only way to generate force is to move the axis a bit. If you control the force directly instead (analog feedback), you will get a much better control behavior.
To clarify the idea behind that:
Just think of two metal plates lying on each other on the floor. Now you step on the upper metal plate. Does the upper metal plate move? No. Is there a change of the force applied to the lower plate? Yes.
To summarize: 'Torque Control using monitoring force' works best in systems with very low dynamics and a soft contact between actuator and workpiece. still all the limitations that I have mentioned in my first post are true, so I strongly recommend to use analog force feedback.
Your last statement about running the motor in position or torque mode is not clear to me. Are you referring to operation modes of your drive (by the way, which drive are you using?). In this case the clear recommendation is to configure your drive always in torque mode, regardless of the type of control provided by the 73xx device that you are using. From a drive's point of view 'torque mode' means, that the analog input voltage (command input) is converted into a proportional current signal and that's in both modes the best option.
Jochen
08-11-2009 02:44 AM
You are right that it doesn't matter too much, which device, controller or drive do the position control, so for a position control system both approaches are valid (MC: position control and drive: torque control or MC: step and direction and drive: position control). But if the physical unit that you want to control is torque or force and not position, using position control as the inner loop is a very indirect approach and depending on the circumstances results may vary...
Good luck with your application!
Jochen