How would I determine the gain required for a settling time of 1 second for the system G=(s+4)/((​s+1)(s^2+6​s+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.

采纳的回答

Sam Chak
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))
Gp = s + 4 ----------------------- s^3 + 7 s^2 + 19 s + 13 Continuous-time transfer function.
% Controller
Gc = (425*s^3 + 2977*s^2 + 8080*s + 5528)/(s^4 + 27*s^3 + 260*s^2 + 681*s)
Gc = 425 s^3 + 2977 s^2 + 8080 s + 5528 ---------------------------------- s^4 + 27 s^3 + 260 s^2 + 681 s Continuous-time transfer function.
% Closed-loop system
Gcl = feedback(Gc*Gp, 1)
Gcl = 425 s^4 + 4677 s^3 + 19988 s^2 + 37848 s + 22112 --------------------------------------------------------------------------- s^7 + 34 s^6 + 468 s^5 + 3452 s^4 + 14735 s^3 + 36307 s^2 + 46701 s + 22112 Continuous-time transfer function.
% Check Settling Time
S = stepinfo(Gcl); Ts = S.SettlingTime
Ts = 0.9991
% Plot response
step(Gcl, 3), grid on
  2 个评论
Sam Chak
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))
Gp = s + 4 ----------------------- s^3 + 7 s^2 + 19 s + 13 Continuous-time transfer function.
% Controller
w = 6.35; % <-- tune this 0 dB gain crossover frequency
Gc = pidtune(Gp, 'pidf', w)
Gc = 1 s Kp + Ki * --- + Kd * -------- s Tf*s+1 with Kp = 31.4, Ki = 39.9, Kd = 4.87, Tf = 0.00138 Continuous-time PIDF controller in parallel form.
% Closed-loop system
Gcl = feedback(Gc*Gp, 1)
Gcl = 3569 s^3 + 3.711e04 s^2 + 1.203e05 s + 1.158e05 ----------------------------------------------------------------- s^5 + 732.7 s^4 + 8668 s^3 + 5.092e04 s^2 + 1.297e05 s + 1.158e05 Continuous-time transfer function.
% Check Settling Time
S = stepinfo(Gcl); Ts = S.SettlingTime
Ts = 0.9519
% Plot response
step(Gcl, 3), grid on

请先登录,再进行评论。

更多回答(0 个)

产品


版本

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by