Integral windup

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search

Integral windup, also known as integrator windup[1] or reset windup,[2] refers to the situation in a PID feedback controller where a large change in setpoint occurs (say a positive change) and the integral term accumulates a significant error during the rise (windup), thus overshooting and continuing to increase as this accumulated error is unwound (offset by errors in the other direction). The specific problem is the excess overshooting.


This problem can be addressed by

  • Initializing the controller integral to a desired value, for instance to the value before the problem
  • Increasing the setpoint in a suitable ramp
  • Disabling the integral function until the to-be-controlled process variable (PV) has entered the controllable region
  • Preventing the integral term from accumulating above or below pre-determined bounds
  • Back-calculating the integral term to constrain the process output within feasible bounds.[3]
  • Zeroing the integral value every time the error is equal to, or crosses zero. This avoids having the controller attempt to drive the system to have the same error integral in the opposite direction as was caused by a perturbation.


Integral windup particularly occurs as a limitation of physical systems, compared with ideal systems, due to the ideal output being physically impossible (process saturation: the output of the process being limited at the top or bottom of its scale, making the error constant). For example, the position of a valve cannot be any more open than fully open and also cannot be closed any more than fully closed. In this case, anti-windup can actually involve the integrator being turned off for periods of time until the response falls back into an acceptable range.

This usually occurs when the controller's output can no longer affect the controlled variable, or if the controller is part of a selection scheme and it is selected right.

Integral windup was more of a problem in analog controllers. Within modern Distributed Control Systems and Programmable Logic Controllers, it is much easier to prevent integral windup by either limiting the controller output or by using external reset feedback, which is a means of feeding back the selected output to the integral circuit of all controllers in the selection scheme so that a closed loop is maintained.

In addition, integral terms, in general, can have unwanted effects. Different situations may require different integral behaviors. For example, in a navigation system based on bearing and the error between target and actual bearings, the integral term has the desirable ability to correct the bearing after a deviation and restore the course (and not just the bearing) to the desired one. Conversely, a car speed cruise control should not attempt to equally balance errors in one direction with errors in the other. For example, a period of time spent below the speed set point should not be balanced by an equal integral above the speed set point. In this latter case, it is desirable to zero the integrator every time the error is zero or when the error changes sign. A convenient and robust method to determine when the error changes sign or is equal to zero is to multiply the current error by the previous error. (The previous error would be available if a derivative term is also being used.) If the product is zero or negative then the integrator should be zeroed.


  1. ^ "Microchip Application Note AN532: Servo Control of a DC Motor" (PDF). Microchip Technology, Inc. 1997. p. 4. Retrieved 2014-01-07.
  2. ^ M. Tham. "Discretised PID Controllers" (PDF). Retrieved 2014-01-07.
  3. ^ Cooper, Douglas. "Integral (Reset) Windup, Jacketing Logic and the Velocity PI Form". Retrieved 2014-02-18.