Roy Vegard Ovesen 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:

The velocity form of the PID controller should _not_ be used as a P only controller!


I do not talk about a P only controller and about the steady state error of a P only controller. The error happens, when the input value is a step function, which drives the controller directly into the windup logic. Then the output value is zero. All other cases are working fine.


I found a site with a good explanation of the PID equation:

http://bestune.50megs.com/typeABC.htm


There is no windup logic in these equations.

The equation that most of the controllers in FlightGear autopilots use is the type B. The equations here are of the independent type. We use the dependent type, but that does not matter.

Our PID equation is actually able to act as type A, through type B to type C. This is done with the gamma and beta values. Gamma is the weighing of the reference for the derivative error: ed_n = gamma * r_n - y_n. beta is the weighing for the proportional error: ep_n = beta * r_n - y_n. So for a type A controller we would set gamma = 1 and beta = 1. For the type B, gamma = 0 and beta = 1, and finally for type C, gamma = 0 and beta = 0. Notice that we have complete power over how much we want to weigh the reference value for the derivative and proportional error term.


I think, my solution solves the problem, but it would be great, if
Jeff is also able to test it.


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.

Also on BESTune's site they have a demo of their BESTune application. It's Windows only, but I'm very exited about this app. I'm going to try and test it this weekend. I suggest that you check it out too. I really think that it can prove to be very helpfull in tuning our controllers.


First of all I will do some tests to clarify my problem and my solution.
Thank you for your detailed answer

Hans-Georg



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

Reply via email to