Servo motion control problem

M

Thread Starter

Me

Hi all,

I am having problems doing motion control with a servo motor. The problem is that the error (difference between setpoint position and acutal position) never, or almost never, reaches zero, but oscillates slowly about zero, e.g. 1 to -1 increments.

I do the motion control using a DAQ-card, and it is desirable that the system reaches an exact position, i.e. error=zero.

I think the problem has to do with the finite min. velocity at which my axis can move. When the axis has stopped, and the error is small, but non-zero, the PID output starts to increase due to the integral term, and the axis stays still until the output reaches a voltage that is high enough to start the axis. However, at this point the axis moves too far, and then the same thing happens but in the opposite direction, repeatingly until by chance it manages to stop at a zero error.

The voltage-band around zero (-1 to 1V) at which the signal is too weak to start the axis I have tried to compensate with a look-up table. However, it doesn't remedy my problem, only shortens the oscillation period.

Any hints, someone?!!

thanks,
Mats
 
Hi,
I guess this is what we call as Limit Cycling Problem. From what I know, there is a possible solution for it. I personally haven't tried it yet on the real system but from the simulation software that I built from Matlab, it seems that this method actually works. I am using the PID controller (PMAC) from Delta Tau and there is something called the DEADBAND inside the controller, setting this parameter (in term of motor encoder counts) might help. But of course I wouldn't advise you to set a large count values as this will decrease the sensitivity of the system. Hope that this solve the problem.

Best Regards,
Steve
Heason Technologies Group Ltd.
http://www.heason.com
 
G

George Younkin

Mats What you describe is the well known " limit cycle" of an unstable positioning servo. The limit cycle is usually only a few Hz. The servo alternately moves back and forth a very small amount of position at a very slow rate as you describe. There can be a number of things to look at. One classic cause is "stiction". Stick-slip (stiction) is a form of nonlinearity. I have had this problem with both hydraulic drives and electric servos. The cure was to add a "change-in-gain" nonlinearity. What this does is to raise the gain of the velocity servo around zero position, about 10/1 and then drop the gain to normal once the servo starts to move.

Another cause could be some small amount of lost motion (backlash). Contact me if you want further discussion. Regards George W. Younkin, P.E., IEEE Fellow Staff Engineer Bull's Eye Marketing, Inc. Industrial Controls Consulting Div. 104 S. Main St., Suite 320 Fond du Lac, WI 54935
Tel: 920: 929-6544
Fax: 920: 929-9344
E-mail: [email protected]
 
Hello. Check the resolution of the CAM (are you using a CAM positioner??). Do they match (driver-CAM). Motor is new?? Brake-clutch hits the performance.

Oscar.
 
A closed-loop servo system works based on error. There is ALWAYS an error present therefore the error can not be Zero. Servo system diter is normal so if you have it down to +/- 1 count, then there is not much more you can do.
 
C
On August 18, 2003, SERVOCAM wrote:
<clip>
> There is ALWAYS an error present therefore the error can not be Zero.
<clip>

This is just not true. If your actual position value is equal to your commanded position value, you have zero error, and often you can just sit there.

However, the larger point is well taken. You are better off not counting on settling quickly and reliably to the exact count. On any integration project, I consider such a requirement to be a deal-breaker, and I walk away. I like to see a count resolution at least 5 times, and preferably 10 times higher than the required in-position tolerance.

Curt Wilson
Delta Tau Data Systems
 
Hi

It's a good idea. I agree with you. But improve resolution will decrease the system stability.

William
 
Top