Break in and break away points on Root Locus
40 ビュー (過去 30 日間)
古いコメントを表示
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 件のコメント
採用された回答
Sam Chak
2025 年 5 月 18 日
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 件)
Sulaymon Eshkabilov
2025 年 5 月 17 日
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 件のコメント
Sam Chak
2025 年 5 月 18 日
編集済み: Sam Chak
2025 年 5 月 18 日
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 件のコメント
参考
カテゴリ
Help Center および File Exchange で Classical Control Design についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!





