Course materials · Control Engineering II

Root Locus

English translation

Execution setup

The Python option uses python-control. If the module is missing, run %pip install control==0.10.2 in a Colab or Jupyter code cell.

Learning objectives

Examine how choosing a gain relates to pole locations and the time response.

Gain and closed-loop poles

Starting conditions

L(s)=s+7s(s+5)(s+15)(s+20)L(s)=\frac{s+7}{s(s+5)(s+15)(s+20)}. Use K∈{100,500,1000}K\in\{100,500,1000\}.

Procedure

  1. Plot the root locus and mark the poles of feedback(K*L,1) for each K using distinct symbols.
  2. Tabulate the real parts of the poles and stability for each case.
  3. Predict pole movements and response changes relative to the baseline condition K=500K=500.

Results to retain

import numpy as np
import matplotlib.pyplot as plt
import control as ctl
s = ctl.tf('s')
L=(s+7)/(s*(s+5)*(s+15)*(s+20))
ctl.root_locus_plot(L)
for k in [100,500,1000]: print(k,ctl.poles(ctl.feedback(k*L,1)))

Record results and self-check

K:

Closed-loop Pole:

Maximum real part:

Stability:

Points to check

Testing predictions with time responses

Starting conditions

Apply a unit step over 0≤t≤80\le t\le 8 s to the same model and gain.

Procedure

  1. Calculate overshoot and settling time only for stable cases.
  2. Explain the relationship between the slowest pole pair and oscillation and decay in the time response.
  3. K=500K=500: add one value above or below this and test your prediction.

Results to retain

import numpy as np
import matplotlib.pyplot as plt
import control as ctl
s = ctl.tf('s')
L=(s+7)/(s*(s+5)*(s+15)*(s+20))
t=np.linspace(0,8,1601)
T=ctl.feedback(500*L,1)
t,y=ctl.step_response(T,t)
plt.plot(t,y);plt.xlabel('Time [s]');plt.grid()
# TODO: Add the remaining gains.

Record results and self-check

K:

Overshoot [%]:

Settling Time [s]:

Agreement with predictions:

Points to check

Applying the same procedure to other models

Starting conditions

Use L2(s)=s+2s2+2s+3L_2(s)=\frac{s+2}{s^2+2s+3} and K∈{.5,2,10}K\in\{.5,2,10\}.

Procedure

  1. Create a root-locus plot, pole table, and step plot for L2 in the same format.
  2. Determine whether gain changes produce the same pattern in the higher-order model L and in L2.
  3. Explain whether conclusions from one model can be applied directly to another.

Results to retain

import numpy as np
import matplotlib.pyplot as plt
import control as ctl
s = ctl.tf('s')
L2=(s+2)/(s*s+2*s+3)
for k in [.5,2,10]:print(k,ctl.poles(ctl.feedback(k*L2,1)))

Record results and self-check

Model:

K:

Pole:

Overshoot [%]:

Settling Time [s]:

Points to check