More accurate alternative to rlocfind to analyze root locus in control systems engineering
72 views (last 30 days)
Show older comments
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
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.
Answers (2)
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
HTH
0 Comments
See Also
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!