I would like to find the transfer function of an unknown unstable SISO plant.

If it was a stable plant, I would input a sine sweep and measure the frequency response at the output; but I cannot do this since the plant is unstable.

I use a controller to get a stable closed-loop.

Methods I have tried:

  1. Sine-sweep at the input of the stable closed-loop. Problem: I have trouble extracting only the plant (without the controller) from the closed-loop transfer function.

  2. Add a sine disturbance (at different frequencies) at the controller output, and then estimate the gain of the transfer function from the input of the plant to the measurements of the plant by dividing the peak-to-peak of each signal, and the phase by calculating the time between the input's peak to the measurements's peak (for each frequency).

    This method takes a lot of time since it requires re-tuning the controller gains for different frequencies. Otherwise, with high gains at low frequencies, the input disturbance is attenuated, or with low gains at high frequencies, the output is saturated/unstable.

    Also, this method gives periodic but non-sinusoidal signals. I'm not sure I'm calculating the gain and phase of the plant transfer function correctly in this case.

I have two questions:

  1. Is the second method correct?
  2. Is there a better way to find the transfer function of an unstable plant?

1 Answer 1


See the image (found in this article).

Inject a signal into the loop somewhere (I show it below as going between the controller and the plant). Then measure the input to the plant and the output from the plant. Note that the image is a bit confusing -- it assumes that the normal command to the loop is 0 or some constant. It would be better to actually measure right at the output of the plant.

Then use the input to and output from the plant to estimate the plant response.

You can do this for swept sine, impulses, random noise, and steps. If you're concerned about noise, you can take long samples -- when I do swept-sine measurements using this technique, I set things up so that I can take arbitrarily long measurements at each frequency, to make sure I can capture the real signal in the presence of noise. If you're doing steps, you can get the response to an arbitrarily high number of steps, average, and then do ARMA or whatever method you wish to extract the plant transfer function. Ditto random data or impulses.

enter image description here

  • 1
    $\begingroup$ One should mention that some situations have parts that can be destroyed by consistent signals. One must use noise input to avoid these modes and low-level perturbations as well. HP (probably Agilent now) used to make special instruments for this sort of thing. The untangling requires going though auto-correlation. $\endgroup$
    – rrogers
    Commented Jan 7, 2020 at 20:00
  • $\begingroup$ I have not run into such a plant, but I have used a HP control loop analyzer, and I remember that feature. In fact, that paper I reference could have been subtitled "how to duplicate a HP 3563A in software". I'm pretty sure that you can either "untangle" into the frequency domain using autocorrelation, or that you can take the random noise response and determine a model directly using ARMA methods -- but I was never happy with the 3563A's ability to accurately get a transfer function (nor have I been much pleased since then using datasets and ARMA) so I try to use frequency sweeps. $\endgroup$
    – TimWescott
    Commented Jan 7, 2020 at 20:39
  • 1
    $\begingroup$ My first experience was when a friend had to establish closed-loop control on a giant radar antenna that had enough drive to destroy itself (shear) and was known to have resonances that you really didn't want to pump. Later on, I had to deal with some film handling equipment that ended up having similar resonances. I advise the folks that a redesign was in order because they wanted performance beyond the resonances. I got it working but cautioned them to not change anything or let anything wear out :) $\endgroup$
    – rrogers
    Commented Jan 7, 2020 at 20:46

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.