I am trying to control a plant with PID using tuning rules such as the Ziegler-Nichols rules. However, it is not always easy just to send a step to your plantZiegler-Nichols illustration

source of the image.

Another method to find the same parameters is to set your plant on the verge of instability and measure the gain and pulsation of the oscillation, sometimes called $K_{180}$ and $\omega_{180}$ (I never understood why this is supposed to happen when the phase is 180° but this is a topic for another question)

Fortunately, two guys named Karl J. Aström and Tore Hägglund found out that it is possible to find $K_{180}$ and $\omega_{180}$ by just using oscillation provoked by relay control, in a method which is freely described here. However, it is also known that Ziegler-Nichols do not yield very good PID tuning.

Fortunately (again), Karl J. Aström and Tore Hägglund (again) found tuning rules described here called AMIGO which apparently perform much better than the Ziegler-Nichols rules. The problem is the following : while the Ziegler-Nichols method only needs two parameters as it is supposed to follow the model of the following transfer function : $$P(s)=\frac{K_v}{s}e^{-sL}$$ the AMIGO rules (as others like Cohen-Coon) assume the following model, called FOTD (First Order Time Delay) : $$P(s) = \frac{K_p}{1+sT}e^{-sL}$$

enter image description here source

Note how that there are three parameters now as opposed to Ziegler-Nichols in which their were only two.

I couldn't find any literature about getting these three parameters from relay control oscillation. I also might add that I find most literature on the subject not very explicit or elusive about how they got their parameters/their results and so on. I was wondering if anyone here could help me see through this.

I feel like there is an obvious answer but I can't find it.


1 Answer 1


I finally found the answer by myself and I hope it will help someone someday. There actually is no simple shortcut, if one wants to use the AMIGO rules one must fit a FOTD model to the process.

There are actually many techniques available to fit a FOTD, a SOTD or even a higher order model.

This paper : T.Liu et al. A tutorial review on process identification from step or relay feedback test, J. Process Control(2013) which is unfortunately not freely available lists a variety of techniques to fit models from step or relay feedback.

Also this thesis (freely available this time) might provide some guidelines. I actually found the paper listed above in its sources.

There are three main techniques to fit a FOTD from relay feedback oscillations. One which is called the describing function method which is the simplest but shows relatively poor performance, one which is called the curve fitting method that shows good performance but is relatively sophisticated and the last one which is called the frequency response method that shows slightly better performance than the curve fitting approach (although it seems to depend on the system) but is more complex.

I'll try to present the curve fitting approach for an biased (i.e asymmetric) relay of a stable system as it is the one that I understood the best.

As a reminder a FOTD is a system with the following transfer function :

$$G(s) = \frac{K_p}{1+sT}e^{-sL}\tag{1}\label{eq1}$$

which is equivalent to the following differential equation : $$\dot{y}+\frac{1}{T}y = \frac{K_p}{T}u(t-L) \text{ and } y(0)=0$$

Here is a representation of a system under hysteresis regulation :

enter image description here

Note the time delay between the command change and the inflexion point. Since we are considering a first order system, the command directly acts on the derivative (there is no inertia). Therefore, as soon as the command hits the system, so to speak, the system changes its slope. Thus, the time delay between a command change and the next inflexion point is our time delay $L$. We have our first parameter.

For $K_p$ one can remark that $K_p = G(0)$. We have, although I don't get how one can compute the Fourier transform of a periodic signal (the integral would diverge), since $u$ and $y$ have the same period we have : $$K_p = G(0) = \frac{\int_{period}y(t)dt}{\int_{period}u(t)dt}$$

In order to get T we just need to solve \eqref{eq1}. It is a bit tedious but if you start with the regulator feeding the negative input and zero initial condition, the system enters into a periodic cycle. Then if you concentrate on a part in which the curve is ascending you can show that : $$y_{max} = K_p (\Delta\mu+\mu_{0}) - 2K_p\mu{0}Ee^{\frac{P_{+}}{T}}$$ and $$-\epsilon_{-} = K_p (\Delta\mu+\mu_{0}) - 2K_p\mu{0}Ee^{\frac{P_{+}-L}{T}}$$


  • y_{max} the maximum of y on one period
  • $u_{+}$, $u_{-}$ the biggest and smallest command of the hysteresis
  • $\Delta\mu = \frac{u_{+}+u_{-}}{2}$
  • $\mu_0 = \frac{u_{+}-u_{-}}{2}$
  • $-\epsilon_{-}$ the error at which the command switches to $u_{-}$
  • $P_u$ the time period of both u and y
  • $P_{+} $ the duration during which the command is at $u_{+}$ on one time period
  • $E = \frac{1-e^{\frac{P_{+}}{T}}}{1-e^{\frac{P_{u}}{T}}}$

and by combining the two equations one might get

$$T = \frac{L}{ln(\frac{ K_p(\Delta\mu+\mu_0)+\epsilon_{-} }{K_p(\Delta\mu+\mu_0)-y_{max}})}$$

Then, you have all the parameters and you can use the AMIGO rules.

  • $\begingroup$ Didn't validate but +1 detailed answer $\endgroup$ Feb 18, 2023 at 13:45

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.