Tune controller by using pidtune() with output disturbance instead of input disturbance

1 view (last 30 days)
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

Answers (1)

Sulaymon Eshkabilov
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.
  1 Comment
Robert U.
Robert U. on 10 Sep 2019
Dear Sulaymon,
thanks for your answer, but it is not fully clear to me what you mean.
Could you maybe give a sketch?
Thank you,
Robert

Sign in to comment.

Products


Release

R2018b

Community Treasure Hunt

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

Start Hunting!