FMGC: Add envelope protection laws to Autopilot V/S and FPA modes
This commit is contained in:
parent
1d17fb8618
commit
61b0d4bfb0
4 changed files with 291 additions and 18 deletions
|
@ -799,23 +799,26 @@
|
||||||
</weight>
|
</weight>
|
||||||
</payload>
|
</payload>
|
||||||
|
|
||||||
<it-autoflight>
|
<it-autoflight n="0">
|
||||||
<config>
|
<config n="0">
|
||||||
<altitude-dial-mode>0</altitude-dial-mode>
|
<altitude-dial-mode type="bool">0</altitude-dial-mode>
|
||||||
</config>
|
</config>
|
||||||
<output>
|
<input n="0">
|
||||||
<ap1>0</ap1>
|
<kts type="int">100</kts>
|
||||||
<ap2>0</ap2>
|
</input>
|
||||||
<lat>0</lat>
|
<output n="0">
|
||||||
<vert>0</vert>
|
<ap1 type="bool">0</ap1>
|
||||||
|
<ap2 type="bool">0</ap2>
|
||||||
|
<lat type="int">0</lat>
|
||||||
|
<vert type="int">0</vert>
|
||||||
</output>
|
</output>
|
||||||
<custom>
|
<custom n="0">
|
||||||
<show-hdg>0</show-hdg>
|
<alt-knb type="int">0</alt-knb>
|
||||||
<trk-fpa>0</trk-fpa>
|
<hdg-knb type="int">0</hdg-knb>
|
||||||
<hdg-knb>0</hdg-knb>
|
<show-hdg type="bool">0</show-hdg>
|
||||||
<spd-knb>0</spd-knb>
|
<spd-knb type="int">0</spd-knb>
|
||||||
<alt-knb>0</alt-knb>
|
<trk-fpa type="bool">0</trk-fpa>
|
||||||
<vs-knb>0</vs-knb>
|
<vs-knb type="int">0</vs-knb>
|
||||||
</custom>
|
</custom>
|
||||||
</it-autoflight>
|
</it-autoflight>
|
||||||
|
|
||||||
|
|
|
@ -33,6 +33,15 @@
|
||||||
</test>
|
</test>
|
||||||
</switch>
|
</switch>
|
||||||
|
|
||||||
|
<fcs_function name="/FMGC/internal/vmo-mmo-minus-5">
|
||||||
|
<function>
|
||||||
|
<sum>
|
||||||
|
<property>/FMGC/internal/vmo-mmo</property>
|
||||||
|
<value>-5</value>
|
||||||
|
</sum>
|
||||||
|
</function>
|
||||||
|
</fcs_function>
|
||||||
|
|
||||||
<fcs_function name="/FMGC/internal/vmo-mmo-plus-6">
|
<fcs_function name="/FMGC/internal/vmo-mmo-plus-6">
|
||||||
<function>
|
<function>
|
||||||
<sum>
|
<sum>
|
||||||
|
@ -606,6 +615,55 @@
|
||||||
|
|
||||||
<channel name="FMGC Misc" execrate="8">
|
<channel name="FMGC Misc" execrate="8">
|
||||||
|
|
||||||
|
<summer name="/it-autoflight/internal/vmo-mmo-error">
|
||||||
|
<input>/instrumentation/airspeed-indicator/indicated-speed-kt</input>
|
||||||
|
<input>-/FMGC/internal/vmo-mmo</input>
|
||||||
|
<clipto>
|
||||||
|
<min>-5</min>
|
||||||
|
<max>5</max>
|
||||||
|
</clipto>
|
||||||
|
</summer>
|
||||||
|
|
||||||
|
<fcs_function name="/FMGC/internal/vls-switched-plus-5">
|
||||||
|
<function>
|
||||||
|
<ifthen>
|
||||||
|
<le>
|
||||||
|
<property>/it-autoflight/input/kts</property>
|
||||||
|
<property>/FMGC/internal/vls</property>
|
||||||
|
</le>
|
||||||
|
<property>/FMGC/internal/vls</property> <!-- Engage at VLS for VLS - 5 -->
|
||||||
|
<sum> <!-- Engage at VLS + 5 for VLS -->
|
||||||
|
<property>/FMGC/internal/vls</property>
|
||||||
|
<value>5</value>
|
||||||
|
</sum>
|
||||||
|
</ifthen>
|
||||||
|
</function>
|
||||||
|
</fcs_function>
|
||||||
|
|
||||||
|
<fcs_function name="/it-autoflight/internal/vls-error">
|
||||||
|
<function>
|
||||||
|
<ifthen>
|
||||||
|
<le>
|
||||||
|
<property>/it-autoflight/input/kts</property>
|
||||||
|
<property>/FMGC/internal/vls</property>
|
||||||
|
</le>
|
||||||
|
<difference>
|
||||||
|
<property>/instrumentation/airspeed-indicator/indicated-speed-kt</property>
|
||||||
|
<value>-5</value> <!-- Intentional double negative -->
|
||||||
|
<property>/FMGC/internal/vls</property>
|
||||||
|
</difference>
|
||||||
|
<difference>
|
||||||
|
<property>/instrumentation/airspeed-indicator/indicated-speed-kt</property>
|
||||||
|
<property>/FMGC/internal/vls</property>
|
||||||
|
</difference>
|
||||||
|
</ifthen>
|
||||||
|
</function>
|
||||||
|
<clipto>
|
||||||
|
<min>-5</min>
|
||||||
|
<max>5</max>
|
||||||
|
</clipto>
|
||||||
|
</fcs_function>
|
||||||
|
|
||||||
<fcs_function name="/systems/fmgc/cas-compare/cas-1-to-3">
|
<fcs_function name="/systems/fmgc/cas-compare/cas-1-to-3">
|
||||||
<function>
|
<function>
|
||||||
<abs>
|
<abs>
|
||||||
|
|
|
@ -497,12 +497,166 @@
|
||||||
<output>/it-autoflight/input/vs</output>
|
<output>/it-autoflight/input/vs</output>
|
||||||
</filter>
|
</filter>
|
||||||
|
|
||||||
|
<filter>
|
||||||
|
<name>Vertical Speed VMO Protection</name>
|
||||||
|
<type>gain</type>
|
||||||
|
<input>
|
||||||
|
<expression>
|
||||||
|
<div>
|
||||||
|
<product>
|
||||||
|
<property>/instrumentation/airspeed-indicator/true-speed-kt</property>
|
||||||
|
<value>101.26859142607174</value> <!-- FPM to Knot -->
|
||||||
|
<dif>
|
||||||
|
<product>
|
||||||
|
<property>/fdm/jsbsim/forces/fbx-prop-lbs</property>
|
||||||
|
<cos>
|
||||||
|
<property>/fdm/jsbsim/aero/alpha-rad</property>
|
||||||
|
</cos>
|
||||||
|
</product>
|
||||||
|
<product>
|
||||||
|
<property>/fdm/jsbsim/forces/fwx-aero-lbs</property>
|
||||||
|
<sum>
|
||||||
|
<value>1</value>
|
||||||
|
<product>
|
||||||
|
<property>/it-autoflight/internal/vmo-mmo-error</property>
|
||||||
|
<value>-0.1</value>
|
||||||
|
</product>
|
||||||
|
</sum>
|
||||||
|
</product>
|
||||||
|
</dif>
|
||||||
|
</product>
|
||||||
|
<property>/fdm/jsbsim/inertia/weight-lbs</property>
|
||||||
|
</div>
|
||||||
|
</expression>
|
||||||
|
</input>
|
||||||
|
<output>/it-autoflight/internal/overspeed-vs</output>
|
||||||
|
<min>-6000</min>
|
||||||
|
<max>6000</max>
|
||||||
|
</filter>
|
||||||
|
|
||||||
|
<filter>
|
||||||
|
<name>Vertical Speed VLS Protection</name>
|
||||||
|
<type>gain</type>
|
||||||
|
<input>
|
||||||
|
<expression>
|
||||||
|
<div>
|
||||||
|
<product>
|
||||||
|
<property>/instrumentation/airspeed-indicator/true-speed-kt</property>
|
||||||
|
<value>101.26859142607174</value> <!-- FPM to Knot -->
|
||||||
|
<dif>
|
||||||
|
<product>
|
||||||
|
<property>/fdm/jsbsim/forces/fbx-prop-lbs</property>
|
||||||
|
<cos>
|
||||||
|
<property>/fdm/jsbsim/aero/alpha-rad</property>
|
||||||
|
</cos>
|
||||||
|
</product>
|
||||||
|
<product>
|
||||||
|
<property>/fdm/jsbsim/forces/fwx-aero-lbs</property>
|
||||||
|
<sum>
|
||||||
|
<value>1</value>
|
||||||
|
<product>
|
||||||
|
<property>/it-autoflight/internal/vls-error</property>
|
||||||
|
<value>-0.1</value>
|
||||||
|
</product>
|
||||||
|
</sum>
|
||||||
|
</product>
|
||||||
|
</dif>
|
||||||
|
</product>
|
||||||
|
<property>/fdm/jsbsim/inertia/weight-lbs</property>
|
||||||
|
</div>
|
||||||
|
</expression>
|
||||||
|
</input>
|
||||||
|
<output>/it-autoflight/internal/underspeed-vs</output>
|
||||||
|
<min>-6000</min>
|
||||||
|
<max>6000</max>
|
||||||
|
</filter>
|
||||||
|
|
||||||
|
<logic>
|
||||||
|
<input>
|
||||||
|
<and>
|
||||||
|
<greater-than>
|
||||||
|
<property>/instrumentation/airspeed-indicator/indicated-speed-kt</property>
|
||||||
|
<property>/FMGC/internal/vmo-mmo-minus-5</property>
|
||||||
|
</greater-than>
|
||||||
|
<or>
|
||||||
|
<and>
|
||||||
|
<equals>
|
||||||
|
<property>/it-autoflight/output/vert</property>
|
||||||
|
<value>1</value>
|
||||||
|
</equals>
|
||||||
|
<greater-than>
|
||||||
|
<property>/it-autoflight/internal/overspeed-vs</property>
|
||||||
|
<property>/it-autoflight/input/vs</property>
|
||||||
|
</greater-than>
|
||||||
|
</and>
|
||||||
|
<and>
|
||||||
|
<equals>
|
||||||
|
<property>/it-autoflight/output/vert</property>
|
||||||
|
<value>5</value>
|
||||||
|
</equals>
|
||||||
|
<greater-than>
|
||||||
|
<property>/it-autoflight/internal/overspeed-vs</property>
|
||||||
|
<property>/it-autoflight/internal/target-fpm-fpa-raw</property>
|
||||||
|
</greater-than>
|
||||||
|
</and>
|
||||||
|
</or>
|
||||||
|
</and>
|
||||||
|
</input>
|
||||||
|
<output>/it-autoflight/internal/overspeed-vs-prot</output>
|
||||||
|
</logic>
|
||||||
|
|
||||||
|
<logic>
|
||||||
|
<input>
|
||||||
|
<and>
|
||||||
|
<less-than>
|
||||||
|
<property>/instrumentation/airspeed-indicator/indicated-speed-kt</property>
|
||||||
|
<property>/FMGC/internal/vls-switched-plus-5</property>
|
||||||
|
</less-than>
|
||||||
|
<or>
|
||||||
|
<and>
|
||||||
|
<equals>
|
||||||
|
<property>/it-autoflight/output/vert</property>
|
||||||
|
<value>1</value>
|
||||||
|
</equals>
|
||||||
|
<less-than>
|
||||||
|
<property>/it-autoflight/internal/underspeed-vs</property>
|
||||||
|
<property>/it-autoflight/input/vs</property>
|
||||||
|
</less-than>
|
||||||
|
</and>
|
||||||
|
<and>
|
||||||
|
<equals>
|
||||||
|
<property>/it-autoflight/output/vert</property>
|
||||||
|
<value>5</value>
|
||||||
|
</equals>
|
||||||
|
<less-than>
|
||||||
|
<property>/it-autoflight/internal/underspeed-vs</property>
|
||||||
|
<property>/it-autoflight/internal/target-fpm-fpa-raw</property>
|
||||||
|
</less-than>
|
||||||
|
</and>
|
||||||
|
</or>
|
||||||
|
</and>
|
||||||
|
</input>
|
||||||
|
<output>/it-autoflight/internal/underspeed-vs-prot</output>
|
||||||
|
</logic>
|
||||||
|
|
||||||
<filter>
|
<filter>
|
||||||
<name>Vertical Speed Filter</name>
|
<name>Vertical Speed Filter</name>
|
||||||
<debug>false</debug>
|
<debug>false</debug>
|
||||||
<type>noise-spike</type>
|
<type>noise-spike</type>
|
||||||
<feedback-if-disabled>true</feedback-if-disabled>
|
<feedback-if-disabled>true</feedback-if-disabled>
|
||||||
<initialize-to>output</initialize-to>
|
<initialize-to>output</initialize-to>
|
||||||
|
<input>
|
||||||
|
<condition>
|
||||||
|
<property>/it-autoflight/internal/overspeed-vs-prot</property>
|
||||||
|
</condition>
|
||||||
|
<property>/it-autoflight/internal/overspeed-vs</property>
|
||||||
|
</input>
|
||||||
|
<input>
|
||||||
|
<condition>
|
||||||
|
<property>/it-autoflight/internal/underspeed-vs-prot</property>
|
||||||
|
</condition>
|
||||||
|
<property>/it-autoflight/internal/underspeed-vs</property>
|
||||||
|
</input>
|
||||||
<input>/it-autoflight/input/vs</input>
|
<input>/it-autoflight/input/vs</input>
|
||||||
<output>/it-autoflight/internal/vs</output>
|
<output>/it-autoflight/internal/vs</output>
|
||||||
<max-rate-of-change>
|
<max-rate-of-change>
|
||||||
|
@ -518,6 +672,8 @@
|
||||||
<value>1</value>
|
<value>1</value>
|
||||||
</equals>
|
</equals>
|
||||||
</or>
|
</or>
|
||||||
|
<not><property>/it-autoflight/internal/overspeed-vs-prot</property></not>
|
||||||
|
<not><property>/it-autoflight/internal/underspeed-vs-prot</property></not>
|
||||||
<equals>
|
<equals>
|
||||||
<property>/it-autoflight/output/vert</property>
|
<property>/it-autoflight/output/vert</property>
|
||||||
<value>1</value>
|
<value>1</value>
|
||||||
|
|
|
@ -265,11 +265,27 @@
|
||||||
<filter>
|
<filter>
|
||||||
<name>FPA FPM Filter</name>
|
<name>FPA FPM Filter</name>
|
||||||
<type>noise-spike</type>
|
<type>noise-spike</type>
|
||||||
|
<input>
|
||||||
|
<condition>
|
||||||
|
<property>/it-autoflight/internal/overspeed-vs-prot</property>
|
||||||
|
</condition>
|
||||||
|
<property>/it-autoflight/internal/overspeed-vs</property>
|
||||||
|
</input>
|
||||||
|
<input>
|
||||||
|
<condition>
|
||||||
|
<property>/it-autoflight/internal/underspeed-vs-prot</property>
|
||||||
|
</condition>
|
||||||
|
<property>/it-autoflight/internal/underspeed-vs</property>
|
||||||
|
</input>
|
||||||
<input>/it-autoflight/internal/target-fpm-fpa-raw</input>
|
<input>/it-autoflight/internal/target-fpm-fpa-raw</input>
|
||||||
<output>/it-autoflight/internal/target-fpm-fpa</output>
|
<output>/it-autoflight/internal/target-fpm-fpa</output>
|
||||||
<max-rate-of-change>
|
<max-rate-of-change>
|
||||||
<condition>
|
<condition>
|
||||||
<not><property>/it-autoflight/internal/fpa-active</property></not>
|
<or>
|
||||||
|
<not><property>/it-autoflight/internal/fpa-active</property></not>
|
||||||
|
<property>/it-autoflight/internal/overspeed-vs-prot</property>
|
||||||
|
<property>/it-autoflight/internal/underspeed-vs-prot</property>
|
||||||
|
</or>
|
||||||
</condition>
|
</condition>
|
||||||
<value>10000</value>
|
<value>10000</value>
|
||||||
</max-rate-of-change>
|
</max-rate-of-change>
|
||||||
|
@ -355,6 +371,46 @@
|
||||||
<max>0</max>
|
<max>0</max>
|
||||||
</filter>
|
</filter>
|
||||||
|
|
||||||
|
<filter>
|
||||||
|
<name>Vertical Speed FD Input</name>
|
||||||
|
<type>gain</type>
|
||||||
|
<gain>1.0</gain>
|
||||||
|
<input>
|
||||||
|
<condition>
|
||||||
|
<property>/it-autoflight/internal/overspeed-vs-prot</property>
|
||||||
|
</condition>
|
||||||
|
<property>/it-autoflight/internal/overspeed-vs</property>
|
||||||
|
</input>
|
||||||
|
<input>
|
||||||
|
<condition>
|
||||||
|
<property>/it-autoflight/internal/underspeed-vs-prot</property>
|
||||||
|
</condition>
|
||||||
|
<property>/it-autoflight/internal/underspeed-vs</property>
|
||||||
|
</input>
|
||||||
|
<input>/it-autoflight/input/vs</input>
|
||||||
|
<output>/it-autoflight/internal/vs-fd</output>
|
||||||
|
</filter>
|
||||||
|
|
||||||
|
<filter>
|
||||||
|
<name>FPA FD Input</name>
|
||||||
|
<type>gain</type>
|
||||||
|
<gain>1.0</gain>
|
||||||
|
<input>
|
||||||
|
<condition>
|
||||||
|
<property>/it-autoflight/internal/overspeed-vs-prot</property>
|
||||||
|
</condition>
|
||||||
|
<property>/it-autoflight/internal/overspeed-vs</property>
|
||||||
|
</input>
|
||||||
|
<input>
|
||||||
|
<condition>
|
||||||
|
<property>/it-autoflight/internal/underspeed-vs-prot</property>
|
||||||
|
</condition>
|
||||||
|
<property>/it-autoflight/internal/underspeed-vs</property>
|
||||||
|
</input>
|
||||||
|
<input>/it-autoflight/internal/target-fpm-fpa-raw</input>
|
||||||
|
<output>/it-autoflight/internal/fpa-fd</output>
|
||||||
|
</filter>
|
||||||
|
|
||||||
<filter>
|
<filter>
|
||||||
<name>Target FPM</name>
|
<name>Target FPM</name>
|
||||||
<debug>false</debug>
|
<debug>false</debug>
|
||||||
|
@ -376,7 +432,7 @@
|
||||||
<value>1</value>
|
<value>1</value>
|
||||||
</equals>
|
</equals>
|
||||||
</condition>
|
</condition>
|
||||||
<property>/it-autoflight/input/vs</property>
|
<property>/it-autoflight/internal/vs-fd</property>
|
||||||
</input>
|
</input>
|
||||||
<input>
|
<input>
|
||||||
<condition>
|
<condition>
|
||||||
|
@ -409,7 +465,7 @@
|
||||||
<value>5</value>
|
<value>5</value>
|
||||||
</equals>
|
</equals>
|
||||||
</condition>
|
</condition>
|
||||||
<property>/it-autoflight/internal/target-fpm-fpa-raw</property>
|
<property>/it-autoflight/internal/fpa-fd</property>
|
||||||
</input>
|
</input>
|
||||||
<input>
|
<input>
|
||||||
<condition>
|
<condition>
|
||||||
|
|
Loading…
Add table
Reference in a new issue