On Friday 19 August 2005 23:58, Hans-Georg Wunder wrote:
> Hi all,
>
> I try to configure a P-Controller, but I have problems with the
> anti-windup logic:
The velocity form of the PID control algorithm _needs_ to have an integral
component. If you need to use a P only controller, try the
<pi-simple-controller>.
Snip! ...
> Now u_n_1 = 0, so delta_u_n = 150 and greater as u_max,
> and then u_n = 0 + 0 = 0. The controller does not work.
>
> // Integrator anti-windup logic:
> if ( delta_u_n > (u_max - u_n_1) ) {
> delta_u_n = 0;
> if ( debug ) cout << " max saturation " << endl;
> } else if ( delta_u_n < (u_min - u_n_1) ) {
> delta_u_n = 0;
> if ( debug ) cout << " min saturation " << endl;
> }
>
> // Calculates absolute output:
> u_n = u_n_1 + delta_u_n;
> if ( debug ) cout << " output = " << u_n << endl;
>
>
> I think, this is not okay. delta_u_n = 0; has to be replaced by
> something like that
>
> delta_u_n=u_max - u_n_1;
That's a good idea. I seem to remember trying to fix this by setting
delta_u_n = u_max;
Which of course was a bad idea :-(
> But that's not enough. The value of ep_n also has to be changed,
> but I do not know how. Any ideas ?????
As I mentioned earlier: since you _have to_ include the integral term for the
velocity form PID, changing ep_n shouldn't be necessary.
--
Roy Vegard Ovesen
_______________________________________________
Flightgear-devel mailing list
[email protected]
http://mail.flightgear.org/mailman/listinfo/flightgear-devel
2f585eeea02e2c79d7b1d8c4963bae2d