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
> [email protected]
> 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
[email protected]
https://lists.sourceforge.net/lists/listinfo/emc-developers