Root locus shows less overshoot than step

24 次查看(过去 30 天)
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));

回答(1 个)

Raj
Raj 2019-8-9
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!

类别

Help CenterFile Exchange 中查找有关 Classical Control Design 的更多信息

产品


版本

R2017a

Community Treasure Hunt

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

Start Hunting!

Translated by