Every tuning rule below is computed from the same three numbers — gain, time constant and dead time. That is the point of measuring them: a step test turns guesswork into arithmetic. Ziegler–Nichols is aggressive by design and aims at quarter-amplitude decay; lambda tuning lets you ask for a specific closed-loop speed and is far gentler on a real plant.
| Method | Kp | Ti | Td | Character |
|---|
The table above describes each rule in words. This runs them: the same process, a unit setpoint step, and an ideal PID with derivative acting on the measurement rather than the error. Overshoot is measured against the setpoint, settling is the last time the output enters ±2% and stays, and IAE is the total absolute error — the one number that penalises being slow and being oscillatory at the same time.
| Method | Overshoot | Settles | IAE |
|---|
L, the dead time before anything moves; K, total output change over input change; τ, the time from the end of the dead time to 63.2% of the final value.
y(t) = K(1 − e−t/τ). At t = τ it has covered 1 − 0.368 = 63.2%, exact and independent of the step size.
Below L/τ ≈ 0.2 PID is easy; 0.2–0.6 needs care; past about 1.0 plain PID disappoints however you tune it.
Ziegler–Nichols (quarter-amplitude decay, deliberately oscillatory), Cohen–Coon, and lambda (IMC): pick the closed-loop speed you want.
One time constant is where 1 − e−1 lands, so the figure is exact and independent of the step. Each further τ closes 63.2% of the gap left, which is why four or five of them is “settled” and nobody quotes a 100% time.
Lag just slows a loop down; a controller can watch it happen. During dead time there is nothing to watch, so every correction is made blind and lands late. Two plants with the same τ and different L are completely different control problems. You can beat it, just not with plain PID: a Smith predictor models the delay explicitly and controls against the prediction, restoring useful performance well past L/τ = 1.
It targets quarter-amplitude decay, a deliberately oscillatory response, which is why it feels twitchy on real plants and alarming with a person or heavy load attached. Lambda tuning lets you ask for the speed you want instead, and is the safer default.
If the plant was not at steady state, a disturbance arrived mid-test or someone nudged something, the fitted τ is fiction and every constant derived from it inherits the error. Repeat in both directions and compare. If two tests disagree badly, the model is wrong, not the measurement: a valve with stiction gives a different answer for every step size.
A genuine first-order response leaves the dead time at its steepest and flattens from there. An S-shape means at least second order, and the 63.2% point is meaningless on it.
Differentiating a setpoint step gives an impulse no plant can deliver, so a controller written as Td·de/dt would kick the valve the moment the setpoint moved and flatter every aggressive tuning. Acting on the measurement gives the same disturbance rejection without the kick, as real controllers do.
Because differentiating a setpoint step gives an impulse, and no plant can deliver one. A controller written as Td·de/dt would throw a spike at the valve the moment the setpoint moved, which flatters every tuning carrying a derivative term — including the aggressive ones this page warns about. Acting on the measurement gives the same disturbance rejection with no setpoint kick, and it is what real controllers do.
Because a controller can see lag happening and act on it, but during dead time there is nothing to see. Every correction is made blind and arrives late, so the loop keeps pushing after the target is reached. Lag slows a loop down; dead time is what makes it unstable.
Below about 0.2, PID is easy and forgiving. From 0.2 to 0.6 it needs care. Past roughly 1.0 plain PID disappoints no matter how you tune it, and you want dead-time compensation — a Smith predictor, or a model-based controller that knows the delay is there.
As a starting point, knowing what it is aiming at. It targets quarter-amplitude decay, which means it deliberately accepts an oscillatory response — fine on a robust plant, alarming on anything with a person or a heavy load attached. Lambda tuning asks you for the closed-loop time constant you actually want and is the safer default.
Usually because the process is not first-order, or not linear. A curve with an S-shaped start is second-order and the 63.2% point is meaningless on it; a valve with stiction gives a different answer for every step size. If two step tests disagree badly, the model is wrong, not the measurement.
A single-input, single-output process that behaves linearly around the operating point, at steady state before the step, with no disturbance during the test. It models the plant as first-order plus dead time and nothing else — no integrating processes, no inverse response, no measurement noise, no valve nonlinearity, and no interaction with other loops. Tuning constants are starting points to be trimmed on the real plant.
A first-order response never actually arrives. Each time constant removes 63% of whatever is left, so the gap shrinks forever without closing.
| Elapsed | Reached | Still to go |
|---|---|---|
| 1τ | 63.21% | 36.79% |
| 2τ | 86.47% | 13.53% |
| 3τ | 95.02% | 4.98% |
| 4τ | 98.17% | 1.83% |
| 5τ | 99.33% | 0.67% |
| 6τ | 99.75% | 0.25% |
| 7τ | 99.91% | 0.09% |
Five time constants is a convention, not a finish line. It leaves 0.67% on the table, which is fine for a temperature loop and not fine for a 12-bit converter, where 0.67% is 27 counts. Reaching 99% takes 4.6τ and 99.9% takes 6.9τ — so each additional decimal place of accuracy costs another 2.3τ, forever.
This page has changed in 185 archived releases, but each of those was a site-wide pass, so none is attributable to this tool on its own and none is listed here. That is not a claim that the tool never changed — a release that reworked many pages at once may well have altered this one too. The changelog has them.