How can i plot PI controller step respone
3 views (last 30 days)
Show older comments
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 :
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1760449/image.png)
2 Comments
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
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
step(sys)
sys = feedback(G,C,+1)% positive feedback
step(sys)
Answers (1)
Sam Chak
on 27 Aug 2024
Edited: Sam Chak
on 27 Aug 2024
Hi @Lina
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])
%% 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))
%% Pre-filter
fz = []; % zeros
fp = [-19.1775896766893 % poles
-3.27517464154048];
fk = -6.9180823798271e-07; % gain
Gf = tf(zpk(fz, fp, fk))
%% Filtered Closed-loop
Gcl = feedback(Gp, Gc); % put Gc on the feedback path
Fcl = minreal(series(Gf, Gcl))
%% Step response
step(Fcl, 600), grid on
stepinfo(Fcl)
0 Comments
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!