Hi Jimi,
have been refining code on the AOA limiters. 'Configuration AOA Limiters' will prevent backflips, 'AOA Limiters due to mach' will keep the bird from spinning out of control at higher altitudes, where G limiters do not work anymore. Overall operations should now be more in compliance with NATOPS than before.
Best regads, Peter
--------------------------------------------------------------------------------------------------------------------------------------------
add/replace into: Pitch_Auto_Trim.xml
<!-- G LIMITER: 7.5 / 5.5 due to loadout -->
(L:FCS_ENABLE, enum) 1 ==
(A:G FORCE,G Force) 7.0 > and
(A:AIRSPEED MACH,Mach) 2.0 < and
(A:TOTAL WEIGHT,pounds) 44000 < and
(A:SIM ON GROUND, bool) ! and
(A:YOKE Y POSITION, Percent) 10 > and
if{ 1 (>L:G_LIMITER_7.5_ENABLE, enum) } els{ 0 (>L:G_LIMITER_7.5_ENABLE, enum) }
(L:G_LIMITER_7.5_ENABLE, enum) 1 ==
if{ (A:G FORCE,G Force) 7.5 / (>L:G_LIMIT_RATIO, number) } els{ }
(L:G_LIMITER_7.5_ENABLE, enum) 1 ==
if{ (L:G_LIMIT_RATIO, number) (A:AIRSPEED TRUE, Knots) * (>L:G_LIMIT_VALUE, number) } els{ }
(L:G_LIMITER_7.5_ENABLE, enum) 1 ==
if{ 16383 (L:G_LIMIT_VALUE, number) - -0.9 * (>K:AXIS_ELEVATOR_SET) } els{ }
(A:G FORCE,G Force) 7.5 >
if{ (>K:ELEV_TRIM_DN) } els{ }
(L:FCS_ENABLE, enum) 1 ==
(A:G FORCE,G Force) 5.0 > and
(A:AIRSPEED MACH,Mach) 2.0 < and
(A:TOTAL WEIGHT,pounds) 44000 > and
(A:SIM ON GROUND, bool) ! and
(A:YOKE Y POSITION, Percent) 10 > and
if{ 1 (>L:G_LIMITER_5.5_ENABLE, enum) } els{ 0 (>L:G_LIMITER_5.5_ENABLE, enum) }
(L:G_LIMITER_5.5_ENABLE, enum) 1 ==
if{ (A:G FORCE,G Force) 5.5 / (>L:G_LIMIT_RATIO, number) } els{ }
(L:G_LIMITER_5.5_ENABLE, enum) 1 ==
if{ (L:G_LIMIT_RATIO, number) 500 * (>L:G_LIMIT_VALUE, number) } els{ }
(L:G_LIMITER_5.5_ENABLE, enum) 1 ==
if{ 16383 (L:G_LIMIT_VALUE, number) - -0.8 * (>K:ELEVATOR_SET) } els{ }
<!-- G LIMITER: -3.0 -->
(L:FCS_ENABLE, enum) 1 ==
(A:G FORCE,G Force) -2.5 < and
(A:AIRSPEED MACH,Mach) 2.0 < and
(A:SIM ON GROUND, bool) ! and
(A:YOKE Y POSITION, Percent) -10 < and
if{ 1 (>L:G_LIMITER_-3.0_ENABLE, enum) } els{ 0 (>L:G_LIMITER_-3.0_ENABLE, enum) }
(L:G_LIMITER_-3.0_ENABLE, enum) 1 ==
if{ (A:G FORCE,G Force) -3.0 / (>L:G_LIMIT_RATIO, number) } els{ }
(L:G_LIMITER_-3.0_ENABLE, enum) 1 ==
if{ (L:G_LIMIT_RATIO, number) 300 * (>L:G_LIMIT_VALUE, number) } els{ }
(L:G_LIMITER_-3.0_ENABLE, enum) 1 ==
if{ 16383 (L:G_LIMIT_VALUE, number) - 0.8 * (>K:ELEVATOR_SET) } els{ }
<!-- Configuration AOA LIMITERS: 35 / 20 due to loadout (tweaked multiplier for altitude) -->
(L:FCS_ENABLE, enum) 1 ==
(A:AIRSPEED INDICATED,knots) 250 < and
(A:INDICATED ALTITUDE, feet) 15000 < and
(A:TOTAL WEIGHT,pounds) 44000 < and
(A:INCIDENCE ALPHA,Degrees) 35 > and
(A:SIM ON GROUND, bool) ! and
(A:YOKE Y POSITION, Percent) 5 > and
if{ 1 (>L:AOA_LIMITER_35_ENABLE, enum) } els{ 0 (>L:AOA_LIMITER_35_ENABLE, enum) }
(L:AOA_LIMITER_35_ENABLE, enum) 1 ==
if{ (A:INCIDENCE ALPHA,Degrees) 35 / (>L:AOA_LIMIT_RATIO, number) } els{ }
(L:AOA_LIMITER_35_ENABLE, enum) 1 ==
if{ (L:AOA_LIMIT_RATIO, number) 3500 * (>L:AOA_LIMIT_VALUE, number) } els{ }
(L:AOA_LIMITER_35_ENABLE, enum) 1 ==
if{ 16383 (L:AOA_LIMIT_VALUE, number) - -0.8 * (>K:ELEVATOR_SET) } els{ }
(L:FCS_ENABLE, enum) 1 ==
(A:AIRSPEED MACH,Mach) 0.7 < and
(A:INDICATED ALTITUDE, feet) 15000 > and
(A:TOTAL WEIGHT,pounds) 44000 < and
(A:INCIDENCE ALPHA,Degrees) 35 > and
(A:SIM ON GROUND, bool) ! and
(A:YOKE Y POSITION, Percent) 5 > and
if{ 1 (>L:AOA_LIMITER_35_ENABLE, enum) } els{ 0 (>L:AOA_LIMITER_35_ENABLE, enum) }
(L:AOA_LIMITER_35_ENABLE, enum) 1 ==
if{ (A:INCIDENCE ALPHA,Degrees) 35 / (>L:AOA_LIMIT_RATIO, number) } els{ }
(L:AOA_LIMITER_35_ENABLE, enum) 1 ==
if{ (L:AOA_LIMIT_RATIO, number) 3500 * (>L:AOA_LIMIT_VALUE, number) } els{ }
(L:AOA_LIMITER_35_ENABLE, enum) 1 ==
if{ 16383 (L:AOA_LIMIT_VALUE, number) - -0.6 * (>K:ELEVATOR_SET) } els{ }
(L:FCS_ENABLE, enum) 1 ==
(A:AIRSPEED INDICATED,knots) 250 < and
(A:INDICATED ALTITUDE, feet) 15000 < and
(A:TOTAL WEIGHT,pounds) 44000 > and
(A:INCIDENCE ALPHA,Degrees) 20 > and
(A:SIM ON GROUND, bool) ! and
(A:YOKE Y POSITION, Percent) 5 > and
if{ 1 (>L:AOA_LIMITER_20_ENABLE, enum) } els{ 0 (>L:AOA_LIMITER_20_ENABLE, enum) }
(L:AOA_LIMITER_20_ENABLE, enum) 1 ==
if{ (A:INCIDENCE ALPHA,Degrees) 20 / (>L:AOA_LIMIT_RATIO, number) } els{ }
(L:AOA_LIMITER_20_ENABLE, enum) 1 ==
if{ (L:AOA_LIMIT_RATIO, number) 2000 * (>L:AOA_LIMIT_VALUE, number) } els{ }
(L:AOA_LIMITER_20_ENABLE, enum) 1 ==
if{ 16383 (L:AOA_LIMIT_VALUE, number) - -0.7 * (>K:ELEVATOR_SET) } els{ }
(L:FCS_ENABLE, enum) 1 ==
(A:AIRSPEED MACH,Mach) 0.7 < and
(A:INDICATED ALTITUDE, feet) 15000 > and
(A:TOTAL WEIGHT,pounds) 44000 > and
(A:INCIDENCE ALPHA,Degrees) 20 > and
(A:SIM ON GROUND, bool) ! and
(A:YOKE Y POSITION, Percent) 5 > and
if{ 1 (>L:AOA_LIMITER_20_ENABLE, enum) } els{ 0 (>L:AOA_LIMITER_20_ENABLE, enum) }
(L:AOA_LIMITER_20_ENABLE, enum) 1 ==
if{ (A:INCIDENCE ALPHA,Degrees) 20 / (>L:AOA_LIMIT_RATIO, number) } els{ }
(L:AOA_LIMITER_20_ENABLE, enum) 1 ==
if{ (L:AOA_LIMIT_RATIO, number) 2000 * (>L:AOA_LIMIT_VALUE, number) } els{ }
(L:AOA_LIMITER_20_ENABLE, enum) 1 ==
if{ 16383 (L:AOA_LIMIT_VALUE, number) - -0.5 * (>K:ELEVATOR_SET) } els{ }
<!-- AOA LIMITERS DUE TO MACH: 0.7 to 0.8: -6 to +20, 0.8 to 0.9: -6 to +15, above 0.9: -6 to +12 -->
(L:FCS_ENABLE, enum) 1 ==
(A:AIRSPEED MACH,Mach) 0.7 > and
(A:INCIDENCE ALPHA,Degrees) -6.0 < and
(A:SIM ON GROUND, bool) ! and
(A:YOKE Y POSITION, Percent) -5 < and
if{ 1 (>L:AOA_LIMITER_-6.0_ENABLE, enum) } els{ 0 (>L:AOA_LIMITER_-6.0_ENABLE, enum) }
(L:AOA_LIMITER_-6_ENABLE, enum) 1 ==
if{ (A:INCIDENCE ALPHA,Degrees) -6.0 / (>L:AOA_LIMIT_RATIO, number) } els{ }
(L:AOA_LIMITER_-6.0_ENABLE, enum) 1 ==
if{ (L:AOA_LIMIT_RATIO, number) 600 * (>L:AOA_LIMIT_VALUE, number) } els{ }
(L:AOA_LIMITER_-6.0_ENABLE, enum) 1 ==
if{ 16383 (L:AOA_LIMIT_VALUE, number) - 0.5 * (>K:ELEVATOR_SET) } els{ }
(L:FCS_ENABLE, enum) 1 ==
(A:AIRSPEED MACH,Mach) 0.7 > and
(A:AIRSPEED MACH,Mach) 0.8 < and
(A:INCIDENCE ALPHA,Degrees) 20 > and
(A:SIM ON GROUND, bool) ! and
(A:YOKE Y POSITION, Percent) 5 > and
if{ 1 (>L:AOA_LIMITER_20_ENABLE, enum) } els{ 0 (>L:AOA_LIMITER_20_ENABLE, enum) }
(L:AOA_LIMITER_20_ENABLE, enum) 1 ==
if{ (A:INCIDENCE ALPHA,Degrees) 20 / (>L:AOA_LIMIT_RATIO, number) } els{ }
(L:AOA_LIMITER_20_ENABLE, enum) 1 ==
if{ (L:AOA_LIMIT_RATIO, number) 2000 * (>L:AOA_LIMIT_VALUE, number) } els{ }
(L:AOA_LIMITER_20_ENABLE, enum) 1 ==
if{ 16383 (L:AOA_LIMIT_VALUE, number) - -0.6 * (>K:ELEVATOR_SET) } els{ }
(L:FCS_ENABLE, enum) 1 ==
(A:AIRSPEED MACH,Mach) 0.8 > and
(A:AIRSPEED MACH,Mach) 0.9 < and
(A:INCIDENCE ALPHA,Degrees) 15 > and
(A:SIM ON GROUND, bool) ! and
(A:YOKE Y POSITION, Percent) 5 > and
if{ 1 (>L:AOA_LIMITER_15_ENABLE, enum) } els{ 0 (>L:AOA_LIMITER_15_ENABLE, enum) }
(L:AOA_LIMITER_15_ENABLE, enum) 1 ==
if{ (A:INCIDENCE ALPHA,Degrees) 15 / (>L:AOA_LIMIT_RATIO, number) } els{ }
(L:AOA_LIMITER_15_ENABLE, enum) 1 ==
if{ (L:AOA_LIMIT_RATIO, number) 1500 * (>L:AOA_LIMIT_VALUE, number) } els{ }
(L:AOA_LIMITER_15_ENABLE, enum) 1 ==
if{ 16383 (L:AOA_LIMIT_VALUE, number) - -0.6 * (>K:ELEVATOR_SET) } els{ }
(L:FCS_ENABLE, enum) 1 ==
(A:AIRSPEED MACH,Mach) 0.9 > and
(A:INCIDENCE ALPHA,Degrees) 12 > and
(A:SIM ON GROUND, bool) ! and
(A:YOKE Y POSITION, Percent) 5 > and
if{ 1 (>L:AOA_LIMITER_12_ENABLE, enum) } els{ 0 (>L:AOA_LIMITER_12_ENABLE, enum) }
(L:AOA_LIMITER_12_ENABLE, enum) 1 ==
if{ (A:INCIDENCE ALPHA,Degrees) 12 / (>L:AOA_LIMIT_RATIO, number) } els{ }
(L:AOA_LIMITER_12_ENABLE, enum) 1 ==
if{ (L:AOA_LIMIT_RATIO, number) 1200 * (>L:AOA_LIMIT_VALUE, number) } els{ }
(L:AOA_LIMITER_12_ENABLE, enum) 1 ==
if{ 16383 (L:AOA_LIMIT_VALUE, number) - -0.6 * (>K:ELEVATOR_SET) } els{ }