Break in and break away points on Root Locus
40 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Niel
el 17 de Mayo de 2025
Comentada: Sam Chak
el 18 de Mayo de 2025
Hi,
I'm busy developing a controller, but for some reason my plot does not cut through the real axis and I'm not able to find the locations where the damping ratio is 0.59.
Herewith the code, block diagram and RLocus plot:
G=tf([0.151 0.1774], [1 0.739 0.921 0.25])
rlocus(G)

Any assistance will be appreciated.
Thanks
Niel
0 comentarios
Respuesta aceptada
Sam Chak
el 18 de Mayo de 2025
Hi @Niel
Previously in this post, it was shown that we must at least place a compensating pole at the origin so that the root locus intersects the desired damping ratio grid.
In fact, we can place additional compensating poles and zeros at appropriate locations in the s-plane so that the root locus takes on a cross-shaped form. This is ideal in root locus design because it allows us to theoretically vary the feedback gain parameter k from just above 0 to ∞, achieving the desired damping ratio ζ and natural frequency
without destabilizing the system.
This approach only works if the zeros and poles of the plant,
, have no positive real parts and are not located near the imaginary axis of the s-plane. While this approach is effective, it is also necessary to ensure that the transfer function of the compensator,
, is proper, which in turn limits the overall effectiveness of such method for other types of plants.
%% Plant
G = tf([0.151 0.1774], [1 0.739 0.921 0.25])
% check if zero of G has positive real part
zG = zero(G)
% check if poles of G have negative real parts
pG = pole(G)
%% Pole–Zero compensator
zeta= 0.59; % desired damping ratio
wn = 1; % desired natural frequency
zC = pG; % desired zeros of Compensator
pC = [zG, -2*zeta*wn, 0]; % desired poles of Compensator (minimally put a pole at the origin)
C = tf(zpk(zC, pC, 1)) % check if Compensator TF is proper
%% Check if the Root Locus takes on a "Cross-shaped form"
figure
rlp = rlocusplot(C*G);
axis([-1.4, 0.2, -1.5, 1.5])
rlp.AxesStyle.GridVisible = "on";
rlp.AxesStyle.GridDampingSpec = zeta; % grid of desired damping ratio
rlp.AxesStyle.GridFrequencySpec = wn; % grid of desired natural frequency
%% Closed-loop system
% if root locus takes on a "Cross-shaped form", tune feedback gain until zeta = 0.59.
k = 6.62251655629139; % feedback gain
Gcl = feedback(k*C*G, 1) % actual closed-loop
Gcl = minreal(Gcl) % perform pole-zero cancellation
[wn, zeta] = damp(Gcl) % check if desired wn and zeta are achieved
Scl = stepinfo(Gcl)
%% Simulation
figure
step(Gcl, 2*round(Scl.SettlingTime)), grid on
2 comentarios
Más respuestas (2)
Sulaymon Eshkabilov
el 17 de Mayo de 2025
IS it what you're looking for:
% Transfer Function:
SYS = tf([0.151 0.1774], [1 0.739 0.921 0.25]);
% Plot the RLocus:
figure
rlocus(SYS)
title('Root Locus of the Transfer Function')
grid on
% Compute and display the damping ratio and natural frequency:
[wn zeta] = damp(SYS);
fprintf('Natural Frequencies: %f \n', wn)
fprintf('Damping Ratios: %f \n', zeta);
0 comentarios
Sam Chak
el 18 de Mayo de 2025
Editada: Sam Chak
el 18 de Mayo de 2025
Hi @Niel
The reason is simply that the locus never intersects the 0.59 damping ratio grid line, regardless of how the feedback gain parameter is varied from 0⁺ to 6 (within the stable region). Looking at the blue and green root locus branches, it starts with a damping ratio of 0.237. As the feedback gain parameter is increased, the damping ratio continues to decrease, resulting in an oscillatory step response. This is certainly undesirable.
Since you have not mentioned any performance specifications other than the desired damping ratio of 0.59, if you use the graphical root locus design approach, minimally, you will need to add a pole at the origin to provide the flexibility in varying the feedback gain parameter until the locus intersects the 0.59 damping ratio grid line in the 2nd figure.
However, please note that the feedback gain will also intersect the red and green root locus branches (low damping ratio paths). Because these branches are closer to the imaginary axis, they can significantly influence the system's transient response in the step response (see the 3rd figure).
G = tf([0.151 0.1774], [1 0.739 0.921 0.25])
%% Step 1: Analysis
damp(G)
[r1, k1] = rlocus(G);
display('Poles near the imaginary axis'), display(r1(:,30))
display('Corresponding feedback gain value'), display(k1(30))
figure
rlp1 = rlocusplot(G);
zeta1 = [0.1 0.2 0.3 0.59 0.9];
wn1 = [ 1 2 3 4];
ylim([-4 4])
rlp1.AxesStyle.GridVisible = "on";
rlp1.AxesStyle.GridDampingSpec = zeta1;
rlp1.AxesStyle.GridFrequencySpec = wn1;
%% Step 2: Design – Pure graphical Root Locus method (no advanced control theory)
C = tf(1, [1 0]) % add a pole at the origin
figure
rlp2 = rlocusplot(C*G);
zeta2 = [0.07, 0.59];
wn2 = 1;
axis([-2, 1, -1.5, 1.5])
rlp2.AxesStyle.GridVisible = "on";
rlp2.AxesStyle.GridDampingSpec = zeta2;
rlp2.AxesStyle.GridFrequencySpec = wn2;
[r2, k2] = rlocus(C*G);
display(r2(:,24))
display(k2(24)) % approx. limit of k before Closed-loop becomes unstable
k = 0.9205 % tune the feedback gain until you see the damping ratio of 0.59
Gcl = feedback(k*C*G, 1);
[wn zeta] = damp(Gcl)
%% Step 3: Simulation
figure
Scl = stepinfo(Gcl)
step(Gcl), grid on
0 comentarios
Ver también
Categorías
Más información sobre Classical Control Design en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!





