Clear Filters
Clear Filters

How can i plot PI controller step respone

7 views (last 30 days)
Lina
Lina on 27 Aug 2024
Edited: Sam Chak on 27 Aug 2024
I used the following steps to plot the step response using (step) function:
-> num2_PI=conv(395.5*[1 1/8],[0 -0.0005854 -0.01121 0.0003176]);
den2_PI=[ 1 1.117 10.18 0.0005226 0]+num2_PI;
TF2_PI=tf(num2_PI,den2_PI);
step(TF2_PI)
the plot was :
So , how can I read the overshoot, final value and other readings from this plot
  2 Comments
Sam Chak
Sam Chak on 27 Aug 2024
You have successfully plotted the step response of an unknown system that doesn't look like a Pure PI Controller. Unfortunately, the response indicates instability and those characteristics {overshoot, final value, etc.} are undefined for unstable systems.
Mathieu NOE
Mathieu NOE on 27 Aug 2024
hello
fyi, your "plant" is unstable in open loop and cannot be stabilized with this PI correction , neither with negative or positive feedback
% PI
num1 = 395.5*[1 1/8]; % P , I gains
den1 = [1 0];
C = tf(num1,den1);
% Plant
num2=[0 -0.0005854 -0.01121 0.0003176];
den2=[ 1 1.117 10.18 0.0005226 0];
G=tf(num2,den2);
step(G)
sys = feedback(G,C,-1) % standard negative feedback
sys = -0.0005854 s^3 - 0.01121 s^2 + 0.0003176 s ----------------------------------------------------------- s^5 + 1.117 s^4 + 9.948 s^3 - 4.462 s^2 - 0.4286 s + 0.0157 Continuous-time transfer function.
step(sys)
sys = feedback(G,C,+1)% positive feedback
sys = -0.0005854 s^3 - 0.01121 s^2 + 0.0003176 s ----------------------------------------------------------- s^5 + 1.117 s^4 + 10.41 s^3 + 4.463 s^2 + 0.4286 s - 0.0157 Continuous-time transfer function.
step(sys)

Sign in to comment.

Answers (1)

Sam Chak
Sam Chak on 27 Aug 2024
Edited: Sam Chak on 27 Aug 2024
The 4th-order plant under consideration appears to be unstable and cannot be effectively stabilized using a low-order, simple 2-parameter PI controller. Additionally, the unstable plant also exhibits positive zeros, which can lead to initial undershoot in the system response.
In an effort to address these challenges, I have attempted to strategically place the poles and zeros of a matching 4th-order controller (on the feedback path) and the pre-filter, with the goal of limiting the undershoot percentage to less than 20% and ensuring the compensated system converges within 5 minutes. The MATLAB stepinfo() command can be utilized to analyze the step-response characteristics of the stabilized system.
%% Plant
Gp = tf([0, -0.0005854, -0.01121, 0.0003176], [1, 1.117, 10.18, 0.0005226, 0])
Gp = -0.0005854 s^2 - 0.01121 s + 0.0003176 ----------------------------------------- s^4 + 1.117 s^3 + 10.18 s^2 + 0.0005226 s Continuous-time transfer function.
%% Feedback Compensator
cz = [ 1.8729742918689 % zeros
-5.13296170895781e-05
-6.69459607654879e-09];
cp = [-3.27517464154048 + 0i % poles
2.1086089615566 + 0.506178267136755i
2.1086089615566 - 0.506178267136755i
0.0282900517606163 + 0i];
ck = -7456.33220301306; % gain
Gc = tf(zpk(cz, cp, ck))
Gc = -7456 s^3 + 1.397e04 s^2 + 0.7169 s + 4.799e-09 ----------------------------------------------- s^4 - 0.9703 s^3 - 9.083 s^2 + 15.66 s - 0.4357 Continuous-time transfer function.
%% Pre-filter
fz = []; % zeros
fp = [-19.1775896766893 % poles
-3.27517464154048];
fk = -6.9180823798271e-07; % gain
Gf = tf(zpk(fz, fp, fk))
Gf = -6.918e-07 --------------------- s^2 + 22.45 s + 62.81 Continuous-time transfer function.
%% Filtered Closed-loop
Gcl = feedback(Gp, Gc); % put Gc on the feedback path
Fcl = minreal(series(Gf, Gcl))
Fcl = 4.05e-10 s^4 - 1.731e-09 s^3 + 2.001e-09 s^2 - 1.091e-10 s + 1.524e-12 ----------------------------------------------------------------------------------------------------------------------- s^8 + 0.1467 s^7 + 0.01311 s^6 + 0.0007778 s^5 + 3.284e-05 s^4 + 9.877e-07 s^3 + 2.03e-08 s^2 + 2.561e-10 s + 1.524e-12 Continuous-time transfer function.
%% Step response
step(Fcl, 600), grid on
stepinfo(Fcl)
ans = struct with fields:
RiseTime: 68.8473 TransientTime: 287.5175 SettlingTime: 289.4285 SettlingMin: 0.9002 SettlingMax: 1.0118 Overshoot: 1.1755 Undershoot: 17.9067 Peak: 1.0118 PeakTime: 420.8477

Community Treasure Hunt

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

Start Hunting!