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))?

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.

 Accepted Answer

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 Comments

Hi sam,
thank-you for the help.
May I ask how you determined the equation for the high order controller?
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

Sign in to comment.

More Answers (0)

Products

Release

R2023b

Asked:

Kez
on 10 Nov 2023

Commented:

on 11 Nov 2023

Community Treasure Hunt

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

Start Hunting!