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)

 採用された回答

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 件のコメント

If you wish to design the PID Controller manually, then build the blocks this way:
hoang
hoang 2024 年 7 月 2 日
編集済み: hoang 2024 年 7 月 2 日
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.
Thanks for the repply @Sam Chak. It really helped.
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!

サインインしてコメントする。

その他の回答 (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?

2 件のコメント

I do agree with Paul’s suggestion.
I'm sorry I copied it wrong
g = 1.883e5/(s^2+4466*s+6.43e6);
My inside the subsystem block

サインインしてコメントする。

Umar
Umar 2024 年 7 月 2 日
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.

カテゴリ

タグ

質問済み:

2024 年 7 月 2 日

コメント済み:

2024 年 7 月 3 日

Community Treasure Hunt

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

Start Hunting!

Translated by