Integrator windup and anti-windup
Why the integral keeps growing when the output hits a limit and causes a large overshoot, how clamping and back-calculation work, how to choose the gain Kb. An example with numbers from the simulator.
In short. When the output hits a limit (valve 100 % open) the error persists and the integral keeps growing. When PV finally reaches the set point, the accumulated integral holds the output at the limit and PV overshoots. Anti-windup stops or "unwinds" the integral while the output is at the limit. In the example below the overshoot drops from 50 % to 5.9 %.
Example
Section model (K = 1.8 °C/%, τ = 45 s, θ = 12 s), initial state PV = 55 °C at an output of 40 %. Set point steps 55 → 100 °C. PI Kc = 2 %/°C, Ti = 30 s, output limited to 0…100 %. At 100 °C the steady output is 40 + 45/1.8 = 65 %.
| Protection | Overshoot | PV peak | Time at the limit | Settling (from the step) |
|---|---|---|---|---|
| none | 50 % | 122.6 °C | 40 s | 194 s |
| clamping | 5.9 % | 102.7 °C | 19 s | 146 s |
| back-calculation, Kb = 1/Ti | 28 % | 112.7 °C | 29 s | 180 s |
Open the example in the simulator — switch the protection method.
Clamping
The integrator does not integrate while the output is saturated and the error pushes it further into saturation. As soon as the sign of the error changes, integration resumes.
if u_calc ≠ u_lim and sign(e) = sign(u_calc − u_lim): i[k] = i[k−1]
else: i[k] = i[k−1] + Ki·Ts·e[k]
Pros: no parameters. Cons: the integral is "frozen" at its value when saturation began — if that value is large, overshoot remains.
Back-calculation
The integrator gets feedback from the difference between the limited and the unlimited output:
i[k] = i[k−1] + Ts·( Ki·e[k] + Kb·(u_lim[k−1] − u_calc[k−1]) )
While the output is saturated the difference is negative (at the upper limit) and "unwinds" the integral. Kb (1/s) sets the speed. Often a tracking time constant Tt = 1/Kb is used:
- PI: Tt = Ti (Kb = 1/Ti);
- PID: Tt = √(Ti·Td) — a compromise between Ti and Td (a rule from Åström & Hägglund, "Advanced PID Control", 2006). MathWorks only states that 1/Kb is the time constant of the tracking loop and refers to the literature for choosing it.
A small Kb gives weak protection (in the example Kb = 1/30 1/s gives 28 %); a large Kb makes the integral follow the limit almost at once, close to clamping. Choose Kb in the simulator.
Where else saturation occurs
- Cascade: the master output is the slave set point; if the slave is saturated, the master must stop integrating too (cascade).
- External limiting of the output after the block (rate limit, interlocks, a manual/auto switch): the block must receive the actual output for tracking.
- Split range and selectors (min/max): an inactive controller winds up unless it tracks the output.
Typical mistakes
- No output limits configured in the block while the real limit is the valve: the block does not know about saturation.
- Block limits wider than the real ones (block 0–100 %, the valve is fully open already at 90 %).
- Kb chosen at random or 0.
- "Curing" the overshoot by reducing Kc when the cause is saturation: the loop becomes sluggish in normal operation.
Limits
The table comes from a FOPDT simulation with a PI controller (Ts = 1 s). Anti-windup implementations in PLC blocks differ (integral limits, conditional integration, tracking); check what the block of your version does.
Connections
Open in Knowledge Graph →Loading the map…
Sources
- MathWorks — Anti-Windup Control Using PID Controller Block: clamping and back-calculation (R2026b) — MathWorks
- MathWorks — PID Controller block: Anti-windup method, Back-calculation coefficient Kb (R2026b) — MathWorks
- Åström & Murray — Feedback Systems, 2nd ed. (2020), ch. 11 «PID Control», §11.4 Integrator Windup (tracking time constant Tt) — Caltech / Lund University
Updated 2026-10-12