PID control

The PID Controller

The PID controller (an abbreviation of Proportional Integral Differential) is the most widely applied feedback control formula/algorithm. It is applied in a huge variety of 'things' to automate them, such as planes, drones, cars, coffeemakers, wind turbines, furnaces, and manufacturing units. It is fair to say that the PID controller is the work horse for automation. The PID formula has three parameters that must be set or tuned in the right way and that is what is the PID Tuner is used for. In this article we will explain a suitable way to program a PID controller yourself (if you do not want to use standard libaries), and we present some background on different tuning methods.

The effect of P, I and D

The PID Controller has three parameters that should be tuned. The proportional term (Kp), the integral term (Ti) and the differential term (Td). The figure below shows the effects of varying Kp and Ti.

The discrete PID equation

The equations below present a PID formula that can be programmed in a control computer (note that we define the output of the PID controller as MV or u, and the controlled variable as PV):

\( \Delta u_k = K_p \left( e_k - e_{k-1} + \frac{T_s}{T_i}e_k + \frac{T_d}{T_s} \left( e_k - 2 e_{k-1} + e_{k-2} \right) \right) \)
\( u_k = u_{k-1} + \Delta u_k \)
With:
\( k = \) discrete time (0,1,2,..)
\( u_k = MV = \) Manipulated Variable at time k
\( e_k = PV-SP = \) Error at time k
\( SP = \) Setpoint at time k
\( PV = \) Process Variable at time k
\( K_p = \) Proportional Gain
\( T_i = \) Integraltime
\( T_d = \) Derivative time
\( T_s = \) Sample time

Example code for the discrete PID controller implemented in Matlab can be seen below. Also, you can directly download this code. C-code is also available, for a small fee.

PID Tuning

Various methods exist to tune a PID Controller:

  • Open loop method, combined with model based (= method used in PID Tuner)
  • Closed loop Ziegler and Nichols

Open loop PID Tuning


Open loop method to tune a PID controller

  1. Freeze the PID output
  2. Make a step change on the PID output (MV) in order of 3-10%. Step should be sufficiently big to see its effect on the controlled process variable (PV)
  3. Log response of MV and PV and fit the model parameters of a First Order Time Delay model to this response.
  4. Use model based tuning method, such as Table 1 for single PID loops

Table 1: PID Open Loop Tuning Rules based on [1]

KpTiTd
P ------
PI0.35*Tp / (Tdt * K)min( 8*Tdt, Tp)--
PID0.5*Tp / (Tdt*K)min( 8*Tdt , Tp )0.5*Tdt


Reference

[1] S. Skogestadt, “Probably the best simple PID tuning rules in the world”, Journal of Process Control, 2001

Closed loop Ziegler and Nichols tuning method

  1. Switch on proportional control only, i.e. choose:
    1. Ti = ‘maximum value’
    2. Td = 0 (unless you know which value to choose here)
  2. Increase proportional gain until loop oscillations hardly dampen.
  3. Then note:
    1. Ultimate gain (KU ) = proportional gain
    2. To = period of oscillation
  4. Apply settings from Table 2

Image: Period of oscillation

Table 2: Closed Loop PI Tuning Rules (Tuning rules for PID are not reliable to our opinion).

KpTiTd
PI 0.45*KuT0/1.20

Additions to the PID Controller Formula

In reality the output of a PID controller will be limited, e.g. from 0-100%, and sometimes also the rate-of-change should be limited.

Limit the PID controller output between an upper and lower bound

if u  < 0
   u = 0
end
 if u >  100
   u = 100
end 

Limit the PID controller output rate-of-change, for instance between -3 and +3

 
du = min( du, 3)
du = max( du, -3)

Adding a dead-band (with size 1) to the PID controller output

if du  < -1
   du = 0
end
 if du >  1
   du = 0
end 

 

PID Tuning Tips

  • Tip 1. Oscillations in process variables can have at least three causes, and it's essential to know which one applies in order to reduce the oscillations.
    - External disturbance
    - Instability in loop resulting in limit cycle
    - Stick-slip-like phenomena in valves or other actuators
  • Tip 2.Check out our posts on PID control issues and how to resolve them at this link
  • Tip 3. If you face any issue with (PID) control, contact us by mail or phone and tell us about it. We might be able to help!

Evaluating the performance

After you have tuned the PID controller, it is essential to check its closed-loop behavior. You can often do that by making a setpoint change, but sometimes (when the PID is in slave mode), it may be better to make a step change on the Perturbed Manipulated Variable (that is signal that you simply add to the MV, i.e. the output of the PID). Then check if the closed loop behaviour is the same as predicted by the closed-loop simulations in the PID Tuner.

Tuning tool

Having tuned many PID controllers, we developed the PID Tuner - a 'toolbox'. You can try out a demo of the PID Tuner for free.


If you are interested in this software, a training in PID tuning, or if you want help, send us a mail at info@dotxcontrol.com