I have a closed-loop system with the following discrete-time plant:

$P(z) = \frac{0.1262}{z^2-0.3303z+0.07517}$

With a fixed (and horrendously low) sampling time of 0.05 seconds. The plant has a time constant of approximately 0.03 seconds - this was calculated using MATLABs System Identification Toolbox.

I am trying to design a PI/PID controller that will attenuate load disturbances (injected after the plant) with frequencies < 1 Hz without amplifying higher frequencies. No matter how much I play with the gain and phase margins, I cannot seem to achieve this.

Seen below, is a picture showing a nasty bump between 1 and 6 Hz (circled in red) that I cannot seem to remove and retaining disturbance rejection at low frequencies.

enter image description here

I believe that this is an impossible task to accomplish with such a low sampling rate. If so, are there any other control typologies I can take a look at? In the past, I designed a Smith predictor, and yes it improved disturbance rejection but not by very much - I am still getting amplification at higher frequencies.

Thank you,


1 Answer 1


Because the plant has a delay of two samples it will never be possible to cancel the disturbances completely, because then you would have to predict the disturbance those two samples ahead of time. Also a Smith predictor is therefore only useful for obtaining a desirable complementary sensitivity transfer function.

I also believe your are limited by the waterbed effect. According to this attenuating below 1 Hz and not amplify above that would be impossible. I gave it a try myself and was able to limit the peek of the sensitivity function to 4.06 dB while still satisfying the attenuating below 1 Hz. However lowering it to attenuating below 0.6 Hz gave me a peek of only 1.54 dB. Namely the waterbed effect roughly says that if you want to lower the magnitude of the sensitivity in a certain frequency range, then it has to go up somewhere else.

  • $\begingroup$ Thank you again very much. I am realizing how difficult these dynamics are. I am considering putting a low-pass filter in the feedback line, so the PID controller does not attempt to compensate for disturbances > 1 Hz. I only care about attenuating low frequencies (< 1 Hz). A high order filter will inject so much phase delay - I believe. I feel like this is not good practice because in general this would equate to lower gains on the controller. $\endgroup$ Commented Aug 25, 2017 at 21:24
  • $\begingroup$ Would increase sampling rate help with the waterbed effect? Also, can you suggest any reading material on disturbance rejection and sampling rate? $\endgroup$ Commented Aug 25, 2017 at 21:25

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.