See below...

On 9/28/05, Roy Vegard Ovesen <[EMAIL PROTECTED]> wrote:
> On Wednesday 28 September 2005 21:03, Hans-Georg Wunder wrote:
> > The original problem is, when there is an input change from 0 to
> > u_max/kp, the output value is zero. This is wrong. It has to be u_max.
> > The fix from Erik was also my first approach. But it does not solve the
> > problem. Under some circumstances the controller stays in saturation for
> > ever.
>
> If you tune the PID controller to be a P only controller (Ti=inf, Td=0) then
> this can happen because of steady state error that can not be reduced by a P
> only controller. Maybe I did not stress this enough in my last post on this
> subject:

But in some cases, such as  when Kp*e is greater than u_max-u_n, the
output is not changed. It isn't that the proportional output is not
enough to get rid of the error, it is that the proportional output is
being ignored because it would put the output past the user set limit.
The correct behaviour should be to move the output to the user limit.

>
> The velocity form of the PID controller should _not_ be used as a P only
> controller!
>
> I found a site with a good explanation of the PID equation:
>
> http://bestune.50megs.com/typeABC.htm
>

Good site!

>
> The guys at BESTune claims that the type C controller is the best. I suggest
> that you try setting beta = 0 to make you controllers type C. I'm sorry but
> I'm very sceptical to your idea of altering ep_n and ed_n on saturation.

I can see your problem with it. In fact, I think it may be technically
wrong because it assumes that the proportional component is the only
thing contributing to the saturation of the controller. But something
must be done to correctly handle saturation. One possibility would be
to internally track the actual PID output when it goes past saturation
(but limit the output value). This does not provide any anti-windup
protection though, so some kind of anti-windup would need to be added.
One method I have found referenced at several sites uses the amount of
saturation as a feedback to the integral term:

v_n : PID calculated output
u_n : Control output (u_n = v_n except in saturation, when it equals
u_max or u_min)
s_n : saturation  (s_n = u_n - v_n)

Then the integral contribution would be I = Ki*e_n + Ks*s_n (Ks
defines how tightly windup is controlled).

>

> Roy Vegard Ovesen
>


-Jeff

_______________________________________________
Flightgear-devel mailing list
[email protected]
http://mail.flightgear.org/mailman/listinfo/flightgear-devel
2f585eeea02e2c79d7b1d8c4963bae2d

Reply via email to