Root locus shows less overshoot than step

Hello,
I'm taking a Controls course, and I'm practicing frequency domain design.
I have a linearized system, for the which I have to design a controller that, between other specifications, needs to produce a low overshoot.
To check that, I'm using MATLAB's root locus (rlocus command), but the problem is that the overshoot that the graph assigns to the complex closed loop poles is way lower than the overshoot that appears when I use the command step. Root locus says that there should be les than 0.01% Overshoot, but step clearly shows more than 30%.
Does anyone know what is going on?
This is my code. Thank you everyone!
close all;
syms s;
s=tf('s');
G=-4.472/(s^2-10);
T=1/300;
R=(1-T*s)/(1+T*s);
P=R*G;
kc=3300;
cont=-kc*(s+3.16)*(s+3.16)/(s*(s+1000));
L=P*cont;
rlocus(L);
figure();
step(L/(1+L));

Answers (1)

The overshoot value indicated on a particular Pole in rlocus or pzmap plot is effectively the overshoot 'contributed' by that particular pole. The whole system dynamics is not taken into picture here. Suppose you create a new system with only that particular pole, then you would get the overshoot as indicated in the rlocus plot. Combination of poles and zeros effectively creates a new system which has different characteristics as you get with step/impulse/lsim commands which considers dynamics of full system. So basically after you do
step(L/(1+L));
the numbers you get by using
a=step(L/(1+L));
b=stepinfo(a)
is the correct information for the full system. Hope this helps!

Products

Release

R2017a

Asked:

on 8 Aug 2019

Answered:

Raj
on 9 Aug 2019

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!