Smith predictor

From Wikipedia, the free encyclopedia

The Smith predictor (invented by O. J. M. Smith in 1957) is a type of predictive controller designed to control systems with a significant feedback time delay. The idea can be illustrated as follows.

Suppose the plant consists of followed by a pure time delay . refers to the Z-transform of the transfer function relating the inputs and outputs of the plant .

As a first step, suppose we only consider (the plant without a delay) and design a controller with a closed-loop transfer function that we consider satisfactory.

Next, our objective is to design a controller for the plant so that the closed loop transfer function equals .

Solving , we obtain . The controller is implemented as shown in the following figure, where has been changed to to indicate that it is a model used by the controller.

Note that there are two feedback loops. The outer control loop feeds the output back to the input, as usual. However, this loop alone would not provide satisfactory control, because of the delay; this loop is feeding back outdated information. Intuitively, for the k sample intervals during which no fresh information is available, the system is controlled by the inner loop which contains a predictor of what the (unobservable) output of the plant G currently is.

To check that this works, a re-arrangement can be made as follows:

Here we can see that if the model used in the controller, , matches the plant perfectly, then the outer and middle feedback loops cancel each other, and the controller generates the "correct" control action. In reality, however, it is impossible for the model to perfectly match the plant.

See also[edit]


  • O. J. Smith, Closer control of loops with dead time, Chemical Engineering Progress, 53 (1957), pp. 217–219
  • K. Warwick and D. Rees, Industrial Digital Control Systems, IET, 1988. [1]

External links[edit]

  • "Overcoming process deadtime with a Smith Predictor". 17 February 2015.
  • "Control of Processes with Long Dead Time: The Smith Predictor - MATLAB & Simulink Example".