Anti-Windup Control

When the controller sends signals to the motor to accelerate at a very high rate, it’s possible that the values are beyond the motor’s capabilities. This is likely to happen in the case of large and long-lasting control deviations. If the controller has no knowledge about the motor’s physical properties, the signal would remain saturated, even after the control error has been compensated: the motor would still accelerate at maximum power, which would result in large overshoot or even instability.
Saturation limits for the integrator are introduced and can be set in the controller options (Integrator boundaries) to limit the integrator output.

The Anti-windup control algorithm is implemented with the following approach:

\[u_i (k)~ = u_i (k-1)~ + K_I·T·e(k)\]\[ if ~|( u_i (k))| ≥ l,~ then ~u_i (k)~ = u_i(k)-K_I·T·e(k)\]

with:

\(e\): control deviation

\(u_i\): Output of the integral part

\(T\): Sample time

\(K_I\): Integral gain

\(l\): Integrator limit

Explanation: If the integral part of the controller goes higher than the value of the controller’s output limit, the value that was previously added to integral is automatically subtracted.

This method is known as “clamping”. It requires no tuning.

Detail view on the integrator branch with anti-windup, as used in SOMANET controllers:

../../../../../../../../../_images/anti_windup_control.png

The described implementation of the integration algorithm is used in all motion controllers (both integrators of the cascaded position controller, integrator of the PID position controller, integrator of the PID velocity controller). The variable Integrator limit is defined by the objects 2012:4, 2012:8 and 2011:4 respectively.

Values Kp, Ki, Kd and Integrator Limit for Velocity Controller

Values Kp, Ki, Kd and Integrator Limit for Cascaded Position Controller (Both loops: Position and Velocity)