How to limit Simulink PID block output for P, I, D seperatly?

23 vues (au cours des 30 derniers jours)
Jeeven Hugh
Jeeven Hugh le 24 Juil 2017
Réponse apportée : Reen le 22 Août 2017
I have some C code describing a PID controller that I am transferring into the Simulink environment for tuning. I am trying to use the PID block so that I can use MATLAB Control Systems Toolbox to tune my PID controller.
However, my PID limits the (P + I) output to +-12; then it subtracts the D part. Finally, it saturates the final output to +-25. Note that it also performs clamping +-25 on the I part, which I know that the PID block can do.
How would I get the limit on the (P + I) to work in Simulink using a PID block? If it isn't possible, what's a better way to tune my controller?
Thanks!

Réponses (1)

Reen
Reen le 22 Août 2017
Instead of using the PID block in Simlunk, try building the PID controller yourself, since you'll have more flexibility in the way it works. Here's an example:
The system on the top is exactly the same as the one on the bottom (Note that in the Kd branch, the resulting transfer function from that little loop is 1000*s/(s+1000), which is how the PID block estimates the derivative to make it realizable).
Now that there is a custom PID flow, you can add in saturation to any branch or at the end. You can also add rate limiters, dead zones, etc, to each branch separately.

Community Treasure Hunt

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

Start Hunting!

Translated by