# How do I use a root locus to find a value of K such that the damping ratio of dominant closed loop poles is a specified value?

293 views (last 30 days)

Show older comments

How do I use a root locus to find a value of K such that the damping ratio of dominant closed loop poles is 0.7071?

Using the following TF and associated root locus.

Many thanks

##### 0 Comments

### Accepted Answer

Paul
on 9 Mar 2023

##### 2 Comments

Paul
on 1 May 2023

Edited: Paul
on 1 May 2023

Here's my attempt. Can't say I've thorougly tested it, but maybe it's a start. I know for sure it will break down if the desired damping ratio is 1.

Transfer function for testing and its root locus

h = tf([2 5 1],[1 2 3]);

s = tf('s');

h = h/(s+4)/(s+5);

figure

rlocus(h);

hold on

Desired damping ratios

zetad = [0.2, 0.6, 0.99];

Loop through the zetad, compute the gains and corresponding root locations, which are added to plot as filled, black dots

for ii = 1:numel(zetad)

[r,k{ii}] = zetagain(h,zetad(ii));

plot(real(r),imag(r),'k.','MarkerSize',15);

end

sgrid(zetad,1:5:25)

k

Cases with no solution

[r,k] = zetagain(tf(1,[1 1]),0.2)

[r,k] = zetagain(tf(1,[1 2*.5*1 1]),0.7)

Other corner cases would be where one or more branches of the root locus either lie exactly on a line of constant zetad or if the line of constant zetad is a root locus asymptote.

function [r,k] = zetagain(h,zetad)

% compute the rotation angle

theta = asin(zetad);

m = numel(h.num{:})-1;

n = numel(h.den{:})-1;

h1 = tf(h.num{:}.*exp(-1j*theta).^(m:-1:0),h.den{:}.*exp(-1j*theta).^(n:-1:0));

% gain margin in rotated complex plane

s = allmargin(h1);

k = s.GainMargin;

% roots at values of k

r = rlocus(h,k);

r = r(:);

% eliminate extraneous roots that aren't at the the desired zeta. use 0.02 as a tolerance,

% maybe this should be an input parameter. maybe this test could could be made more robust.

zeta = sin(atan2(-real(r),abs(imag(r))));

r(abs(zeta-zetad)>0.02) = [];

end

### More Answers (1)

Sam Chak
on 26 Apr 2023

Edited: Sam Chak
on 26 Apr 2023

The steps are generally described in the following documentation, as well as in most undergrad control textbooks.

Demo:

% Plant

Gp = tf(32.5, [1 5 40])

% rlocus(Gp), sgrid

From the Root Locus of uncompensated system Gp with the s-plane grid of constant damping factors, it is clear that no matter how we move the 'square' data marker (■) to track the gain and damping values, it cannot achieve the desired 0.7071 damping ratio. Thus, a feedback controller is needed. In this example, a PID controller is designed and its gains are tuned.

% PID Controller

kp = -0.5066;

ki = 0.8703;

kd = 0.38;

Tf = 0.7071;

Gc = pid(kp, ki, kd, Tf)

rlocus(Gc*Gp), sgrid

From the Root Locus of the compensated system Gc*Gp, we clearly have more rooms to move the data marker (■). Now, if we zoom into the locus and move the data marker (■) until the desired 0.707 damping ratio is observed, then the corresponding gain is found to be .

##### 0 Comments

### See Also

### Categories

### Community Treasure Hunt

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

Start Hunting!