Control · identification

First-Order Lag & Dead Time

Where a plant model comes from, and whether PID can control what you measured.
L / τ
—

The process

from a step test
Output change divided by the input step that caused it.
Transport delay before anything moves — conveyor length, pipe run, sensor lag.

Step response

open loop
Dead time ratio L / τ
—
—
Off the curve
Tuning

What the model gives you

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.

MethodKpTiTdCharacter
Closed loop

And what they actually do

same process, same step

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.

MethodOvershootSettles IAE
How it works

Three numbers, from one experiment

Three numbers, one test

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.

Why 63.2%

y(t) = K(1 − e−t/τ). At t = τ it has covered 1 − 0.368 = 63.2%, exact and independent of the step size.

Dead time decides

Below L/τ ≈ 0.2 PID is easy; 0.2–0.6 needs care; past about 1.0 plain PID disappoints however you tune it.

Three tuning rules

Ziegler–Nichols (quarter-amplitude decay, deliberately oscillatory), Cohen–Coon, and lambda (IMC): pick the closed-loop speed you want.

Worked example. A tank heater with K = 2, τ = 10 s and L = 2 s reaches 63.2% of its final temperature 12 s after the step and is within 2% of it by 42 s. Its dead-time ratio is 0.2, comfortably controllable. Ziegler–Nichols asks for Kp = 3.0, and doubling the dead time to 4 s halves that to 1.5. The first two bars are times, the last two gains.
Field notes

What a step test actually tells you

63.2%

A definition, not a rounding

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.

Dead time is the number that decides everything

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.

Ziegler–Nichols aims at something you may not want

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.

A step test you do not trust is worse than none

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.

If the curve is S-shaped, it is not first order

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.

The derivative acts on the measurement

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.

Questions

What people ask

Why does the derivative act on the measurement and not the error?

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.

Why does dead time matter more than lag?

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.

What is a workable dead-time ratio?

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.

Should I use Ziegler-Nichols?

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.

Why is my measured time constant unstable between tests?

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.

What this page assumes

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.

Tuning constants are a starting point, not a commissioning document. Never drive a real plant to sustained oscillation to find its limits if people, heaters or heavy loads are attached — that is what the open-loop step test on this page exists to avoid.
The tail

“Settled” is a choice, not a fact

A first-order response never actually arrives. Each time constant removes 63% of whatever is left, so the gap shrinks forever without closing.

ElapsedReachedStill 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.

Version history · site-wide passes only

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.

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