<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:

Introduction to PCB Design and Manufacturing Part 4: PCB Manufacturing 
Publish Date 23 Jun 2017 Nathan SzantoNathan Szanto

So, you’ve created your schematic, you’ve laid out your PCB, you’ve had multiple [..]

How to Build a Better MWD Hand
Publish Date 23 Jun 2017 Jason GalleJason Galle

What skills and experiences should we be looking for in new hires and what kind of [..]

Customer Experience means everything to us, Here's Why...
Publish Date 23 Jun 2017 Casey MayesCasey Mayes

Here at Erdos Miller, we all strive for the same goal, and that is to provide our [..]

NVCC – Intro to Utilizing GPU Power to Offload the CPU Part 2
Publish Date 23 Jun 2017 Jack BakerJack Baker

Assumptions: Machine has a Nvidia CUDA Core GPU (such as a GeForce) with installed [..]

Comparing different methods to get the 50th Fibonacci number in C++
Publish Date 23 Jun 2017 Jamison GrayJamison Gray

When comparing different algorithms, we typically look at space and time complexity, [..]

Introduction to PID Control Loops
Publish Date 23 Jun 2017 Yifang YangYifang Yang

A Proportional Integral Derivative controller (PID Controller) is a closed loop [..]

Making a calculator with Pyside
Publish Date 23 Jun 2017 Ashton ScaliseAshton Scalise

Python is not really the first language that comes to mind when thinking about GUI [..]