Why does my Transfer function overshoots
Mostrar comentarios más antiguos
syms s real
zeros = roots([0.075, 1, 1]);
poles = roots([1, 3, 5, 0]);
Gs = zpk(zeros, poles,1);
rlocus(Gs)



As you can see, eventhough K=45.3 is on the root locus with damping coeff. 1 it still overshoots. What might cause this problem or am i doing something wrong ?
1 comentario
Onur Arda
el 3 de Mayo de 2024
damn
Respuesta aceptada
Más respuestas (1)
Hi @Berker
I believe the design objective is to determine the gain from the root locus such that the response avoids exhibiting oscillatory behavior or maintains the percentage overshoot as low as possible without becoming overdamped. If the plant is given as follows,

then the design procedure can be referred to:

%% Plant
zeros = roots([0.075, 1, 1]);
poles = roots([1, 3, 5, 0]);
Gp = zpk(zeros, poles, 0.075)
% Gp = tf([0.075, 1, 1], [1, 3, 5, 0]) % directly models the Plant
%% Check if the Gain is as accurate as shown in the data tip (rlocus)
[r, k] = rlocus(Gp);
idx = find(abs(imag(r(1,:)) < eps));
rlGain = k(idx(1))
%% True Control Gain
Gc = rlGain*(1/0.075);
%% Closed-loop system
Gcl = feedback(Gc*Gp, 1)
step(Gcl), grid on
1 comentario
If following your original plant's zpk transfer function, you will still find the root locus gain to be around 45.3, and the same design procedure remains applicable.
%% Plant
zeros = roots([0.075, 1, 1]);
poles = roots([1, 3, 5, 0]);
Gp = zpk(zeros, poles, 1) % <-- k is 1
% Gp = tf([0.075, 1, 1], [1, 3, 5, 0]) % directly models the Plant
%% Check if the Gain is as accurate as shown in the data tip (rlocus)
[r, k] = rlocus(Gp);
idx = find(abs(imag(r(1,:)) < eps));
rlGain = k(idx(1))
%% True Control Gain
Gc = rlGain*(1/0.075);
%% Closed-loop system
Gcl = feedback(Gc*Gp, 1)
step(Gcl), grid on
Categorías
Más información sobre Classical Control Design en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



