More accurate alternative to rlocfind to analyze root locus in control systems engineering

72 views (last 30 days)
To find the gain at the point where the root locus intersects a line of constant damping ratio, the rlocfind function can be used, but the user has to manually select a point and Matlab finds the closest point on the root locus to the selection. Is there a way to find the exact point of intersection without having to make the selection manually?
h = tf([2 5 1],[1 2 3]);
rlocus(h) % Root locus
z = 0.707; sgrid(z,0)
k = rlocfind(h)
  1 Comment
PAVI
PAVI on 5 Dec 2024 at 7:29
PROCEDURE
3.1. Given the following transfer functions, plot the root locus. For each G(s) identify number of poles, zeros, infinite zeros and poles (if exist).
3.1.1. 𝐺 (𝑠𝑠)=13𝑠𝑠2+5𝑠𝑠+1
3.1.2. 𝐺 (𝑠𝑠)=5𝑠𝑠3+3𝑠𝑠2+5𝑠𝑠+1
4
3.1.3. 𝐺 (𝑠𝑠)=𝑠𝑠2+6𝑠𝑠+1𝑠𝑠3+3𝑠𝑠2+5𝑠𝑠+1
3.2. Using command ‘[K,poles] = rlocfind(num,den)’, repeat procedure 3.1. Find the respective gain and its poles at these respective conditions.
3.2.1. At K → 0.
3.2.2. When poles break-away into the complex plane or break-in away from the complex plane.
3.2.3. When poles enter the right half plane (RHP).
3.3. Implement a unity feedback control system of G(s). Identify the proportional gain, K that will satisfy the following parameters:
3.3.1. 𝐺 (𝑠𝑠)=1𝑠𝑠2+13𝑠𝑠+15
3.3.2. %OS within 10%.
3.3.3. Peak time less than 2.0 sec.
3.3.4. Use Matlab/SIMULINK for validation.

Sign in to comment.

Answers (2)

Arkadiy Turevskiy
Arkadiy Turevskiy on 1 May 2023
Edited: Arkadiy Turevskiy on 1 May 2023
Hi,
Here is a way to do it (not the most efficient, but it works).
% Define the transfer function
h = tf([2 5 1], [1 2 3]);
% Define the desired damping ratio
zeta = 0.707;
% Get the poles and zeros of the transfer function
[num, den] = tfdata(h);
% Loop through different values of k to find the desired damping ratio
for k = 0:0.001:100
% Get the poles of the transfer function at gain k
p_k = roots(cell2mat(den) + k * cell2mat(num));
% Use the damp function to calculate the damping ratio of the poles
[wn, zeta_k] = damp(p_k);
% If the damping ratio is close to the desired value, print the gain and break out of the loop
if abs(zeta_k - zeta) < 0.001
fprintf('The gain k for a damping ratio of %f is %f\n', zeta, k);
break;
end
end
The gain k for a damping ratio of 0.707000 is 0.196000
HTH

Paul
Paul on 1 May 2023

Community Treasure Hunt

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

Start Hunting!