How would I determine the gain required for a settling time of 1 second for the system G=(s+4)/((s+1)(s^2+6s+13))?
3 次查看(过去 30 天)
显示 更早的评论
For the following equation:
G=(s+4)/((s+1)(s^2+6s+13))
How would I determin the gain required for the system the have a settling time of 1 second?
I have the code set (see below) to confirm the theory, but the hand calculation is messing me up.
clear
close all
clc
a = input('input a in form [... ... ...]');
b = input('input b in form [... ... ...]');
c = input('input c in form [... ... ...]');
sys = zpk(a,b,c)
step(sys)
Thank-you for your time and help.
0 个评论
采纳的回答
Sam Chak
2023-11-11
I think no gain can make the closed-loop system to settle at 1 second. The fastest is around 1.74 sec with the gain 16.89. You need a high-order controller to achieve that.
s = tf('s');
% Plant
Gp = (s + 4)/((s + 1)*(s^2 + 6*s + 13))
% Controller
Gc = (425*s^3 + 2977*s^2 + 8080*s + 5528)/(s^4 + 27*s^3 + 260*s^2 + 681*s)
% Closed-loop system
Gcl = feedback(Gc*Gp, 1)
% Check Settling Time
S = stepinfo(Gcl); Ts = S.SettlingTime
% Plot response
step(Gcl, 3), grid on
2 个评论
Sam Chak
2023-11-11
Hi @Kez
The 7 parameters in the controller are tuned simultaneously. However, I believe the current Control System Toolbox lacks a one-click solution when the 1-second requirement is specified. You can explore the optimization-based graphical approach. Nevertheless, I find the following method more suitable since there is only one design parameter (0 dB gain crossover frequency) to be tuned:
s = tf('s');
% Plant
Gp = (s + 4)/((s + 1)*(s^2 + 6*s + 13))
% Controller
w = 6.35; % <-- tune this 0 dB gain crossover frequency
Gc = pidtune(Gp, 'pidf', w)
% Closed-loop system
Gcl = feedback(Gc*Gp, 1)
% Check Settling Time
S = stepinfo(Gcl); Ts = S.SettlingTime
% Plot response
step(Gcl, 3), grid on
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

