I usually see anti-windup schemes for PID loops based on the output limits.

When the output hits 100%, don't allow the error to increase the I value 
since the output is limited to 100% anyway.

That eliminates windup.

The car analogy is:  If your foot is already on the floor what is the 
point of pushing harder?  I won't make the car go faster.

I've also seen contribution limits - such that the I term can't 
contribute more than 30% to the output value - or else the I term is 
clamped/frozen so it can't be further incremented.

This of course has nothing to do with I gain.

I've never seen any benefit to allowing I term windup when the output 
reaches 100%   (Although there are probably some situations where it 
could be useful, but probably not for motion control.)

Dave

On 2/4/2011 10:50 AM, Peter C. Wallace wrote:
> I have an idea for a better patch to the pid comp than simply removing the "if
> limit_state" conditional around the integrator. I understand the benefit of
> "freezing" the integrator when the output is saturated. This is useful for
> good PID loop behaviour when a large step command is received: the Pterm
> saturates the output and prevents the integral term from winding up. The
> problem with the current code is that if the integrator "freeze" occurs during
> an integral term caused overshoot, it can never recover. My suggestion is to
> "freeze" the integrator only when limit_state is true and the error is
> in the direction to increase the absolute integral term. This retains the
> benefit of reducing windup during a step but will recover from overshoot.
>
> Also note that simply removing the "if limit_state" conditional around the
> integrator would require setting the integral limit default to a reasonble
> value (like<  MaxOutput/Igain)
>
> Other random suggestions:
>
> I think the integral limit would be easier to understand if it was
> commensurate with the output (if you have a full scale output of 1, an
> integral limit of .5 would limit the integral terms contribution to the
> output to .5 full scale independent of Igain)
>
> Another integral overshoot reducing scheme is to bound the error input to the
> integrator. This is really an alternate to the " freezing" approach.
>
> We've had some inprovement on integral behavior by using 2 integral terms, a
> small one when the absolute integral term is increasing, and a larger one when
> the absolute intergral term is decreasing. This has the effect of speeding
> recovery from overshoots.
>
>
> Peter Wallace
> Mesa Electronics
>
> (\__/)
> (='.'=) This is Bunny. Copy and paste bunny into your
> (")_(") signature to help him gain world domination.
>
>
> ------------------------------------------------------------------------------
> The modern datacenter depends on network connectivity to access resources
> and provide services. The best practices for maximizing a physical server's
> connectivity to a physical network are well understood - see how these
> rules translate into the virtual world?
> http://p.sf.net/sfu/oracle-sfdevnlfb
> _______________________________________________
> Emc-developers mailing list
> Emc-developers@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/emc-developers
>
>    


------------------------------------------------------------------------------
The modern datacenter depends on network connectivity to access resources
and provide services. The best practices for maximizing a physical server's
connectivity to a physical network are well understood - see how these
rules translate into the virtual world? 
http://p.sf.net/sfu/oracle-sfdevnlfb
_______________________________________________
Emc-developers mailing list
Emc-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-developers

Reply via email to