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

51 vues (au cours des 30 derniers jours)
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 commentaire
PAVI
PAVI le 5 Déc 2024
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.

Connectez-vous pour commenter.

Réponses (2)

Arkadiy Turevskiy
Arkadiy Turevskiy le 1 Mai 2023
Modifié(e) : Arkadiy Turevskiy le 1 Mai 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 le 1 Mai 2023

Community Treasure Hunt

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

Start Hunting!

Translated by