Steady-State Error
Type and input decide the error
The gold curve is the tracking error e(t) = r(t) − y(t), the difference between the target input and the closed-loop output. The dashed line is the steady-state value that error reaches over time. Choose the input among step (constant), ramp (a straight line), and parabola (accelerating); choose the system type among type 0, 1, 2 (the number of poles the open loop has at the origin). The gain K sets the size of any finite error. When the system type is at least one step higher than the input, the error sinks to zero (perfect tracking); when they are exactly equal, it stops at a nonzero constant (you can shrink it by raising K, but never make it zero); when the type is lower, the error grows without end (tracking fails). The type-1 system K/(s(s+1)(s+2)) is the very plant we used throughout F1 to F6.
Read the error with the final value theorem
The steady-state error falls out cleanly from the final value theorem. In unit feedback the Laplace transform of the error is E(s) = R(s)/(1+L(s)), and its value after infinite time is e_ss = lim_{t→∞} e(t) = lim_{s→0} s·E(s) = lim_{s→0} s·R(s)/(1+L(s)). A step input is R = 1/s, a ramp is R = 1/s², a parabola is R = 1/s³, so s·R is 1, 1/s, 1/s² respectively. The error then depends on how large 1+L(s) is as s→0, and if L(s) has a pole at the origin, L blows up as s→0 and the error goes to zero. In the end, the force that drives the error to zero is the poles L has at the origin, the number of integrators.
The three error constants and the type table
Naming the quantity that governs the error for each input gives the error constants. A step input corresponds to the position error constant K_p = lim_{s→0} L(s), a ramp to the velocity error constant K_v = lim_{s→0} s·L(s), and a parabola to the acceleration error constant K_a = lim_{s→0} s²·L(s). The error then tidies up to 1/(1+K_p) for a step, 1/K_v for a ramp, and 1/K_a for a parabola. The system type settles, all at once, whether these constants are finite or infinite. Type 0 has only K_p finite while K_v and K_a are zero, so a finite error to a step but infinite error to a ramp and parabola. Type 1 has K_p infinite (zero step error), K_v finite (finite ramp error), and K_a zero (infinite parabola). Type 2 has K_p and K_v infinite (zero step and ramp error) and K_a finite (finite parabola error). This 3 × 3 table is the whole of steady-state error.
Two knobs to cut the error, and the price
There are two ways to cut the steady-state error. One is to raise the system type, that is to add an integrator in the controller and so a pole at the origin. This drives the error for that input all the way to zero; the integral term of F5 and the lag compensator of F6 did exactly this. The other is to raise the gain and so the error constant, which only shrinks a finite error without removing it. Neither way is free. A pole at the origin delays the phase by 90° and eats into the phase margin, pushing the system toward instability (the very phase loss we saw in F3 and F6), and raising the gain, as we saw in F1 to F4, sends the closed loop straight to instability. The boundary where the type-1 plant K/(s(s+1)(s+2)) goes unstable at K=6 is still alive here. So real design is a tug-of-war between steady-state accuracy and stability and speed, and you add integrators only as many as truly needed, filling in the phase with lead compensation as you go.
Back to the first screen
With the tracking error e(t) up on the screen, we changed the input and the system type and watched its final value. When the system type was higher than the order of the input the error vanished to zero; when they were equal it stopped at a finite value like 1/(1+K_p), 1/K_v, or 1/K_a; when it was lower it ran away without bound. Every one of these cases came out of the single final value theorem e_ss = lim_{s→0} s·R/(1+L), and how much the poles at the origin blow up 1+L decided whether the error went to zero. The gain K only changed the size of a finite error, never breaking through the wall of order. The integral term of F5 and the lag compensator of F6 were, in the end, the act of moving one step up this table to erase the error.
With this, one full turn of the control chapter is complete. We judged stability with Routh (F1), followed the path of the poles with the root locus (F2), measured the distance with the two margins of the Bode plot (F3), watched the encirclement of −1 with Nyquist (F4), shaped the response with PID (F5), molded the phase with lead-lag compensation (F6), and now read the limits of tracking with the steady-state error (F7). That the three goals of stability, speed of response, and steady-state accuracy pull against one another and are bound into a single design is the whole of classical control. Going further from here, state space that handles many inputs and outputs at once and pole placement that puts the poles where you want them, digital control that controls from sampled signals, and optimal control that minimizes a cost are waiting. But every one of those roads, too, is built on the language of poles, zeros, margins, and error that we have seen in this chapter.