Break in and break away points on Root Locus
Show older comments
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
Accepted Answer
More Answers (2)
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);
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
Categories
Find more on Classical Control Design in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!




