Control · saturation

Integral Windup & Anti-Windup

The loop is tuned correctly. The valve is fully open. The controller keeps asking for more anyway.
overshoot
—

The loop

—
How big a jump you ask for. Windup is a large-step problem: small steps never saturate the actuator and never wind up.
The most the valve, heater or drive can actually deliver. Raise it far enough and the problem disappears entirely.
Shorter integral time means the error accumulates faster — and winds up faster.

The guard

—
Back-calculation only. How fast the integral is bled back down while the actuator is saturated. Shorter unwinds harder.

Step response

—
Overshoot
—
—
This run
Side by side

Same tuning, same plant, three different endings

Nothing below changes the controller gains. The only difference is what the integrator does while the actuator is pinned at its limit — and that alone decides whether the loop overshoots.

How it works

The integrator does not know the valve is shut

The integral is a memory

Every second the error persists it grows, with no way to know the reason is that the actuator is already flat out. All of it must be paid back, in the wrong direction.

Clamping

Stop integrating while saturated in the direction that makes it worse. One condition, no new parameter, and it cannot make the loop less stable.

Back-calculation

Keep integrating but subtract the clipped amount over a tracking time Tt. Smoother and tunable; a short Tt unwinds harder.

Not a tuning problem

With enough actuator headroom all three behave identically. Windup is a large-signal effect: fine on nudges, terrible on big steps.

Worked example. A first-order plant with a 10 s time constant and unity gain, a PI controller at Kc = 2 and Ti = 8 s, a step to 10, and an actuator that stops at 12. Unguarded, the controller demands a peak of 20 from a valve that maxes at 12 and the process overshoots to 11.3: 12.8% over. With clamping the overshoot is zero and it settles in half the time. Raise the actuator limit to 200 and all three behave identically: this is not a tuning problem.
Field notes

How to recognise it in the field

It only shows up on big changes

A small setpoint change never saturates the actuator, so the loop behaves impeccably. If your loop is fine on nudges and terrible on step changes, stop retuning it: you are looking at windup. A mistuned loop overshoots proportionally at every step size.

The output trace gives it away

Watch the controller output, not the process value. If it stays pinned at 100% after the process has crossed the setpoint, the integrator is unwinding: the gap between crossing and the output coming off the stop is the overshoot being manufactured in front of you.

Clamping first, back-calculation for finesse

Clamping is what you fit when you want the problem gone this afternoon: safer to deploy, one condition, cannot make things worse. Back-calculation is smoother and, with Tt near Ti as a starting point, reached the setpoint in about half the time clamping takes at the cost of about one percent overshoot. Most commercial controllers implement one of the two and never tell you which.

Retuning is the wrong fix, and it costs you

Lengthening the integral time reduces the overshoot, and also slows every ordinary correction the loop will make for the rest of its life, and leaves offsets hanging around longer. You would degrade the normal case to protect against the exceptional one. That is what anti-windup is for.

The worst cases are the ones nobody is watching

A loop left in automatic while the plant is isolated integrates for hours against an error it cannot fix, then slams the actuator open the moment service is restored. The same for a cascade whose inner loop has saturated: the outer loop has no authority and winds up however well tuned. A heating valve on the coldest morning, a level loop in a shutdown, manual-to-auto transfer (why bumpless transfer exists).

Questions

What people ask

How do I tell windup from bad tuning?

Change the size of the step. Windup is a large-signal effect: a loop that overshoots badly on a big setpoint change and behaves perfectly on a small one is winding up, not mistuned. A mistuned loop overshoots proportionally at every step size. The other tell is the output trace — if the controller output sits pinned at its limit well after the process value has passed the setpoint, you are watching an integrator unwind.

Why not just reduce the integral action?

Because it treats the symptom and costs you the thing the integral was for. Lengthening Ti does reduce the overshoot, but it also slows down every normal correction and leaves offsets hanging around longer. Anti-windup gives you the fast integral action for ordinary disturbances and protects you only during saturation, which is the point — with enough actuator headroom, a loop with anti-windup behaves exactly like one without.

Is clamping or back-calculation better?

Clamping is safer to deploy: one condition, no extra parameter, and it cannot make things worse. Back-calculation is smoother, and because Tt is tunable it can settle noticeably faster — on the default case here it reaches the setpoint in about half the time clamping takes, at the cost of about one percent overshoot. Set Tt near Ti as a starting point. Most commercial controllers implement one of the two and never tell you which.

Where does this bite in real installations?

Anywhere an actuator hits a stop and stays there: a heating valve on the coldest morning of the year, a level loop during a shutdown, a cascade whose inner loop is saturated so the outer one has no authority at all, and any loop left in automatic while the plant is isolated for maintenance — that last one winds up for hours and slams the actuator open the instant the plant is returned to service. Manual-to-auto transfer is the other classic, which is why bumpless transfer exists.

What this page assumes

A single first-order plant with a known gain and time constant, an ideal PI controller in parallel form with no derivative term, an actuator that is a hard clip between zero and its limit with no dynamics of its own, a perfect measurement with no noise or filtering, and either a step setpoint change from rest or a loop holding its setpoint whose plant input is cut off for a while and then restored, with the controller left in automatic throughout. Not modelled: dead time, which changes the tuning question entirely; actuator rate limits and slew, which cause a related but distinct problem; derivative action and its own kick on a step; measurement noise and filter lag; discrete sampling effects; higher-order or non-linear plant; or manual-to-auto transfer.

An idealised loop. Real plant has dead time, rate limits and noise, and real controllers implement anti-windup in ways their manuals often do not document. Use this to recognise the behaviour, not to predict a specific installation.
Version history · 1 release
  1. v3.992026-08-23Buckling deflection reads 0.0 mm right up to the critical load, then 57 mm

Releases in which this page changed, newest last. Derived from the archived copy of every release, not from notes written afterwards — so it reflects what actually shipped. Site-wide passes are left out; they are in the full changelog.

Rules of thumb are approximations, offered to get you to the right order of magnitude fast. Check anything load-bearing against its source or the exact tool. Privacy · Terms

© 2026 Rules of Thumb · Runs entirely in your browser