More accurate alternative to rlocfind to analyze root locus in control systems engineering
125 次查看(过去 30 天)
显示 更早的评论
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 个评论
PAVI
2024-12-5,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.
回答(2 个)
Arkadiy Turevskiy
2023-5-1
编辑:Arkadiy Turevskiy
2023-5-1
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 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Classical Control Design 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!