51 lines
2.5 KiB
Markdown
51 lines
2.5 KiB
Markdown
+++
|
|
title = "Anti-Windup Control"
|
|
author = ["Dehaeze Thomas"]
|
|
draft = false
|
|
category = "Control Theory"
|
|
subcategory = "Fundamentals"
|
|
+++
|
|
|
|
Tags
|
|
:
|
|
|
|
Anti-windup control deals with the problem of **actuator saturation**.
|
|
|
|
When the control signal \\(u\\) requested by the controller exceeds the actuator limits, the actual actuator input is clipped and the plant no longer responds as the controller expects.
|
|
If the controller contains an integrator, it keeps integrating the error even though the plant input is saturated: the integral state "winds up" to a very large value.
|
|
When the error finally changes sign, this large integral state has to be unwound first, which leads to large overshoot, long settling time, and possibly instability.
|
|
|
|
This is mostly relevant for [Voice Coil Actuators]({{< relref "voice_coil_actuators.md" >}}), which have a limited current/force range and are usually controlled with high-gain integral action.
|
|
It is much less relevant for [Piezoelectric Actuators]({{< relref "piezoelectric_actuators.md" >}}).
|
|
|
|
In order to implement anti-windup, the integrator usually has to be **explicit** in the controller (i.e. a separate integral term whose state can be modified).
|
|
This is one of the reasons why the PID controller is so useful: the integral action is clearly separated from the other terms.
|
|
|
|
|
|
### Anti-windup strategies {#anti-windup-strategies}
|
|
|
|
|
|
#### Conditional integration (integrator clamping) {#conditional-integration--integrator-clamping}
|
|
|
|
The integrator is simply stopped (or reset) when the actuator is saturated.
|
|
For instance, the integration is frozen as long as \\(u \neq \text{sat}(u)\\), possibly only if the error would further increase the saturation (i.e. same sign of \\(u\\) and \\(e\\)).
|
|
|
|
|
|
#### Back-calculation {#back-calculation}
|
|
|
|
The difference between the saturated and the requested control signal, \\(e\_s = \text{sat}(u) - u\\), is fed back to the integrator input through a gain \\(1/T\_t\\):
|
|
|
|
\begin{equation}
|
|
\dot{x}\_i = K\_i e + \frac{1}{T\_t} \left( \text{sat}(u) - u \right)
|
|
\end{equation}
|
|
|
|
When there is no saturation, \\(e\_s = 0\\) and the controller behaves as usual.
|
|
When saturated, the integrator state is driven so that \\(u\\) tracks the saturation limit.
|
|
The tracking time constant \\(T\_t\\) sets how fast the integrator is unwound (a common choice is \\(T\_t = \sqrt{T\_i T\_d}\\) or \\(T\_t = T\_i\\)).
|
|
|
|
|
|
## Bibliography {#bibliography}
|
|
|
|
<style>.csl-entry{text-indent: -1.5em; margin-left: 1.5em;}</style><div class="csl-bib-body">
|
|
</div>
|