Internal model principle: to track or reject a signal of a given form with zero error, the controller must contain a model (poles) of that signal. To track constant references (step), controller needs integrator (pole at origin). To track ramps, controller needs double integrator. This principle explains why PI controllers eliminate steady-state error to steps, and why proper controller structure (integrators) is essential, not just tuning gain.
From your study of steady-state error and system type, you know that a Type 0 system — one with no integrators in the open-loop transfer function — has a nonzero steady-state error to a step input, set by the position error constant K_p. You could reduce this error by increasing loop gain, but you could never eliminate it entirely — infinite gain is unstable. This left an unresolved question: is zero steady-state error to a step *ever* achievable without sacrificing stability? The internal model principle answers definitively: yes, if and only if the controller contains an integrator.
The internal model principle is a general theorem about feedback control: to track or reject a signal of a given class with zero steady-state error, the controller must contain a model — meaning poles — of the signal's generating dynamics in the forward loop. A constant reference signal (a step) is generated by an integrator (a pole at s = 0 in the signal's Laplace description); to track it with zero error, the controller must contain a pole at s = 0 — an integrator. A ramp reference is generated by a double integrator (two poles at s = 0); tracking it requires a double integrator in the controller. The principle explains not just what gain to use but what *structure* the controller must have. No amount of gain tuning can give zero steady-state error to a step if the controller lacks an integrator — the correct structure is a prerequisite, not a tuning detail.
Here is the intuition for why an integrator forces zero error. Suppose the system has reached steady state with some constant nonzero error. The integrator in the controller is integrating this error, so its output is ramping upward (or downward, depending on the sign). A ramping controller output means a changing plant input, which means a changing plant output, which means the system has not actually reached steady state — a contradiction. The only consistent steady state is one where the integrator's input — the error — is exactly zero. The integrator cannot rest until the error is zero; this structural property is what makes zero steady-state error a guaranteed consequence of loop closure, not a lucky outcome of gain selection.
The PI controller (proportional-integral) is the most common practical implementation of this principle. The proportional term responds immediately to the current error, providing fast initial response. The integral term accumulates past error, eliminating the steady-state offset that the proportional term alone would leave. The I term embodies the internal model principle: it gives the controller a pole at s = 0, making zero steady-state error to steps structurally guaranteed. The tradeoff is that integral action adds phase lag to the loop — approximately −90° in the frequency range where integration dominates — which reduces phase margin and can cause overshoot and oscillation. Tuning the integral gain K_I is therefore a balance between the speed of steady-state correction and the degradation of transient response.
The internal model principle extends naturally to disturbance rejection. If a constant disturbance enters at the plant input (a constant wind force on a drone, a constant load torque on a motor), the integrator in the feedback loop will adjust the control output until the disturbance's effect on the output is exactly canceled — without the controller needing to measure or know the disturbance magnitude. The disturbance appears as a persistent error; the integrator sees this error and ramps its output until the error disappears. This is the deep power of the principle: the controller's structure encodes a commitment to handle entire *classes* of signals, not just specific magnitudes. Adding poles at sinusoidal frequencies (resonant controllers) extends this to rejecting sinusoidal disturbances at those frequencies — the same principle, applied more broadly.