10-02-2009 12:01 PM
Hello,
I am hoping to find some help here with the following problem, which I am trying to solve for several days now....
I am using the UMI-7774 and an AC servo-motor-driven linear actuator to do force control. Basically, I need the actuator to apply a constant force and react quickly to force changes. My system setup is as follows: I am using a PCI-7344 Motion Control Card to provide the analogue command signal (0-10V). This signal is supplied to the actuator controller (through a UMI-7774), which transforms the command signal to an amperage command signal (0-2.17Arms). This is the signal controlling the actuator’s torque. The actuator controller is working in torque mode. I use a Kistler PZT force sensor (ring type) and a Kistler amplifier as my feedback source. The signal from the sensor amplifier is directly connected to the ADC of the UMI. I am using MAX to tune my system and define a PID controller that gives me a good step response.
(1) The results so far show that it works in principle, but I believe my system is not yet tuned optimally. However, the best step response results I have obtained and the PID parameters I used are shown in the attached files. As I am relatively new to this area, could you please advise me on how I could further improve the step response of the system? The current rise time and overshoot values are very good (a 3% overshoot would also be acceptable), but the observed undershoot is causing delayed settling. Also, the oscillation observed during undershoot is something I would like to remove.
(2) I have tried increasing Kp and Kd values. Increased Kd does not seem to correct the oscillation problem. On the contrary, it destabilises the system. Increasing Kp causes an unwanted overshoot. I have also tried to reduce the Derivative Sampling Period but that gave even worse results (System Inertia: J = 1.8629*10^-5 Kgm^2). At Td=2 the actuator was retracting on its own to its home position when I set Ki>=8. I got the most stable behaviour using Td=4. Is there any other way I could improve the actuator’s response?
(3) I have seen that in some cases people have used a “double PID loop” one for the encoder feedback and one for the force feedback. Do you believe that this would improve system behaviour? If so, how could I implement two PID loops? I mean, MAX only allows me to enter one set of PIDs....or is there a possibility to set up a second PID-loop somewhere?....I have seen that the "Force Control Using Monitoring Force" example essentially works with two Closed-loops, but one of them is implemented in the application software and this would result in a non-deterministic and comparatively slow response of the system, right??
Sorry for the long post and thanks a lot in advance for help and advice.
10-05-2009 04:04 AM - edited 10-05-2009 04:12 AM
Hello Tommasos,
thank you for the comprehensive problem descripiton. When looking at the screenshot of your step response several questions came to my mind:
Without touching the system it's a bit hard for me to provide advice regarding the PID parameters, but I think you first need to tackle the non-linearities of your system before you can proceed with the finetuning.
To answer your question #3: With NI motion devices you can use dual loop feedback for position control (two encoders), but I can't think of a reasonable way to use an encoder together with analog feedback for force control.
Finally here are some more questions that might be worth some investigations:
Kind regards,
Jochen Klier
National Instruments
10-08-2009 12:02 PM
Hello Jochen and thank you for your very nice reply.
The past few days I have been trying to implement your advice, but unfortunately I did not have much success. Let me start by saying that explanations to my problem, the 2nd one looked more probable, as I always make sure that there is contact between my actuator and the workpiece I am pushing against. So, I unmapped my DAC by setting up the axis as a stepper axis with no feedback and I used the Load DAC to apply voltage and see when my actuator starts moving. That gave me the upper and lower limits for the Static Friction Compensation filter (please refer to attached image). I then implemented this filter and tried to retune the PID parameters, but the results I got were poor.
Do you perhaps have an explanation or comments for this behaviour? As for your other questions:
Thank you,
Thomas
10-08-2009 12:05 PM
10-09-2009 02:22 AM
Hi Thomas,
that's strange behavior indeed. From the distance it's hard to explain what's going on, but here are some more ideas:
Thank you for answering my questions, but the NI-Motion version doesn't seem to be plausible to me. The current version is 8.0f1. Could you please check in MAX (Software), which version you are using? In general it's recommended to use the current version.
Thanks,
Jochen
11-05-2009 05:40 AM
Hello Jochen,
Sorry for the delayed response. I have actually managed to solve the problem. I updated the NI-motion as you advised (it was v7.3 if I remember correctly), implemented a lowpass filter and adjusted the integration limit, but what really made the difference was the integrative gain adjustment. I was following a conservative approach when adjusting this and was keeping values low. However, it was when I increased the Ki value significantly (Ki=300) that the behaviour of the actuator became ideal. Actually all gains were given high values.
So just in case any other users stumble accross the same problem with the same actuator (Thompson EC2 with AKM23 motor), the solution that worked (for me at least), was the use of high a Ki value.
Thank you Jochen for all your help and advice!
Thomas