10-13-2008 09:40 AM
Hi, I'm trying to tune a servo motor on a PXI-7358 using MAX 1D interactive without success. My problem is the motor hunts around the target position.
I have tried auto-tuning and varying trajectory settings and move constraints (dead band etc.) and now have move complete staus as true, however the motor just keeps hunting.
I have inhibit enabled and would like to have the motor energised only for the move i.e. as soon as position is within dead zone kill axis.
Is this possible in MAX or do i have to write LabVIEW 8.5 code.
many thanks
Darren
Solved! Go to Solution.
10-13-2008 07:21 PM
10-14-2008 03:23 AM - edited 10-14-2008 03:23 AM
If tuning is the issue, please refer to these documents:
A Simple Method for Servo Motor Tuning
Additionally if you want the axis to be deenergized within a certain window around your target position, you could use the Static Friction Deadzone for this purpose. You can find this feature on the Filter Settings tab in the Control Loop Settings in MAX. Here is the description from the NI-Motion help:
Deadzone
The maximum and minimum deadzones are the windows around a static position that determine its sensitivity to external forces that try to move it from its position.
Inside the maximum deadzone window, an axis can be moved without response. As soon as the movement causes the axis to exceed the maximum deadzone, the control loop responds by correcting the position back to within the window defined by minimum deadzone.
I hope that helps,
Jochen
10-14-2008 05:02 AM
10-14-2008 05:36 AM
Hi Brian and Jochen
thanks for your reply.
I think the problem is when our motor is enabled the 60kg device being moved free falls toward the ground. The chattering at a constant position is therefore the motor repeatedly pull it back into position then releasing it in the deadzone only to have to catch it again.
Killing the axis at the end of a move seems to be the only way to stop this. I have writtern a simple piece of code that loops until the target is reached and kills axis at the exit of the loop. But this dosn't appear possible in MAX.
The only problem with the code method seems to be the final position can be upto 1000 counts out (16384 counts/rpm). I'm guessing this is a tuning issue. I used auto tune and produced kp 3294 kd 22688 ki 657, and am now in the process of manually tuning as per 'a simple method for servo motor tuning'. I'm trying to do this for low speed motion with a reduced torque output voltage and a high speed motion with a standard torque voltage. It looks like i'll need PID settings for each.
many thanks
Darren
10-14-2008 07:10 AM
10-14-2008 08:03 AM
For the case, that you want to try Brian's idea, you can find the offset settings at the same location in MAX as the static friction settings.
You are absolutely right that you might have to tune the system for the two different use cases, as the parameters of a PID controller are only valid within a certain range of torque and velocity.
10-14-2008 08:17 AM
Hi Brian and Jochen
have reset deadband etc. to defaults and applied an torque offset and it seems to have done the trick. Now I just need to tune the motor.
Many thanks for your assistance.
Darren