Tune controller by using pidtune() with output disturbance instead of input disturbance
2 views (last 30 days)
Show older comments
Dear all,
I'd like to tune a PIDF controller for the plant G_plant =
117.2 z - 95.28
--------------------------
z^3 - 1.679 z^2 + 0.7333 z
on the command line by using pidtune().
I'd like a crossover frequency of 40 kHz, phase margin of 60 degree and the design focus should be "disturbance-rejection".
My problem currently is that for pidtune() it seems to be assumed that there is an input disturbance d like shown here:
But in my case, I have an output disturbance d with a transfer function g_d like shown here:
I call pidtune() as follows:
pidtune(G_plant, 'PIDF', 2 * pi * 40.0e3, pidtuneOptions('PhaseMargin', 60.0, 'DesignFocus', 'disturbance-rejection'))
I am not sure if I can use pidtune() in my case, since here the disturbance acts at another position, namely at the output of the plant and with an additional transfer function, not at its input. How can I take the other disturbance location into account?
Furthermore, if I chose as design focus "balanced" or "reference-tracking", the exactly same controller is designed like with "disturbance-rejection". Why do I not see any difference in the controllers' parameters?
Thank you and best regards,
Robert
0 Comments
Answers (1)
Sulaymon Eshkabilov
on 20 May 2019
Hi Robert,
In this case, I would suggest to take out your controller C from your system model and add it from the outside as a unit feedback back to the summing junction (ys - ym) and then your pidtune works perfectly well.
Good luck.
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!