<img height="1" width="1" src="https://www.facebook.com/tr?id=1101141206686180&amp;ev=PageView &amp;noscript=1">


PID Anti-windup Techniques


Integrator windup is a problem in PID feedback controllers that results in overshoot that would not occur if the system were being controlled only in its linear range.

The linear range of a control system can be limited by saturation of the feedback controller output. The rise time of a system step response when the controller must initially be saturated is longer than that of the step response in the linear region. Because of this, the integrator will accumulate a larger output during the rise, causing overshoot.

Integrator anti-windup can be used to avoid this overshoot. Several anti-windup techniques exist; two common ones are back-calculation and clamping.


Back-calculation uses the difference between the unsaturated and saturated controller output as feedback that unwinds the integral accumulator. It introduces a constant to tune: Kb, the back-calculation gain.


Clamping, or conditional integration, prevents the integral output from accumulating in the appropriate direction when the controller output is saturated.

Comparing Anti-Windup Methods

After tuning your controller in the linear region, it's time to evaluate anti-windup techniques if the controller will be operating in saturation.

Time Domain

Time Domain.png

The step response in the time-domain can help you decide whether the controller behavior is good or not, but it does not give a good visualization of the anti-windup implementation behavior.

Error vs. Integrator Action
pi space.png
This graph shows the state of the integral accumulator as the controller drives error to 0. The upward step response can be seen on the right half of the chart, and the downward step response on the left.


We can clearly see where the clamped controller leaves saturation.


We can also see the accumulator unwinding in the controller with back-calculation.

It's important to note that in this example either the controller with back-calculation is not properly tuned, or this system with these gains does not lend itself to back-calculation anti-windup.

LabVIEW Example Code

Example code can be downloaded here. It depends on LV-PID, a simple PID library that can be downloaded here and OpenG Toolkit, which can be downloaded from VI Package manager.

Recent Posts:

The Absolute Necessity of Goals
Publish Date 23 Jun 2017 Cameron BashamDavid Taylor

The Biology of Goals  

Nyquist Rate and Antialiasing Filter Explained
Publish Date 23 Jun 2017 Jason ThaiDavid Taylor

In mud pulse telemetry, we use a sync signal for synchronization. A commonly used [..]

Good Firmware Programming: Quantitative vs Qualitative
Publish Date 23 Jun 2017 Yifang YangDavid Taylor

Write Software for others as you wish they would write for you.

Simulations and Data Driven Approach for Improved Code Deployment
Publish Date 23 Jun 2017 Saravanan PandiyanDavid Taylor

  Introduction At Erdos Miller, we are firm believers in making data-driven [..]

Wireframe, Mockups, and Prototypes
Publish Date 23 Jun 2017 Ashton ScaliseDavid Taylor

Before implementing a new feature in an application, it is common practice to create [..]

Simple Practice of Time Management
Publish Date 23 Jun 2017 Bryce UrestiDavid Taylor

Time Management can be very easy but also complicated based on schedules. But with [..]