On Friday 30 April 2004 13:59, Jon Berndt wrote:
> I've made some more progress in building an example autopilot using the
> JSBSim flight control components. I already have a wing leveler for the
> C-172, but I added an altitude hold module last night. The idea - in words
> - behind the altitude hold concept (at least the way I have implemented it)
> is that once a target altitude has been set, one can determine the error
> between where you are and where you want to be. This error term is limited
> to 100, filtered with a slight lag, and then multiplied by 0.1 in order to
> get a commanded HDOT (time derivative of altitude, or rate of climb) of 600
> ft/min.

This is a slightly unusual way of doing it, normally the commanded HDOT would 
be limited to 600 ft/min instead of the altitude error. But this approach 
works great too.

> This error is run through the altitude hold switch, and either this
> quantity or zero is passed to a proportional-integral controller (PI). The
> output from these two components is summed, multiplied by an appropriate
> gain, and the signal is sent to the elevator. I have a plot online of
> altitude versus time as the C-172 is commanded to fly (from takeoff) to 800
> feet, then 850, then 600, then 2000 ft:
> http://www.jsbsim.org/JSBSimAltHoldAP.pdf

From the plot it looks like the altitude hold performs very well. But if you 
try another test where you control the throttle in such a way that the 
aircraft is unable to hold a 600 ft/min vertical speed. I think you will see 
that the integrator will wind-up as the "HDot Error" value never reaches 
zero.

>
> The autopilot is configured in JSBSim as follows:
>
> <COMPONENT NAME="Altitude Error" TYPE="SUMMER">
>   INPUT         -position/h-sl-ft
>   INPUT          ap/altitude_setpoint
>   CLIPTO        -100 100
> </COMPONENT>
>
> <COMPONENT NAME="Alt Error Lag" TYPE="LAG_FILTER">
>   INPUT          fcs/altitude-error
>   C1             0.25
> </COMPONENT>
>
> <COMPONENT NAME="HDot Command" TYPE="PURE_GAIN">
>   INPUT          fcs/alt-error-lag
>   GAIN           0.1
> </COMPONENT>
>
> <COMPONENT NAME="HDot Error" TYPE="SUMMER">
>   INPUT          fcs/hdot-command
>   INPUT         -velocities/h-dot-fps
> </COMPONENT>
>
> <COMPONENT NAME="AP Alt Hold Switch" TYPE="SWITCH">
>   <TEST LOGIC="DEFAULT" VALUE="0.0">
>   </TEST>
>   <TEST LOGIC="AND" VALUE="fcs/hdot-error">
>     ap/altitude_hold == 1
>   </TEST>
> </COMPONENT>
>

This integrator will start winding whenever the elevator is saturating and 
still unable to achieve the commanded climb rate.

> <COMPONENT NAME="Integral" TYPE="INTEGRATOR">
>   INPUT          fcs/ap-alt-hold-switch
>   C1             0.0041
> </COMPONENT>
>
> <COMPONENT NAME="Proportional" TYPE="PURE_GAIN">
>   INPUT          fcs/ap-alt-hold-switch
>   GAIN           0.035
> </COMPONENT>
>
> <COMPONENT NAME="Control Summer" TYPE="SUMMER">
>   INPUT          fcs/integral
>   INPUT          fcs/proportional
>   CLIPTO         -1.0 1.0
> </COMPONENT>
>
> <COMPONENT NAME="Elevator" TYPE="PURE_GAIN">
>   INPUT          fcs/control-summer
>   GAIN          -1.0
>   OUTPUT         ap/elevator_cmd
> </COMPONENT>
>
> -- end --
>
> I've got some ideas for future enhancements, including a scheduled target
> rate-of-climb, so that the aircraft does not try and achieve 600 ft/min
> near its service ceiling or something silly like that. Also to be added is
> an automatic cutoff or safety feature, and perhaps the use of throttle to
> control altitude as appropriate. I guess I really need to read up on
> specific A/P operation, but this is presently being modeled to give the
> ability for JSBSim aircraft to fly automatic batch runs for testing, etc.
>
> I am going to include this in the JSBSim automatic flight document soon,
> and will have a block diagram with this, too.
>
> Jon
>
>
> _______________________________________________
> Flightgear-devel mailing list
> [EMAIL PROTECTED]
> http://mail.flightgear.org/mailman/listinfo/flightgear-devel

-- 
Roy Vegard Ovesen


_______________________________________________
Flightgear-devel mailing list
[EMAIL PROTECTED]
http://mail.flightgear.org/mailman/listinfo/flightgear-devel

Reply via email to