PID Controller Windup Mechanism and Saturation Correction Assistance

Discussion in 'Programmer's Corner' started by Adanovinivici, Mar 6, 2016.

  1. Adanovinivici

    Thread Starter Member

    Sep 5, 2014
    Hello All,

    I have been searching forums as well as the internet to find some information about the windup mechanism and saturation correction values of a PID controller and how its related to the proportional, integration, and derivative portions of the controller. Here is an example of some reference material I used:

    Could someone please help me understand what the purpose of windup and saturation correction is and how it relates to taking the integral, derivative, and proportion of error? I think "windup" is related something is accumulating over time that needs to be cancelled out. Some posts mentioned changing frequencies and low pass filters, but I'm not sure. If someone could give me some insight on this term, I would appreciate it. In addition, saturation correction is also something I'm having trouble understanding what it actually is. What scenario would require the use of saturation correction? Any references that would further my understanding would also be appreciated?

    Much Appreciated,
  2. Adanovinivici

    Thread Starter Member

    Sep 5, 2014
    If I'm missing any information, please let me know. Otherwise, I would appreciate your help.
  3. crutschow


    Mar 14, 2008
    Read this.
    Basically integrator windup is the integrator in a PID loop saturating due to a large change in the loop set-point or during system startup.
    When this happens the loop loses proper control and large transient overshoot in settling to the system operating point can occur.

    If you are actually trying to do a specific control loop, you might consider using Fuzzy Logic for control, which I discuss here. It does not suffer from the problem of integrator windup.
  4. Adanovinivici

    Thread Starter Member

    Sep 5, 2014
    I see. That makes sense. I took a look at your fuzzy logic discussion and it was pretty insightful. Thank you for the reference.
  5. atferrari

    AAC Fanatic!

    Jan 6, 2004
    I implemented an analog PID controller just to gain insight. Read about it here.

    To cope with the windup problem I designed the integrator to be in reset at startup, being enabled only when the controlled variable (Vsens) is within a "window" riding the Setpoint (Vref). In other words, no matter what setpoint (Vref) you select, the window moves with it.

    The key component is a window comparator with both, center value / span, adjustable. Works like a charm.