PID controller, difference when graphing step function with PID control block in matlab and simulink

Hi everyone,
please tell me, why is there a difference when graphing step function with PID control block in matlab and simulink
s =tf('s');
g = 1.883e5/(s*(s^2+4466*s+6.43e6));
kp = 60;
ki = 63000;
kd = 3;
gpid = pid(kp,ki,kd);
gsys = feedback(g*gpid,1);
step(gsys)

 Accepted Answer

Both responses look similar if you implement them correctly as shown.
s = tf('s');
Gp = 1.883e5/(s^2 + 4466*s + 6.43e6);
kp = 60;
ki = 63000;
kd = 3;
Gc = pid(kp, ki, kd);
Gcl = feedback(Gc*Gp, 1);
step(Gcl), grid on, ylim([-0.1, 1.1])

6 Comments

If you wish to design the PID Controller manually, then build the blocks this way:
Dear Sam, Thank you for your reply
I performed the model on r2018a but the simulation results are not the same as yours. I don't know what the reason is here. I send you the attached file.
Because you have used a different PID controller form, known as the "Ideal form" in MATLAB/Simulink.
In "Ideal form", the Integral gain should be and the Derivative gain should be .
To use the original designed PID gains, select the "Parallel form".
Also make sure that the stop time is set to "1.2e-5", because the response reaches steady-state extremely fast.
I'm glad to hear that. If you find the explanation and code helpful, please consider clicking 'Accept' ✔️ on my Answer. Additionally, you can show your appreciation by voting 👍 for other answers by Paul and Umar as a token of support for their knowledge sharing. Your support is greatly appreciated!

Sign in to comment.

More Answers (2)

Hi hoang,
The posted code doesn't result in the same figure as in the question
s =tf('s');
g = 1.883e5/(s*(s^2+4466*s+6.43e6))
g = 188300 -------------------------- s^3 + 4466 s^2 + 6.43e06 s Continuous-time transfer function.
kp = 60;
ki = 63000;
kd = 3;
gpid = pid(kp,ki,kd);
gsys = feedback(g*gpid,1);
step(gsys)
Note also that g in the Matlab code has an integrator in the denominator that is not present in the plant model in the Simulink diagram.
What is inside the subsystem block in the Simulink diaggram?
Hi Hoang,
My suggestion would be tuning the PID controller gains appropriately. You can use tools like the PID Tuner in Simulink or MATLAB's Control System Toolbox to adjust the controller parameters for better system performance. Try using the pidtune function to tune the PID controller. For more information regarding this function, please refer to
https://www.mathworks.com/help/control/ref/dynamicsystem.pidtune.html
Let me know if you need further assistance.

Tags

Asked:

on 2 Jul 2024

Commented:

on 3 Jul 2024

Community Treasure Hunt

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

Start Hunting!