Major bugfixes to failures; correct property references; optimize it-fbw
This commit is contained in:
parent
f282e72243
commit
85779a5676
15 changed files with 472 additions and 561 deletions
|
@ -620,9 +620,6 @@
|
|||
<internal>
|
||||
<cost-index type="int">0</cost-index>
|
||||
</internal>
|
||||
<status>
|
||||
<to-state type="bool">1</to-state>
|
||||
</status>
|
||||
</FMGC>
|
||||
|
||||
<controls>
|
||||
|
@ -715,15 +712,6 @@
|
|||
</engine>
|
||||
</engines>
|
||||
<fctl>
|
||||
<lights>
|
||||
<elac1-fault type="bool">0</elac1-fault>
|
||||
<elac2-fault type="bool">0</elac2-fault>
|
||||
<sec1-fault type="bool">0</sec1-fault>
|
||||
<sec2-fault type="bool">0</sec2-fault>
|
||||
<sec3-fault type="bool">0</sec3-fault>
|
||||
<fac1-fault type="bool">0</fac1-fault>
|
||||
<fac2-fault type="bool">0</fac2-fault>
|
||||
</lights>
|
||||
<switches>
|
||||
<elac1 type="bool">0</elac1>
|
||||
<elac2 type="bool">0</elac2>
|
||||
|
@ -1059,6 +1047,7 @@
|
|||
</ess-tr-contactor>
|
||||
</relay>
|
||||
<some-electric-thingie>
|
||||
<emer-elec-config type="bool">0</emer-elec-config>
|
||||
<emer-gen-operate type="bool">0</emer-gen-operate>
|
||||
</some-electric-thingie>
|
||||
<sources>
|
||||
|
@ -1151,16 +1140,18 @@
|
|||
<x-bleed-valve type="bool">0</x-bleed-valve>
|
||||
</pneumatics>
|
||||
<rudder type="bool">0</rudder>
|
||||
<spoiler-l1 type="bool">0</spoiler-l1>
|
||||
<spoiler-l2 type="bool">0</spoiler-l2>
|
||||
<spoiler-l3 type="bool">0</spoiler-l3>
|
||||
<spoiler-l4 type="bool">0</spoiler-l4>
|
||||
<spoiler-l5 type="bool">0</spoiler-l5>
|
||||
<spoiler-r1 type="bool">0</spoiler-r1>
|
||||
<spoiler-r2 type="bool">0</spoiler-r2>
|
||||
<spoiler-r3 type="bool">0</spoiler-r3>
|
||||
<spoiler-r4 type="bool">0</spoiler-r4>
|
||||
<spoiler-r5 type="bool">0</spoiler-r5>
|
||||
<spoilers>
|
||||
<spoiler-l1 type="bool">0</spoiler-l1>
|
||||
<spoiler-l2 type="bool">0</spoiler-l2>
|
||||
<spoiler-l3 type="bool">0</spoiler-l3>
|
||||
<spoiler-l4 type="bool">0</spoiler-l4>
|
||||
<spoiler-l5 type="bool">0</spoiler-l5>
|
||||
<spoiler-r1 type="bool">0</spoiler-r1>
|
||||
<spoiler-r2 type="bool">0</spoiler-r2>
|
||||
<spoiler-r3 type="bool">0</spoiler-r3>
|
||||
<spoiler-r4 type="bool">0</spoiler-r4>
|
||||
<spoiler-r5 type="bool">0</spoiler-r5>
|
||||
</spoilers>
|
||||
<engine-left-fire type="bool">0</engine-left-fire>
|
||||
<engine-right-fire type="bool">0</engine-right-fire>
|
||||
<apu-fire type="bool">0</apu-fire>
|
||||
|
@ -1219,6 +1210,7 @@
|
|||
</valves>
|
||||
<fuel-used-1 type="double">0</fuel-used-1>
|
||||
<fuel-used-2 type="double">0</fuel-used-2>
|
||||
<mode-fault type="bool">0</mode-fault>
|
||||
</fuel>
|
||||
<hydraulic n="0">
|
||||
<sources>
|
||||
|
|
|
@ -26,28 +26,28 @@ var failReset = func {
|
|||
}
|
||||
|
||||
var failResetOld = func {
|
||||
setprop("/systems/failures/elac1", 0);
|
||||
setprop("/systems/failures/elac2", 0);
|
||||
setprop("/systems/failures/sec1", 0);
|
||||
setprop("/systems/failures/sec2", 0);
|
||||
setprop("/systems/failures/sec3", 0);
|
||||
setprop("/systems/failures/fac1", 0);
|
||||
setprop("/systems/failures/fac2", 0);
|
||||
setprop("/systems/failures/fctl/elac1", 0);
|
||||
setprop("/systems/failures/fctl/elac2", 0);
|
||||
setprop("/systems/failures/fctl/sec1", 0);
|
||||
setprop("/systems/failures/fctl/sec2", 0);
|
||||
setprop("/systems/failures/fctl/sec3", 0);
|
||||
setprop("/systems/failures/fctl/fac1", 0);
|
||||
setprop("/systems/failures/fctl/fac2", 0);
|
||||
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-l1", 0);
|
||||
setprop("/systems/failures/spoiler-l2", 0);
|
||||
setprop("/systems/failures/spoiler-l3", 0);
|
||||
setprop("/systems/failures/spoiler-l4", 0);
|
||||
setprop("/systems/failures/spoiler-l5", 0);
|
||||
setprop("/systems/failures/spoiler-r1", 0);
|
||||
setprop("/systems/failures/spoiler-r2", 0);
|
||||
setprop("/systems/failures/spoiler-r3", 0);
|
||||
setprop("/systems/failures/spoiler-r4", 0);
|
||||
setprop("/systems/failures/spoiler-r5", 0);
|
||||
setprop("/systems/failures/spoilers/spoiler-l1", 0);
|
||||
setprop("/systems/failures/spoilers/spoiler-l2", 0);
|
||||
setprop("/systems/failures/spoilers/spoiler-l3", 0);
|
||||
setprop("/systems/failures/spoilers/spoiler-l4", 0);
|
||||
setprop("/systems/failures/spoilers/spoiler-l5", 0);
|
||||
setprop("/systems/failures/spoilers/spoiler-r1", 0);
|
||||
setprop("/systems/failures/spoilers/spoiler-r2", 0);
|
||||
setprop("/systems/failures/spoilers/spoiler-r3", 0);
|
||||
setprop("/systems/failures/spoilers/spoiler-r4", 0);
|
||||
setprop("/systems/failures/spoilers/spoiler-r5", 0);
|
||||
setprop("/systems/failures/hyd-blue", 0);
|
||||
setprop("/systems/failures/hyd-green", 0);
|
||||
setprop("/systems/failures/hyd-yellow", 0);
|
||||
|
@ -56,13 +56,6 @@ var failResetOld = func {
|
|||
setprop("/systems/failures/pump-green", 0);
|
||||
setprop("/systems/failures/pump-yellow-eng", 0);
|
||||
setprop("/systems/failures/pump-yellow-elec", 0);
|
||||
setprop("/systems/failures/tank0pump1", 0);
|
||||
setprop("/systems/failures/tank0pump2", 0);
|
||||
setprop("/systems/failures/tank1pump1", 0);
|
||||
setprop("/systems/failures/tank1pump2", 0);
|
||||
setprop("/systems/failures/tank2pump1", 0);
|
||||
setprop("/systems/failures/tank2pump2", 0);
|
||||
setprop("/systems/failures/fuelmode", 0);
|
||||
setprop("/systems/failures/cargo-aft-fire", 0);
|
||||
setprop("/systems/failures/cargo-fwd-fire", 0);
|
||||
setprop("/systems/failures/engine-left-fire", 0);
|
||||
|
|
|
@ -198,26 +198,26 @@ var spoiler_R2 = props.globals.getNode("/fdm/jsbsim/hydraulics/spoiler-r2/final-
|
|||
var spoiler_R3 = props.globals.getNode("/fdm/jsbsim/hydraulics/spoiler-r3/final-deg", 1);
|
||||
var spoiler_R4 = props.globals.getNode("/fdm/jsbsim/hydraulics/spoiler-r4/final-deg", 1);
|
||||
var spoiler_R5 = props.globals.getNode("/fdm/jsbsim/hydraulics/spoiler-r5/final-deg", 1);
|
||||
var spoiler_L1_fail = props.globals.getNode("/systems/failures/spoiler-l1", 1);
|
||||
var spoiler_L2_fail = props.globals.getNode("/systems/failures/spoiler-l2", 1);
|
||||
var spoiler_L3_fail = props.globals.getNode("/systems/failures/spoiler-l3", 1);
|
||||
var spoiler_L4_fail = props.globals.getNode("/systems/failures/spoiler-l4", 1);
|
||||
var spoiler_L5_fail = props.globals.getNode("/systems/failures/spoiler-l5", 1);
|
||||
var spoiler_R1_fail = props.globals.getNode("/systems/failures/spoiler-r1", 1);
|
||||
var spoiler_R2_fail = props.globals.getNode("/systems/failures/spoiler-r2", 1);
|
||||
var spoiler_R3_fail = props.globals.getNode("/systems/failures/spoiler-r3", 1);
|
||||
var spoiler_R4_fail = props.globals.getNode("/systems/failures/spoiler-r4", 1);
|
||||
var spoiler_R5_fail = props.globals.getNode("/systems/failures/spoiler-r5", 1);
|
||||
var spoiler_L1_fail = props.globals.getNode("/systems/failures/spoilers/spoiler-l1", 1);
|
||||
var spoiler_L2_fail = props.globals.getNode("/systems/failures/spoilers/spoiler-l2", 1);
|
||||
var spoiler_L3_fail = props.globals.getNode("/systems/failures/spoilers/spoiler-l3", 1);
|
||||
var spoiler_L4_fail = props.globals.getNode("/systems/failures/spoilers/spoiler-l4", 1);
|
||||
var spoiler_L5_fail = props.globals.getNode("/systems/failures/spoilers/spoiler-l5", 1);
|
||||
var spoiler_R1_fail = props.globals.getNode("/systems/failures/spoilers/spoiler-r1", 1);
|
||||
var spoiler_R2_fail = props.globals.getNode("/systems/failures/spoilers/spoiler-r2", 1);
|
||||
var spoiler_R3_fail = props.globals.getNode("/systems/failures/spoilers/spoiler-r3", 1);
|
||||
var spoiler_R4_fail = props.globals.getNode("/systems/failures/spoilers/spoiler-r4", 1);
|
||||
var spoiler_R5_fail = props.globals.getNode("/systems/failures/spoilers/spoiler-r5", 1);
|
||||
var elac1 = props.globals.getNode("/systems/fctl/elac1", 1);
|
||||
var elac2 = props.globals.getNode("/systems/fctl/elac2", 1);
|
||||
var sec1 = props.globals.getNode("/systems/fctl/sec1", 1);
|
||||
var sec2 = props.globals.getNode("/systems/fctl/sec2", 1);
|
||||
var sec3 = props.globals.getNode("/systems/fctl/sec3", 1);
|
||||
var elac1_fail = props.globals.getNode("/systems/failures/elac1", 1);
|
||||
var elac2_fail = props.globals.getNode("/systems/failures/elac2", 1);
|
||||
var sec1_fail = props.globals.getNode("/systems/failures/sec1", 1);
|
||||
var sec2_fail = props.globals.getNode("/systems/failures/sec2", 1);
|
||||
var sec3_fail = props.globals.getNode("/systems/failures/sec3", 1);
|
||||
var elac1_fail = props.globals.getNode("/systems/failures/fctl/elac1", 1);
|
||||
var elac2_fail = props.globals.getNode("/systems/failures/fctl/elac2", 1);
|
||||
var sec1_fail = props.globals.getNode("/systems/failures/fctl/sec1", 1);
|
||||
var sec2_fail = props.globals.getNode("/systems/failures/fctl/sec2", 1);
|
||||
var sec3_fail = props.globals.getNode("/systems/failures/fctl/sec3", 1);
|
||||
var eng1_n1 = props.globals.getNode("/engines/engine[0]/n1-actual", 1);
|
||||
var eng2_n1 = props.globals.getNode("/engines/engine[1]/n1-actual", 1);
|
||||
var total_fuel_lbs = props.globals.getNode("/consumables/fuel/total-fuel-lbs", 1);
|
||||
|
@ -231,13 +231,6 @@ var fuel_right_outer_temp = props.globals.getNode("/consumables/fuel/tank[4]/tem
|
|||
var fuel_right_inner_temp = props.globals.getNode("/consumables/fuel/tank[3]/temperature_degC", 1);
|
||||
var cutoff_switch1 = props.globals.getNode("/controls/engines/engine[0]/cutoff-switch", 1);
|
||||
var cutoff_switch2 = props.globals.getNode("/controls/engines/engine[1]/cutoff-switch", 1);
|
||||
var fuel_xfeed = props.globals.getNode("/controls/fuel/x-feed", 1);
|
||||
var tank0pump1 = props.globals.getNode("/controls/fuel/tank0pump1", 1);
|
||||
var tank0pump2 = props.globals.getNode("/controls/fuel/tank0pump2", 1);
|
||||
var tank1pump1 = props.globals.getNode("/controls/fuel/tank1pump1", 1);
|
||||
var tank1pump2 = props.globals.getNode("/controls/fuel/tank1pump2", 1);
|
||||
var tank2pump1 = props.globals.getNode("/controls/fuel/tank2pump1", 1);
|
||||
var tank2pump2 = props.globals.getNode("/controls/fuel/tank2pump2", 1);
|
||||
var autobreak_mode = props.globals.getNode("/controls/autobrake/mode", 1);
|
||||
var gear1_pos = props.globals.getNode("/gear/gear[0]/position-norm", 1);
|
||||
var gear2_pos = props.globals.getNode("/gear/gear[1]/position-norm", 1);
|
||||
|
@ -2505,7 +2498,7 @@ var canvas_lowerECAM_fuel = {
|
|||
# TODO use the valve prop
|
||||
# TODO add amber when disagree between switch and btn
|
||||
# TODO add transition state
|
||||
if (systems.FUEL.Valves.crossfeed.getValue() == 1) {
|
||||
if (systems.FUEL.Valves.crossfeed.getBoolValue()) {
|
||||
me["FUEL-XFEED"].setRotation(0);
|
||||
me["FUEL-XFEED-pipes"].show();
|
||||
} else {
|
||||
|
@ -2514,7 +2507,7 @@ var canvas_lowerECAM_fuel = {
|
|||
}
|
||||
|
||||
# TODO add LO indication
|
||||
if (systems.FUEL.Switches.pumpLeft1.getValue() == 1) {
|
||||
if (systems.FUEL.Switches.pumpLeft1.getBoolValue()) {
|
||||
me["FUEL-Pump-Left-1-Open"].show();
|
||||
me["FUEL-Pump-Left-1-Closed"].hide();
|
||||
me["FUEL-Pump-Left-1"].setColor(0.0509,0.7529,0.2941);
|
||||
|
@ -2527,7 +2520,7 @@ var canvas_lowerECAM_fuel = {
|
|||
}
|
||||
|
||||
# TODO add LO indication
|
||||
if (systems.FUEL.Switches.pumpLeft2.getValue() == 1) {
|
||||
if (systems.FUEL.Switches.pumpLeft2.getBoolValue()) {
|
||||
me["FUEL-Pump-Left-2-Open"].show();
|
||||
me["FUEL-Pump-Left-2-Closed"].hide();
|
||||
me["FUEL-Pump-Left-2"].setColor(0.0509,0.7529,0.2941);
|
||||
|
@ -2540,7 +2533,7 @@ var canvas_lowerECAM_fuel = {
|
|||
}
|
||||
|
||||
# TODO add functionality to match FCOM 1.28.20 "Amber: Transfer valve is open, whereas commanded closed in automatic or manual mode"
|
||||
if (systems.FUEL.Switches.pumpCenter1.getValue() == 1) {
|
||||
if (systems.FUEL.Switches.pumpCenter1.getBoolValue()) {
|
||||
me["FUEL-Pump-Center-1-Open"].show();
|
||||
me["FUEL-Pump-Center-1-Closed"].hide();
|
||||
me["FUEL-Pump-Center-1"].setColor(0.0509,0.7529,0.2941);
|
||||
|
@ -2553,7 +2546,7 @@ var canvas_lowerECAM_fuel = {
|
|||
}
|
||||
|
||||
# TODO add LO indication
|
||||
if (systems.FUEL.Switches.pumpCenter2.getValue() == 1) {
|
||||
if (systems.FUEL.Switches.pumpCenter2.getBoolValue()) {
|
||||
me["FUEL-Pump-Center-2-Open"].show();
|
||||
me["FUEL-Pump-Center-2-Closed"].hide();
|
||||
me["FUEL-Pump-Center-2"].setColor(0.0509,0.7529,0.2941);
|
||||
|
@ -2566,7 +2559,7 @@ var canvas_lowerECAM_fuel = {
|
|||
}
|
||||
|
||||
# TODO add LO indication
|
||||
if (systems.FUEL.Switches.pumpRight1.getValue() == 1) {
|
||||
if (systems.FUEL.Switches.pumpRight1.getBoolValue()) {
|
||||
me["FUEL-Pump-Right-1-Open"].show();
|
||||
me["FUEL-Pump-Right-1-Closed"].hide();
|
||||
me["FUEL-Pump-Right-1"].setColor(0.0509,0.7529,0.2941);
|
||||
|
@ -2579,7 +2572,7 @@ var canvas_lowerECAM_fuel = {
|
|||
}
|
||||
|
||||
# TODO add LO indication
|
||||
if (systems.FUEL.Switches.pumpRight2.getValue() == 1) {
|
||||
if (systems.FUEL.Switches.pumpRight2.getBoolValue()) {
|
||||
me["FUEL-Pump-Right-2-Open"].show();
|
||||
me["FUEL-Pump-Right-2-Closed"].hide();
|
||||
me["FUEL-Pump-Right-2"].setColor(0.0509,0.7529,0.2941);
|
||||
|
|
|
@ -1242,7 +1242,11 @@
|
|||
<or>
|
||||
<and>
|
||||
<equals>
|
||||
<property>systems/failures/elac1-fault</property>
|
||||
<property>systems/fctl/lights/elac1-fault</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>controls/fctl/switches/elac1</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
</and>
|
||||
|
@ -1305,7 +1309,7 @@
|
|||
<or>
|
||||
<and>
|
||||
<equals>
|
||||
<property>systems/failures/sec1</property>
|
||||
<property>systems/fctl/lights/sec1-fault</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<equals>
|
||||
|
@ -1372,7 +1376,7 @@
|
|||
<or>
|
||||
<and>
|
||||
<equals>
|
||||
<property>systems/failures/fac1-fault</property>
|
||||
<property>systems/fctl/lights/fac1-fault</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<equals>
|
||||
|
@ -1439,7 +1443,7 @@
|
|||
<or>
|
||||
<and>
|
||||
<equals>
|
||||
<property>systems/failures/elac2-fault</property>
|
||||
<property>systems/fctl/lights/elac2-fault</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<equals>
|
||||
|
@ -1472,7 +1476,7 @@
|
|||
</condition>
|
||||
</animation>
|
||||
|
||||
<!-- SEC 3 -->
|
||||
<!-- SEC 2 -->
|
||||
<animation>
|
||||
<type>pick</type>
|
||||
<object-name>SEC2Btn1</object-name>
|
||||
|
@ -1506,7 +1510,7 @@
|
|||
<or>
|
||||
<and>
|
||||
<equals>
|
||||
<property>systems/failures/sec2</property>
|
||||
<property>systems/fctl/lights/sec2-fault</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<equals>
|
||||
|
@ -1573,7 +1577,7 @@
|
|||
<or>
|
||||
<and>
|
||||
<equals>
|
||||
<property>systems/failures/sec3</property>
|
||||
<property>systems/fctl/lights/sec3-fault</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<equals>
|
||||
|
@ -1640,7 +1644,7 @@
|
|||
<or>
|
||||
<and>
|
||||
<equals>
|
||||
<property>systems/failures/fac2-fault</property>
|
||||
<property>systems/fctl/lights/fac2-fault</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<equals>
|
||||
|
@ -2462,7 +2466,7 @@
|
|||
<or>
|
||||
<and>
|
||||
<equals>
|
||||
<property>systems/fuel/tank0pump1-fault</property>
|
||||
<property>systems/failures/fuel/left-tank-pump-1</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<equals>
|
||||
|
@ -2527,7 +2531,7 @@
|
|||
<or>
|
||||
<and>
|
||||
<equals>
|
||||
<property>systems/fuel/tank0pump2-fault</property>
|
||||
<property>systems/failures/fuel/left-tank-pump-2</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<equals>
|
||||
|
@ -2592,7 +2596,7 @@
|
|||
<or>
|
||||
<and>
|
||||
<equals>
|
||||
<property>systems/fuel/tank1pump1-fault</property>
|
||||
<property>systems/failures/fuel/center-tank-pump-1</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<equals>
|
||||
|
@ -2721,7 +2725,7 @@
|
|||
<or>
|
||||
<and>
|
||||
<equals>
|
||||
<property>systems/fuel/tank1pump2-fault</property>
|
||||
<property>systems/failures/fuel/center-tank-pump-2</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<equals>
|
||||
|
@ -2786,7 +2790,7 @@
|
|||
<or>
|
||||
<and>
|
||||
<equals>
|
||||
<property>systems/fuel/tank2pump1-fault</property>
|
||||
<property>systems/failures/fuel/right-tank-pump-1</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<equals>
|
||||
|
@ -2851,7 +2855,7 @@
|
|||
<or>
|
||||
<and>
|
||||
<equals>
|
||||
<property>systems/fuel/tank2pump2-fault</property>
|
||||
<property>systems/failures/fuel/right-tank-pump-2</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<equals>
|
||||
|
@ -4751,7 +4755,7 @@
|
|||
<condition>
|
||||
<or>
|
||||
<equals>
|
||||
<property>systems/failures/pack2</property>
|
||||
<property>systems/failures/pneumatics/pack-2-valve</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<equals>
|
||||
|
|
|
@ -78,7 +78,6 @@ var vs_needle = props.globals.getNode("/instrumentation/pfd/vs-needle", 1);
|
|||
var vs_digit = props.globals.getNode("/instrumentation/pfd/vs-digit-trans", 1);
|
||||
var ap_vs_pfd = props.globals.getNode("/it-autoflight/internal/vert-speed-fpm-pfd", 1);
|
||||
var athr_arm = props.globals.getNode("/modes/pfd/fma/athr-armed", 1);
|
||||
var FMGC_max_spd = props.globals.getNode("/FMGC/internal/maxspeed", 1);
|
||||
var ind_spd_kt = props.globals.getNode("/instrumentation/airspeed-indicator/indicated-speed-kt", 1);
|
||||
var ind_spd_mach = props.globals.getNode("/instrumentation/airspeed-indicator/indicated-mach", 1);
|
||||
var at_mach_mode = props.globals.getNode("/it-autoflight/input/kts-mach", 1);
|
||||
|
@ -1025,7 +1024,6 @@ var canvas_PFD_1 = {
|
|||
SPDftrgtdiff: 0,
|
||||
SPDflaptrgtdiff: 0,
|
||||
SPDcleantrgtdiff: 0,
|
||||
FMGC_max: 0,
|
||||
new: func(canvas_group, file) {
|
||||
var m = {parents: [canvas_PFD_1, canvas_PFD_base]};
|
||||
m.init(canvas_group, file);
|
||||
|
@ -1186,7 +1184,7 @@ var canvas_PFD_1 = {
|
|||
me.ASI = ind_spd - 30;
|
||||
}
|
||||
|
||||
me.FMGC_max = FMGC_max_spd.getValue();
|
||||
me.FMGC_max = fmgc.FMGCInternal.maxspeed;
|
||||
if (me.FMGC_max <= 30) {
|
||||
me.ASImax = 0 - me.ASI;
|
||||
} else if (me.FMGC_max >= 420) {
|
||||
|
@ -1198,7 +1196,7 @@ var canvas_PFD_1 = {
|
|||
me["ASI_scale"].setTranslation(0, me.ASI * 6.6);
|
||||
me["ASI_max"].setTranslation(0, me.ASImax * -6.6);
|
||||
|
||||
if (!getprop("/FMGC/status/to-state") and fmgc.FMGCInternal.phase >= 1 and !wow1.getValue() and !wow2.getValue()) {
|
||||
if (!fmgc.FMGCInternal.takeoffState and fmgc.FMGCInternal.phase >= 1 and !wow1.getValue() and !wow2.getValue()) {
|
||||
me.FMGC_vls = getprop("/FMGC/internal/computed-speeds/vls_min");
|
||||
if (me.FMGC_vls <= 30) {
|
||||
me.VLSmin = 0 - me.ASI;
|
||||
|
@ -1207,7 +1205,7 @@ var canvas_PFD_1 = {
|
|||
} else {
|
||||
me.VLSmin = me.FMGC_vls - 30 - me.ASI;
|
||||
}
|
||||
me.FMGC_prot = getprop("/FMGC/internal/computed-speeds/alpha_prot");
|
||||
me.FMGC_prot = fmgc.FMGCInternal.alpha_prot;
|
||||
if (me.FMGC_prot <= 30) {
|
||||
me.ALPHAprot = 0 - me.ASI;
|
||||
} else if (me.FMGC_prot >= 420) {
|
||||
|
@ -1215,7 +1213,7 @@ var canvas_PFD_1 = {
|
|||
} else {
|
||||
me.ALPHAprot = me.FMGC_prot - 30 - me.ASI;
|
||||
}
|
||||
me.FMGC_max = getprop("/FMGC/internal/computed-speeds/alpha_max");
|
||||
me.FMGC_max = fmgc.FMGCInternal.alpha_max;
|
||||
if (me.FMGC_max <= 30) {
|
||||
me.ALPHAmax = 0 - me.ASI;
|
||||
} else if (me.FMGC_max >= 420) {
|
||||
|
@ -1924,7 +1922,7 @@ var canvas_PFD_2 = {
|
|||
me.ASI = ind_spd - 30;
|
||||
}
|
||||
|
||||
me.FMGC_max = FMGC_max_spd.getValue();
|
||||
me.FMGC_max = fmgc.FMGCInternal.maxspeed;
|
||||
if (me.FMGC_max <= 30) {
|
||||
me.ASImax = 0 - me.ASI;
|
||||
} else if (me.FMGC_max >= 420) {
|
||||
|
@ -1936,7 +1934,7 @@ var canvas_PFD_2 = {
|
|||
me["ASI_scale"].setTranslation(0, me.ASI * 6.6);
|
||||
me["ASI_max"].setTranslation(0, me.ASImax * -6.6);
|
||||
|
||||
if (!getprop("/FMGC/status/to-state") and fmgc.FMGCInternal.phase >= 1 and !wow1.getValue() and !wow2.getValue()) {
|
||||
if (!fmgc.FMGCInternal.takeoffState and fmgc.FMGCInternal.phase >= 1 and !wow1.getValue() and !wow2.getValue()) {
|
||||
me.FMGC_vls = getprop("/FMGC/internal/computed-speeds/vls_min");
|
||||
if (me.FMGC_vls <= 30) {
|
||||
me.VLSmin = 0 - me.ASI;
|
||||
|
@ -1945,7 +1943,7 @@ var canvas_PFD_2 = {
|
|||
} else {
|
||||
me.VLSmin = me.FMGC_vls - 30 - me.ASI;
|
||||
}
|
||||
me.FMGC_prot = getprop("/FMGC/internal/computed-speeds/alpha_prot");
|
||||
me.FMGC_prot = fmgc.FMGCInternal.alpha_prot;
|
||||
if (me.FMGC_prot <= 30) {
|
||||
me.ALPHAprot = 0 - me.ASI;
|
||||
} else if (me.FMGC_prot >= 420) {
|
||||
|
@ -1953,7 +1951,7 @@ var canvas_PFD_2 = {
|
|||
} else {
|
||||
me.ALPHAprot = me.FMGC_prot - 30 - me.ASI;
|
||||
}
|
||||
me.FMGC_max = getprop("/FMGC/internal/computed-speeds/alpha_max");
|
||||
me.FMGC_max = fmgc.FMGCInternal.alpha_max;
|
||||
if (me.FMGC_max <= 30) {
|
||||
me.ALPHAmax = 0 - me.ASI;
|
||||
} else if (me.FMGC_max >= 420) {
|
||||
|
|
|
@ -2213,7 +2213,7 @@ var messages_right_memo = func {
|
|||
land_asap_r.active = 0;
|
||||
}
|
||||
|
||||
if (land_asap_r.active == 0 and getprop("gear/gear[1]/wow") == 0 and ((getprop("fdm/jsbsim/propulsion/tank[0]/contents-lbs") < 1650 and getprop("fdm/jsbsim/propulsion/tank[1]/contents-lbs") < 1650) or ((getprop("systems/electrical/bus/dc-2") < 25 and (getprop("systems/failures/elac1") == 1 or getprop("systems/failures/sec1") == 1)) or (getprop("systems/hydraulic/green-psi") < 1500 and (getprop("systems/failures/elac1") == 1 and getprop("systems/failures/sec1") == 1)) or (getprop("systems/hydraulic/yellow-psi") < 1500 and (getprop("systems/failures/elac1") == 1 and getprop("systems/failures/sec1") == 1)) or (getprop("systems/hydraulic/blue-psi") < 1500 and (getprop("systems/failures/elac2") == 1 and getprop("systems/failures/sec2") == 1))) or (phaseVarMemo3 >= 3 and phaseVarMemo3 <= 8 and (getprop("engines/engine[0]/state") != 3 or getprop("engines/engine[1]/state") != 3)))) {
|
||||
if (land_asap_r.active == 0 and getprop("gear/gear[1]/wow") == 0 and ((getprop("fdm/jsbsim/propulsion/tank[0]/contents-lbs") < 1650 and getprop("fdm/jsbsim/propulsion/tank[1]/contents-lbs") < 1650) or ((getprop("systems/electrical/bus/dc-2") < 25 and (getprop("systems/failures/fctl/elac1") == 1 or getprop("systems/failures/fctl/sec1") == 1)) or (getprop("systems/hydraulic/green-psi") < 1500 and (getprop("systems/failures/fctl/elac1") == 1 and getprop("systems/failures/fctl/sec1") == 1)) or (getprop("systems/hydraulic/yellow-psi") < 1500 and (getprop("systems/failures/fctl/elac1") == 1 and getprop("systems/failures/fctl/sec1") == 1)) or (getprop("systems/hydraulic/blue-psi") < 1500 and (getprop("systems/failures/fctl/elac2") == 1 and getprop("systems/failures/fctl/sec2") == 1))) or (phaseVarMemo3 >= 3 and phaseVarMemo3 <= 8 and (getprop("engines/engine[0]/state") != 3 or getprop("engines/engine[1]/state") != 3)))) {
|
||||
land_asap_a.active = 1;
|
||||
} else {
|
||||
land_asap_a.active = 0;
|
||||
|
|
|
@ -3,90 +3,80 @@
|
|||
|
||||
# Copyright (c) 2020 Josh Davidson (Octal450)
|
||||
|
||||
# If All ELACs Fail, Alternate Law
|
||||
|
||||
var mmoIAS = 0;
|
||||
var cas = 0;
|
||||
|
||||
var elac1_sw = 0;
|
||||
var elac2_sw = 0;
|
||||
var sec1_sw = 0;
|
||||
var sec2_sw = 0;
|
||||
var sec3_sw = 0;
|
||||
var fac1_sw = 0;
|
||||
var fac2_sw = 0;
|
||||
|
||||
var elac1_fail = 0;
|
||||
var elac2_fail = 0;
|
||||
var sec1_fail = 0;
|
||||
var sec2_fail = 0;
|
||||
var sec3_fail = 0;
|
||||
var fac1_fail = 0;
|
||||
var fac2_fail = 0;
|
||||
var elac1 = 0;
|
||||
var elac2 = 0;
|
||||
var sec1 = 0;
|
||||
var sec2 = 0;
|
||||
var sec3 = 0;
|
||||
var fac1 = 0;
|
||||
var fac2 = 0;
|
||||
|
||||
var ac_ess = 0;
|
||||
var dc_ess = 0;
|
||||
var dc_ess_shed = 0;
|
||||
var ac1 = 0;
|
||||
var ac2 = 0;
|
||||
var dc1 = 0;
|
||||
var dc2 = 0;
|
||||
var dcHot1 = 0;
|
||||
var dcHot2 = 0;
|
||||
var blue = 0;
|
||||
var green = 0;
|
||||
var yellow = 0;
|
||||
var ail = 0;
|
||||
var roll = 0;
|
||||
var rollback = 0;
|
||||
var battery1_sw = 0;
|
||||
var battery2_sw = 0;
|
||||
|
||||
var law = 0;
|
||||
|
||||
var FBW = {
|
||||
degradeLaw: props.globals.getNode("it-fbw/degrade-law"),
|
||||
activeLaw: props.globals.getNode("it-fbw/law"),
|
||||
override: props.globals.getNode("it-fbw/override"),
|
||||
rollBack: props.globals.getNode("it-fbw/roll-back"),
|
||||
rollLim: props.globals.getNode("it-fbw/roll-lim"),
|
||||
degradeLaw: props.globals.getNode("/it-fbw/degrade-law"),
|
||||
activeLaw: props.globals.getNode("/it-fbw/law"),
|
||||
override: props.globals.getNode("/it-fbw/override"),
|
||||
rollBack: props.globals.getNode("/it-fbw/roll-back"),
|
||||
rollLim: props.globals.getNode("/it-fbw/roll-lim"),
|
||||
Computers: {
|
||||
elac1: props.globals.getNode("systems/fctl/elac1"),
|
||||
elac2: props.globals.getNode("systems/fctl/elac2"),
|
||||
sec1: props.globals.getNode("systems/fctl/sec1"),
|
||||
sec2: props.globals.getNode("systems/fctl/sec2"),
|
||||
sec3: props.globals.getNode("systems/fctl/sec3"),
|
||||
fac1: props.globals.getNode("systems/fctl/fac1"),
|
||||
fac2: props.globals.getNode("systems/fctl/fac2"),
|
||||
elac1: props.globals.getNode("/systems/fctl/elac1"),
|
||||
elac2: props.globals.getNode("/systems/fctl/elac2"),
|
||||
sec1: props.globals.getNode("/systems/fctl/sec1"),
|
||||
sec2: props.globals.getNode("/systems/fctl/sec2"),
|
||||
sec3: props.globals.getNode("/systems/fctl/sec3"),
|
||||
fac1: props.globals.getNode("/systems/fctl/fac1"),
|
||||
fac2: props.globals.getNode("/systems/fctl/fac2"),
|
||||
},
|
||||
Failures: {
|
||||
elac1: props.globals.getNode("systems/failures/fctl/elac1"),
|
||||
elac2: props.globals.getNode("systems/failures/fctl/elac2"),
|
||||
sec1: props.globals.getNode("systems/failures/fctl/sec1"),
|
||||
sec2: props.globals.getNode("systems/failures/fctl/sec2"),
|
||||
sec3: props.globals.getNode("systems/failures/fctl/sec3"),
|
||||
fac1: props.globals.getNode("systems/failures/fctl/fac1"),
|
||||
fac2: props.globals.getNode("systems/failures/fctl/fac2"),
|
||||
elac1: props.globals.getNode("/systems/failures/fctl/elac1"),
|
||||
elac2: props.globals.getNode("/systems/failures/fctl/elac2"),
|
||||
sec1: props.globals.getNode("/systems/failures/fctl/sec1"),
|
||||
sec2: props.globals.getNode("/systems/failures/fctl/sec2"),
|
||||
sec3: props.globals.getNode("/systems/failures/fctl/sec3"),
|
||||
fac1: props.globals.getNode("/systems/failures/fctl/fac1"),
|
||||
fac2: props.globals.getNode("/systems/failures/fctl/fac2"),
|
||||
spoilerl1: props.globals.getNode("/systems/failures/spoilers/spoiler-l1"),
|
||||
spoilerl2: props.globals.getNode("/systems/failures/spoilers/spoiler-l2"),
|
||||
spoilerl3: props.globals.getNode("/systems/failures/spoilers/spoiler-l3"),
|
||||
spoilerl4: props.globals.getNode("/systems/failures/spoilers/spoiler-l4"),
|
||||
spoilerl5: props.globals.getNode("/systems/failures/spoilers/spoiler-l5"),
|
||||
spoilerr1: props.globals.getNode("/systems/failures/spoilers/spoiler-r1"),
|
||||
spoilerr2: props.globals.getNode("/systems/failures/spoilers/spoiler-r2"),
|
||||
spoilerr3: props.globals.getNode("/systems/failures/spoilers/spoiler-r3"),
|
||||
spoilerr4: props.globals.getNode("/systems/failures/spoilers/spoiler-r4"),
|
||||
spoilerr5: props.globals.getNode("/systems/failures/spoilers/spoiler-r5"),
|
||||
},
|
||||
Lights: {
|
||||
elac1: props.globals.getNode("controls/fctl/lights/elac1-fault"),
|
||||
elac2: props.globals.getNode("controls/fctl/lights/elac2-fault"),
|
||||
sec1: props.globals.getNode("controls/fctl/lights/sec1-fault"),
|
||||
sec2: props.globals.getNode("controls/fctl/lights/sec2-fault"),
|
||||
sec2: props.globals.getNode("controls/fctl/lights/sec3-fault"),
|
||||
fac1: props.globals.getNode("controls/fctl/lights/fac1-fault"),
|
||||
fac2: props.globals.getNode("controls/fctl/lights/fac2-fault"),
|
||||
elac1: props.globals.getNode("/systems/fctl/lights/elac1-fault"),
|
||||
elac2: props.globals.getNode("/systems/fctl/lights/elac2-fault"),
|
||||
sec1: props.globals.getNode("/systems/fctl/lights/sec1-fault"),
|
||||
sec2: props.globals.getNode("/systems/fctl/lights/sec2-fault"),
|
||||
sec2: props.globals.getNode("/systems/fctl/lights/sec3-fault"),
|
||||
fac1: props.globals.getNode("/systems/fctl/lights/fac1-fault"),
|
||||
fac2: props.globals.getNode("/systems/fctl/lights/fac2-fault"),
|
||||
},
|
||||
Protections: {
|
||||
overspeedRoll: props.globals.getNode("it-fbw/protections/overspeed-roll-back"),
|
||||
overspeedRoll: props.globals.getNode("/it-fbw/protections/overspeed-roll-back"),
|
||||
overspeed: props.globals.getNode("/it-fbw/protections/overspeed"),
|
||||
},
|
||||
Switches: {
|
||||
elac1Sw: props.globals.getNode("controls/fctl/switches/elac1"),
|
||||
elac2Sw: props.globals.getNode("controls/fctl/switches/elac2"),
|
||||
sec1Sw: props.globals.getNode("controls/fctl/switches/sec1"),
|
||||
sec2Sw: props.globals.getNode("controls/fctl/switches/sec2"),
|
||||
sec3Sw: props.globals.getNode("controls/fctl/switches/sec3"),
|
||||
fac1Sw: props.globals.getNode("controls/fctl/switches/fac1"),
|
||||
fac2Sw: props.globals.getNode("controls/fctl/switches/fac2"),
|
||||
elac1Sw: props.globals.getNode("/controls/fctl/switches/elac1"),
|
||||
elac2Sw: props.globals.getNode("/controls/fctl/switches/elac2"),
|
||||
sec1Sw: props.globals.getNode("/controls/fctl/switches/sec1"),
|
||||
sec2Sw: props.globals.getNode("/controls/fctl/switches/sec2"),
|
||||
sec3Sw: props.globals.getNode("/controls/fctl/switches/sec3"),
|
||||
fac1Sw: props.globals.getNode("/controls/fctl/switches/fac1"),
|
||||
fac2Sw: props.globals.getNode("/controls/fctl/switches/fac2"),
|
||||
},
|
||||
init: func() {
|
||||
if (updatet.isRunning) {
|
||||
|
@ -135,137 +125,21 @@ var FBW = {
|
|||
};
|
||||
|
||||
var update_loop = func {
|
||||
elac1_sw = FBW.Switches.elac1Sw.getValue();
|
||||
elac2_sw = FBW.Switches.elac2Sw.getValue();
|
||||
sec1_sw = FBW.Switches.sec1Sw.getValue();
|
||||
sec2_sw = FBW.Switches.sec2Sw.getValue();
|
||||
sec3_sw = FBW.Switches.sec3Sw.getValue();
|
||||
fac1_sw = FBW.Switches.fac1Sw.getValue();
|
||||
fac2_sw = FBW.Switches.fac2Sw.getValue();
|
||||
|
||||
elac1_fail = FBW.Failures.elac1.getValue();
|
||||
elac2_fail = FBW.Failures.elac2.getValue();
|
||||
sec1_fail = FBW.Failures.sec1.getValue();
|
||||
sec2_fail = FBW.Failures.sec2.getValue();
|
||||
sec3_fail = FBW.Failures.sec3.getValue();
|
||||
fac1_fail = FBW.Failures.fac1.getValue();
|
||||
fac2_fail = FBW.Failures.fac2.getValue();
|
||||
|
||||
ac_ess = systems.ELEC.Bus.acEss.getValue();
|
||||
dc_ess = systems.ELEC.Bus.dcEss.getValue();
|
||||
dc_ess_shed = systems.ELEC.Bus.dcEssShed.getValue();
|
||||
ac1 = systems.ELEC.Bus.ac1.getValue();
|
||||
ac2 = systems.ELEC.Bus.ac2.getValue();
|
||||
dc1 = systems.ELEC.Bus.dc1.getValue();
|
||||
dc2 = systems.ELEC.Bus.dc2.getValue();
|
||||
dcHot1 = systems.ELEC.Bus.dcHot1.getValue();
|
||||
dcHot2 = systems.ELEC.Bus.dcHot2.getValue();
|
||||
battery1_sw = systems.ELEC.Switch.bat1.getValue();
|
||||
battery2_sw = systems.ELEC.Switch.bat2.getValue();
|
||||
|
||||
if (elac1_sw and !elac1_fail and (dc_ess >= 25 or dcHot1 >= 25)) {
|
||||
FBW.Computers.elac1.setValue(1);
|
||||
FBW.Lights.elac1.setValue(0);
|
||||
} else if (elac1_sw and (elac1_fail or (dc_ess < 25 and dcHot1 < 25))) {
|
||||
FBW.Computers.elac1.setValue(0);
|
||||
FBW.Lights.elac1.setValue(1);
|
||||
}
|
||||
|
||||
if (elac2_sw and !elac2_fail and (dc2 >= 25 or dcHot2 >= 25)) {
|
||||
FBW.Computers.elac2.setValue(1);
|
||||
FBW.Lights.elac2.setValue(0);
|
||||
} else if (elac1_sw and (elac2_fail or (dc2 < 25 and dcHot2 < 25))) {
|
||||
FBW.Computers.elac2.setValue(0);
|
||||
FBW.Lights.elac2.setValue(1);
|
||||
}
|
||||
|
||||
if (sec1_sw and !sec1_fail and dc_ess >= 25) {
|
||||
setprop("systems/fctl/sec1", 1);
|
||||
setprop("systems/failures/spoiler-l3", 0);
|
||||
setprop("systems/failures/spoiler-r3", 0);
|
||||
setprop("systems/failures/spoiler-l4", 0);
|
||||
setprop("systems/failures/spoiler-r4", 0);
|
||||
} else {
|
||||
setprop("systems/fctl/sec1", 0);
|
||||
setprop("systems/failures/spoiler-l3", 1);
|
||||
setprop("systems/failures/spoiler-r3", 1);
|
||||
setprop("systems/failures/spoiler-l4", 1);
|
||||
setprop("systems/failures/spoiler-r4", 1);
|
||||
}
|
||||
|
||||
if (sec2_sw and !sec2_fail and dc2 >= 25) {
|
||||
setprop("systems/fctl/sec2", 1);
|
||||
setprop("systems/failures/spoiler-l5", 0);
|
||||
setprop("systems/failures/spoiler-r5", 0);
|
||||
} else {
|
||||
setprop("systems/fctl/sec2", 0);
|
||||
setprop("systems/failures/spoiler-l5", 1);
|
||||
setprop("systems/failures/spoiler-r5", 1);
|
||||
}
|
||||
|
||||
if (sec3_sw and !sec3_fail and dc2 >= 25) {
|
||||
setprop("systems/fctl/sec3", 1);
|
||||
setprop("systems/failures/spoiler-l1", 0);
|
||||
setprop("systems/failures/spoiler-r1", 0);
|
||||
setprop("systems/failures/spoiler-l2", 0);
|
||||
setprop("systems/failures/spoiler-r2", 0);
|
||||
} else {
|
||||
setprop("systems/fctl/sec3", 0);
|
||||
setprop("systems/failures/spoiler-l1", 1);
|
||||
setprop("systems/failures/spoiler-r1", 1);
|
||||
setprop("systems/failures/spoiler-l2", 1);
|
||||
setprop("systems/failures/spoiler-r2", 1);
|
||||
}
|
||||
|
||||
if (fac1_sw and !fac1_fail and (ac_ess >= 110 or dc_ess_shed >= 25)) {
|
||||
setprop("systems/fctl/fac1", 1);
|
||||
setprop("systems/failures/rudder", 0);
|
||||
setprop("systems/failures/fac1-fault", 0);
|
||||
} else if (fac1_sw and (battery1_sw or battery2_sw) and (fac1_fail or ac_ess < 110 or dc_ess_shed < 25)) {
|
||||
setprop("systems/failures/fac1-fault", 1);
|
||||
setprop("systems/fctl/fac1", 0);
|
||||
if (!fac2_sw or fac2_fail) {
|
||||
setprop("systems/failures/rudder", 1);
|
||||
}
|
||||
} else {
|
||||
setprop("systems/failures/fac1-fault", 0);
|
||||
setprop("systems/fctl/fac1", 0);
|
||||
if (!fac2_sw or fac2_fail) {
|
||||
setprop("systems/failures/rudder", 1);
|
||||
}
|
||||
}
|
||||
|
||||
if (fac2_sw and !fac2_fail and (ac2 >= 110 or dc2 >= 25)) {
|
||||
setprop("systems/fctl/fac2", 1);
|
||||
setprop("systems/failures/fac2-fault", 0);
|
||||
} else if (fac2_sw and (fac2_fail or ac2 < 110 or dc2 < 25)) {
|
||||
setprop("systems/failures/fac2-fault", 1);
|
||||
setprop("systems/fctl/fac2", 0);
|
||||
if (!fac1_sw or fac1_fail) {
|
||||
setprop("systems/failures/rudder", 1);
|
||||
}
|
||||
} else {
|
||||
setprop("systems/fctl/fac2", 0);
|
||||
setprop("systems/failures/fac2-fault", 0);
|
||||
if (!fac1_sw or fac1_fail) {
|
||||
setprop("systems/failures/rudder", 1);
|
||||
}
|
||||
}
|
||||
|
||||
var elac1 = getprop("systems/fctl/elac1");
|
||||
var elac2 = getprop("systems/fctl/elac2");
|
||||
var sec1 = getprop("systems/fctl/sec1");
|
||||
var sec2 = getprop("systems/fctl/sec2");
|
||||
var sec3 = getprop("systems/fctl/sec3");
|
||||
var fac1 = getprop("systems/fctl/fac1");
|
||||
var fac2 = getprop("systems/fctl/fac2");
|
||||
elac1 = FBW.Computers.elac1.getBoolValue();
|
||||
elac2 = FBW.Computers.elac2.getBoolValue();
|
||||
sec1 = FBW.Computers.sec1.getBoolValue();
|
||||
sec2 = FBW.Computers.sec2.getBoolValue();
|
||||
sec3 = FBW.Computers.sec3.getBoolValue();
|
||||
fac1 = FBW.Computers.fac1.getBoolValue();
|
||||
fac2 = FBW.Computers.fac2.getBoolValue();
|
||||
law = FBW.activeLaw.getValue();
|
||||
|
||||
# Degrade logic, all failures which degrade FBW need to go here. -JD
|
||||
blue = systems.HYD.Psi.blue.getValue();
|
||||
green = systems.HYD.Psi.green.getValue();
|
||||
yellow = systems.HYD.Psi.yellow.getValue();
|
||||
if (getprop("gear/gear[1]/wow") == 0 and getprop("gear/gear[2]/wow") == 0) {
|
||||
if (!pts.Gear.wow[1].getBoolValue() and !pts.Gear.wow[2].getBoolValue()) {
|
||||
if (!elac1 and !elac2) {
|
||||
if (law == 0) {
|
||||
FBW.degradeLaw.setValue(1);
|
||||
|
@ -273,7 +147,7 @@ var update_loop = func {
|
|||
fcu.athrOff("hard");
|
||||
}
|
||||
}
|
||||
if (getprop("systems/electrical/some-electric-thingie/emer-elec-config") == 1) {
|
||||
if (systems.ELEC.EmerElec.getBoolValue()) {
|
||||
if (law == 0) {
|
||||
FBW.degradeLaw.setValue(1);
|
||||
fcu.apOff("hard", 0);
|
||||
|
@ -287,14 +161,14 @@ var update_loop = func {
|
|||
fcu.athrOff("hard");
|
||||
}
|
||||
}
|
||||
if (dc_ess < 25 and dc2 < 25) {
|
||||
if (systems.ELEC.Bus.dcEss.getValue() < 25 and systems.ELEC.Bus.dc2.getValue() < 25) {
|
||||
FBW.degradeLaw.setValue(3);
|
||||
fcu.apOff("hard", 0);
|
||||
fcu.athrOff("hard");
|
||||
}
|
||||
}
|
||||
|
||||
if (getprop("controls/gear/gear-down") == 1 and getprop("it-autoflight/output/ap1") == 0 and getprop("it-autoflight/output/ap2") == 0) {
|
||||
if (pts.Controls.Gear.gearDown.getBoolValue() and !fmgc.Input.ap1.getBoolValue() and !fmgc.Input.ap2.getBoolValue()) {
|
||||
if (law == 1) {
|
||||
FBW.degradeLaw.setValue(2);
|
||||
}
|
||||
|
@ -308,23 +182,24 @@ var update_loop = func {
|
|||
FBW.degradeLaw.setValue(2);
|
||||
}
|
||||
|
||||
mmoIAS = (getprop("instrumentation/airspeed-indicator/indicated-speed-kt") / getprop("instrumentation/airspeed-indicator/indicated-mach")) * 0.82;
|
||||
cas = pts.Instrumentation.AirspeedIndicator.indicatedSpdKt.getValue();
|
||||
mmoIAS = (cas / pts.Instrumentation.AirspeedIndicator.indicatedMach.getValue()) * 0.82;
|
||||
if (mmoIAS < 350) {
|
||||
setprop("it-fbw/speeds/vmo-mmo", mmoIAS);
|
||||
fmgc.FMGCInternal.vmo_mmo = mmoIAS;
|
||||
} else {
|
||||
setprop("it-fbw/speeds/vmo-mmo", 350);
|
||||
fmgc.FMGCInternal.vmo_mmo = 350;
|
||||
}
|
||||
|
||||
if (getprop("instrumentation/airspeed-indicator/indicated-speed-kt") > getprop("it-fbw/speeds/vmo-mmo") + 6 and (law == 0 or law == 1)) {
|
||||
if (getprop("it-autoflight/input/ap1") == 1 or getprop("it-autoflight/input/ap2") == 1) {
|
||||
if (cas > (fmgc.FMGCInternal.vmo_mmo + 6) and (law == 0 or law == 1)) {
|
||||
if (fmgc.Input.ap1.getBoolValue() or fmgc.Input.ap2.getBoolValue()) {
|
||||
fcu.apOff("hard", 0);
|
||||
}
|
||||
if (getprop("it-fbw/protections/overspeed") != 1) {
|
||||
setprop("it-fbw/protections/overspeed", 1);
|
||||
if (!FBW.Protections.overspeed.getBoolValue()) {
|
||||
FBW.Protections.overspeed.setBoolValue(1);
|
||||
}
|
||||
} else {
|
||||
if (getprop("it-fbw/protections/overspeed") != 0) {
|
||||
setprop("it-fbw/protections/overspeed", 0);
|
||||
if (FBW.Protections.overspeed.getBoolValue()) {
|
||||
FBW.Protections.overspeed.setBoolValue(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -361,7 +236,7 @@ var fbw_loop = func {
|
|||
FBW.Protections.overspeedRoll.setValue(1);
|
||||
}
|
||||
|
||||
if (getprop("it-fbw/override") == 0) {
|
||||
if (!FBW.override.getBoolValue()) {
|
||||
var active = FBW.activeLaw.getValue();
|
||||
var degrade = FBW.degradeLaw.getValue();
|
||||
if (degrade == 0) {
|
||||
|
@ -384,12 +259,50 @@ var fbw_loop = func {
|
|||
}
|
||||
|
||||
if (FBW.activeLaw.getValue() != 0) {
|
||||
if (getprop("it-autoflight/output/ap1") == 1 or getprop("it-autoflight/output/ap2") == 1) {
|
||||
if (fmgc.Input.ap1.getBoolValue() or fmgc.Input.ap2.getBoolValue()) {
|
||||
fcu.apOff("hard", 0);
|
||||
fcu.athrOff("hard");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
setlistener("systems/fctl/sec1", func() {
|
||||
if (FBW.Computers.sec1.getBoolValue()) {
|
||||
FBW.Failures.spoilerl3.setBoolValue(0);
|
||||
FBW.Failures.spoilerr3.setBoolValue(0);
|
||||
FBW.Failures.spoilerl4.setBoolValue(0);
|
||||
FBW.Failures.spoilerr4.setBoolValue(0);
|
||||
} else {
|
||||
FBW.Failures.spoilerl3.setBoolValue(1);
|
||||
FBW.Failures.spoilerr3.setBoolValue(1);
|
||||
FBW.Failures.spoilerl4.setBoolValue(1);
|
||||
FBW.Failures.spoilerr4.setBoolValue(1);
|
||||
}
|
||||
}, 0, 0);
|
||||
|
||||
setlistener("systems/fctl/sec2", func() {
|
||||
if (FBW.Computers.sec2.getBoolValue()) {
|
||||
FBW.Failures.spoilerl5.setBoolValue(0);
|
||||
FBW.Failures.spoilerr5.setBoolValue(0);
|
||||
} else {
|
||||
FBW.Failures.spoilerl5.setBoolValue(1);
|
||||
FBW.Failures.spoilerr5.setBoolValue(1);
|
||||
}
|
||||
}, 0, 0);
|
||||
|
||||
setlistener("systems/fctl/sec3", func() {
|
||||
if (FBW.Computers.sec3.getBoolValue()) {
|
||||
FBW.Failures.spoilerl1.setBoolValue(0);
|
||||
FBW.Failures.spoilerr1.setBoolValue(0);
|
||||
FBW.Failures.spoilerl2.setBoolValue(0);
|
||||
FBW.Failures.spoilerr2.setBoolValue(0);
|
||||
} else {
|
||||
FBW.Failures.spoilerl1.setBoolValue(1);
|
||||
FBW.Failures.spoilerr1.setBoolValue(1);
|
||||
FBW.Failures.spoilerl2.setBoolValue(1);
|
||||
FBW.Failures.spoilerr2.setBoolValue(1);
|
||||
}
|
||||
}, 0, 0);
|
||||
|
||||
var updatet = maketimer(0.1, update_loop);
|
||||
var fbwt = maketimer(0.03, fbw_loop);
|
||||
|
|
|
@ -71,8 +71,6 @@ var mng_spd_cmd = 0;
|
|||
var kts_sel = 0;
|
||||
var mach_sel = 0;
|
||||
var srsSPD = 0;
|
||||
var maxspeed = 0;
|
||||
var minspeed = 0;
|
||||
var mach_switchover = 0;
|
||||
var decel = 0;
|
||||
var mng_alt_spd_cmd = 0;
|
||||
|
@ -93,8 +91,6 @@ var thr1 = 0;
|
|||
var thr2 = 0;
|
||||
var altsel = 0;
|
||||
var crzFl = 0;
|
||||
setprop("/FMGC/internal/maxspeed", 0);
|
||||
setprop("/FMGC/internal/minspeed", 0);
|
||||
setprop("position/gear-agl-ft", 0);
|
||||
setprop("/FMGC/internal/mng-spd", 157);
|
||||
setprop("/FMGC/internal/mng-spd-cmd", 157);
|
||||
|
@ -113,9 +109,10 @@ setprop("/FMGC/internal/adf1-mcdu", "XXX/999.99");
|
|||
setprop("/FMGC/internal/adf2-mcdu", "999.99/XXX");
|
||||
|
||||
var FMGCinit = func {
|
||||
setprop("/FMGC/status/to-state", 0);
|
||||
fmgc.FMGCInternal.takeoffState = 0;
|
||||
fmgc.FMGCInternal.minspeed = 0;
|
||||
fmgc.FMGCInternal.maxspeed = 338;
|
||||
fmgc.FMGCInternal.phase = 0; # 0 is Preflight 1 is Takeoff 2 is Climb 3 is Cruise 4 is Descent 5 is Decel/Approach 6 is Go Around 7 is Done
|
||||
setprop("/FMGC/internal/maxspeed", 338);
|
||||
setprop("/FMGC/internal/mng-spd", 157);
|
||||
setprop("/FMGC/internal/mng-spd-cmd", 157);
|
||||
setprop("/FMGC/internal/mng-kts-mach", 0);
|
||||
|
@ -137,6 +134,14 @@ var FMGCinit = func {
|
|||
var FMGCInternal = {
|
||||
# phase logic
|
||||
phase: 0,
|
||||
minspeed: 0,
|
||||
maxspeed: 0,
|
||||
takeoffState: 0,
|
||||
|
||||
# speeds
|
||||
alpha_prot: 0,
|
||||
alpha_max: 0,
|
||||
vmo_mmo: 0,
|
||||
|
||||
# PERF
|
||||
v1: 0,
|
||||
|
@ -182,6 +187,7 @@ var FMGCNodes = {
|
|||
toFromSet: props.globals.initNode("/FMGC/internal/tofrom-set", 0, "BOOL"),
|
||||
v1: props.globals.initNode("/FMGC/internal/v1", 0, "DOUBLE"),
|
||||
v1set: props.globals.initNode("/FMGC/internal/v1-set", 0, "BOOL"),
|
||||
toState: props.globals.initNode("/FMGC/internal/to-state", 0, "BOOL"),
|
||||
};
|
||||
|
||||
############
|
||||
|
@ -194,7 +200,7 @@ setlistener("/gear/gear[0]/wow", func {
|
|||
|
||||
var trimReset = func {
|
||||
flaps = getprop("/controls/flight/flaps-pos");
|
||||
if (pts.Gear.wow[0].getBoolValue() and getprop("/FMGC/status/to-state") == 0 and (flaps >= 5 or (flaps >= 4 and getprop("/instrumentation/mk-viii/inputs/discretes/momentary-flap3-override") == 1))) {
|
||||
if (pts.Gear.wow[0].getBoolValue() and !fmgc.FMGCInternal.takeoffState and (flaps >= 5 or (flaps >= 4 and getprop("/instrumentation/mk-viii/inputs/discretes/momentary-flap3-override") == 1))) {
|
||||
interpolate("/controls/flight/elevator-trim", 0.0, 1.5);
|
||||
}
|
||||
}
|
||||
|
@ -503,11 +509,11 @@ var masterFMGC = maketimer(0.2, func {
|
|||
}
|
||||
|
||||
if (getprop("/systems/navigation/adr/computation/overspeed-vfe-spd") != 1024) {
|
||||
setprop("/FMGC/internal/maxspeed", getprop("/systems/navigation/adr/computation/overspeed-vfe-spd") - 4);
|
||||
fmgc.FMGCInternal.maxspeed = getprop("/systems/navigation/adr/computation/overspeed-vfe-spd") - 4;
|
||||
} elsif (pts.Gear.position[0].getValue() != 0 or pts.Gear.position[1].getValue() != 0 or pts.Gear.position[2].getValue() != 0) {
|
||||
setprop("/FMGC/internal/maxspeed", 284);
|
||||
fmgc.FMGCInternal.maxspeed = 284;
|
||||
} else {
|
||||
setprop("/FMGC/internal/maxspeed", getprop("/it-fbw/speeds/vmo-mmo"));
|
||||
fmgc.FMGCInternal.maxspeed = getprop("/it-fbw/speeds/vmo-mmo");
|
||||
}
|
||||
|
||||
############################
|
||||
|
@ -632,76 +638,83 @@ var masterFMGC = maketimer(0.2, func {
|
|||
aoa = getprop("/systems/navigation/adr/output/aoa-1");
|
||||
cas = getprop("/systems/navigation/adr/output/cas-1");
|
||||
if (aoa > -5) {
|
||||
alpha_prot = cas * math.sqrt((aoa - aoa_0)/(aoa_prot - aoa_0));
|
||||
alpha_max = cas * math.sqrt((aoa - aoa_0)/(aoa_max - aoa_0));
|
||||
fmgc.FMGCInternal.alpha_prot = cas * math.sqrt((aoa - aoa_0)/(aoa_prot - aoa_0));
|
||||
fmgc.FMGCInternal.alpha_max = cas * math.sqrt((aoa - aoa_0)/(aoa_max - aoa_0));
|
||||
} else {
|
||||
alpha_prot = 0;
|
||||
alpha_max = 0;
|
||||
fmgc.FMGCInternal.alpha_prot = 0;
|
||||
fmgc.FMGCInternal.alpha_max = 0;
|
||||
}
|
||||
setprop("/FMGC/internal/computed-speeds/alpha_prot", alpha_prot);
|
||||
setprop("/FMGC/internal/computed-speeds/alpha_max", alpha_max);
|
||||
|
||||
setprop("/FMGC/internal/computed-speeds/vs1g_conf_2_appr", getprop("/FMGC/internal/computed-speeds/vs1g_conf_2"));
|
||||
setprop("/FMGC/internal/computed-speeds/vs1g_conf_3_appr", getprop("/FMGC/internal/computed-speeds/vs1g_conf_3"));
|
||||
setprop("/FMGC/internal/computed-speeds/vs1g_conf_full_appr", getprop("/FMGC/internal/computed-speeds/vs1g_conf_full"));
|
||||
|
||||
if (getprop("/FMGC/status/to-state") == 1) {
|
||||
if (flap == 0) { # 0
|
||||
if (flap == 0) { # 0
|
||||
setprop("/FMGC/internal/computed-speeds/vsw", getprop("/FMGC/internal/computed-speeds/vs1g_clean"));
|
||||
fmgc.FMGCInternal.minspeed = getprop("/FMGC/internal/computed-speeds/clean");
|
||||
|
||||
if (fmgc.FMGCInternal.takeoffState) {
|
||||
setprop("/FMGC/internal/computed-speeds/vls_min", num(getprop("/FMGC/internal/computed-speeds/vs1g_clean")) * 1.28);
|
||||
} else if (flap == 1) { # 1
|
||||
setprop("/FMGC/internal/computed-speeds/vls_min", num(getprop("/FMGC/internal/computed-speeds/vs1g_conf_1")) * 1.23);
|
||||
} else { # 1+F
|
||||
setprop("/FMGC/internal/computed-speeds/vls_min", num(getprop("/FMGC/internal/computed-speeds/vs1g_clean")) * 1.13);
|
||||
}
|
||||
} else {
|
||||
if (flap == 0) { # 0
|
||||
} else {
|
||||
setprop("/FMGC/internal/computed-speeds/vls_min", num(getprop("/FMGC/internal/computed-speeds/vs1g_clean")) * 1.23);
|
||||
} else if (flap == 1) { # 1
|
||||
setprop("/FMGC/internal/computed-speeds/vls_min", num(getprop("/FMGC/internal/computed-speeds/vs1g_conf_1")) * 1.23);
|
||||
} else if (flap == 2) { # 1+F
|
||||
}
|
||||
} else if (flap == 1) { # 1
|
||||
setprop("/FMGC/internal/computed-speeds/vsw", getprop("/FMGC/internal/computed-speeds/vs1g_conf_2"));
|
||||
fmgc.FMGCInternal.minspeed = getprop("/FMGC/internal/computed-speeds/slat");
|
||||
|
||||
if (fmgc.FMGCInternal.takeoffState) {
|
||||
setprop("/FMGC/internal/computed-speeds/vls_min", num(getprop("/FMGC/internal/computed-speeds/vs1g_conf_1")) * 1.28);
|
||||
} else {
|
||||
setprop("/FMGC/internal/computed-speeds/vls_min", num(getprop("/FMGC/internal/computed-speeds/vs1g_conf_1")) * 1.23);
|
||||
}
|
||||
} else if (flap == 2) { # 1+F
|
||||
setprop("/FMGC/internal/computed-speeds/vsw", getprop("/FMGC/internal/computed-speeds/vs1g_conf_1f"));
|
||||
fmgc.FMGCInternal.minspeed = getprop("/FMGC/internal/computed-speeds/slat");
|
||||
|
||||
if (fmgc.FMGCInternal.takeoffState) {
|
||||
setprop("/FMGC/internal/computed-speeds/vls_min", num(getprop("/FMGC/internal/computed-speeds/vs1g_clean")) * 1.13);
|
||||
} else {
|
||||
setprop("/FMGC/internal/computed-speeds/vls_min", num(getprop("/FMGC/internal/computed-speeds/vs1g_conf_1f")) * 1.23);
|
||||
} else if (flap == 3) { # 2
|
||||
}
|
||||
} else if (flap == 3) { # 2
|
||||
setprop("/FMGC/internal/computed-speeds/vsw", getprop("/FMGC/internal/computed-speeds/vs1g_conf_2"));
|
||||
fmgc.FMGCInternal.minspeed = getprop("/FMGC/internal/computed-speeds/flap2");
|
||||
|
||||
if (fmgc.FMGCInternal.takeoffState) {
|
||||
setprop("/FMGC/internal/computed-speeds/vls_min", num(getprop("/FMGC/internal/computed-speeds/vs1g_clean")) * 1.13);
|
||||
} else {
|
||||
setprop("/FMGC/internal/computed-speeds/vls_min", num(getprop("/FMGC/internal/computed-speeds/vs1g_conf_2")) * 1.23);
|
||||
} else if (flap == 4) { # 3
|
||||
}
|
||||
} else if (flap == 4) { # 3
|
||||
setprop("/FMGC/internal/computed-speeds/vsw", getprop("/FMGC/internal/computed-speeds/vs1g_conf_3"));
|
||||
fmgc.FMGCInternal.minspeed = getprop("/FMGC/internal/computed-speeds/flap3");
|
||||
|
||||
if (fmgc.FMGCInternal.takeoffState) {
|
||||
setprop("/FMGC/internal/computed-speeds/vls_min", num(getprop("/FMGC/internal/computed-speeds/vs1g_clean")) * 1.13);
|
||||
} else {
|
||||
setprop("/FMGC/internal/computed-speeds/vls_min", num(getprop("/FMGC/internal/computed-speeds/vs1g_conf_3")) * 1.23);
|
||||
} else if (flap == 5) { # FULL
|
||||
}
|
||||
} else if (flap == 5) { # FULL
|
||||
setprop("/FMGC/internal/computed-speeds/vsw", getprop("/FMGC/internal/computed-speeds/vs1g_conf_full"));
|
||||
fmgc.FMGCInternal.minspeed = getprop("/FMGC/internal/computed-speeds/vapp");
|
||||
|
||||
if (fmgc.FMGCInternal.takeoffState) {
|
||||
setprop("/FMGC/internal/computed-speeds/vls_min", num(getprop("/FMGC/internal/computed-speeds/vs1g_clean")) * 1.13);
|
||||
} else {
|
||||
setprop("/FMGC/internal/computed-speeds/vls_min", num(getprop("/FMGC/internal/computed-speeds/vs1g_conf_full")) * 1.23);
|
||||
}
|
||||
}
|
||||
|
||||
if (flap == 0) { # 0
|
||||
setprop("/FMGC/internal/computed-speeds/vsw", getprop("/FMGC/internal/computed-speeds/vs1g_clean"));
|
||||
} else if (flap == 1) { # 1
|
||||
setprop("/FMGC/internal/computed-speeds/vsw", getprop("/FMGC/internal/computed-speeds/vs1g_conf_2"));
|
||||
} else if (flap == 2) { # 1+F
|
||||
setprop("/FMGC/internal/computed-speeds/vsw", getprop("/FMGC/internal/computed-speeds/vs1g_conf_1f"));
|
||||
} else if (flap == 3) { # 2
|
||||
setprop("/FMGC/internal/computed-speeds/vsw", getprop("/FMGC/internal/computed-speeds/vs1g_conf_2"));
|
||||
} else if (flap == 4) { # 3
|
||||
setprop("/FMGC/internal/computed-speeds/vsw", getprop("/FMGC/internal/computed-speeds/vs1g_conf_3"));
|
||||
} else if (flap == 5) { # FULL
|
||||
setprop("/FMGC/internal/computed-speeds/vsw", getprop("/FMGC/internal/computed-speeds/vs1g_conf_full"));
|
||||
}
|
||||
|
||||
if (flap == 0) { # 0
|
||||
setprop("/FMGC/internal/minspeed", getprop("/FMGC/internal/computed-speeds/clean"));
|
||||
} else if (flap == 1) { # 1
|
||||
setprop("/FMGC/internal/minspeed", getprop("/FMGC/internal/computed-speeds/slat"));
|
||||
} else if (flap == 2) { # 1+F
|
||||
setprop("/FMGC/internal/minspeed", getprop("/FMGC/internal/computed-speeds/slat"));
|
||||
} else if (flap == 3) { # 2
|
||||
setprop("/FMGC/internal/minspeed", getprop("/FMGC/internal/computed-speeds/flap2"));
|
||||
} else if (flap == 4) { # 3
|
||||
setprop("/FMGC/internal/minspeed", getprop("/FMGC/internal/computed-speeds/flap3"));
|
||||
} else if (flap == 5) { # FULL
|
||||
setprop("/FMGC/internal/minspeed", getprop("/FMGC/internal/computed-speeds/vapp"));
|
||||
}
|
||||
|
||||
if (gear0 and (state1 == "MCT" or state1 == "MAN THR" or state1 == "TOGA") and (state2 == "MCT" or state2 == "MAN THR" or state2 == "TOGA") and flaps < 5) {
|
||||
setprop("/FMGC/status/to-state", 1);
|
||||
}
|
||||
if (pts.Position.gearAglFt.getValue() >= 55) {
|
||||
setprop("/FMGC/status/to-state", 0);
|
||||
if (gear0 and flaps < 5 and (state1 == "MCT" or state1 == "MAN THR" or state1 == "TOGA") and (state2 == "MCT" or state2 == "MAN THR" or state2 == "TOGA")) {
|
||||
if (!fmgc.FMGCInternal.takeoffState) {
|
||||
fmgc.FMGCNodes.toState.setValue(1);
|
||||
}
|
||||
fmgc.FMGCInternal.takeoffState = 1;
|
||||
} elsif (pts.Position.gearAglFt.getValue() >= 55) {
|
||||
if (fmgc.FMGCInternal.takeoffState) {
|
||||
fmgc.FMGCNodes.toState.setValue(0);
|
||||
}
|
||||
fmgc.FMGCInternal.takeoffState = 0;
|
||||
}
|
||||
|
||||
############################
|
||||
|
@ -904,8 +917,6 @@ var ManagedSPD = maketimer(0.25, func {
|
|||
srsSPD = getprop("/it-autoflight/settings/togaspd");
|
||||
phase = fmgc.FMGCInternal.phase; # 0 is Preflight 1 is Takeoff 2 is Climb 3 is Cruise 4 is Descent 5 is Decel/Approach 6 is Go Around 7 is Done
|
||||
flap = getprop("/controls/flight/flaps-pos");
|
||||
maxspeed = getprop("/FMGC/internal/maxspeed");
|
||||
minspeed = getprop("/FMGC/internal/minspeed");
|
||||
mach_switchover = getprop("/FMGC/internal/mach-switchover");
|
||||
decel = getprop("/FMGC/internal/decel");
|
||||
|
||||
|
@ -936,8 +947,8 @@ var ManagedSPD = maketimer(0.25, func {
|
|||
}
|
||||
if (mng_spd_cmd != 250 and !decel) {
|
||||
setprop("/FMGC/internal/mng-spd-cmd", 250);
|
||||
} else if (mng_spd_cmd != minspeed and decel) {
|
||||
setprop("/FMGC/internal/mng-spd-cmd", minspeed);
|
||||
} else if (mng_spd_cmd != fmgc.FMGCInternal.minspeed and decel) {
|
||||
setprop("/FMGC/internal/mng-spd-cmd", fmgc.FMGCInternal.minspeed);
|
||||
}
|
||||
} else if ((FMGCInternal.phase == 2 or FMGCInternal.phase == 3) and altitude > 10070 and !mach_switchover) {
|
||||
if (mngktsmach) {
|
||||
|
@ -973,8 +984,8 @@ var ManagedSPD = maketimer(0.25, func {
|
|||
}
|
||||
if (mng_spd_cmd != mng_alt_spd and !decel) {
|
||||
setprop("/FMGC/internal/mng-spd-cmd", mng_alt_spd);
|
||||
} else if (mng_spd_cmd != minspeed and decel) {
|
||||
setprop("/FMGC/internal/mng-spd-cmd", minspeed);
|
||||
} else if (mng_spd_cmd != fmgc.FMGCInternal.minspeed and decel) {
|
||||
setprop("/FMGC/internal/mng-spd-cmd", fmgc.FMGCInternal.minspeed);
|
||||
}
|
||||
} else if ((FMGCInternal.phase == 4 or FMGCInternal.phase == 5 or FMGCInternal.phase == 6) and altitude <= 10980) {
|
||||
if (mngktsmach) {
|
||||
|
@ -982,15 +993,15 @@ var ManagedSPD = maketimer(0.25, func {
|
|||
}
|
||||
if (mng_spd_cmd != 250 and !decel) {
|
||||
setprop("/FMGC/internal/mng-spd-cmd", 250);
|
||||
} else if (mng_spd_cmd != minspeed and decel) {
|
||||
setprop("/FMGC/internal/mng-spd-cmd", minspeed);
|
||||
} else if (mng_spd_cmd != fmgc.FMGCInternal.minspeed and decel) {
|
||||
setprop("/FMGC/internal/mng-spd-cmd", fmgc.FMGCInternal.minspeed);
|
||||
}
|
||||
}
|
||||
|
||||
mng_spd_cmd = getprop("/FMGC/internal/mng-spd-cmd");
|
||||
|
||||
if (mng_spd_cmd > maxspeed -5) {
|
||||
setprop("/FMGC/internal/mng-spd", maxspeed -5);
|
||||
if (mng_spd_cmd > fmgc.FMGCInternal.maxspeed - 5) {
|
||||
setprop("/FMGC/internal/mng-spd", fmgc.FMGCInternal.maxspeed - 5);
|
||||
} else {
|
||||
setprop("/FMGC/internal/mng-spd", mng_spd_cmd);
|
||||
}
|
||||
|
|
|
@ -87,6 +87,7 @@ var Gear = {
|
|||
var Instrumentation = {
|
||||
AirspeedIndicator: {
|
||||
indicatedSpdKt: props.globals.getNode("/instrumentation/airspeed-indicator/indicated-speed-kt"),
|
||||
indicatedMach: props.globals.getNode("/instrumentation/airspeed-indicator/indicated-mach"),
|
||||
},
|
||||
Altimeter: {
|
||||
indicatedFt: props.globals.getNode("/instrumentation/altimeter[0]/indicated-altitude-ft"),
|
||||
|
|
|
@ -15,6 +15,7 @@ var dc2 = 0;
|
|||
var ELEC = {
|
||||
_timer1On: 0,
|
||||
_timer2On: 0,
|
||||
EmerElec: props.globals.getNode("/systems/electrical/some-electric-thingie/emer-elec-config"),
|
||||
Bus: {
|
||||
acEss: props.globals.getNode("systems/electrical/bus/ac-ess"),
|
||||
acEssShed: props.globals.getNode("systems/electrical/bus/ac-ess-shed"),
|
||||
|
|
|
@ -94,168 +94,6 @@ setlistener("/engines/engine[1]/state", func() {
|
|||
}
|
||||
}, 0, 0);
|
||||
|
||||
var FUELx = {
|
||||
init: func() {
|
||||
setprop("systems/fuel/gravityfeedL", 0);
|
||||
setprop("systems/fuel/gravityfeedR", 0);
|
||||
setprop("systems/fuel/gravityfeedL-output", 0);
|
||||
setprop("systems/fuel/gravityfeedR-output", 0);
|
||||
setprop("controls/fuel/x-feed", 0);
|
||||
setprop("controls/fuel/tank0pump1", 0);
|
||||
setprop("controls/fuel/tank0pump2", 0);
|
||||
setprop("controls/fuel/tank1pump1", 0);
|
||||
setprop("controls/fuel/tank1pump2", 0);
|
||||
setprop("controls/fuel/tank2pump1", 0);
|
||||
setprop("controls/fuel/tank2pump2", 0);
|
||||
setprop("controls/fuel/mode", 1);
|
||||
setprop("systems/fuel/valves/crossfeed-valve", 0);
|
||||
setprop("systems/fuel/tank[0]/feed", 0);
|
||||
setprop("systems/fuel/tank[1]/feed", 0);
|
||||
setprop("systems/fuel/tank[2]/feed", 0);
|
||||
setprop("systems/fuel/only-use-ctr-tank", 0);
|
||||
setprop("systems/fuel/tank0pump1-fault", 0);
|
||||
setprop("systems/fuel/tank0pump2-fault", 0);
|
||||
setprop("systems/fuel/tank1pump1-fault", 0);
|
||||
setprop("systems/fuel/tank1pump2-fault", 0);
|
||||
setprop("systems/fuel/tank2pump1-fault", 0);
|
||||
setprop("systems/fuel/tank2pump2-fault", 0);
|
||||
setprop("systems/fuel/mode-fault", 0);
|
||||
},
|
||||
loop: func() {
|
||||
xfeed_sw = getprop("controls/fuel/x-feed");
|
||||
tank0pump1_sw = getprop("controls/fuel/tank0pump1");
|
||||
tank0pump2_sw = getprop("controls/fuel/tank0pump2");
|
||||
tank1pump1_sw = getprop("controls/fuel/tank1pump1");
|
||||
tank1pump2_sw = getprop("controls/fuel/tank1pump2");
|
||||
tank2pump1_sw = getprop("controls/fuel/tank2pump1");
|
||||
tank2pump2_sw = getprop("controls/fuel/tank2pump2");
|
||||
mode_sw = getprop("controls/fuel/mode");
|
||||
xfeed = getprop("systems/fuel/valves/crossfeed-valve");
|
||||
ac1 = getprop("systems/electrical/bus/ac-1");
|
||||
ac2 = getprop("systems/electrical/bus/ac-2");
|
||||
gravityfeedL = getprop("systems/fuel/gravityfeedL");
|
||||
gravityfeedR = getprop("systems/fuel/gravityfeedR");
|
||||
gload = getprop("accelerations/pilot-gdamped");
|
||||
tank0pump1_fail = getprop("systems/failures/tank0pump1");
|
||||
tank0pump2_fail = getprop("systems/failures/tank0pump2");
|
||||
tank1pump1_fail = getprop("systems/failures/tank1pump1");
|
||||
tank1pump2_fail = getprop("systems/failures/tank1pump2");
|
||||
tank2pump1_fail = getprop("systems/failures/tank2pump1");
|
||||
tank2pump2_fail = getprop("systems/failures/tank2pump2");
|
||||
|
||||
if (gload >= 0.7 and gravityfeedL) {
|
||||
setprop("systems/fuel/gravityfeedL-output", 1);
|
||||
} else {
|
||||
setprop("systems/fuel/gravityfeedL-output", 0);
|
||||
}
|
||||
|
||||
if (gload >= 0.7 and gravityfeedR) {
|
||||
setprop("systems/fuel/gravityfeedR-output", 1);
|
||||
} else {
|
||||
setprop("systems/fuel/gravityfeedR-output", 0);
|
||||
}
|
||||
|
||||
gravityfeedL_output = getprop("systems/fuel/gravityfeedL-output");
|
||||
gravityfeedR_output = getprop("systems/fuel/gravityfeedR-output");
|
||||
|
||||
if ((ac1 >= 110 or ac2 >= 110) and tank0pump1_sw and !tank0pump1_fail) {
|
||||
setprop("systems/fuel/tank[0]/feed", 1);
|
||||
} else if ((ac1 >= 110 or ac2 >= 110) and tank0pump2_sw and !tank0pump2_fail) {
|
||||
setprop("systems/fuel/tank[0]/feed", 1);
|
||||
} else if (gravityfeedL_output) {
|
||||
setprop("systems/fuel/tank[0]/feed", 1);
|
||||
} else {
|
||||
setprop("systems/fuel/tank[0]/feed", 0);
|
||||
}
|
||||
|
||||
if ((ac1 >= 110 or ac2 >= 110) and tank1pump1_sw and !tank1pump1_fail) {
|
||||
setprop("systems/fuel/tank[1]/feed", 1);
|
||||
} else if ((ac1 >= 110 or ac2 >= 110) and tank1pump2_sw and !tank1pump2_fail) {
|
||||
setprop("systems/fuel/tank[1]/feed", 1);
|
||||
} else {
|
||||
setprop("systems/fuel/tank[1]/feed", 0);
|
||||
}
|
||||
|
||||
if ((ac1 >= 110 or ac2 >= 110) and tank2pump1_sw and !tank2pump1_fail) {
|
||||
setprop("systems/fuel/tank[2]/feed", 1);
|
||||
} else if ((ac1 >= 110 or ac2 >= 110) and tank2pump2_sw and !tank2pump2_fail) {
|
||||
setprop("systems/fuel/tank[2]/feed", 1);
|
||||
} else if (gravityfeedR_output) {
|
||||
setprop("systems/fuel/tank[2]/feed", 1);
|
||||
} else {
|
||||
setprop("systems/fuel/tank[2]/feed", 0);
|
||||
}
|
||||
|
||||
if ((ac1 >= 110 or ac2 >= 110) and xfeed_sw) {
|
||||
setprop("systems/fuel/valves/crossfeed-valve", 1);
|
||||
} else {
|
||||
setprop("systems/fuel/valves/crossfeed-valve", 0);
|
||||
}
|
||||
|
||||
tank0 = getprop("systems/fuel/tank[0]/feed");
|
||||
tank1 = getprop("systems/fuel/tank[1]/feed");
|
||||
tank2 = getprop("systems/fuel/tank[2]/feed");
|
||||
|
||||
if ((ac1 >= 110 or ac2 >= 110) and (tank0pump1_sw or tank0pump2_sw)) {
|
||||
setprop("systems/fuel/gravityfeedL", 0);
|
||||
} else {
|
||||
setprop("systems/fuel/gravityfeedL", 1);
|
||||
}
|
||||
|
||||
if ((ac1 >= 110 or ac2 >= 110) and (tank2pump1_sw or tank2pump2_sw)) {
|
||||
setprop("systems/fuel/gravityfeedR", 0);
|
||||
} else {
|
||||
setprop("systems/fuel/gravityfeedR", 1);
|
||||
}
|
||||
|
||||
gravityfeedL = getprop("systems/fuel/gravityfeedL");
|
||||
gravityfeedR = getprop("systems/fuel/gravityfeedR");
|
||||
|
||||
if ((getprop("fdm/jsbsim/propulsion/tank[1]/contents-lbs") >= 50) and (tank1pump1_sw or tank1pump2_sw) and !gravityfeedL and !gravityfeedR) {
|
||||
setprop("systems/fuel/only-use-ctr-tank", 1);
|
||||
} else {
|
||||
setprop("systems/fuel/only-use-ctr-tank", 0);
|
||||
}
|
||||
|
||||
# Fault lights
|
||||
if (tank0pump1_sw and tank0pump1_fail) {
|
||||
setprop("systems/fuel/tank0pump1-fault", 1);
|
||||
} else {
|
||||
setprop("systems/fuel/tank0pump1-fault", 0);
|
||||
}
|
||||
|
||||
if (tank0pump2_sw and tank0pump2_fail) {
|
||||
setprop("systems/fuel/tank0pump2-fault", 1);
|
||||
} else {
|
||||
setprop("systems/fuel/tank0pump2-fault", 0);
|
||||
}
|
||||
|
||||
if (tank1pump1_sw and tank1pump1_fail) {
|
||||
setprop("systems/fuel/tank1pump1-fault", 1);
|
||||
} else {
|
||||
setprop("systems/fuel/tank1pump1-fault", 0);
|
||||
}
|
||||
|
||||
if (tank1pump2_sw and tank1pump2_fail) {
|
||||
setprop("systems/fuel/tank1pump2-fault", 1);
|
||||
} else {
|
||||
setprop("systems/fuel/tank1pump2-fault", 0);
|
||||
}
|
||||
|
||||
if (tank2pump1_sw and tank2pump1_fail) {
|
||||
setprop("systems/fuel/tank2pump1-fault", 1);
|
||||
} else {
|
||||
setprop("systems/fuel/tank2pump1-fault", 0);
|
||||
}
|
||||
|
||||
if (tank2pump2_sw and tank2pump2_fail) {
|
||||
setprop("systems/fuel/tank2pump2-fault", 1);
|
||||
} else {
|
||||
setprop("systems/fuel/tank2pump2-fault", 0);
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
var ctrTkTimer = maketimer(0.5, func() {
|
||||
if (pts.Sim.Time.elapsedSec.getValue() > (FUEL.timeEngStart + 120)) {
|
||||
FUEL.cmdCtrOn.setValue(0);
|
||||
|
|
|
@ -165,7 +165,7 @@
|
|||
<value>1</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>/FMGC/status/to-state</property>
|
||||
<property>/FMGC/internal/to-state</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
</and>
|
||||
|
|
|
@ -248,6 +248,148 @@
|
|||
|
||||
</channel>
|
||||
|
||||
<channel name="Computers">
|
||||
|
||||
<switch name="/systems/fctl/lights/elac1-fault">
|
||||
<default value="0"/>
|
||||
<test logic="AND" value="1">
|
||||
/controls/fctl/switches/elac1 eq 1
|
||||
/systems/fctl/elac1 eq 0
|
||||
</test>
|
||||
</switch>
|
||||
|
||||
<switch name="/systems/fctl/elac1">
|
||||
<default value="0"/>
|
||||
<test logic="AND" value="1">
|
||||
/controls/fctl/switches/elac1 eq 1
|
||||
/systems/failures/fctl/elac1 eq 0
|
||||
<test logic="OR">
|
||||
/systems/electrical/bus/dc-ess ge 25
|
||||
/systems/electrical/bus/dc-hot-1 ge 25
|
||||
</test>
|
||||
</test>
|
||||
</switch>
|
||||
|
||||
<switch name="/systems/fctl/lights/elac2-fault">
|
||||
<default value="0"/>
|
||||
<test logic="AND" value="1">
|
||||
/controls/fctl/switches/elac2 eq 1
|
||||
/systems/fctl/elac2 eq 0
|
||||
</test>
|
||||
</switch>
|
||||
|
||||
<switch name="/systems/fctl/elac2">
|
||||
<default value="0"/>
|
||||
<test logic="AND" value="1">
|
||||
/controls/fctl/switches/elac2 eq 1
|
||||
/systems/failures/fctl/elac2 eq 0
|
||||
<test logic="OR">
|
||||
/systems/electrical/bus/dc-2 ge 25
|
||||
/systems/electrical/bus/dc-hot-2 ge 25
|
||||
</test>
|
||||
</test>
|
||||
</switch>
|
||||
|
||||
<switch name="/systems/fctl/lights/sec1-fault">
|
||||
<default value="0"/>
|
||||
<test logic="AND" value="1">
|
||||
/controls/fctl/switches/sec1 eq 1
|
||||
/systems/fctl/sec1 eq 0
|
||||
</test>
|
||||
</switch>
|
||||
|
||||
<switch name="/systems/fctl/sec1">
|
||||
<default value="0"/>
|
||||
<test logic="AND" value="1">
|
||||
/controls/fctl/switches/sec1 eq 1
|
||||
/systems/failures/fctl/sec1 eq 0
|
||||
<test logic="OR">
|
||||
/systems/electrical/bus/dc-ess ge 25
|
||||
/systems/electrical/bus/dc-hot-1 ge 25
|
||||
</test>
|
||||
</test>
|
||||
</switch>
|
||||
|
||||
<switch name="/systems/fctl/lights/sec2-fault">
|
||||
<default value="0"/>
|
||||
<test logic="AND" value="1">
|
||||
/controls/fctl/switches/sec2 eq 1
|
||||
/systems/fctl/sec2 eq 0
|
||||
</test>
|
||||
</switch>
|
||||
|
||||
<switch name="/systems/fctl/sec2">
|
||||
<default value="0"/>
|
||||
<test logic="AND" value="1">
|
||||
/controls/fctl/switches/sec2 eq 1
|
||||
/systems/failures/fctl/sec2 eq 0
|
||||
/systems/electrical/bus/dc-2 ge 25
|
||||
</test>
|
||||
</switch>
|
||||
|
||||
<switch name="/systems/fctl/lights/sec3-fault">
|
||||
<default value="0"/>
|
||||
<test logic="AND" value="1">
|
||||
/controls/fctl/switches/sec3 eq 1
|
||||
/systems/fctl/sec3 eq 0
|
||||
</test>
|
||||
</switch>
|
||||
|
||||
<switch name="/systems/fctl/sec3">
|
||||
<default value="0"/>
|
||||
<test logic="AND" value="1">
|
||||
/controls/fctl/switches/sec3 eq 1
|
||||
/systems/failures/fctl/sec3 eq 0
|
||||
/systems/electrical/bus/dc-2 ge 25
|
||||
</test>
|
||||
</switch>
|
||||
|
||||
<switch name="/systems/fctl/lights/fac1-fault">
|
||||
<default value="0"/>
|
||||
<test logic="AND" value="1">
|
||||
/controls/fctl/switches/fac1 eq 1
|
||||
/systems/fctl/fac1 eq 0
|
||||
</test>
|
||||
</switch>
|
||||
|
||||
<switch name="/systems/fctl/fac1">
|
||||
<default value="0"/>
|
||||
<test logic="AND" value="1">
|
||||
/controls/fctl/switches/fac1 eq 1
|
||||
/systems/failures/fctl/fac1 eq 0
|
||||
/systems/electrical/bus/ac-ess ge 110
|
||||
/systems/electrical/bus/dc-ess-shed ge 25
|
||||
</test>
|
||||
</switch>
|
||||
|
||||
<switch name="/systems/fctl/lights/fac2-fault">
|
||||
<default value="0"/>
|
||||
<test logic="AND" value="1">
|
||||
/controls/fctl/switches/fac2 eq 1
|
||||
/systems/fctl/fac2 eq 0
|
||||
</test>
|
||||
</switch>
|
||||
|
||||
<switch name="/systems/fctl/fac2">
|
||||
<default value="0"/>
|
||||
<test logic="AND" value="1">
|
||||
/controls/fctl/switches/fac2 eq 1
|
||||
/systems/failures/fctl/fac2 eq 0
|
||||
/systems/electrical/bus/ac-2 ge 110
|
||||
/systems/electrical/bus/dc-2 ge 25
|
||||
</test>
|
||||
</switch>
|
||||
|
||||
<switch name="/systems/failures/rudder">
|
||||
<default value="0"/>
|
||||
<test logic="AND" value="1">
|
||||
/systems/fctl/fac1 eq 0
|
||||
/systems/fctl/fac2 eq 0
|
||||
</test>
|
||||
</switch>
|
||||
|
||||
</channel>
|
||||
|
||||
<channel name="FBW: Roll">
|
||||
|
||||
<switch name="fbw/roll/a-i-f">
|
||||
|
@ -737,7 +879,7 @@
|
|||
/controls/flight/flaps-pos ge 4
|
||||
/controls/engines/engine[0]/throttle lt 0.65
|
||||
/controls/engines/engine[1]/throttle lt 0.65
|
||||
/FMGC/status/to-state eq 0
|
||||
/FMGC/internal/to-state eq 0
|
||||
/it-fbw/law eq 0
|
||||
position/wow eq 0
|
||||
</test>
|
||||
|
@ -747,7 +889,7 @@
|
|||
/controls/flight/flaps-pos ge 4
|
||||
/controls/engines/engine[0]/throttle lt 0.65
|
||||
/controls/engines/engine[1]/throttle lt 0.65
|
||||
/FMGC/status/to-state eq 0
|
||||
/FMGC/internal/to-state eq 0
|
||||
/it-fbw/law eq 0
|
||||
gear/unit[0]/WOW eq 0
|
||||
fbw/pitch/flare-gear-switch eq 1
|
||||
|
|
|
@ -791,5 +791,30 @@
|
|||
<output>propulsion/tank[7]/external-flow-rate-pps</output>
|
||||
</summer>
|
||||
</channel>
|
||||
|
||||
<channel name="Warnings">
|
||||
|
||||
<summer name="/systems/fuel/quantity/left-wing-kg">
|
||||
<input>/consumables/fuel/tank[0]/level-kg</input>
|
||||
<input>/consumables/fuel/tank[1]/level-kg</input>
|
||||
</summer>
|
||||
|
||||
<summer name="/systems/fuel/quantity/right-wing-kg">
|
||||
<input>/consumables/fuel/tank[3]/level-kg</input>
|
||||
<input>/consumables/fuel/tank[4]/level-kg</input>
|
||||
</summer>
|
||||
|
||||
<switch name="/systems/fuel/mode-fault">
|
||||
<default value="0"/>
|
||||
<test logic="AND" value="1">
|
||||
<test logic="OR">
|
||||
/systems/fuel/quantity/left-wing-kg lt 5000
|
||||
/systems/fuel/quantity/right-wing-kg lt 5000
|
||||
</test>
|
||||
/consumables/fuel/tank[2]/level-kg ge 250
|
||||
</test>
|
||||
</switch>
|
||||
|
||||
</channel>
|
||||
|
||||
</system>
|
||||
|
|
|
@ -112,7 +112,7 @@
|
|||
<test logic="AND" value="spoilers/main-cmd">
|
||||
/systems/hydraulic/green-psi ge 1500
|
||||
spoilers/main-gear-and eq 1
|
||||
/systems/failures/spoiler-l1 eq 0
|
||||
/systems/failures/spoilers/spoiler-l1 eq 0
|
||||
</test>
|
||||
<clipto>
|
||||
<min>0.0</min>
|
||||
|
@ -199,18 +199,18 @@
|
|||
<test logic="AND" value="hydraulics/spoiler-l2/air-extended">
|
||||
/systems/hydraulic/yellow-psi ge 1500
|
||||
spoilers/main-gear-and eq 0
|
||||
/systems/failures/spoiler-l2 eq 0
|
||||
/systems/failures/spoilers/spoiler-l2 eq 0
|
||||
spoilers/main-cmd gt 0
|
||||
</test>
|
||||
<test logic="AND" value="hydraulics/spoiler-l2/ground-extended">
|
||||
/systems/hydraulic/yellow-psi ge 1500
|
||||
spoilers/main-gear-and eq 1
|
||||
/systems/failures/spoiler-l2 eq 0
|
||||
/systems/failures/spoilers/spoiler-l2 eq 0
|
||||
spoilers/main-cmd gt 0
|
||||
</test>
|
||||
<test logic="AND" value="hydraulics/spoiler-l2/retracted">
|
||||
/systems/hydraulic/yellow-psi ge 1500
|
||||
/systems/failures/spoiler-l2 eq 0
|
||||
/systems/failures/spoilers/spoiler-l2 eq 0
|
||||
spoilers/main-cmd eq 0
|
||||
</test>
|
||||
<clipto>
|
||||
|
@ -266,12 +266,12 @@
|
|||
<default value="0"/>
|
||||
<test logic="AND" value="hydraulics/spoiler-l3/extended">
|
||||
/systems/hydraulic/blue-psi ge 1500
|
||||
/systems/failures/spoiler-l3 eq 0
|
||||
/systems/failures/spoilers/spoiler-l3 eq 0
|
||||
spoilers/main-cmd gt 0
|
||||
</test>
|
||||
<test logic="AND" value="hydraulics/spoiler-l3/retracted">
|
||||
/systems/hydraulic/blue-psi ge 1500
|
||||
/systems/failures/spoiler-l3 eq 0
|
||||
/systems/failures/spoilers/spoiler-l3 eq 0
|
||||
spoilers/main-cmd eq 0
|
||||
</test>
|
||||
<clipto>
|
||||
|
@ -327,12 +327,12 @@
|
|||
<default value="0"/>
|
||||
<test logic="AND" value="hydraulics/spoiler-l4/extended">
|
||||
/systems/hydraulic/yellow-psi ge 1500
|
||||
/systems/failures/spoiler-l4 eq 0
|
||||
/systems/failures/spoilers/spoiler-l4 eq 0
|
||||
spoilers/main-cmd gt 0
|
||||
</test>
|
||||
<test logic="AND" value="hydraulics/spoiler-l4/retracted">
|
||||
/systems/hydraulic/yellow-psi ge 1500
|
||||
/systems/failures/spoiler-l4 eq 0
|
||||
/systems/failures/spoilers/spoiler-l4 eq 0
|
||||
spoilers/main-cmd eq 0
|
||||
</test>
|
||||
<clipto>
|
||||
|
@ -389,12 +389,12 @@
|
|||
<test logic="AND" value="hydraulics/spoiler-l5/ground-extended">
|
||||
/systems/hydraulic/green-psi ge 1500
|
||||
spoilers/main-gear-and eq 1
|
||||
/systems/failures/spoiler-l5 eq 0
|
||||
/systems/failures/spoilers/spoiler-l5 eq 0
|
||||
spoilers/main-cmd gt 0
|
||||
</test>
|
||||
<test logic="AND" value="hydraulics/spoiler-l5/retracted">
|
||||
/systems/hydraulic/green-psi ge 1500
|
||||
/systems/failures/spoiler-l5 eq 0
|
||||
/systems/failures/spoilers/spoiler-l5 eq 0
|
||||
spoilers/main-cmd eq 0
|
||||
</test>
|
||||
<clipto>
|
||||
|
@ -424,7 +424,7 @@
|
|||
<test logic="AND" value="spoilers/main-cmd">
|
||||
/systems/hydraulic/green-psi ge 1500
|
||||
spoilers/main-gear-and eq 1
|
||||
/systems/failures/spoiler-r1 eq 0
|
||||
/systems/failures/spoilers/spoiler-r1 eq 0
|
||||
</test>
|
||||
<clipto>
|
||||
<min>0.0</min>
|
||||
|
@ -511,18 +511,18 @@
|
|||
<test logic="AND" value="hydraulics/spoiler-r2/air-extended">
|
||||
/systems/hydraulic/yellow-psi ge 1500
|
||||
spoilers/main-gear-and eq 0
|
||||
/systems/failures/spoiler-r2 eq 0
|
||||
/systems/failures/spoilers/spoiler-r2 eq 0
|
||||
spoilers/main-cmd gt 0
|
||||
</test>
|
||||
<test logic="AND" value="hydraulics/spoiler-r2/ground-extended">
|
||||
/systems/hydraulic/yellow-psi ge 1500
|
||||
spoilers/main-gear-and eq 1
|
||||
/systems/failures/spoiler-r2 eq 0
|
||||
/systems/failures/spoilers/spoiler-r2 eq 0
|
||||
spoilers/main-cmd gt 0
|
||||
</test>
|
||||
<test logic="AND" value="hydraulics/spoiler-r2/retracted">
|
||||
/systems/hydraulic/yellow-psi ge 1500
|
||||
/systems/failures/spoiler-r2 eq 0
|
||||
/systems/failures/spoilers/spoiler-r2 eq 0
|
||||
spoilers/main-cmd eq 0
|
||||
</test>
|
||||
<clipto>
|
||||
|
@ -578,12 +578,12 @@
|
|||
<default value="0"/>
|
||||
<test logic="AND" value="hydraulics/spoiler-r3/extended">
|
||||
/systems/hydraulic/blue-psi ge 1500
|
||||
/systems/failures/spoiler-r3 eq 0
|
||||
/systems/failures/spoilers/spoiler-r3 eq 0
|
||||
spoilers/main-cmd gt 0
|
||||
</test>
|
||||
<test logic="AND" value="hydraulics/spoiler-r3/retracted">
|
||||
/systems/hydraulic/blue-psi ge 1500
|
||||
/systems/failures/spoiler-r3 eq 0
|
||||
/systems/failures/spoilers/spoiler-r3 eq 0
|
||||
spoilers/main-cmd eq 0
|
||||
</test>
|
||||
<clipto>
|
||||
|
@ -639,12 +639,12 @@
|
|||
<default value="0"/>
|
||||
<test logic="AND" value="hydraulics/spoiler-r4/extended">
|
||||
/systems/hydraulic/yellow-psi ge 1500
|
||||
/systems/failures/spoiler-r4 eq 0
|
||||
/systems/failures/spoilers/spoiler-r4 eq 0
|
||||
spoilers/main-cmd gt 0
|
||||
</test>
|
||||
<test logic="AND" value="hydraulics/spoiler-r4/retracted">
|
||||
/systems/hydraulic/yellow-psi ge 1500
|
||||
/systems/failures/spoiler-r4 eq 0
|
||||
/systems/failures/spoilers/spoiler-r4 eq 0
|
||||
spoilers/main-cmd eq 0
|
||||
</test>
|
||||
<clipto>
|
||||
|
@ -701,12 +701,12 @@
|
|||
<test logic="AND" value="hydraulics/spoiler-r5/ground-extended">
|
||||
/systems/hydraulic/green-psi ge 1500
|
||||
spoilers/main-gear-and eq 1
|
||||
/systems/failures/spoiler-r5 eq 0
|
||||
/systems/failures/spoilers/spoiler-r5 eq 0
|
||||
spoilers/main-cmd gt 0
|
||||
</test>
|
||||
<test logic="AND" value="hydraulics/spoiler-r5/retracted">
|
||||
/systems/hydraulic/green-psi ge 1500
|
||||
/systems/failures/spoiler-r5 eq 0
|
||||
/systems/failures/spoilers/spoiler-r5 eq 0
|
||||
spoilers/main-cmd eq 0
|
||||
</test>
|
||||
<clipto>
|
||||
|
|
Loading…
Add table
Reference in a new issue