Control 7
By the end of this lecture, you will be able to:
Control design typically balances:
In real ECE systems:
Steady-state error quantifies how much mismatch remains after transients die out.
Important
Key idea: Even a stable system with “nice” transients can have unacceptable steady-state error.
For a (stable) feedback system:
Steady-state error:
\[ e_{ss} = e(\infty) = \lim_{t \to \infty} e(t) \]
We evaluate \(e_{ss}\) using standard test inputs that model physical motion of a position system:
TABLE 7.1 – Test Inputs
| Name | Time function | Laplace |
|---|---|---|
| Step | \(1\) | \(\dfrac{1}{s}\) |
| Ramp | \(t\) | \(\dfrac{1}{s^2}\) |
| Parabola | \(\dfrac{t^2}{2}\) | \(\dfrac{1}{s^3}\) |

Step input: constant position command

Ramp input: linearly increasing position (constant velocity target)

Parabolic input: accelerating target (constant acceleration)

We focus on stable systems:
Unstable systems:
Warning
Always check closed-loop stability before trusting any steady-state error calculation.


General closed-loop system

Unity feedback case
Same diagram with \(H(s)=1\):
From the general block diagram:
So:
\[ E(s) = R(s) - T(s) R(s) = R(s) \bigl[1 - T(s)\bigr] \]
To find steady-state error: apply the final value theorem
\[ e(\infty) = \lim_{t \to \infty} e(t) = \lim_{s \to 0} s E(s) \]
Thus:
\[ e(\infty) = \lim_{s \to 0} s R(s) \bigl[1 - T(s)\bigr] \]
Tip
Use this form when \(T(s)\) is given directly and the system is known to be stable.
Problem
Given closed-loop transfer function:
\[ T(s) = \frac{5}{s^2 + 7s + 10} \]
Find the steady-state error for a unit step input.
Solution
Step input: \(R(s) = \dfrac{1}{s}\)
\[ E(s) = R(s) \bigl[1 - T(s)\bigr] = \frac{1}{s} \left(1 - \frac{5}{s^2 + 7s + 10}\right) \]
Combine terms:
\[ E(s) = \frac{s^2 + 7s + 10 - 5}{s \left(s^2 + 7s + 10\right)} = \frac{s^2 + 7s + 5}{s \left(s^2 + 7s + 10\right)} \]
\[ e(\infty) = \lim_{s \to 0} s E(s) = \lim_{s \to 0} \frac{s^2 + 7s + 5}{s^2 + 7s + 10} = \frac{5}{10} = \frac{1}{2} \]
So the steady-state error is \(e_{ss} = 0.5\).
For unity feedback:
Block diagram:
Algebra:
\(E(s) = R(s) - C(s)\)
\(C(s) = E(s) G(s)\)
Substitute:
\(E(s) = R(s) - E(s) G(s)\)
Solve for \(E(s)\):
\[ E(s) = \frac{R(s)}{1 + G(s)} \]
Apply final value theorem:
\[ e(\infty) = \lim_{s \to 0} s E(s) = \lim_{s \to 0} \frac{s R(s)}{1 + G(s)} \]
This is our master formula for unity feedback steady-state error.
Note
This form makes it easy to see the effect of open-loop dynamics \(G(s)\) and the input type \(R(s)\) on \(e_{ss}\).
For a unit step input:
Plug into the master formula:
\[ e_{step}(\infty) = \lim_{s \to 0} \frac{s \left(\frac{1}{s}\right)}{1 + G(s)} = \frac{1}{1 + \displaystyle \lim_{s \to 0} G(s)} \]
So the key quantity is the dc gain of \(G(s)\):
\[ K_p = \lim_{s \to 0} G(s) \]
Then:
\[ e_{step}(\infty) = \frac{1}{1 + K_p} \]
Assume
\[ G(s) = \frac{(s+z_1)(s+z_2)\cdots}{s^n (s+p_1)(s+p_2)\cdots} \]
Evaluate \(K_p = \lim_{s \to 0} G(s)\):
If \(n = 0\) (no integrators):
\[ K_p = \frac{z_1 z_2 \cdots}{p_1 p_2 \cdots} \quad \Rightarrow \quad \text{finite} \Rightarrow e_{step}(\infty) \text{ finite} \]
If \(n \ge 1\) (at least one pole at origin \(\Rightarrow\) at least one integrator):
Denominator has \(s^n\); as \(s \to 0\), denominator \(\to 0\), so
\[ K_p = \lim_{s \to 0} G(s) = \infty \quad \Rightarrow \quad e_{step}(\infty) = 0 \]
Interpretation:
Important
Integrator in the forward path eliminates constant-position error for unity feedback.
For a unit ramp input:
From the master formula:
\[ e_{ramp}(\infty) = \lim_{s \to 0} \frac{s \left(\frac{1}{s^2}\right)}{1 + G(s)} = \lim_{s \to 0} \frac{1}{s + s G(s)} \]
If \(G(s)\) is proper and stable, for small \(s\):
So approximately:
\[ e_{ramp}(\infty) = \frac{1}{\displaystyle \lim_{s \to 0} s G(s)} = \frac{1}{K_v} \]
where
\[ K_v = \lim_{s \to 0} s G(s) \]
Again, assume
\[ G(s) = \frac{(s+z_1)(s+z_2)\cdots}{s^n (s+p_1)(s+p_2)\cdots} \]
Then
\[ s G(s) = \frac{(s+z_1)(s+z_2)\cdots}{s^{n-1} (s+p_1)(s+p_2)\cdots} \]
Evaluate \(K_v = \lim_{s \to 0} s G(s)\):
If \(n = 0\):
\[ K_v = \lim_{s \to 0} s G(s) = 0 \Rightarrow e_{ramp}(\infty) = \infty \]
If \(n = 1\):
\[ K_v = \frac{z_1 z_2 \cdots}{p_1 p_2 \cdots} \quad \Rightarrow \quad \text{finite} \Rightarrow e_{ramp}(\infty) \text{ finite} \]
If \(n \ge 2\):
Denominator has \(s^{n-1}\) with \(n-1 \ge 1\); \(\Rightarrow\) denominator \(\to 0\) as \(s \to 0\), so
\[ K_v = \infty \Rightarrow e_{ramp}(\infty) = 0 \]
So:
For a unit parabolic input (constant acceleration):
From the master formula:
\[ e_{parabola}(\infty) = \lim_{s \to 0} \frac{s \left(\frac{1}{s^3}\right)}{1 + G(s)} = \lim_{s \to 0} \frac{1}{s^2 + s^2 G(s)} = \frac{1}{\displaystyle \lim_{s \to 0} s^2 G(s)} = \frac{1}{K_a} \]
where
\[ K_a = \lim_{s \to 0} s^2 G(s) \]
Again use \(G(s)\) with \(n\) integrators:
\[ s^2 G(s) = \frac{(s+z_1)(s+z_2)\cdots}{s^{n-2} (s+p_1)(s+p_2)\cdots} \]
If \(n = 0\) or \(n = 1\):
\(s^{n-2}\) is in numerator → \(\lim s^2 G(s) = 0\) → error infinite.
If \(n = 2\):
\(K_a\) finite → finite parabolic error.
If \(n \ge 3\):
\(K_a = \infty\) → zero parabolic error.

Assume closed-loop stable. There are no \(1/s\) factors in \(G(s)\).
Inputs:
Given in text: \(G(s)\) has dc gain \(\lim_{s \to 0} G(s) = 20\).
Step input:
\[ e_{step}(\infty) = \frac{5}{1 + \lim_{s\to 0} G(s)} = \frac{5}{1 + 20} = \frac{5}{21} \]
Ramp input:
\[ e_{ramp}(\infty) = \frac{5}{\lim_{s \to 0} s G(s)} = \frac{5}{0} = \infty \]
Parabolic input:
\[ e_{parabola}(\infty) = \frac{10}{\lim_{s \to 0} s^2 G(s)} = \frac{10}{0} = \infty \]

Now \(G(s)\) includes one \(1/s\) factor (one integrator). Assume closed-loop stable.
Given in text:
Inputs:
\(5 u(t)\):
\[ e_{step}(\infty) = \frac{5}{1 + \lim_{s\to 0} G(s)} = \frac{5}{\infty} = 0 \]
\(5 t u(t)\):
\[ e_{ramp}(\infty) = \frac{5}{\lim_{s \to 0} s G(s)} = \frac{5}{100} = \frac{1}{20} \]
\(5 t^2 u(t)\):
\[ e_{parabola}(\infty) = \frac{10}{\lim_{s \to 0} s^2 G(s)} = \frac{10}{0} = \infty \]
So:
Tip
Adding one integrator moved us from “good for steps only” to “steps perfect, ramps finite error”.
Given:
\[ G(s) = \frac{10(s+20)(s+30)}{s (s+25)(s+35)} \]
Text answer:
\[ G(s) = \frac{10(s+20)(s+30)}{s^2 (s+25)(s+35)(s+50)} \]
The closed-loop system is unstable, so steady-state error formulas cannot be applied.
We now formalize the three “special limits” we’ve seen:
Define static error constants:
Position constant:
\[ K_p = \lim_{s \to 0} G(s) \]
Velocity constant:
\[ K_v = \lim_{s \to 0} s G(s) \]
Acceleration constant:
\[ K_a = \lim_{s \to 0} s^2 G(s) \]
Then:
Important
Larger static error constant \(\Rightarrow\) smaller steady-state error (for the corresponding input).
For each system in Figure 7.7, compute \(K_p, K_v, K_a\) and the corresponding steady-state error for step, ramp, and parabola.

Given (from text calculations):
Hence:

Hence:

Hence:

Consider a unity feedback system with forward path:
\[ G(s) = \frac{(s+z_1)(s+z_2)\cdots}{s^n (s+p_1)(s+p_2)\cdots} \]
System type is defined as the number of pure integrations in the forward path, i.e., the exponent \(n\) of \(1/s\):
System type determines the pattern of static error constants and steady-state errors.
Note
In design problems, first identify system type by counting integrators in \(G(s)\) for a unity feedback configuration.
TABLE 7.2 – Relationships between input, system type, static error constants, and steady-state error
| Input | Error formula | Type 0 | Type 0 error | Type 1 | Type 1 error | Type 2 | Type 2 error |
|---|---|---|---|---|---|---|---|
| Step, \(u(t)\) | \(\dfrac{1}{1+K_p}\) | \(K_p =\) finite | \(\dfrac{1}{1+K_p}\) | \(K_p = \infty\) | 0 | \(K_p = \infty\) | 0 |
| Ramp, \(t u(t)\) | \(\dfrac{1}{K_v}\) | \(K_v = 0\) | \(\infty\) | \(K_v =\) finite | \(\dfrac{1}{K_v}\) | \(K_v = \infty\) | 0 |
| Parabola, \(\dfrac{t^2}{2}u(t)\) | \(\dfrac{1}{K_a}\) | \(K_a = 0\) | \(\infty\) | \(K_a = 0\) | \(\infty\) | \(K_a =\) finite | \(\dfrac{1}{K_a}\) |
Tip
Memorize the pattern rather than the whole table:
Given unity feedback:
\[ G(s) = \frac{1000 (s+8)}{(s+7)(s+9)} \]
Step 1: Find system type, \(K_p\), \(K_v\), \(K_a\).
Step 2: Steady-state errors:
Step:
\[ e_{step}(\infty) = \frac{1}{1 + K_p} \approx 7.8 \times 10^{-3} \]
Ramp:
\[ e_{ramp}(\infty) = \frac{1}{K_v} = \infty \]
Parabola: \(\dfrac{1}{K_a} = \infty\).
Engineers specify desired steady-state performance via \(K_p, K_v, K_a\), e.g.:
A specification like \(K_v = 1000\) implies:
System is stable.
System is Type 1 (only Type 1 has finite nonzero \(K_v\)).
The relevant test input is a ramp.
Steady-state error to a unit-slope ramp is
\[ e_{ramp}(\infty) = \frac{1}{K_v} = 0.001 \]
For a ramp with slope \(A\), error is \(\dfrac{A}{K_v}\).
Note
Just from the numeric value of \(K_p\) or \(K_v\), you can infer system type, test input, and error magnitude.
Spec: \(K_p = 1000\).
This implies:
System is stable (otherwise \(K_p\) would be meaningless as a spec).
System is Type 0 (only Type 0 can have finite \(K_p\); Type 1 and above have \(K_p = \infty\)).
Test input is a step (position constant).
Steady-state error to a unit step is:
\[ e_{step}(\infty) = \frac{1}{1 + K_p} = \frac{1}{1001} \]
So the output will be within about 0.1% of the commanded step in steady state.

Problem
Given unity feedback with forward path \(G(s)\) as in figure, choose \(K\) so that there is 10% error in the steady state.
Step 1 – Identify system type and input
Thus:
\[ e_{ramp}(\infty) = \frac{1}{K_v} = 0.1 \quad \Rightarrow \quad K_v = 10 \]
Step 2 – Compute \(K_v\) in terms of \(K\)
From figure’s \(G(s)\):
\[ G(s) = \frac{K \cdot 5}{s (s+6)(s+7)(s+8)} \]
Then:
\[ K_v = \lim_{s \to 0} s G(s) = \frac{K \cdot 5}{6 \cdot 7 \cdot 8} \]
Set equal to desired \(K_v\):
\[ 10 = \frac{5K}{6 \cdot 7 \cdot 8} \]
Solve:
\[ K = 10 \cdot \frac{6 \cdot 7 \cdot 8}{5} = 672 \]
Step 3 – Check stability (Routh-Hurwitz)
At \(K = 672\), closed-loop is stable (as given in text).
Warning
Meeting steady-state error specs with a large gain may degrade transient response or stability margins. Always check both.
Given unity feedback:
\[ G(s) = \frac{K (s+12)}{(s+14)(s+18)} \]
System has no integrator → Type 0 → cannot have finite ramp error.
But text’s answer says \(K = 189\) for “10% error in steady state.”
Interpreting:
Then:
\(K_p = \lim_{s \to 0} G(s) = \dfrac{12K}{14 \cdot 18}\).
\(e_{step}(\infty) = \dfrac{1}{1 + K_p} = 0.1\).
Solve for \(K_p\):
\(0.1 = \dfrac{1}{1 + K_p} \Rightarrow K_p = 9\).
Then:
\[ 9 = \frac{12K}{14 \cdot 18} \Rightarrow K = 9 \cdot \frac{14 \cdot 18}{12} = 189 \]
So far: we considered error due to the reference input \(R(s)\).
Now: consider disturbances \(D(s)\) entering between controller and plant.

We want to know how well feedback cancels the effect of \(D(s)\) on the error \(E(s)\).
From the block diagram:
Output:
\[ C(s) = E(s) G_1(s) G_2(s) + D(s) G_2(s) \]
Error:
\[ E(s) = R(s) - C(s) \]
Substitute \(C(s)\) into error equation:
\[ E(s) = R(s) - \bigl[ E(s) G_1(s) G_2(s) + D(s) G_2(s) \bigr] \]
Solve for \(E(s)\):
\[ E(s) = \frac{1}{1 + G_1(s) G_2(s)} R(s) - \frac{G_2(s)}{1 + G_1(s) G_2(s)} D(s) \]
Apply final value theorem:
\[ \begin{aligned} e(\infty) &= \lim_{s \to 0} s E(s) \\ &= \lim_{s \to 0} \frac{s}{1 + G_1(s) G_2(s)} R(s) - \lim_{s \to 0} \frac{s G_2(s)}{1 + G_1(s) G_2(s)} D(s) \\ &= e_R(\infty) + e_D(\infty) \end{aligned} \]
Where:
Assume a step disturbance:
The disturbance contribution to steady-state error is:
\[ e_D(\infty) = -\lim_{s \to 0} \frac{s G_2(s)}{1 + G_1(s) G_2(s)} D(s) = -\lim_{s \to 0} \frac{s G_2(s)}{1 + G_1(s) G_2(s)} \cdot \frac{1}{s} \]
Simplify:
\[ e_D(\infty) = -\lim_{s \to 0} \frac{G_2(s)}{1 + G_1(s) G_2(s)} \]
With some algebra (factor \(G_2(s)\) out of denominator), this can be rearranged as:
\[ e_D(\infty) = -\frac{1}{\displaystyle \lim_{s \to 0} \frac{1}{G_2(s)} + \lim_{s \to 0} G_1(s)} \]
Important
To reduce error from a step disturbance, either:

Set \(R(s) = 0\) and redraw:
We can think of the block diagram as a system from \(D(s)\) to \(E(s)\).
To minimize steady-state \(E(s)\):

Problem
Find steady-state error component due to a step disturbance for the system in the figure.
Given in text:
Using the formula:
\[ e_D(\infty) = -\frac{1}{\displaystyle \lim_{s \to 0} \frac{1}{G_2(s)} + \lim_{s \to 0} G_1(s)} \]
Given:
Then:
\[ e_D(\infty) = -\frac{1}{0 + 1000} = -\frac{1}{1000} \]
So the steady-state error caused by a unit step disturbance is \(-10^{-3}\).
Note
Error magnitude is inversely proportional to controller dc gain.

Given system and step disturbance \(D(s) = \dfrac{1}{s}\), evaluate disturbance-induced steady-state error.
Text answer:
\[ e_D(\infty) = -9.98 \times 10^{-4} \]
This is nearly \(-10^{-3}\), suggesting that the loop gain is around 1000 in dc.

In semiconductor manufacturing:
Design approach:
Steady-state error \(e_{ss}\) is the difference between input and output as \(t \to \infty\).
It is defined for stable systems only. Always check stability.
Standard test inputs model motion of position systems:
For unity feedback, steady-state error is conveniently computed from \(G(s)\):
\[ e(\infty) = \lim_{s \to 0} \frac{s R(s)}{1 + G(s)} \]
Static error constants summarize steady-state performance:
System type = number of integrators in \(G(s)\):
Disturbance steady-state error (for step disturbances) can be reduced by increasing controller dc gain \(G_1(0)\).
Important
Control design is a trade-off: more integrators / higher gain improve steady-state error but can harm stability and transient response.
Error signal:
\[ E(s) = R(s) - C(s) \]
Closed-loop: \(C(s) = T(s) R(s)\) ⇒ \(E(s) = R(s)[1 - T(s)]\).
Final value theorem (for stable systems):
\[ e(\infty) = \lim_{t \to \infty} e(t) = \lim_{s \to 0} s E(s) \]
From open-loop \(G(s)\):
\[ E(s) = \frac{R(s)}{1 + G(s)} \]
\[ e(\infty) = \lim_{s \to 0} \frac{s R(s)}{1 + G(s)} \]
Static error constants:
\[ K_p = \lim_{s \to 0} G(s), \quad K_v = \lim_{s \to 0} s G(s), \quad K_a = \lim_{s \to 0} s^2 G(s) \]
Steady-state errors:
Step \(u(t)\):
\[ e_{step}(\infty) = \frac{1}{1 + K_p} \]
Ramp \(t u(t)\):
\[ e_{ramp}(\infty) = \frac{1}{K_v} \]
Parabola \(\dfrac{t^2}{2} u(t)\):
\[ e_{parabola}(\infty) = \frac{1}{K_a} \]
With disturbance \(D(s)\) between \(G_1\) and \(G_2\):
\[ e_D(\infty) = -\lim_{s \to 0} \frac{s G_2(s)}{1 + G_1(s) G_2(s)} D(s) \]
For step \(D(s) = \dfrac{1}{s}\):
\[ e_D(\infty) = -\frac{1}{\displaystyle \lim_{s \to 0} \frac{1}{G_2(s)} + \lim_{s \to 0} G_1(s)} \]
Use Python to compute
\[ e(\infty) = \lim_{s\to 0} s E(s) \]
for a given closed-loop \(T(s)\) and step input \(R(s) = 1/s\).
Edit the numerator/denominator and re-run.
Tasks:
num_T and/or den_T and see how \(e_{ss}\) changes.Recall for unity feedback:
\[ e(\infty) = \lim_{s\to 0} \frac{s R(s)}{1 + G(s)}. \]
Below, you can define \(G(s)\) and choose the test input type.
Questions:
Now let’s add integrators and see how system type affects \(e_{ss}\).
We define
\[ G(s) = \frac{K}{s^n (s+2)(s+3)}, \]
where n is the number of integrators → system type \(= n\).
Try this:
K4 = 50 and change n_integrators from 0 → 1 → 2 → 3.input_type2, note when error becomes zero / finite / infinite.We’ll compute
\[ K_p = \lim_{s\to 0} G(s),\quad K_v = \lim_{s\to 0} s G(s),\quad K_a = \lim_{s\to 0} s^2 G(s) \]
for a parameterized \(G(s)\).
Let
\[ G(s) = \frac{K(s+z)}{s^n (s+p_1)(s+p_2)}. \]
viewof n_type = Inputs.range([0, 2], {step: 1, value: 0, label: "System type n"})
viewof K3 = Inputs.range([0, 200], {step: 20, value: 100, label: "Gain K"})
viewof z = Inputs.range([0, 20], {step: 2, value: 10, label: "Zero z"})
viewof p1 = Inputs.range([1, 20], {step: 2, value: 5, label: "Pole p1"})
viewof p2 = Inputs.range([1, 20], {step: 2, value: 7, label: "Pole p2"})Questions:
n_type, which of \(K_p, K_v, K_a\) is zero, finite, or infinite?z, p1, p2 affect the finite constants?We’ll approximate steady-state behavior by evaluating \(T(0)\) for a step, where
\[ T(s) = \frac{G(s)}{1 + G(s)}. \]
If the input step amplitude is 1, then steady-state output ≈ \(T(0)\), and
\[ e_{ss} \approx 1 - T(0). \]
Try:
K_step. How do \(T(0)\) and \(e_{ss}\) change?Let’s simulate time-domain response to a ramp input for a Type 0 vs Type 1 system and visualize steady-state error.
We’ll use a simple numerical approximation here.
Questions:
K_ramp affect the ramp error for Type 1?For a disturbance entering between \(G_1\) and \(G_2\), for a step disturbance \(D(s) = 1/s\),
\[ e_D(\infty) = -\frac{1}{\displaystyle \lim_{s\to 0} \frac{1}{G_2(s)} + \lim_{s\to 0} G_1(s)}. \]
Here we’ll assume
\[ G_1(s) \approx K_1, \quad G_2(s) \approx K_2 \]
around DC, and compute \(e_D(\infty)\) interactively.
Explore:
K1 while keeping K2 fixed. What happens to eD?K2 (weaker plant gain). How does that affect eD?Now let’s simulate a disturbance step entering the plant input and see how the output error behaves.
We consider the canonical structure:
\[ G_1(s) = K_1, \quad G_2(s) = \frac{K_2}{s+1}. \]
Try:
K1_d. Does steady-state error magnitude decrease?K2_d. How does that affect the shape and final value of E(t)?Suppose you have unity feedback with
\[ G(s) = \frac{K}{s (s+2)(s+3)}, \]
which is Type 1.
You want a 10% error for a unit ramp input, i.e.,
\[ e_{ramp}(\infty) = 0.1. \]
Use the interactive code below to:
Now plug that \(K\) into the previous ramp simulation slide by editing G(s) there to match this form and see if the final error matches \(\approx 0.1\).
Use this slide as a checklist:
Consider writing down: