Add option to fail flight surfaces

This commit is contained in:
Joshua Davidson 2017-05-31 20:12:07 -04:00
parent 78d4b67e79
commit b722915ac6
5 changed files with 653 additions and 169 deletions

View file

@ -507,6 +507,15 @@
</gear>
<systems>
<failures n="0">
<aileron-left>0</aileron-left>
<aileron-right>0</aileron-right>
<elevator-left>0</elevator-left>
<elevator-right>0</elevator-right>
<rudder>0</rudder>
<spoiler-left>0</spoiler-left>
<spoiler-right>0</spoiler-right>
</failures>
<hydraulic n="0">
<blue-psi>0</blue-psi>
<green-psi>0</green-psi>

View file

@ -28,6 +28,7 @@ var ps_loaded_dlg = gui.Dialog.new("sim/gui/dialogs/acconfig/psloaded/dialog", "
var init_dlg = gui.Dialog.new("sim/gui/dialogs/acconfig/init/dialog", "Aircraft/A320Family/AircraftConfig/ac_init.xml");
var help_dlg = gui.Dialog.new("sim/gui/dialogs/acconfig/help/dialog", "Aircraft/A320Family/AircraftConfig/help.xml");
var fbw_dlg = gui.Dialog.new("sim/gui/dialogs/acconfig/fbw/dialog", "Aircraft/A320Family/AircraftConfig/fbw.xml");
var fail_dlg = gui.Dialog.new("sim/gui/dialogs/acconfig/fail/dialog", "Aircraft/A320Family/AircraftConfig/fail.xml");
spinning.start();
init_dlg.open();
@ -55,6 +56,16 @@ var systemsReset = func {
itaf.ap_init();
}
var failReset = func {
setprop("/systems/failures/aileron-left", 0);
setprop("/systems/failures/aileron-right", 0);
setprop("/systems/failures/elevator-left", 0);
setprop("/systems/failures/elevator-right", 0);
setprop("/systems/failures/rudder", 0);
setprop("/systems/failures/spoiler-left", 0);
setprop("/systems/failures/spoiler-right", 0);
}
################
# Panel States #
################
@ -77,6 +88,7 @@ var colddark = func {
setprop("/controls/flight/speedbrake-arm", 0);
setprop("/controls/gear/gear-down", 1);
systemsReset();
failReset();
setprop("/it-autoflight/input/fd1", 1);
setprop("/it-autoflight/input/fd2", 1);
if (getprop("/engines/engine[1]/n2") < 2) {
@ -122,6 +134,7 @@ var beforestart = func {
setprop("/controls/flight/speedbrake-arm", 0);
setprop("/controls/gear/gear-down", 1);
systemsReset();
failReset();
setprop("/it-autoflight/input/fd1", 1);
setprop("/it-autoflight/input/fd2", 1);
setprop("/controls/APU/master", 0);
@ -192,6 +205,7 @@ var taxi = func {
setprop("/controls/flight/speedbrake-arm", 0);
setprop("/controls/gear/gear-down", 1);
systemsReset();
failReset();
setprop("/it-autoflight/input/fd1", 1);
setprop("/it-autoflight/input/fd2", 1);
setprop("/controls/APU/master", 0);

137
AircraftConfig/fail.xml Normal file
View file

@ -0,0 +1,137 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!-- A3XX Aircraft Config Dialog -->
<PropertyList>
<name>aircraft-config-fail</name>
<layout>vbox</layout>
<group>
<layout>hbox</layout>
<text>
<halign>left</halign>
<label>System Failures</label>
</text>
<button>
<halign>right</halign>
<pref-width>20</pref-width>
<pref-height>20</pref-height>
<legend>X</legend>
<key>Esc</key>
<binding>
<command>dialog-close</command>
</binding>
</button>
</group>
<hrule/>
<group>
<layout>vbox</layout>
<text>
<halign>left</halign>
<label>Failed when Checked</label>
</text>
<group>
<layout>hbox</layout>
<hrule>
<stretch type="bool">true</stretch>
</hrule>
<text>
<label>Flight Surfaces</label>
</text>
<hrule>
<stretch type="bool">true</stretch>
</hrule>
</group>
<checkbox>
<label>Aileron Left</label>
<halign>left</halign>
<property>/systems/failures/aileron-left</property>
<binding>
<command>dialog-apply</command>
</binding>
<live>true</live>
</checkbox>
<checkbox>
<label>Aileron Right</label>
<halign>left</halign>
<property>/systems/failures/aileron-right</property>
<binding>
<command>dialog-apply</command>
</binding>
<live>true</live>
</checkbox>
<checkbox>
<label>Elevator Left</label>
<halign>left</halign>
<property>/systems/failures/elevator-left</property>
<binding>
<command>dialog-apply</command>
</binding>
<live>true</live>
</checkbox>
<checkbox>
<label>Elevator Right</label>
<halign>left</halign>
<property>/systems/failures/elevator-right</property>
<binding>
<command>dialog-apply</command>
</binding>
<live>true</live>
</checkbox>
<checkbox>
<label>Rudder</label>
<halign>left</halign>
<property>/systems/failures/rudder</property>
<binding>
<command>dialog-apply</command>
</binding>
<live>true</live>
</checkbox>
<checkbox>
<label>Spoiler Left</label>
<halign>left</halign>
<property>/systems/failures/spoiler-left</property>
<binding>
<command>dialog-apply</command>
</binding>
<live>true</live>
</checkbox>
<checkbox>
<label>Spoiler Right</label>
<halign>left</halign>
<property>/systems/failures/spoiler-right</property>
<binding>
<command>dialog-apply</command>
</binding>
<live>true</live>
</checkbox>
<button>
<legend>Reset All</legend>
<halign>center</halign>
<padding>5</padding>
<binding>
<command>nasal</command>
<script>
acconfig.failReset();
</script>
</binding>
</button>
</group>
</PropertyList>

View file

@ -347,19 +347,37 @@
<live>true</live>
</checkbox>
<button>
<legend>FBW Settings</legend>
<halign>center</halign>
<padding>5</padding>
<binding>
<command>nasal</command>
<script>
acconfig.fbw_dlg.open();
</script>
</binding>
</button>
<group>
<layout>hbox</layout>
<button>
<legend>FBW Settings</legend>
<halign>center</halign>
<padding>5</padding>
<binding>
<command>nasal</command>
<script>
acconfig.fbw_dlg.open();
</script>
</binding>
</button>
<button>
<legend>System Failures</legend>
<halign>center</halign>
<padding>5</padding>
<binding>
<command>nasal</command>
<script>
acconfig.fail_dlg.open();
</script>
</binding>
</button>
</group>
</group>
</group>
</PropertyList>

View file

@ -37,6 +37,10 @@
<property>/gear/gear[2]/wow</property>
<value>1</value>
</equals>
<equals>
<property>/systems/failures/aileron-left</property>
<value>0</value>
</equals>
</and>
</condition>
<expression>
@ -53,31 +57,43 @@
</input>
<input>
<condition>
<and>
<less-than>
<property>/systems/hydraulic/green-psi</property>
<value>1500</value>
</less-than>
<less-than>
<property>/systems/hydraulic/blue-psi</property>
<value>1500</value>
</less-than>
</and>
<or>
<and>
<less-than>
<property>/systems/hydraulic/green-psi</property>
<value>1500</value>
</less-than>
<less-than>
<property>/systems/hydraulic/blue-psi</property>
<value>1500</value>
</less-than>
</and>
<equals>
<property>/systems/failures/aileron-left</property>
<value>1</value>
</equals>
</or>
</condition>
<value>0.5</value>
</input>
<input>
<condition>
<or>
<greater-than-equals>
<property>/systems/hydraulic/green-psi</property>
<value>1500</value>
</greater-than-equals>
<greater-than-equals>
<property>/systems/hydraulic/blue-psi</property>
<value>1500</value>
</greater-than-equals>
</or>
<and>
<or>
<greater-than-equals>
<property>/systems/hydraulic/green-psi</property>
<value>1500</value>
</greater-than-equals>
<greater-than-equals>
<property>/systems/hydraulic/blue-psi</property>
<value>1500</value>
</greater-than-equals>
</or>
<equals>
<property>/systems/failures/aileron-left</property>
<value>0</value>
</equals>
</and>
</condition>
<expression>
<sum>
@ -135,6 +151,10 @@
<property>/gear/gear[2]/wow</property>
<value>1</value>
</equals>
<equals>
<property>/systems/failures/aileron-right</property>
<value>0</value>
</equals>
</and>
</condition>
<expression>
@ -151,31 +171,43 @@
</input>
<input>
<condition>
<and>
<less-than>
<property>/systems/hydraulic/green-psi</property>
<value>1500</value>
</less-than>
<less-than>
<property>/systems/hydraulic/blue-psi</property>
<value>1500</value>
</less-than>
</and>
<or>
<and>
<less-than>
<property>/systems/hydraulic/green-psi</property>
<value>1500</value>
</less-than>
<less-than>
<property>/systems/hydraulic/blue-psi</property>
<value>1500</value>
</less-than>
</and>
<equals>
<property>/systems/failures/aileron-right</property>
<value>1</value>
</equals>
</or>
</condition>
<value>-0.5</value>
</input>
<input>
<condition>
<or>
<greater-than-equals>
<property>/systems/hydraulic/green-psi</property>
<value>1500</value>
</greater-than-equals>
<greater-than-equals>
<property>/systems/hydraulic/blue-psi</property>
<value>1500</value>
</greater-than-equals>
</or>
<and>
<or>
<greater-than-equals>
<property>/systems/hydraulic/green-psi</property>
<value>1500</value>
</greater-than-equals>
<greater-than-equals>
<property>/systems/hydraulic/blue-psi</property>
<value>1500</value>
</greater-than-equals>
</or>
<equals>
<property>/systems/failures/aileron-right</property>
<value>0</value>
</equals>
</and>
</condition>
<expression>
<sum>
@ -241,6 +273,14 @@
<property>/controls/flight/speedbrake-lever</property>
<value>0.0</value>
</not-equals>
<equals>
<property>/systems/failures/aileron-left</property>
<value>0</value>
</equals>
<equals>
<property>/systems/failures/spoiler-left</property>
<value>0</value>
</equals>
</and>
</condition>
<expression>
@ -257,53 +297,162 @@
<input>
<condition>
<and>
<less-than>
<property>/systems/hydraulic/green-psi</property>
<value>1500</value>
</less-than>
<less-than>
<property>/systems/hydraulic/blue-psi</property>
<value>1500</value>
</less-than>
<less-than>
<property>/systems/hydraulic/yellow-psi</property>
<value>1500</value>
</less-than>
<or>
<and>
<greater-than-equals>
<property>/systems/hydraulic/green-psi</property>
<value>1500</value>
</greater-than-equals>
<greater-than-equals>
<property>/systems/hydraulic/blue-psi</property>
<value>1500</value>
</greater-than-equals>
</and>
<and>
<greater-than-equals>
<property>/systems/hydraulic/blue-psi</property>
<value>1500</value>
</greater-than-equals>
<greater-than-equals>
<property>/systems/hydraulic/yellow-psi</property>
<value>1500</value>
</greater-than-equals>
</and>
</or>
<not-equals>
<property>/controls/flight/speedbrake-lever</property>
<value>0.0</value>
</not-equals>
<equals>
<property>/systems/failures/aileron-left</property>
<value>1</value>
</equals>
<equals>
<property>/systems/failures/spoiler-left</property>
<value>0</value>
</equals>
</and>
</condition>
<value>0.0</value>
<expression>
<sum>
<property>/surface-positions/speedbrake-pos-norm</property>
<table>
<property>/controls/flight/roll-fbw</property>
<entry><ind>0.0</ind><dep> 0</dep></entry>
<entry><ind>1.0</ind><dep>-0.8</dep></entry>
</table>
</sum>
</expression>
</input>
<input>
<condition>
<or>
<and>
<greater-than-equals>
<less-than>
<property>/systems/hydraulic/green-psi</property>
<value>1500</value>
</greater-than-equals>
<greater-than-equals>
</less-than>
<less-than>
<property>/systems/hydraulic/blue-psi</property>
<value>1500</value>
</greater-than-equals>
</and>
<and>
<greater-than-equals>
<property>/systems/hydraulic/blue-psi</property>
<value>1500</value>
</greater-than-equals>
<greater-than-equals>
</less-than>
<less-than>
<property>/systems/hydraulic/yellow-psi</property>
<value>1500</value>
</greater-than-equals>
</less-than>
</and>
<equals>
<property>/systems/failures/spoiler-left</property>
<value>1</value>
</equals>
</or>
</condition>
<value>0.0</value>
</input>
<input>
<condition>
<and>
<or>
<and>
<greater-than-equals>
<property>/systems/hydraulic/green-psi</property>
<value>1500</value>
</greater-than-equals>
<greater-than-equals>
<property>/systems/hydraulic/blue-psi</property>
<value>1500</value>
</greater-than-equals>
</and>
<and>
<greater-than-equals>
<property>/systems/hydraulic/blue-psi</property>
<value>1500</value>
</greater-than-equals>
<greater-than-equals>
<property>/systems/hydraulic/yellow-psi</property>
<value>1500</value>
</greater-than-equals>
</and>
</or>
<equals>
<property>/systems/failures/aileron-left</property>
<value>0</value>
</equals>
<equals>
<property>/systems/failures/spoiler-left</property>
<value>0</value>
</equals>
</and>
</condition>
<expression>
<table>
<property>/controls/flight/spoiler-left-fbw-cmd</property>
<entry><ind>-0.2</ind><dep> 0</dep></entry>
<entry><ind>-1.0</ind><dep>0.5</dep></entry>
</table>
</expression>
</input>
<input>
<condition>
<and>
<or>
<and>
<greater-than-equals>
<property>/systems/hydraulic/green-psi</property>
<value>1500</value>
</greater-than-equals>
<greater-than-equals>
<property>/systems/hydraulic/blue-psi</property>
<value>1500</value>
</greater-than-equals>
</and>
<and>
<greater-than-equals>
<property>/systems/hydraulic/blue-psi</property>
<value>1500</value>
</greater-than-equals>
<greater-than-equals>
<property>/systems/hydraulic/yellow-psi</property>
<value>1500</value>
</greater-than-equals>
</and>
</or>
<equals>
<property>/systems/failures/aileron-left</property>
<value>1</value>
</equals>
<equals>
<property>/systems/failures/spoiler-left</property>
<value>0</value>
</equals>
</and>
</condition>
<expression>
<table>
<property>/controls/flight/spoiler-left-fbw-cmd</property>
<entry><ind> 0.0</ind><dep> 0</dep></entry>
<entry><ind>-1.0</ind><dep>0.8</dep></entry>
</table>
</expression>
</input>
<output>/controls/flight/spoiler-left-cmd</output>
@ -352,6 +501,14 @@
<property>/controls/flight/speedbrake-lever</property>
<value>0.0</value>
</not-equals>
<equals>
<property>/systems/failures/aileron-right</property>
<value>0</value>
</equals>
<equals>
<property>/systems/failures/spoiler-right</property>
<value>0</value>
</equals>
</and>
</condition>
<expression>
@ -368,53 +525,162 @@
<input>
<condition>
<and>
<less-than>
<property>/systems/hydraulic/green-psi</property>
<value>1500</value>
</less-than>
<less-than>
<property>/systems/hydraulic/blue-psi</property>
<value>1500</value>
</less-than>
<less-than>
<property>/systems/hydraulic/yellow-psi</property>
<value>1500</value>
</less-than>
<or>
<and>
<greater-than-equals>
<property>/systems/hydraulic/green-psi</property>
<value>1500</value>
</greater-than-equals>
<greater-than-equals>
<property>/systems/hydraulic/blue-psi</property>
<value>1500</value>
</greater-than-equals>
</and>
<and>
<greater-than-equals>
<property>/systems/hydraulic/blue-psi</property>
<value>1500</value>
</greater-than-equals>
<greater-than-equals>
<property>/systems/hydraulic/yellow-psi</property>
<value>1500</value>
</greater-than-equals>
</and>
</or>
<not-equals>
<property>/controls/flight/speedbrake-lever</property>
<value>0.0</value>
</not-equals>
<equals>
<property>/systems/failures/aileron-right</property>
<value>1</value>
</equals>
<equals>
<property>/systems/failures/spoiler-right</property>
<value>0</value>
</equals>
</and>
</condition>
<value>0.0</value>
<expression>
<sum>
<property>/surface-positions/speedbrake-pos-norm</property>
<table>
<property>/controls/flight/roll-fbw</property>
<entry><ind> 0.0</ind><dep> 0</dep></entry>
<entry><ind>-1.0</ind><dep>-0.8</dep></entry>
</table>
</sum>
</expression>
</input>
<input>
<condition>
<or>
<and>
<greater-than-equals>
<less-than>
<property>/systems/hydraulic/green-psi</property>
<value>1500</value>
</greater-than-equals>
<greater-than-equals>
</less-than>
<less-than>
<property>/systems/hydraulic/blue-psi</property>
<value>1500</value>
</greater-than-equals>
</and>
<and>
<greater-than-equals>
<property>/systems/hydraulic/blue-psi</property>
<value>1500</value>
</greater-than-equals>
<greater-than-equals>
</less-than>
<less-than>
<property>/systems/hydraulic/yellow-psi</property>
<value>1500</value>
</greater-than-equals>
</less-than>
</and>
<equals>
<property>/systems/failures/spoiler-right</property>
<value>1</value>
</equals>
</or>
</condition>
<value>0.0</value>
</input>
<input>
<condition>
<and>
<or>
<and>
<greater-than-equals>
<property>/systems/hydraulic/green-psi</property>
<value>1500</value>
</greater-than-equals>
<greater-than-equals>
<property>/systems/hydraulic/blue-psi</property>
<value>1500</value>
</greater-than-equals>
</and>
<and>
<greater-than-equals>
<property>/systems/hydraulic/blue-psi</property>
<value>1500</value>
</greater-than-equals>
<greater-than-equals>
<property>/systems/hydraulic/yellow-psi</property>
<value>1500</value>
</greater-than-equals>
</and>
</or>
<equals>
<property>/systems/failures/aileron-right</property>
<value>0</value>
</equals>
<equals>
<property>/systems/failures/spoiler-right</property>
<value>0</value>
</equals>
</and>
</condition>
<expression>
<table>
<property>/controls/flight/spoiler-right-fbw-cmd</property>
<entry><ind>0.2</ind><dep> 0</dep></entry>
<entry><ind>1.0</ind><dep>0.5</dep></entry>
</table>
</expression>
</input>
<input>
<condition>
<and>
<or>
<and>
<greater-than-equals>
<property>/systems/hydraulic/green-psi</property>
<value>1500</value>
</greater-than-equals>
<greater-than-equals>
<property>/systems/hydraulic/blue-psi</property>
<value>1500</value>
</greater-than-equals>
</and>
<and>
<greater-than-equals>
<property>/systems/hydraulic/blue-psi</property>
<value>1500</value>
</greater-than-equals>
<greater-than-equals>
<property>/systems/hydraulic/yellow-psi</property>
<value>1500</value>
</greater-than-equals>
</and>
</or>
<equals>
<property>/systems/failures/aileron-right</property>
<value>1</value>
</equals>
<equals>
<property>/systems/failures/spoiler-right</property>
<value>0</value>
</equals>
</and>
</condition>
<expression>
<table>
<property>/controls/flight/spoiler-right-fbw-cmd</property>
<entry><ind>0.0</ind><dep> 0</dep></entry>
<entry><ind>1.0</ind><dep>0.8</dep></entry>
</table>
</expression>
</input>
<output>/controls/flight/spoiler-right-cmd</output>
@ -430,6 +696,10 @@
<max-rate-of-change>1.0</max-rate-of-change>
</filter>
<!-- =============================================================== -->
<!-- Roll Control -->
<!-- =============================================================== -->
<filter>
<debug>false</debug>
<type>gain</type>
@ -467,31 +737,43 @@
<gain>1.0</gain>
<input>
<condition>
<and>
<less-than>
<property>/systems/hydraulic/green-psi</property>
<value>1500</value>
</less-than>
<less-than>
<property>/systems/hydraulic/blue-psi</property>
<value>1500</value>
</less-than>
</and>
<or>
<and>
<less-than>
<property>/systems/hydraulic/green-psi</property>
<value>1500</value>
</less-than>
<less-than>
<property>/systems/hydraulic/blue-psi</property>
<value>1500</value>
</less-than>
</and>
<equals>
<property>/systems/failures/elevator-left</property>
<value>1</value>
</equals>
</or>
</condition>
<value>0.1</value>
</input>
<input>
<condition>
<or>
<greater-than-equals>
<property>/systems/hydraulic/green-psi</property>
<value>1500</value>
</greater-than-equals>
<greater-than-equals>
<property>/systems/hydraulic/blue-psi</property>
<value>1500</value>
</greater-than-equals>
</or>
<and>
<or>
<greater-than-equals>
<property>/systems/hydraulic/green-psi</property>
<value>1500</value>
</greater-than-equals>
<greater-than-equals>
<property>/systems/hydraulic/blue-psi</property>
<value>1500</value>
</greater-than-equals>
</or>
<equals>
<property>/systems/failures/elevator-left</property>
<value>0</value>
</equals>
</and>
</condition>
<expression>
<table>
@ -519,31 +801,43 @@
<gain>1.0</gain>
<input>
<condition>
<and>
<less-than>
<property>/systems/hydraulic/yellow-psi</property>
<value>1500</value>
</less-than>
<less-than>
<property>/systems/hydraulic/blue-psi</property>
<value>1500</value>
</less-than>
</and>
<or>
<and>
<less-than>
<property>/systems/hydraulic/yellow-psi</property>
<value>1500</value>
</less-than>
<less-than>
<property>/systems/hydraulic/blue-psi</property>
<value>1500</value>
</less-than>
</and>
<equals>
<property>/systems/failures/elevator-right</property>
<value>1</value>
</equals>
</or>
</condition>
<value>0.1</value>
</input>
<input>
<condition>
<or>
<greater-than-equals>
<property>/systems/hydraulic/yellow-psi</property>
<value>1500</value>
</greater-than-equals>
<greater-than-equals>
<property>/systems/hydraulic/blue-psi</property>
<value>1500</value>
</greater-than-equals>
</or>
<and>
<or>
<greater-than-equals>
<property>/systems/hydraulic/yellow-psi</property>
<value>1500</value>
</greater-than-equals>
<greater-than-equals>
<property>/systems/hydraulic/blue-psi</property>
<value>1500</value>
</greater-than-equals>
</or>
<equals>
<property>/systems/failures/elevator-right</property>
<value>0</value>
</equals>
</and>
</condition>
<expression>
<table>
@ -590,39 +884,51 @@
<gain>1.0</gain>
<input>
<condition>
<and>
<less-than>
<property>/systems/hydraulic/green-psi</property>
<value>1500</value>
</less-than>
<less-than>
<property>/systems/hydraulic/blue-psi</property>
<value>1500</value>
</less-than>
<less-than>
<property>/systems/hydraulic/yellow-psi</property>
<value>1500</value>
</less-than>
</and>
<or>
<and>
<less-than>
<property>/systems/hydraulic/green-psi</property>
<value>1500</value>
</less-than>
<less-than>
<property>/systems/hydraulic/blue-psi</property>
<value>1500</value>
</less-than>
<less-than>
<property>/systems/hydraulic/yellow-psi</property>
<value>1500</value>
</less-than>
</and>
<equals>
<property>/systems/failures/rudder</property>
<value>1</value>
</equals>
</or>
</condition>
<value>0</value>
</input>
<input>
<condition>
<or>
<greater-than-equals>
<property>/systems/hydraulic/green-psi</property>
<value>1500</value>
</greater-than-equals>
<greater-than-equals>
<property>/systems/hydraulic/blue-psi</property>
<value>1500</value>
</greater-than-equals>
<greater-than-equals>
<property>/systems/hydraulic/yellow-psi</property>
<value>1500</value>
</greater-than-equals>
</or>
<and>
<or>
<greater-than-equals>
<property>/systems/hydraulic/green-psi</property>
<value>1500</value>
</greater-than-equals>
<greater-than-equals>
<property>/systems/hydraulic/blue-psi</property>
<value>1500</value>
</greater-than-equals>
<greater-than-equals>
<property>/systems/hydraulic/yellow-psi</property>
<value>1500</value>
</greater-than-equals>
</or>
<equals>
<property>/systems/failures/rudder</property>
<value>0</value>
</equals>
</and>
</condition>
<expression>
<sum>