Library / Control engineering / CTL-11
Control engineering
Integrator rate with back-calculation antiwindup
Rate of change of the integral state when the actuator saturates.
- Ref
- CTL-11
- Rev
- v1
- Field
- Control engineering
- Result
- ẋI [units/s]
With a saturating actuator the controller can ask for more than the actuator can give. Ordinary integration keeps adding Kie to xI while the output is clipped, so the integral state grows ("winds up") and must be unwound later by opposite error. Back-calculation adds the term (u − uraw)/Tt, which is zero when nothing is clipped and pulls xI back when the output saturates. A smaller tracking time Tt pulls harder.
Rate of change of the integral state when the actuator saturates. The second term pulls the integrator back towards the value that would not saturate, so it does not wind up while the output is clipped.
Calculator
- Unsaturated demand, uraw = Kpe + xI8
- Saturated output, u5
- Demand beyond the limit, uraw − u3
- Integrator rate without antiwindup, Kie1.5 units/s
What drives the result
Each variable is moved across its typical range while the others stay at the values above. The longest bar is the key driver.
- At the defaults the controller demands 8 but the actuator can give only 5. Plain integration would keep adding 1.5 per s, whereas back-calculation gives −1.5 per s and pulls the integrator back.
- If the error stayed at 3, the integrator would settle where the rate is zero, with the demand sitting at umax + KieTt = 6.5, only 1.5 above the limit. Without the correction the demand would keep climbing, and unwinding would take as long as the wind-up did. When the output is not clipped the extra term vanishes, and the rate is simply Kie = 1.5 per s.
Chart data as tables
Ranked variables
| Variable | Typical range | Lowest result | Highest result | Swing (units/s) | Local step | Change in result |
|---|---|---|---|---|---|---|
| Tt Tracking time constant | 0.1 to 5 s | −28.5 | 0.9 | 29.4 | +10% | −18.2 % |
| Kp Proportional gain | 0.5 to 10 | −25.5 | 1.5 | 27 | +10% | +40 % |
| Ki Integral gain | 0.1 to 5 1/s | −2.7 | 12 | 14.7 | +10% | −10 % |
| xI Integrator state | −2 to 6 | −5.5 | 1.5 | 7 | +0.16 | +10.7 % |
| umax Actuator limit (symmetric, plus or minus) | 1 to 10 | −5.5 | 1.5 | 7 | +10% | −33.3 % |
| e Tracking error | 0.2 to 6 | −6 | 0.68 | 6.68 | +10% | +30 % |
Sweep of Tracking time constant
| Tracking time constant (s) | Integrator rate (units/s) |
|---|---|
| 0.1 | −28.5 |
| 0.7125 | −2.711 |
| 1.325 | −0.7642 |
| 1.938 | −0.04839 |
| 2.55 | 0.3235 |
| 3.163 | 0.5514 |
| 3.775 | 0.7053 |
| 4.388 | 0.8162 |
| 5 | 0.9 |
Sweep one variable
Variables and how each one contributes
Integrator rate
What the equation gives you. Everything else feeds it.
Proportional gain
The proportional gain. Raises the unsaturated demand Kpe + xI, and with it the amount the antiwindup term has to remove when saturated. Raising it by 10 % (to 2.2) moves the result by +40 %, from −1.5 to −2.1 units/s.
Integral gain
The integral gain in 1/s: the rate at which xI would grow per unit error. Directly raises the winding-up term Kie that the back-calculation term has to oppose. Raising it by 10 % (to 0.55) moves the result by −10 %, from −1.5 to −1.35 units/s.
Tracking error
The tracking error r − y, held constant here. A larger error increases both the demand and the rate of integration. Raising it by 10 % (to 3.3) moves the result by +30 %, from −1.5 to −1.95 units/s.
Integrator state
The current value of the integral state, in actuator units. A larger integral state raises the unsaturated demand and so the amount of correction. Raising it by 10 % (to 2.2) moves the result by +13.3 %, from −1.5 to −1.7 units/s.
Actuator limit (symmetric, plus or minus)
The actuator limit. The output is clipped at ±umax. Raising the limit reduces how far the demand exceeds it, and above the demand the correction disappears. Raising it by 10 % (to 5.5) moves the result by −33.3 %, from −1.5 to −1 units/s.
Tracking time constant
The tracking time constant in s: how fast the integrator is pulled back while saturated. A larger Tt pulls back more slowly, so the integrator winds up further before it is checked. Raising it by 10 % (to 1.1) moves the result by −18.2 %, from −1.5 to −1.227 units/s.
Worked example with the values above
- Unsaturated demand: uraw = Kpe + xI = 2 × 3 + 2 = 8.
- Saturated output: u = clip(8, ±5) = 5.
- ẋI = Kie + (u − uraw)/Tt = 1.5 + (5 − 8)/1 = −1.5 units/s.
Assumptions and limits
- Back-calculation antiwindup with a symmetric actuator limit, and a constant error over the interval considered.
- The derivative term is excluded or zero, and rate limits are not modelled (they may need a separate mechanism).
Common mistakes
- Setting Tt very small. The correction becomes so stiff that noise and discrete-time effects can make the integrator chatter.
- Resetting or freezing the integrator by hand without a plan for the transition, which produces a bump when the controller leaves saturation.
Statistics and uncertainty
The result is a sum of two terms of opposite sign, so it can be small when each is large. Near the saturation limit the clipping is a hard nonlinearity, so a small noise on e can switch the correction on and off, and some implementations smooth or limit its effect.
Where it is used
- Preventing the large overshoot that follows a long period of throttle, valve or control-surface saturation.
- Reviewing a controller implementation for the common fault of unbounded integrator growth.
Maths you need
- Saturation: an output clipped at its limits
- Integral action: xI accumulates the error over time