Steady-state errors

Updated

September 13, 2024

So far, we have investigated system stability and transient response. We now look at steady-state error.

Steady-state error is the difference between the input (or reference) and the output for a prescribed test input as \(t \to ∞\). We are typically interested in the following test signals shown below:

(a) Step signal
(b) Ramp signal
(c) Parabola signal
Figure 1: Commonly used reference signals
Input Interpretation \(r(t)\) \(R(s)\)
Step input Constant position \(\IND(t)\) \(\dfrac 1{s}\)
Ramp input Constant velocity \(t\IND(t)\) \(\dfrac 1{s^2}\)
Parabola input Constant acceleration \(\frac 12 t^2 \IND(t)\) \(\dfrac 1{s^2}\)

Since we are interested in steady state errors, we restrict attention to stable systems. The formulas that we derive will not be applicable to unstable systems.

1 Steady-state errors for general systems

Figure 2: An open loop system

Consider a system with input \(r(t)\), TF \(T(s)\) and output \(y(t)\). The steady state error is defined as the difference between the reference and the ouput, i.e., \[ e(t) = r(t) - y(t). \] We assume that \(T(s)\) is stable. Therefore, from the final value theorem, we have \[ e(∞) = \lim_{t \to ∞} e(t) = \lim_{s \to 0} s E(s) \] Now observe that \[ E(s) = R(s) - Y(s) = R(s) - R(s)T(s) = R(s)\bigl[ 1 - T(s) \bigr]. \] Hence, \[ \bbox[5pt,border: 1px solid] {e(∞) = \lim_{s \to 0} s R(s) (1 - T(s))} \]

Exercise 1 Find the steady-state error of the open loop system with TF \[ T(s) = \frac{2s + 10}{s^2 + 3s + 15}. \] to a step input.

We first check if the open loop system is stable. From Routh Hurwitz criteria we have

1 15
3
44/3

Since all entries in the first column are positive, the system is stable. Therefore, we have \[ e(∞) = \lim_{s \to 0} s R(s) (1 - T(s)) = 1 - T(0) = \frac{5}{15} = 0.333 \]

To confirm, we plot the step response of the above system below. From the step response, we see that the system settles around \(0.67\). Thus, the steady-state error is indeed \(0.33\) as computed.

using ControlSystems, Plots

G = tf([2,10],[1,3,15])

plt = plot(size=(600,300), gridalpha=0.75, minorgridalpha=0.25)
plot!(plt, step(G))

2 System Type

Before looking at more general systems, we discuss the notion of a system type. A general TF can be written as \[ \def\1#1{\Bigl(1 + \dfrac{s}{#1}\Bigr)} G(s) = K \frac{\1{z_1}\1{z_2}\cdots\1{z_m}} {\textcolor{red}{s^k}\1{p_1}\1{p_2}\cdots\1{p_n}} \] Here \(k\) denotes the number of poles at origin and is called the type of the system. Thus, we have

  • Type 0: \(\def\1#1{\Bigl(1 + \dfrac{s}{#1}\Bigr)} \quad G(s) = K_p \frac{\1{z_1}\1{z_2}\cdots\1{z_m}} {\1{p_1}\1{p_2}\cdots\1{p_n}}\)

  • Type 1: \(\def\1#1{\Bigl(1 + \dfrac{s}{#1}\Bigr)} \quad G(s) = \dfrac{K_v}{s} \frac{\1{z_1}\1{z_2}\cdots\1{z_m}} {\1{p_1}\1{p_2}\cdots\1{p_n}}\)

  • Type 2: \(\def\1#1{\Bigl(1 + \dfrac{s}{#1}\Bigr)} \quad G(s) = \dfrac{K_a}{s^2} \frac{\1{z_1}\1{z_2}\cdots\1{z_m}} {\1{p_1}\1{p_2}\cdots\1{p_n}}\)

For historical reasons, the gain corresponding to the different system types are called:

  • 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)\)

Note that we have the following

Type \(K_p\) \(K_v\) \(K_a\)
0 finite 0 0
1 \(∞\) finite 0
2 \(∞\) \(∞\) finite

These constants play an important role in understanding the steady-state error for unity feedback systems, as explained below.

3 Steady-state errors for unity feedback systems

Figure 3: A unity feedback system

Consider a unity feedback system as shown in Figure 3. The closed loop transfer function is given by \[ T(s) = \frac{G(s)}{1 + G(s)} \]

Thus, from the previous formula we get

\[ \bbox[5pt,border: 1px solid] {e(∞) = \lim_{s \to 0} s R(s)(1 - T(s)) = \lim_{s \to 0} \frac{s R(s)}{1 + G(s)}} \] Note that this formula is valid only if the closed loop system \(G(s)/(1 + G(s))\) is stable.

Now, we specialize this expression for the three test signals described before.

3.1 Step Input

Consider the steady-state error to step input for which \(R(s) = 1/s\). Thus, \[ e_{\rm step}(∞) = \lim_{s \to ∞} \frac{s R(s)}{1 + G(s)} = \frac{1}{1 + \lim_{s \to 0} G(s)} = \frac{1}{1 + K_p}. \]

Therefore, we have the following:

Type \(K_p\) \(e_{\rm step}(∞)\)
0 finite \(\dfrac{1}{1 + K_p}\)
1 \(∞\) 0
2 \(∞\) 0

3.2 Ramp input

Now consider the steady-state error to ramp input for which \(R(s) = 1/s^2\). Thus, \[ e_{\rm ramp}(∞) = \lim_{s \to 0} \frac{s R(s)}{1 + G(s)} = \frac{1}{\lim_{s \to 0} s G(s)} = \frac{1}{K_v}. \]

Therefore, we have the following:

Type \(K_v\) \(e_{\rm ramp}(∞)\)
0 0 \(∞\)
1 finite \(\dfrac{1}{K_v}\)
2 \(∞\) 0

3.3 Parabola input

Now consider the steady-state error to parabola input for which \(R(s) = 1/s^3\). Thus, \[ e_{\rm para}(∞) = \lim_{s \to 0} \frac{s R(s)}{1 + G(s)} = \frac{1}{\lim_{s \to 0} s^2 G(s)} = \frac{1}{K_a}. \]

Therefore, we have the following:

Type \(K_a\) \(e_{\rm para}(∞)\)
0 0 \(∞\)
1 0 \(∞\)
2 finite \(\dfrac{1}{K_a}\)

Exercise 2 Consider a unity feedback system with open-loop transfer function \[ G(s) = \dfrac{100(s+3)}{(s+1)(s+6)} \] Find the steady state errors to step, ramp, and parabola inputs.

3.4 Summary

In summary, the steady-state error of different types of system for different types of inputs is shown in Table 1

Table 1: Steady-state error of different types of systems for different inputs
Type \(e_{\rm step}(∞)\) \(e_{\rm ramp}(∞)\) \(e_{\rm para}(∞)\)
0 \(\dfrac{1}{1+K_p}\) \(∞\) \(∞\)
1 \(0\) \(\dfrac 1{K_v}\) \(∞\)
2 \(0\) \(0\) \(\dfrac{1}{K_a}\)

We first use Routh-Hurwitz to verify that the closed loop system is stable (left as an exercise).

Note that \(G(s)\) is a type 0 system. Therefore, \[ K_p = \lim_{s \to 0} G(s) = \frac{100 \cdot 3 }{1 \cdot 6 } = 50, \quad K_v = 0, \quad K_a = 0. \] Thus, \[ e_{\rm step}(∞) = \frac{1}{1 + K_p} = \frac{1}{51}, \quad e_{\rm ramp}(∞) = \frac{1}{K_v} = ∞, \quad e_{\rm para}(∞) = \frac{1}{K_a} = ∞. \]

Exercise 3 Consider a unity feedback system with open-loop transfer function \[ G(s) = \dfrac{100(s+3)}{s(s+1)(s+6)} \] Find the steady state errors to step, ramp, and parabola inputs.

We first use Routh-Hurwitz to verify that the closed loop system is stable (left as an exercise).

Note that \(G(s)\) is a type 0 system. Therefore, \[ K_p = ∞, \quad K_v = \lim_{s \to ∞} s G(s) = \frac{100 \cdot 3 }{1 \cdot 6 } = 50, \quad K_a = 0. \] Thus, \[ e_{\rm step}(∞) = \frac{1}{1 + K_p} = 0, \quad e_{\rm ramp}(∞) = \frac{1}{K_v} = \frac{1}{50}, \quad e_{\rm para}(∞) = \frac{1}{K_a} = ∞. \]

Steady-state errors are often part of the system specification. Depending on the system type, a constraint on the steady state error can be translated to a constraint on the appropriate error constant, which in turn can be used as a constraint on the tuneable parameters of the controller.

Exercise 4 Consider the system

Find the value of \(K\) such that the steady state error to a ramp signal is less than \(10\%\).

The constraint that \(r_{\rm ramp}(∞) \le 0.1\) implies that \(K_v \ge 10\).

The velocity constant of the system is given by \[ K_v = \lim_{s \to 0} s \cdot \frac{K}{s} \cdot G(s) = \frac{K \cdot 5}{2 \cdot 10} = \frac{K}{4}. \]

Thus, \[ K_v \ge 10 \implies K \ge 40. \]

We now test if the specified value of the gain works.

using ControlSystems, Plots
using Printf

K = 40

P = zpk([-5],[-2,-10],1.0)
C = tf(K,[1.0,0])

T_cl = feedback(C*P)
ramp(x,t) = [t] # Input needs to be a vector

res = lsim(T_cl, ramp, 5)
e   = res.u .- res.y

plt = plot(size=(600,300))
plot!(plt, res.t, [res.y' res.u'], label=["y(t)" "u(t)"])
plot!(plt, res.t[end]*ones(2), [res.y[end], res.u[end]], 
           label=@sprintf("e(∞) = %.2f%%", e[end]*100))

4 Steady-state errors for non-unity feedback systems

Consider a system with non-unity feedback as shown above. We can compute the steady-state error using the generic formula \[ e(∞) = \lim_{s \to 0} s R(s)(1 - T(s)) = \lim_{s \to 0) s R(s) \biggl[ \frac{1 + G(s)H(s) - G(s)}{1 + G(s)H(s)} \biggr]. \] However, in doing so, we lose the intuition that we have when using error constants with unity feedback system. In this section, we show that we can get back that intuition by converting a non-unity feedback system into a unity feedback system.

(a)

(b)

(c)

(d)
Figure 4: Unity feedback system equivalent to a non-unity feedback system

First we observe that (a) and (b) in Figure 4 are equivalent. Then observe that (b) is equivalent to (c), which in turn is equivalent to (d) with \[ \bbox[5pt,border: 1px solid] {G_e(s) = \frac{G(s)}{1 + G(s)H(s) - G(s)}} \]

Exercise 5 Consider the system

Find the steady state errors to step, ramp, and parabola inputs.

In this case, the forward gain is \(G(s) = 2/(s (s+2))\) and the feedback gain \(H(s) = 2\). Thus,

\[ G_e(s) = \frac{ \dfrac{2}{s(s+2)} }{1 + \dfrac{4}{s(s+2)} - \dfrac{2}{s(s+2)}} = \frac{2}{s^2 + 2s + 2}. \]

Thus, the equivalent system is a type 0 system with \[ K_p = \lim_{s \to 0} G(s) = 1, \quad K_v = 0, \quad K_a = 0. \]

Thus, \[ e_{\rm step}(∞) = \frac{1}{1+K_p} = \frac {1}{2}, \quad e_{\rm ramp}(∞) = \frac{1}{K_v} = ∞, \quad e_{\rm para}(∞) = \frac{1}{K_a} = ∞. \]

5 Steady-state errors for disturbances

To be written

6 Disturbance rejection for non-unity feedback system

To be written