1
0
Fork 0

Control: Tie fadec into the plane more and add eng 2 control

This commit is contained in:
Josh Davidson 2021-04-22 17:44:17 -04:00
parent 3532ff11a0
commit c154cdc0ee
38 changed files with 983 additions and 1098 deletions

View file

@ -203,9 +203,6 @@
</view>
<systems n="0">
<autopilot n="0">
<path>Aircraft/A320-family/Systems/fadec-cfm.xml</path>
</autopilot>
<property-rule n="100">
<path>Aircraft/A320-family/Systems/cfm56-sound.xml</path>
</property-rule>

View file

@ -203,9 +203,6 @@
</view>
<systems n="0">
<autopilot n="0">
<path>Aircraft/A320-family/Systems/fadec-iae.xml</path>
</autopilot>
<property-rule n="100">
<path>Aircraft/A320-family/Systems/v2500-sound.xml</path>
</property-rule>

View file

@ -224,35 +224,33 @@
<electrical>
<path></path>
</electrical>
<!-- 0 is FADEC -->
<autopilot n="1">
<autopilot n="0">
<path>Aircraft/A320-family/Systems/fbw-pitch.xml</path>
</autopilot>
<autopilot n="2">
<autopilot n="1">
<path>Aircraft/A320-family/Systems/fmgc-drivers.xml</path>
</autopilot>
<autopilot n="3">
<autopilot n="2">
<path>Aircraft/A320-family/Systems/fmgc-roll-yaw.xml</path>
</autopilot>
<autopilot n="4">
<autopilot n="3">
<path>Aircraft/A320-family/Systems/fmgc-pitch.xml</path>
</autopilot>
<autopilot n="5">
<autopilot n="4">
<path>Aircraft/A320-family/Systems/fmgc-thrust.xml</path>
</autopilot>
<autopilot n="6">
<autopilot n="5">
<path>Aircraft/A320-family/Systems/libraries.xml</path>
</autopilot>
<autopilot n="7">
<autopilot n="6">
<path>Aircraft/A320-family/Systems/upper-ecam.xml</path>
</autopilot>
<autopilot n="8">
<autopilot n="7">
<path>Aircraft/A320-family/Systems/lower-ecam.xml</path>
</autopilot>
<autopilot n="9">
<autopilot n="8">
<path>Aircraft/A320-family/Systems/pfd.xml</path>
</autopilot>
<!-- 10 is sound -->
<property-rule n="101">
<path>Aircraft/A320-family/Systems/sound-common.xml</path>
</property-rule>
@ -702,6 +700,25 @@
<y alias="/sim/model/autopush/force-y"/>
</tractor>
</external_reactions>
<fadec n="0">
<alpha-floor type="bool">0</alpha-floor>
<clbreduc-ft type="double">1500</clbreduc-ft>
<eng-out type="bool">0</eng-out>
<limit n="0">
<active-mode type="string">T/O</active-mode>
<flex-active type="bool">0</flex-active>
<flex-active-cmd type="bool">0</flex-active-cmd>
<flex-temp type="int">30</flex-temp>
</limit>
<lvrclb type="bool">0</lvrclb>
<toga-lk type="bool">0</toga-lk>
<thr-locked type="bool">0</thr-locked>
<thr-locked-alert type="bool">0</thr-locked-alert>
<thr-lock-cmd n="0" type="double">0</thr-lock-cmd>
<thr-lock-cmd n="1" type="double">0</thr-lock-cmd>
<thr-locked-flash type="bool">0</thr-locked-flash>
<thr-locked-time type="double">0</thr-locked-time>
</fadec>
<fbw n="0">
<yaw n="0">
<max-deg-switch type="double">25</max-deg-switch>
@ -876,7 +893,8 @@
<throttle-output type="double">0</throttle-output>
<throttle-fdm type="double">0</throttle-fdm>
<throttle-rev type="double">0</throttle-rev>
<reverser type="double">0</reverser>
<reverse-cmd type="bool">0</reverse-cmd>
<reverse-lever type="double">0</reverse-lever>
<igniter-a type="bool">0</igniter-a>
<igniter-b type="bool">0</igniter-b>
<last-igniter type="string">B</last-igniter>
@ -894,7 +912,8 @@
<throttle-output type="double">0</throttle-output>
<throttle-fdm type="double">0</throttle-fdm>
<throttle-rev type="double">0</throttle-rev>
<reverser type="double">0</reverser>
<reverse-cmd type="bool">0</reverse-cmd>
<reverse-lever type="double">0</reverse-lever>
<igniter-a type="bool">0</igniter-a>
<igniter-b type="bool">0</igniter-b>
<last-igniter type="string">B</last-igniter>
@ -1584,23 +1603,6 @@
<serviceable type="bool">1</serviceable>
</static>
<thrust>
<alpha-floor type="bool">0</alpha-floor>
<clbreduc-ft type="double">1500</clbreduc-ft>
<eng-out type="bool">0</eng-out>
<lim-flex type="bool">0</lim-flex>
<lvrclb type="bool">0</lvrclb>
<state1 type="string">IDLE</state1>
<state2 type="string">IDLE</state2>
<toga-lk type="bool">0</toga-lk>
<thr-locked type="bool">0</thr-locked>
<thr-locked-alert type="bool">0</thr-locked-alert>
<thr-lock-cmd n="0" type="double">0</thr-lock-cmd>
<thr-lock-cmd n="1" type="double">0</thr-lock-cmd>
<thr-locked-flash type="bool">0</thr-locked-flash>
<thr-locked-time type="double">0</thr-locked-time>
</thrust>
<navigation>
<aligned-1 type="bool">0</aligned-1>
<aligned-2 type="bool">0</aligned-2>
@ -1980,7 +1982,7 @@
<binding>
<command>nasal</command>
<script>
systems.doMCTThrust();
systems.doMctThrust();
</script>
</binding>
</key>
@ -2877,7 +2879,7 @@
</condition>
<command>nasal</command>
<script>
systems.doCLThrust();
systems.doClThrust();
</script>
</binding>
</key>
@ -3713,7 +3715,7 @@
</condition>
<command>nasal</command>
<script>
systems.doTOGAThrust();
systems.doTogaThrust();
</script>
</binding>
</key>
@ -4683,7 +4685,8 @@
<file>Aircraft/A320-family/Nasal/Systems/pneumatics.nas</file>
<file>Aircraft/A320-family/Nasal/Systems/hydraulics.nas</file>
<file>Aircraft/A320-family/Nasal/Systems/fuel.nas</file>
<file>Aircraft/A320-family/Nasal/Systems/FADEC/engines-common.nas</file>
<file>Aircraft/A320-family/Nasal/Systems/Engines/engines-common.nas</file>
<file>Aircraft/A320-family/Nasal/Systems/fadec-common.nas</file>
<file>Aircraft/A320-family/Nasal/Systems/ADIRS/ADR.nas</file>
<file>Aircraft/A320-family/Nasal/Panels/SwitchingPanel.nas</file>
<file>Aircraft/A320-family/Nasal/Systems/Comm/HF.nas</file>
@ -4701,9 +4704,6 @@
<file>Aircraft/A320-family/Nasal/ECAM/ECAM-messages.nas</file>
<file>Aircraft/A320-family/Nasal/ECAM/ECAM-phases.nas</file>
</ecam>
<fadec>
<file>Aircraft/A320-family/Nasal/Systems/FADEC/fadec-common.nas</file>
</fadec>
<fbw>
<file>Aircraft/A320-family/Nasal/FBW/it-fbw.nas</file>
</fbw>

View file

@ -203,9 +203,6 @@
</view>
<systems n="0">
<autopilot n="0">
<path>Aircraft/A320-family/Systems/fadec-cfm.xml</path>
</autopilot>
<property-rule n="100">
<path>Aircraft/A320-family/Systems/leapx-sound.xml</path>
</property-rule>

View file

@ -203,9 +203,6 @@
</view>
<systems n="0">
<autopilot n="0"> <!-- Apparently PW PurePower uses N1, not EPR.... sooo I use CFM FADEC -->
<path>Aircraft/A320-family/Systems/fadec-cfm.xml</path>
</autopilot>
<property-rule n="100">
<path>Aircraft/A320-family/Systems/leapx-sound.xml</path>
</property-rule>

View file

@ -543,6 +543,7 @@ var taxi_d = func {
setprop("/controls/engines/engine-start-switch", 1);
setprop("/controls/apu/master", 0);
setprop("/controls/pneumatics/switches/apu", 0);
setprop("/controls/gear/brake-parking", 0);
setprop("/controls/gear/brake-left", 0);
setprop("/controls/gear/brake-right", 0);
setprop("/systems/acconfig/autoconfig-running", 0);

View file

@ -2447,7 +2447,7 @@ var canvas_lowerECAM_fuel = {
me["FFlow-weight-unit"].setText("LBS/MIN");
}
if (fadec.FADEC.Power.powered1.getValue() and fadec.FADEC.Power.powered2.getValue() or fadec.FADEC.Power.powerup.getValue()) {
if (systems.FADEC_S.Power.powered1.getValue() and systems.FADEC_S.Power.powered2.getValue() or systems.FADEC_S.Power.powerup.getValue()) {
me["FUEL-Flow-per-min"].setColor(0.0509,0.7529,0.2941);
if (_weight_kgs == 1) {
me["FUEL-Flow-per-min"].setText(sprintf("%s", math.round(((fuel_flow1.getValue() + fuel_flow2.getValue()) * LBS2KGS) / 60, 10)));

View file

@ -123,14 +123,14 @@ var state2 = props.globals.getNode("/engines/engine[1]/state", 1);
var altitude = props.globals.getNode("/instrumentation/altimeter/indicated-altitude-ft", 1);
# TO PERF
var clbReducFt = props.globals.getNode("/systems/thrust/clbreduc-ft", 1);
var clbReducFt = props.globals.getNode("/fdm/jsbsim/fadec/clbreduc-ft", 1);
var reducFt = props.globals.getNode("/FMGC/internal/accel-agl-ft", 1); # It's not AGL anymore
var thrAccSet = props.globals.getNode("/MCDUC/thracc-set", 1);
var flapTO = props.globals.getNode("/FMGC/internal/to-flap", 1);
var THSTO = props.globals.getNode("/FMGC/internal/to-ths", 1);
var flapTHSSet = props.globals.getNode("/FMGC/internal/flap-ths-set", 1);
var flex = props.globals.getNode("/FMGC/internal/flex", 1);
var flexSet = props.globals.getNode("/FMGC/internal/flex-set", 1);
var flex = props.globals.getNode("/fdm/jsbsim/fadec/limit/flex-temp", 1);
var flexSet = props.globals.getNode("/fdm/jsbsim/fadec/limit/flex-active-cmd", 1);
var engOutAcc = props.globals.getNode("/FMGC/internal/eng-out-reduc", 1);
var engOutAccSet = props.globals.getNode("/MCDUC/reducacc-set", 1);
var managedSpeed = props.globals.getNode("/it-autoflight/input/spd-managed", 1);

View file

@ -16,8 +16,8 @@ var track_diff = 0;
var AICenter = nil;
# Fetch nodes:
var state1 = props.globals.getNode("/systems/thrust/state1", 1);
var state2 = props.globals.getNode("/systems/thrust/state2", 1);
var state1 = props.globals.getNode("/fdm/jsbsim/fadec/control-1/detent-text", 1);
var state2 = props.globals.getNode("/fdm/jsbsim/fadec/control-2/detent-text", 1);
var throttle_mode = props.globals.getNode("/modes/pfd/fma/throttle-mode", 1);
var pitch_mode = props.globals.getNode("/modes/pfd/fma/pitch-mode", 1);
var pitch_mode_armed = props.globals.getNode("/modes/pfd/fma/pitch-mode-armed", 1);
@ -42,14 +42,14 @@ var acconfig = props.globals.getNode("/systems/acconfig/autoconfig-running", 1);
var acconfig_mismatch = props.globals.getNode("/systems/acconfig/mismatch-code", 1);
var cpt_du_xfr = props.globals.getNode("/modes/cpt-du-xfr", 1);
var fo_du_xfr = props.globals.getNode("/modes/fo-du-xfr", 1);
var eng_out = props.globals.getNode("/systems/thrust/eng-out", 1);
var eng_out = props.globals.getNode("/fdm/jsbsim/fadec/eng-out", 1);
var eng0_state = props.globals.getNode("/engines/engine[0]/state", 1);
var eng1_state = props.globals.getNode("/engines/engine[1]/state", 1);
var alpha_floor = props.globals.getNode("/systems/thrust/alpha-floor", 1);
var toga_lk = props.globals.getNode("/systems/thrust/toga-lk", 1);
var alpha_floor = props.globals.getNode("/fdm/jsbsim/fadec/alpha-floor", 1);
var toga_lk = props.globals.getNode("/fdm/jsbsim/fadec/toga-lk", 1);
var thrust_limit = props.globals.getNode("/controls/engines/thrust-limit", 1);
var flex = props.globals.getNode("/FMGC/internal/flex", 1);
var lvr_clb = props.globals.getNode("/systems/thrust/lvrclb", 1);
var flex = props.globals.getNode("/fdm/jsbsim/fadec/limit/flex-temp", 1);
var lvr_clb = props.globals.getNode("/fdm/jsbsim/fadec/lvrclb", 1);
var throt_box = props.globals.getNode("/modes/pfd/fma/throttle-mode-box", 1);
var pitch_box = props.globals.getNode("/modes/pfd/fma/pitch-mode-box", 1);
var ap_box = props.globals.getNode("/modes/pfd/fma/ap-mode-box", 1);
@ -648,7 +648,7 @@ var canvas_PFD_base = {
me["FMA_flxmode"].hide();
me["FMA_manmode"].setText("TOGA");
me["FMA_man_box"].setColor(0.8078,0.8039,0.8078);
} else if ((state1_act == "MAN THR" and thr1_act >= 0.83) or (state2_act == "MAN THR" and thr2_act >= 0.83)) {
} else if ((state1_act == "MAN THR" and systems.FADEC.manThrAboveMct[0]) or (state2_act == "MAN THR" and systems.FADEC.manThrAboveMct[1])) {
me["FMA_flx_box"].hide();
me["FMA_flxtemp"].hide();
me["FMA_man_box"].show();
@ -672,7 +672,7 @@ var canvas_PFD_base = {
me["FMA_manmode"].hide();
me["FMA_flxmode"].show();
me["FMA_man_box"].setColor(0.8078,0.8039,0.8078);
} else if ((state1_act == "MAN THR" and thr1_act < 0.83) or (state2_act == "MAN THR" and thr2_act < 0.83)) {
} else if ((state1_act == "MAN THR" and !systems.FADEC.manThrAboveMct[0]) or (state2_act == "MAN THR" and !systems.FADEC.manThrAboveMct[1])) {
me["FMA_flx_box"].hide();
me["FMA_flxtemp"].hide();
me["FMA_man_box"].show();
@ -681,8 +681,8 @@ var canvas_PFD_base = {
me["FMA_manmode"].setText("THR");
me["FMA_man_box"].setColor(0.7333,0.3803,0);
}
} else if (athr.getValue() == 1 and (state1_act == "TOGA" or (state1_act == "MCT" and thrust_limit_act == "FLX") or (state1_act == "MAN THR" and thr1_act >= 0.83) or state2_act == "TOGA" or (state2_act == "MCT" and
thrust_limit_act == "FLX") or (state2_act == "MAN THR" and thr2_act >= 0.83)) and eng_out.getValue() == 1 and alpha_floor_act != 1 and toga_lk_act != 1) {
} else if (athr.getValue() == 1 and (state1_act == "TOGA" or (state1_act == "MCT" and thrust_limit_act == "FLX") or (state1_act == "MAN THR" and systems.FADEC.manThrAboveMct[0]) or state2_act == "TOGA" or (state2_act == "MCT" and
thrust_limit_act == "FLX") or (state2_act == "MAN THR" and systems.FADEC.manThrAboveMct[1])) and eng_out.getValue() == 1 and alpha_floor_act != 1 and toga_lk_act != 1) {
me["FMA_man"].show();
if (state1_act == "TOGA" or state2_act == "TOGA") {
me["FMA_flx_box"].hide();
@ -692,7 +692,7 @@ var canvas_PFD_base = {
me["FMA_flxmode"].hide();
me["FMA_manmode"].setText("TOGA");
me["FMA_man_box"].setColor(0.8078,0.8039,0.8078);
} else if ((state1_act == "MAN THR" and thr1_act >= 0.83) or (state2_act == "MAN THR" and thr2_act >= 0.83)) {
} else if ((state1_act == "MAN THR" and systems.FADEC.manThrAboveMct[0]) or (state2_act == "MAN THR" and systems.FADEC.manThrAboveMct[1])) {
me["FMA_flx_box"].hide();
me["FMA_flxtemp"].hide();
me["FMA_man_box"].show();
@ -743,8 +743,8 @@ var canvas_PFD_base = {
} else {
me["FMA_thrust_box"].hide();
}
} else if (athr.getValue() == 1 and eng_out.getValue() == 1 and (state1_act == "MAN" or state1_act == "CL" or (state1_act == "MAN THR" and thr1_act < 0.83) or (state1_act == "MCT" and thrust_limit_act != "FLX")) and
(state2_act == "MAN" or state2_act == "CL" or (state2_act == "MAN THR" and thr2_act < 0.83) or (state2_act == "MCT" and thrust_limit_act != "FLX"))) {
} else if (athr.getValue() == 1 and eng_out.getValue() == 1 and (state1_act == "MAN" or state1_act == "CL" or (state1_act == "MAN THR" and !systems.FADEC.manThrAboveMct[0]) or (state1_act == "MCT" and thrust_limit_act != "FLX")) and
(state2_act == "MAN" or state2_act == "CL" or (state2_act == "MAN THR" and !systems.FADEC.manThrAboveMct[1]) or (state2_act == "MCT" and thrust_limit_act != "FLX"))) {
me["FMA_thrust"].show();
if (throt_box.getValue() == 1 and throttle_mode.getValue() != " ") {
me["FMA_thrust_box"].show();

View file

@ -314,7 +314,7 @@ var canvas_upperECAM = {
}
}),
props.UpdateManager.FromHashValue("N1_mode_1", nil, func(val) {
if (fadec.FADEC.Eng1.n1.getValue() == 1 and val) {
if (systems.FADEC_S.Eng1.n1.getValue() == 1 and val) {
obj["N11-thr"].show();
obj["N11-ylim"].hide(); # Keep it hidden, since N1 mode limit calculation is not done yet
} else {
@ -323,7 +323,7 @@ var canvas_upperECAM = {
}
}),
props.UpdateManager.FromHashValue("N1_mode_2", nil, func(val) {
if (fadec.FADEC.Eng2.n1.getValue() == 1 and val) {
if (systems.FADEC_S.Eng2.n1.getValue() == 1 and val) {
obj["N12-thr"].show();
obj["N12-ylim"].hide(); # Keep it hidden, since N1 mode limit calculation is not done yet
} else {
@ -526,24 +526,24 @@ var canvas_upperECAM = {
me.updateN12(notification);
}
if (fadec.FADEC.Eng1.n2 != me._cachedN2[0]) {
if (systems.FADEC_S.Eng1.n2 != me._cachedN2[0]) {
me.updateN21();
}
if (fadec.FADEC.Eng2.n2 != me._cachedN2[1]) {
if (systems.FADEC_S.Eng2.n2 != me._cachedN2[1]) {
me.updateN22();
}
if (fadec.FADEC.Eng1.egt != me._cachedEGT[0]) {
if (systems.FADEC_S.Eng1.egt != me._cachedEGT[0]) {
me.updateEGT1();
}
if (fadec.FADEC.Eng2.egt != me._cachedEGT[1]) {
if (systems.FADEC_S.Eng2.egt != me._cachedEGT[1]) {
me.updateEGT2();
}
if (fadec.FADEC.Eng1.ff != me._cachedFF[0]) {
if (systems.FADEC_S.Eng1.ff != me._cachedFF[0]) {
me.updateFF1();
}
if (fadec.FADEC.Eng2.ff != me._cachedFF[1]) {
if (systems.FADEC_S.Eng2.ff != me._cachedFF[1]) {
me.updateFF2();
}
@ -554,21 +554,21 @@ var canvas_upperECAM = {
}
}
if (fadec.FADEC.Eng1.n2 or fadec.FADEC.Eng2.n2) {
if (systems.FADEC_S.Eng1.n2 or systems.FADEC_S.Eng2.n2) {
foreach(var update_item; me.update_items_fadec_powered_n2)
{
update_item.update(notification);
}
}
if (fadec.FADEC.Eng1.egt or fadec.FADEC.Eng2.egt) {
if (systems.FADEC_S.Eng1.egt or systems.FADEC_S.Eng2.egt) {
foreach(var update_item; me.update_items_fadec_powered_egt)
{
update_item.update(notification);
}
}
if (fadec.FADEC.Eng1.ff or fadec.FADEC.Eng2.ff) {
if (systems.FADEC_S.Eng1.ff or systems.FADEC_S.Eng2.ff) {
foreach(var update_item; me.update_items_fadec_powered_ff)
{
update_item.update(notification);
@ -699,8 +699,8 @@ var canvas_upperECAM = {
},
updateN21: func() {
me._cachedN2[0] = fadec.FADEC.Eng1.n2;
if (fadec.FADEC.Eng1.n2 == 1) {
me._cachedN2[0] = systems.FADEC_S.Eng1.n2;
if (systems.FADEC_S.Eng1.n2 == 1) {
me["N21"].show();
me["N21-decimal"].show();
me["N21-decpnt"].show();
@ -713,8 +713,8 @@ var canvas_upperECAM = {
}
},
updateN22: func() {
me._cachedN2[1] = fadec.FADEC.Eng2.n2;
if (fadec.FADEC.Eng2.n2 == 1) {
me._cachedN2[1] = systems.FADEC_S.Eng2.n2;
if (systems.FADEC_S.Eng2.n2 == 1) {
me["N22"].show();
me["N22-decimal"].show();
me["N22-decpnt"].show();
@ -728,8 +728,8 @@ var canvas_upperECAM = {
},
updateEGT1: func() {
me._cachedEGT[0] = fadec.FADEC.Eng1.egt;
if (fadec.FADEC.Eng1.egt == 1) {
me._cachedEGT[0] = systems.FADEC_S.Eng1.egt;
if (systems.FADEC_S.Eng1.egt == 1) {
me["EGT1-scale"].setColor(0.8078,0.8039,0.8078);
me["EGT1-scale2"].setColor(1,0,0);
me["EGT1"].show();
@ -748,8 +748,8 @@ var canvas_upperECAM = {
}
},
updateEGT2: func() {
me._cachedEGT[1] = fadec.FADEC.Eng2.egt;
if (fadec.FADEC.Eng2.egt == 1) {
me._cachedEGT[1] = systems.FADEC_S.Eng2.egt;
if (systems.FADEC_S.Eng2.egt == 1) {
me["EGT2-scale"].setColor(0.8078,0.8039,0.8078);
me["EGT2-scale2"].setColor(1,0,0);
me["EGT2"].show();
@ -825,8 +825,8 @@ var canvas_upperECAM = {
}
},
updateFF1: func() {
me._cachedFF[0] = fadec.FADEC.Eng1.ff;
if (fadec.FADEC.Eng1.ff == 1) {
me._cachedFF[0] = systems.FADEC_S.Eng1.ff;
if (systems.FADEC_S.Eng1.ff == 1) {
me["FF1"].show();
me["FF1-XX"].hide();
} else {
@ -835,8 +835,8 @@ var canvas_upperECAM = {
}
},
updateFF2: func() {
me._cachedFF[1] = fadec.FADEC.Eng2.ff;
if (fadec.FADEC.Eng2.ff == 1) {
me._cachedFF[1] = systems.FADEC_S.Eng2.ff;
if (systems.FADEC_S.Eng2.ff == 1) {
me["FF2"].show();
me["FF2-XX"].hide();
} else {
@ -1043,16 +1043,16 @@ input = {
slatyOffsetTrans: "/ECAM/Upper/SlatYtrans",
# fadec
alphaFloor: "/systems/thrust/alpha-floor",
eprLimit: "/controls/engines/epr-limit",
alphaFloor: "/fdm/jsbsim/fadec/alpha-floor",
eprLimit: "/fdm/jsbsim/fadec/limit/active-epr",
thrustLimit: "/controls/engines/thrust-limit",
n1Limit: "/controls/engines/n1-limit",
flexTemp: "/FMGC/internal/flex",
n1Limit: "/fdm/jsbsim/fadec/limit/active-n1",
flexTemp: "/fdm/jsbsim/fadec/limit/flex-temp",
fadecPower1: "/systems/fadec/powered1",
fadecPower2: "/systems/fadec/powered2",
fadecPowerStart: "/systems/fadec/powerup",
N1_mode_1: "/systems/fadec/n1mode1",
N1_mode_2: "/systems/fadec/n1mode2",
N1_mode_1: "/fdm/jsbsim/fadec/control-1/n1-mode",
N1_mode_2: "/fdm/jsbsim/fadec/control-2/n1-mode",
eng1_epr: "/systems/fadec/eng1/epr",
eng2_epr: "/systems/fadec/eng2/epr",
eng1_n1: "/systems/fadec/eng1/n1",

View file

@ -1167,7 +1167,7 @@ var messages_priority_2 = func {
if ((phaseVar2 == 2 or phaseVar2 == 3 or phaseVar2 == 9) and warningNodes.Logic.thrLeversNotSet.getValue() and engThrustLvrNotSet.clearFlag == 0) {
engThrustLvrNotSet.active = 1;
if (fadec.Thrust.limFlex.getValue()) {
if (systems.FADEC.Limit.flexActive.getBoolValue()) {
engThrustLvrNotSetMCT.active = 1;
ECAM_controller.warningReset(engThrustLvrNotSetMCT);
} else {
@ -1619,7 +1619,7 @@ var messages_priority_2 = func {
} else {
_SATval = nil;
}
if (satAbvFlexTemp.clearFlag == 0 and phaseVar2 == 2 and fadec.Thrust.limFlex.getValue() and _SATval != nil and _SATval > fmgc.FMGCNodes.flexTemp.getValue() and !warningNodes.Logic.thrLeversNotSet.getValue()) {
if (satAbvFlexTemp.clearFlag == 0 and phaseVar2 == 2 and systems.FADEC.Limit.flexActive.getBoolValue() and _SATval != nil and _SATval > systems.FADEC.Limit.flexTemp.getValue() and !warningNodes.Logic.thrLeversNotSet.getValue()) {
satAbvFlexTemp.active = 1;
if (satAbvFlexTempCheck.clearFlag == 0) {
@ -2133,8 +2133,8 @@ var messages_priority_2 = func {
ECAM_controller.warningReset(athr_offw_1);
}
if ((athr_lock.clearFlag == 0) and phaseVar2 >= 5 and phaseVar2 <= 7 and getprop("/systems/thrust/thr-locked-alert") == 1) {
if (getprop("/systems/thrust/thr-locked-flash") == 0) {
if ((athr_lock.clearFlag == 0) and phaseVar2 >= 5 and phaseVar2 <= 7 and getprop("/fdm/jsbsim/fadec/thr-locked-alert") == 1) {
if (getprop("/fdm/jsbsim/fadec/thr-locked-flash") == 0) {
athr_lock.msg = " ";
} else {
athr_lock.msg = msgSave
@ -2147,7 +2147,7 @@ var messages_priority_2 = func {
}
if ((athr_lim.clearFlag == 0) and getprop("it-autoflight/output/athr") == 1 and ((getprop("/systems/thrust/eng-out") != 1 and (pts.Systems.Thrust.state[0].getValue() == "MAN" or pts.Systems.Thrust.state[1].getValue() == "MAN")) or (getprop("/systems/thrust/eng-out") == 1 and (pts.Systems.Thrust.state[0].getValue() == "MAN" or pts.Systems.Thrust.state[1].getValue() == "MAN" or (pts.Systems.Thrust.state[0].getValue() == "MAN THR" and getprop("/controls/engines/engine[0]/throttle-pos") <= 0.83) or (pts.Systems.Thrust.state[1].getValue() == "MAN THR" and getprop("/controls/engines/engine[0]/throttle-pos") <= 0.83)))) and (phaseVar2 >= 5 and phaseVar2 <= 7)) {
if ((athr_lim.clearFlag == 0) and getprop("it-autoflight/output/athr") == 1 and ((getprop("/fdm/jsbsim/fadec/eng-out") != 1 and (systems.FADEC.detentText[0].getValue() == "MAN" or systems.FADEC.detentText[1].getValue() == "MAN")) or (getprop("/fdm/jsbsim/fadec/eng-out") == 1 and (systems.FADEC.detentText[0].getValue() == "MAN" or systems.FADEC.detentText[1].getValue() == "MAN" or (systems.FADEC.detentText[0].getValue() == "MAN THR" and !systems.FADEC.manThrAboveMct[0]) or (systems.FADEC.detentText[1].getValue() == "MAN THR" and !systems.FADEC.manThrAboveMct[1])))) and (phaseVar2 >= 5 and phaseVar2 <= 7)) {
athr_lim.active = 1;
athr_lim_1.active = 1;
} else {
@ -3444,7 +3444,7 @@ var messages_right_memo = func {
spd_brk.active = 0;
}
thrustState = [pts.Systems.Thrust.state[0].getValue(), pts.Systems.Thrust.state[1].getValue()];
thrustState = [systems.FADEC.detentText[0].getValue(), systems.FADEC.detentText[1].getValue()];
if (thrustState[0] == "IDLE" and thrustState[1] == "IDLE" and phaseVarMemo3 >= 6 and phaseVarMemo3 <= 7) {
spd_brk.colour = "g";
} else if ((phaseVarMemo3 >= 2 and phaseVarMemo3 <= 5) or ((thrustState[0] != "IDLE" or thrustState[1]) != "IDLE") and (phaseVarMemo3 >= 6 and phaseVarMemo3 <= 7)) {

View file

@ -179,7 +179,7 @@ var Custom = {
athrOff: props.globals.initNode("/it-autoflight/sound/athrsound", 0, "BOOL"),
enableAthrOff: 0,
},
ThrLock: props.globals.getNode("/systems/thrust/thr-locked", 1)
ThrLock: props.globals.getNode("/fdm/jsbsim/fadec/thr-locked", 1)
};
var ITAF = {

View file

@ -112,18 +112,18 @@ var init = func() {
# Master Thrust
var loopFMA = maketimer(0.05, func {
state1 = pts.Systems.Thrust.state[0].getValue();
state2 = pts.Systems.Thrust.state[1].getValue();
state1 = systems.FADEC.detentText[0].getValue();
state2 = systems.FADEC.detentText[1].getValue();
thr1 = pts.Controls.Engines.Engine.throttlePos[0].getValue();
thr2 = pts.Controls.Engines.Engine.throttlePos[1].getValue();
newthr = Modes.PFD.FMA.throttle.getValue();
engout = pts.Systems.Thrust.engOut.getValue();
engout = systems.FADEC.engOut.getValue();
if (state1 == "TOGA" or state2 == "TOGA") {
if (newthr != " ") {
Modes.PFD.FMA.throttle.setValue(" ");
}
} else if ((state1 == "MAN THR" and thr1 >= 0.83) or (state2 == "MAN THR" and thr2 >= 0.83)) {
} else if ((state1 == "MAN THR" and systems.FADEC.manThrAboveMct[0]) or (state2 == "MAN THR" and systems.FADEC.manThrAboveMct[1])) {
if (newthr != " ") {
Modes.PFD.FMA.throttle.setValue(" ");
}
@ -131,7 +131,7 @@ var loopFMA = maketimer(0.05, func {
if (newthr != " ") {
Modes.PFD.FMA.throttle.setValue(" ");
}
} else if (((state1 == "MAN THR" and thr1 < 0.83) or (state2 == "MAN THR" and thr2 < 0.83)) and !engout) {
} else if (((state1 == "MAN THR" and !systems.FADEC.manThrAboveMct[0]) or (state2 == "MAN THR" and !systems.FADEC.manThrAboveMct[1])) and !engout) {
if (newthr != " ") {
Modes.PFD.FMA.throttle.setValue(" ");
}
@ -176,7 +176,7 @@ var loopFMA = maketimer(0.05, func {
if (!Modes.PFD.FMA.athr.getValue()) {
Modes.PFD.FMA.athr.setValue(1);
}
} else if (athr and ((state1 == "MAN THR" and thr1 >= 0.83) or (state2 == "MAN THR" and thr2 >= 0.83) or (fadec.Thrust.thrustLimit.getValue() == "FLX" and (state1 == "MCT" or state2 == "MCT"))
} else if (athr and ((state1 == "MAN THR" and systems.FADEC.manThrAboveMct[0]) or (state2 == "MAN THR" and systems.FADEC.manThrAboveMct[1]) or (systems.FADEC.Limit.activeMode.getValue() == "FLX" and (state1 == "MCT" or state2 == "MCT"))
or state1 == "TOGA" or state2 == "TOGA") and engout) {
if (!Modes.PFD.FMA.athr.getValue()) {
Modes.PFD.FMA.athr.setValue(1);
@ -188,11 +188,11 @@ var loopFMA = maketimer(0.05, func {
}
# SRS RWY Engagement
flx = fadec.Thrust.limFlex.getValue();
flx = systems.FADEC.Limit.flexActive.getBoolValue();
newlat = Modes.PFD.FMA.rollMode.getValue();
engstate1 = pts.Engines.Engine.state[0].getValue();
engstate2 = pts.Engines.Engine.state[1].getValue();
if (((state1 == "TOGA" or state2 == "TOGA") or (flx == 1 and (state1 == "MCT" or state2 == "MCT")) or (flx == 1 and ((state1 == "MAN THR" and thr1 >= 0.83) or (state2 == "MAN THR" and thr2 >= 0.83)))) and (engstate1 == 3 or engstate2 == 3)) {
if (((state1 == "TOGA" or state2 == "TOGA") or (flx == 1 and (state1 == "MCT" or state2 == "MCT")) or (flx == 1 and ((state1 == "MAN THR" and systems.FADEC.manThrAboveMct[0]) or (state2 == "MAN THR" and systems.FADEC.manThrAboveMct[1])))) and (engstate1 == 3 or engstate2 == 3)) {
# RWY Engagement would go here, but automatic ILS selection is not simulated yet.
gear1 = pts.Gear.wow[0].getValue();
if (gear1 and FMGCInternal.v2set and Output.vert.getValue() != 7) {
@ -627,14 +627,14 @@ setlistener("/modes/pfd/fma/athr-armed", func {
});
setlistener("/modes/pfd/fma/throttle-mode", func {
state1 = pts.Systems.Thrust.state[0].getValue();
state2 = pts.Systems.Thrust.state[1].getValue();
state1 = systems.FADEC.detentText[0].getValue();
state2 = systems.FADEC.detentText[1].getValue();
athr = Output.athr.getValue();
if (athr == 1 and state1 != "MCT" and state2 != "MCT" and state1 != "MAN THR" and state2 != "MAN THR" and state1 != "TOGA" and state2 != "TOGA" and state1 != "IDLE" and state2 != "IDLE" and
!pts.Systems.Thrust.engOut.getValue()) {
!systems.FADEC.engOut.getValue()) {
Modes.PFD.FMA.throttleModeTime.setValue(pts.Sim.Time.elapsedSec.getValue());
} else if (athr == 1 and state1 != "TOGA" and state2 != "TOGA" and state1 != "IDLE" and state2 != "IDLE" and pts.Systems.Thrust.engOut.getValue()) {
if (pts.Controls.Engines.Engine.throttlePos[0].getValue() < 0.83 and pts.Controls.Engines.Engine.throttlePos[1].getValue() < 0.83) {
} else if (athr == 1 and state1 != "TOGA" and state2 != "TOGA" and state1 != "IDLE" and state2 != "IDLE" and systems.FADEC.engOut.getValue()) {
if (systems.FADEC.detentOut[0].getValue() <= 4 and systems.FADEC.detentOut[1].getValue() <= 4) {
Modes.PFD.FMA.throttleModeTime.setValue(pts.Sim.Time.elapsedSec.getValue());
}
}

View file

@ -247,8 +247,6 @@ var postInit = func() {
var FMGCNodes = {
costIndex: props.globals.initNode("/FMGC/internal/cost-index", 0, "DOUBLE"),
flexSet: props.globals.initNode("/FMGC/internal/flex-set", 0, "BOOL"),
flexTemp: props.globals.initNode("/FMGC/internal/flex", 45, "INT"),
mngSpdAlt: props.globals.getNode("/FMGC/internal/mng-alt-spd"),
mngMachAlt: props.globals.getNode("/FMGC/internal/mng-alt-mach"),
toFromSet: props.globals.initNode("/FMGC/internal/tofrom-set", 0, "BOOL"),
@ -608,8 +606,8 @@ var masterFMGC = maketimer(0.2, func {
alt = pts.Instrumentation.Altimeter.indicatedFt.getValue();
# cruiseft = FMGCInternal.crzFt;
# cruiseft_b = FMGCInternal.crzFt - 200;
state1 = pts.Systems.Thrust.state[0].getValue();
state2 = pts.Systems.Thrust.state[1].getValue();
state1 = systems.FADEC.detentText[0].getValue();
state2 = systems.FADEC.detentText[1].getValue();
accel_agl_ft = Setting.reducAglFt.getValue();
gear0 = pts.Gear.wow[0].getBoolValue();
altSel = Input.alt.getValue();

View file

@ -91,13 +91,13 @@ var systemsInit = func() {
systems.FUEL.init();
systems.ADIRS.init();
systems.eng_init();
systems.FADEC.init();
systems.APUController.init();
systems.BrakeSys.reset();
systems.Autobrake.init();
systems.fire_init();
fmgc.flightPlanController.reset();
fmgc.windController.reset();
fadec.FADEC.init();
fmgc.ITAF.init();
fmgc.FMGCinit();
mcdu.MCDU_init(0);
@ -175,7 +175,7 @@ var systemsLoop = func(notification) {
systems.BrakeSys.update(notification);
systems.HFLoop(notification);
systems.APUController.loop();
fadec.FADEC.loop();
systems.FADEC.loop();
rmp.rmpUpdate();
fcu.FCUController.loop(notification);
atc.Transponders.vector[atc.transponderPanel.atcSel - 1].update(notification);

View file

@ -29,14 +29,14 @@ var Controls = {
cutoff: [props.globals.getNode("/controls/engines/engine[0]/cutoff"), props.globals.getNode("/controls/engines/engine[1]/cutoff")],
cutoffSw: [props.globals.getNode("/controls/engines/engine[0]/cutoff-switch"), props.globals.getNode("/controls/engines/engine[1]/cutoff-switch")],
firePb: [props.globals.getNode("/controls/engines/engine[0]/fire-btn"), props.globals.getNode("/controls/engines/engine[1]/fire-btn")],
reverseCmd: [props.globals.getNode("/controls/engines/engine[0]/reverse-cmd"), props.globals.getNode("/controls/engines/engine[1]/reverse-cmd")],
reverseLever: [props.globals.getNode("/controls/engines/engine[0]/reverse-lever"), props.globals.getNode("/controls/engines/engine[1]/reverse-lever")],
starter: [props.globals.getNode("/controls/engines/engine[0]/starter"), props.globals.getNode("/controls/engines/engine[1]/starter")],
throttle: [props.globals.getNode("/controls/engines/engine[0]/throttle"), props.globals.getNode("/controls/engines/engine[1]/throttle")],
throttleFdm: [props.globals.getNode("/controls/engines/engine[0]/throttle-fdm"), props.globals.getNode("/controls/engines/engine[1]/throttle-fdm")],
throttleLever: [props.globals.getNode("/controls/engines/engine[0]/throttle-lever"), props.globals.getNode("/controls/engines/engine[1]/throttle-lever")],
throttleOutput: [props.globals.getNode("/controls/engines/engine[0]/throttle-output"), props.globals.getNode("/controls/engines/engine[1]/throttle-output")],
throttlePos: [props.globals.getNode("/controls/engines/engine[0]/throttle-pos"), props.globals.getNode("/controls/engines/engine[1]/throttle-pos")],
throttleRev: [props.globals.getNode("/controls/engines/engine[0]/throttle-rev"), props.globals.getNode("/controls/engines/engine[1]/throttle-rev")],
starter: [props.globals.getNode("/controls/engines/engine[0]/starter"), props.globals.getNode("/controls/engines/engine[1]/starter")],
reverser: [props.globals.getNode("/controls/engines/engine[0]/reverser"), props.globals.getNode("/controls/engines/engine[1]/reverser")],
},
},
Flight: {
@ -268,13 +268,6 @@ var Sim = {
},
};
var Systems = {
Thrust: {
engOut: props.globals.getNode("/systems/thrust/eng-out"),
state: [props.globals.getNode("/systems/thrust/state1"), props.globals.getNode("/systems/thrust/state2")],
},
};
var Velocities = {
airspeed: props.globals.getNode("/velocities/airspeed-kt"),
groundspeed: props.globals.getNode("/velocities/groundspeed-kt"),

View file

@ -163,8 +163,8 @@ var MCDU_reset = func(i) {
setprop("/FMGC/internal/to-flap", 0);
setprop("/FMGC/internal/to-ths", "0.0");
setprop("/FMGC/internal/flap-ths-set", 0);
setprop("/FMGC/internal/flex", 0);
setprop("/FMGC/internal/flex-set", 0);
setprop("/fdm/jsbsim/fadec/limit/flex-temp", 0);
setprop("/fdm/jsbsim/fadec/limit/flex-active-cmd", 0);
setprop("/FMGC/internal/eng-out-reduc", "1500");
setprop("/MCDUC/reducacc-set", 0);
fmgc.FMGCInternal.transAlt = 18000;

View file

@ -6,7 +6,7 @@ var perfGAInput = func(key, i) {
var scratchpad = mcdu_scratchpad.scratchpads[i].scratchpad;
if (key == "L5") {
if (scratchpad == "CLR") {
setprop("/systems/thrust/clbreduc-ft", 1500);
setprop("/fdm/jsbsim/fadec/clbreduc-ft", 1500);
setprop("/FMGC/internal/accel-agl-ft", 1500);
setprop("MCDUC/thracc-set", 0);
mcdu_scratchpad.scratchpads[i].empty();
@ -17,7 +17,7 @@ var perfGAInput = func(key, i) {
var thrred = size(thracc[0]);
var acc = size(thracc[1]);
if (int(thrred) != nil and int(acc) != nil and (thrred >= 3 and thrred <= 5) and (acc >= 3 and acc <= 5)) {
setprop("/systems/thrust/clbreduc-ft", thracc[0]);
setprop("/fdm/jsbsim/fadec/clbreduc-ft", thracc[0]);
setprop("/FMGC/internal/accel-agl-ft", thracc[1]);
setprop("MCDUC/thracc-set", 1);
mcdu_scratchpad.scratchpads[i].empty();

View file

@ -112,7 +112,7 @@ var perfTOInput = func(key, i) {
}
} else if (key == "L5" and modifiable) {
if (scratchpad == "CLR") {
setprop("/systems/thrust/clbreduc-ft", 1500);
setprop("/fdm/jsbsim/fadec/clbreduc-ft", 1500);
setprop("/FMGC/internal/accel-agl-ft", 1500);
setprop("MCDUC/thracc-set", 0);
mcdu_scratchpad.scratchpads[i].empty();
@ -130,7 +130,7 @@ var perfTOInput = func(key, i) {
if (int(thrred) != nil and (thrreds >= 3 and thrreds <= 5) and thrred >= 400 and thrred <= 39000 and int(acc) != nil and (accs == 3 or accs == 4 or accs == 5) and acc >= 400 and acc <= 39000) {
if (thrred<=acc) { # validation
setprop("/systems/thrust/clbreduc-ft", int(thrred / 10) * 10);
setprop("/fdm/jsbsim/fadec/clbreduc-ft", int(thrred / 10) * 10);
setprop("/FMGC/internal/accel-agl-ft", int(acc / 10) * 10);
setprop("MCDUC/thracc-set", 1);
mcdu_scratchpad.scratchpads[i].empty();
@ -144,7 +144,7 @@ var perfTOInput = func(key, i) {
mcdu_message(i, "NOT ALLOWED");
}
} else if (num(scratchpad) != nil and (tfs >= 3 and tfs <= 5) and scratchpad >= 400 and scratchpad <= 39000) {
setprop("/systems/thrust/clbreduc-ft", int(scratchpad / 10) * 10);
setprop("/fdm/jsbsim/fadec/clbreduc-ft", int(scratchpad / 10) * 10);
mcdu_scratchpad.scratchpads[i].empty();
} else {
mcdu_message(i, "NOT ALLOWED");
@ -222,15 +222,15 @@ var perfTOInput = func(key, i) {
}
} else if (key == "R4" and modifiable) {
if (scratchpad == "CLR") {
setprop("/FMGC/internal/flex", 45);
setprop("/FMGC/internal/flex-set", 0);
systems.FADEC.Limit.flexTemp.setValue(30);
systems.FADEC.Limit.flexActiveCmd.setBoolValue(0);
mcdu_scratchpad.scratchpads[i].empty();
} else {
var tfs = size(scratchpad);
if (tfs == 1 or tfs == 2) {
if (int(scratchpad) != nil and scratchpad >= 0 and scratchpad <= 99) {
setprop("/FMGC/internal/flex", scratchpad);
setprop("/FMGC/internal/flex-set", 1);
systems.FADEC.Limit.flexTemp.setValue(scratchpad);
systems.FADEC.Limit.flexActiveCmd.setBoolValue(1);
mcdu_scratchpad.scratchpads[i].empty();
} else {
mcdu_message(i, "NOT ALLOWED");

View file

@ -0,0 +1,137 @@
# A3XX Engine Control
# Copyright (c) 2020 Josh Davidson (Octal450)
var manStart = [props.globals.initNode("/controls/engines/engine[0]/man-start", 0, "BOOL"),props.globals.initNode("/controls/engines/engine[1]/man-start", 0, "BOOL")];
var lastIgniter = [props.globals.getNode("/controls/engines/engine[0]/last-igniter"),props.globals.initNode("/controls/engines/engine[1]/last-igniter")];
var igniterA = [props.globals.initNode("/controls/engines/engine[0]/igniter-a", 0, "BOOL"),props.globals.initNode("/controls/engines/engine[1]/igniter-a", 0, "BOOL")];
var igniterB = [props.globals.initNode("/controls/engines/engine[0]/igniter-b", 0, "BOOL"),props.globals.initNode("/controls/engines/engine[1]/igniter-b", 0, "BOOL")];
if (pts.Options.eng.getValue() == "IAE") {
io.include("engines-iae.nas");
} else {
io.include("engines-cfm.nas");
}
var eng_common_init = func {
manStart[0].setValue(0);
manStart[1].setValue(0);
}
# Engine thrust commands
var doIdleThrust = func {
# Idle does not respect selected engines, because it is used to respond
# to "Retard" and both engines must be idle for spoilers to deploy
pts.Controls.Engines.Engine.throttle[0].setValue(0);
pts.Controls.Engines.Engine.throttle[1].setValue(0);
}
var doClThrust = func {
if (pts.Sim.Input.Selected.engine[0].getBoolValue()) {
pts.Controls.Engines.Engine.throttle[0].setValue(0.63);
}
if (pts.Sim.Input.Selected.engine[1].getBoolValue()) {
pts.Controls.Engines.Engine.throttle[1].setValue(0.63);
}
}
var doMctThrust = func {
if (pts.Sim.Input.Selected.engine[0].getBoolValue()) {
pts.Controls.Engines.Engine.throttle[0].setValue(0.8);
}
if (pts.Sim.Input.Selected.engine[1].getBoolValue()) {
pts.Controls.Engines.Engine.throttle[1].setValue(0.8);
}
}
var doTogaThrust = func {
if (pts.Sim.Input.Selected.engine[0].getBoolValue()) {
pts.Controls.Engines.Engine.throttle[0].setValue(1);
}
if (pts.Sim.Input.Selected.engine[1].getBoolValue()) {
pts.Controls.Engines.Engine.throttle[1].setValue(1);
}
}
# Reverse Thrust System - TODO: Totally f*cked! Redo the whole d*mn thing!
var toggleFastRevThrust = func {
#if (systems.FADEC.detentText[0].getValue() == "IDLE" and systems.FADEC.detentText[1].getValue() == "IDLE" and pts.Controls.Engines.Engine.reverseCmd[0].getValue() == 0 and pts.Controls.Engines.Engine.reverseCmd[1].getValue() == 0 and pts.Gear.wow[1].getValue() == 1 and pts.Gear.wow[2].getValue() == 1) {
# if (pts.Sim.Input.Selected.engine[0].getBoolValue()) {
# interpolate("/engines/engine[0]/reverser-pos-norm", 1, 1.4);
# pts.Controls.Engines.Engine.reverseCmd[0].setValue(1);
# pts.Controls.Engines.Engine.reverseLever[0].setValue(0.65);
# pts.Fdm.JSBsim.Propulsion.Engine.reverseCmdAngle[0].setValue(3.14);
# }
# if (pts.Sim.Input.Selected.engine[1].getBoolValue()) {
# interpolate("/engines/engine[1]/reverser-pos-norm", 1, 1.4);
# pts.Controls.Engines.Engine.reverseCmd[1].setValue(1);
# pts.Controls.Engines.Engine.reverseLever[1].setValue(0.65);
# pts.Fdm.JSBsim.Propulsion.Engine.reverseCmdAngle[1].setValue(3.14);
# }
#} else if (pts.Controls.Engines.Engine.reverseCmd[0].getValue() == 1 or pts.Controls.Engines.Engine.reverseCmd[1].getValue() == 1) {
# interpolate("/engines/engine[0]/reverser-pos-norm", 0, 1.0);
# interpolate("/engines/engine[1]/reverser-pos-norm", 0, 1.0);
# pts.Controls.Engines.Engine.reverseLever[0].setValue(0);
# pts.Controls.Engines.Engine.reverseLever[1].setValue(0);
# pts.Fdm.JSBsim.Propulsion.Engine.reverseCmdAngle[0].setValue(0);
# pts.Fdm.JSBsim.Propulsion.Engine.reverseCmdAngle[1].setValue(0);
# pts.Controls.Engines.Engine.reverseCmd[0].setValue(0);
# pts.Controls.Engines.Engine.reverseCmd[1].setValue(0);
#}
}
var doRevThrust = func {
#if (pts.Gear.wow[1].getValue() != 1 and pts.Gear.wow[2].getValue() != 1) {
# # Can't select reverse if not on the ground
# return;
#}
#if (pts.Sim.Input.Selected.engine[0].getBoolValue() and pts.Controls.Engines.Engine.reverseCmd[0].getValue() == 1) {
# var pos = pts.Controls.Engines.Engine.reverseLever[0].getValue();
# if (pos < 0.649) {
# pts.Controls.Engines.Engine.reverseLever[0].setValue(pos + 0.15);
# }
#}
#if (pts.Sim.Input.Selected.engine[1].getBoolValue() and pts.Controls.Engines.Engine.reverseCmd[1].getValue() == 1) {
# var pos = pts.Controls.Engines.Engine.reverseLever[1].getValue();
# if (pos < 0.649) {
# pts.Controls.Engines.Engine.reverseLever[1].setValue(pos + 0.15);
# }
#}
#
#if (pts.Sim.Input.Selected.engine[0].getBoolValue() and systems.FADEC.detentText[0].getValue() == "IDLE" and pts.Controls.Engines.Engine.reverseCmd[0].getValue() == 0) {
# interpolate("/engines/engine[0]/reverser-pos-norm", 1, 1.4);
# pts.Controls.Engines.Engine.reverseLever[0].setValue(0.05);
# pts.Controls.Engines.Engine.reverseCmd[0].setValue(1);
# pts.Fdm.JSBsim.Propulsion.Engine.reverseCmdAngle[0].setValue(3.14);
#}
#if (pts.Sim.Input.Selected.engine[1].getBoolValue() and systems.FADEC.detentText[1].getValue() == "IDLE" and pts.Controls.Engines.Engine.reverseCmd[1].getValue() == 0) {
# interpolate("/engines/engine[1]/reverser-pos-norm", 1, 1.4);
# pts.Controls.Engines.Engine.reverseLever[1].setValue(0.05);
# pts.Controls.Engines.Engine.reverseCmd[1].setValue(1);
# pts.Fdm.JSBsim.Propulsion.Engine.reverseCmdAngle[1].setValue(3.14);
#}
}
var unRevThrust = func {
#if (pts.Sim.Input.Selected.engine[0].getBoolValue() and pts.Controls.Engines.Engine.reverseCmd[0].getValue() == 1) {
# var pos = pts.Controls.Engines.Engine.reverseLever[0].getValue();
# if (pos > 0.051) {
# pts.Controls.Engines.Engine.reverseLever[0].setValue(pos - 0.15);
# } else {
# interpolate("/engines/engine[0]/reverser-pos-norm", 0, 1.0);
# pts.Controls.Engines.Engine.reverseLever[0].setValue(0);
# pts.Controls.Engines.Engine.reverseCmd[0].setValue(0);
# pts.Fdm.JSBsim.Propulsion.Engine.reverseCmdAngle[0].setValue(0);
# }
#}
#if (pts.Sim.Input.Selected.engine[1].getBoolValue() and pts.Controls.Engines.Engine.reverseCmd[1].getValue() == 1) {
# var pos = pts.Controls.Engines.Engine.reverseLever[1].getValue();
# if (pos > 0.051) {
# pts.Controls.Engines.Engine.reverseLever[1].setValue(pos - 0.15);
# } else {
# interpolate("/engines/engine[1]/reverser-pos-norm", 0, 1.0);
# pts.Controls.Engines.Engine.reverseLever[1].setValue(0);
# pts.Controls.Engines.Engine.reverseCmd[1].setValue(0);
# pts.Fdm.JSBsim.Propulsion.Engine.reverseCmdAngle[1].setValue(0);
# }
#}
}

View file

@ -1,139 +0,0 @@
# A3XX Engine Control
# Joshua Davidson (Octal450)
# Copyright (c) 2020 Josh Davidson (Octal450)
var manStart = [props.globals.initNode("/controls/engines/engine[0]/man-start", 0, "BOOL"),props.globals.initNode("/controls/engines/engine[1]/man-start", 0, "BOOL")];
var lastIgniter = [props.globals.getNode("/controls/engines/engine[0]/last-igniter"),props.globals.initNode("/controls/engines/engine[1]/last-igniter")];
var igniterA = [props.globals.initNode("/controls/engines/engine[0]/igniter-a", 0, "BOOL"),props.globals.initNode("/controls/engines/engine[1]/igniter-a", 0, "BOOL")];
var igniterB = [props.globals.initNode("/controls/engines/engine[0]/igniter-b", 0, "BOOL"),props.globals.initNode("/controls/engines/engine[1]/igniter-b", 0, "BOOL")];
if (pts.Options.eng.getValue() == "IAE") {
io.include("engines-iae.nas");
} else {
io.include("engines-cfm.nas");
}
var eng_common_init = func {
manStart[0].setValue(0);
manStart[1].setValue(0);
}
# Engine thrust commands
var doIdleThrust = func {
# Idle does not respect selected engines, because it is used to respond
# to "Retard" and both engines must be idle for spoilers to deploy
pts.Controls.Engines.Engine.throttle[0].setValue(0.0);
pts.Controls.Engines.Engine.throttle[1].setValue(0.0);
}
var doCLThrust = func {
if (pts.Sim.Input.Selected.engine[0].getBoolValue()) {
pts.Controls.Engines.Engine.throttle[0].setValue(0.63);
}
if (pts.Sim.Input.Selected.engine[1].getBoolValue()) {
pts.Controls.Engines.Engine.throttle[1].setValue(0.63);
}
}
var doMCTThrust = func {
if (pts.Sim.Input.Selected.engine[0].getBoolValue()) {
pts.Controls.Engines.Engine.throttle[0].setValue(0.80);
}
if (pts.Sim.Input.Selected.engine[1].getBoolValue()) {
pts.Controls.Engines.Engine.throttle[1].setValue(0.80);
}
}
var doTOGAThrust = func {
if (pts.Sim.Input.Selected.engine[0].getBoolValue()) {
pts.Controls.Engines.Engine.throttle[0].setValue(1.00);
}
if (pts.Sim.Input.Selected.engine[1].getBoolValue()) {
pts.Controls.Engines.Engine.throttle[1].setValue(1.00);
}
}
# Reverse Thrust System - TODO: Totally f*cked! Redo the whole d*mn thing!
var toggleFastRevThrust = func {
#if (pts.Systems.Thrust.state[0].getValue() == "IDLE" and pts.Systems.Thrust.state[1].getValue() == "IDLE" and pts.Controls.Engines.Engine.reverser[0].getValue() == 0 and pts.Controls.Engines.Engine.reverser[1].getValue() == 0 and pts.Gear.wow[1].getValue() == 1 and pts.Gear.wow[2].getValue() == 1) {
# if (pts.Sim.Input.Selected.engine[0].getBoolValue()) {
# interpolate("/engines/engine[0]/reverser-pos-norm", 1, 1.4);
# pts.Controls.Engines.Engine.reverser[0].setValue(1);
# pts.Controls.Engines.Engine.throttleRev[0].setValue(0.65);
# pts.Fdm.JSBsim.Propulsion.Engine.reverserAngle[0].setValue(3.14);
# }
# if (pts.Sim.Input.Selected.engine[1].getBoolValue()) {
# interpolate("/engines/engine[1]/reverser-pos-norm", 1, 1.4);
# pts.Controls.Engines.Engine.reverser[1].setValue(1);
# pts.Controls.Engines.Engine.throttleRev[1].setValue(0.65);
# pts.Fdm.JSBsim.Propulsion.Engine.reverserAngle[1].setValue(3.14);
# }
#} else if (pts.Controls.Engines.Engine.reverser[0].getValue() == 1 or pts.Controls.Engines.Engine.reverser[1].getValue() == 1) {
# interpolate("/engines/engine[0]/reverser-pos-norm", 0, 1.0);
# interpolate("/engines/engine[1]/reverser-pos-norm", 0, 1.0);
# pts.Controls.Engines.Engine.throttleRev[0].setValue(0);
# pts.Controls.Engines.Engine.throttleRev[1].setValue(0);
# pts.Fdm.JSBsim.Propulsion.Engine.reverserAngle[0].setValue(0);
# pts.Fdm.JSBsim.Propulsion.Engine.reverserAngle[1].setValue(0);
# pts.Controls.Engines.Engine.reverser[0].setValue(0);
# pts.Controls.Engines.Engine.reverser[1].setValue(0);
#}
}
var doRevThrust = func {
#if (pts.Gear.wow[1].getValue() != 1 and pts.Gear.wow[2].getValue() != 1) {
# # Can't select reverse if not on the ground
# return;
#}
#if (pts.Sim.Input.Selected.engine[0].getBoolValue() and pts.Controls.Engines.Engine.reverser[0].getValue() == 1) {
# var pos = pts.Controls.Engines.Engine.throttleRev[0].getValue();
# if (pos < 0.649) {
# pts.Controls.Engines.Engine.throttleRev[0].setValue(pos + 0.15);
# }
#}
#if (pts.Sim.Input.Selected.engine[1].getBoolValue() and pts.Controls.Engines.Engine.reverser[1].getValue() == 1) {
# var pos = pts.Controls.Engines.Engine.throttleRev[1].getValue();
# if (pos < 0.649) {
# pts.Controls.Engines.Engine.throttleRev[1].setValue(pos + 0.15);
# }
#}
#
#if (pts.Sim.Input.Selected.engine[0].getBoolValue() and pts.Systems.Thrust.state[0].getValue() == "IDLE" and pts.Controls.Engines.Engine.reverser[0].getValue() == 0) {
# interpolate("/engines/engine[0]/reverser-pos-norm", 1, 1.4);
# pts.Controls.Engines.Engine.throttleRev[0].setValue(0.05);
# pts.Controls.Engines.Engine.reverser[0].setValue(1);
# pts.Fdm.JSBsim.Propulsion.Engine.reverserAngle[0].setValue(3.14);
#}
#if (pts.Sim.Input.Selected.engine[1].getBoolValue() and pts.Systems.Thrust.state[1].getValue() == "IDLE" and pts.Controls.Engines.Engine.reverser[1].getValue() == 0) {
# interpolate("/engines/engine[1]/reverser-pos-norm", 1, 1.4);
# pts.Controls.Engines.Engine.throttleRev[1].setValue(0.05);
# pts.Controls.Engines.Engine.reverser[1].setValue(1);
# pts.Fdm.JSBsim.Propulsion.Engine.reverserAngle[1].setValue(3.14);
#}
}
var unRevThrust = func {
#if (pts.Sim.Input.Selected.engine[0].getBoolValue() and pts.Controls.Engines.Engine.reverser[0].getValue() == 1) {
# var pos = pts.Controls.Engines.Engine.throttleRev[0].getValue();
# if (pos > 0.051) {
# pts.Controls.Engines.Engine.throttleRev[0].setValue(pos - 0.15);
# } else {
# interpolate("/engines/engine[0]/reverser-pos-norm", 0, 1.0);
# pts.Controls.Engines.Engine.throttleRev[0].setValue(0);
# pts.Controls.Engines.Engine.reverser[0].setValue(0);
# pts.Fdm.JSBsim.Propulsion.Engine.reverserAngle[0].setValue(0);
# }
#}
#if (pts.Sim.Input.Selected.engine[1].getBoolValue() and pts.Controls.Engines.Engine.reverser[1].getValue() == 1) {
# var pos = pts.Controls.Engines.Engine.throttleRev[1].getValue();
# if (pos > 0.051) {
# pts.Controls.Engines.Engine.throttleRev[1].setValue(pos - 0.15);
# } else {
# interpolate("/engines/engine[1]/reverser-pos-norm", 0, 1.0);
# pts.Controls.Engines.Engine.throttleRev[1].setValue(0);
# pts.Controls.Engines.Engine.reverser[1].setValue(0);
# pts.Fdm.JSBsim.Propulsion.Engine.reverserAngle[1].setValue(0);
# }
#}
}

View file

@ -1,439 +0,0 @@
# A3XX FADEC/Throttle Control System
# NOTE: Needs to be redone totally - so I will be breaking this file during the development of the new one
# Copyright (c) 2020 Josh Davidson (Octal450)
if (getprop("options/eng") == "IAE") {
io.include("fadec-iae.nas");
} else {
io.include("fadec-cfm.nas");
}
var thr1 = 0;
var thr2 = 0;
var state1 = 0;
var state2 = 0;
var engstate1 = 0;
var engstate2 = 0;
var eprtoga = 0;
var eprmct = 0;
var eprflx = 0;
var eprclb = 0;
var n1toga = 0;
var n1mct = 0;
var n1flx = 0;
var n1clb = 0;
var alpha = 0;
var flaps = 0;
var alphaProt = 0;
var togaLock = 0;
var gs = 0;
setprop("/systems/thrust/epr/toga-lim", 0.0);
setprop("/systems/thrust/epr/mct-lim", 0.0);
setprop("/systems/thrust/epr/flx-lim", 0.0);
setprop("/systems/thrust/epr/clb-lim", 0.0);
setprop("/systems/thrust/n1/toga-lim", 0.0);
setprop("/systems/thrust/n1/mct-lim", 0.0);
setprop("/systems/thrust/n1/flx-lim", 0.0);
setprop("/systems/thrust/n1/clb-lim", 0.0);
setprop("/systems/thrust/toga-lim", 0.0);
setprop("/systems/thrust/mct-lim", 0.0);
setprop("/systems/thrust/clb-lim", 0.0);
setprop("/engines/flex-derate", 0);
setprop("/engines/flx-thr", 0.0);
setlistener("/sim/signals/fdm-initialized", func {
thrust_loop.start();
thrust_flash.start();
});
var Fadec = {
n1Mode: [props.globals.getNode("/systems/fadec/n1mode1"), props.globals.getNode("/systems/fadec/n1mode2")],
};
var Thrust = {
alphaFloor: props.globals.getNode("/systems/thrust/alpha-floor"),
clbReduc: props.globals.getNode("/systems/thrust/clbreduc-ft"),
eprLimit: props.globals.getNode("/controls/engines/epr-limit"),
n1Limit: props.globals.getNode("/controls/engines/n1-limit"),
limFlex: props.globals.getNode("/systems/thrust/lim-flex"),
lvrClb: props.globals.getNode("/systems/thrust/lvrclb"),
togaLk: props.globals.getNode("/systems/thrust/toga-lk"),
thrustLimit: props.globals.getNode("/controls/engines/thrust-limit"),
Lock: {
thrLockAlert: props.globals.getNode("/systems/thrust/thr-locked-alert"),
thrLockCmd: props.globals.getNode("/systems/thrust/thr-locked"),
thrLockCmdN1: [props.globals.getNode("/systems/thrust/thr-lock-cmd[0]"), props.globals.getNode("/systems/thrust/thr-lock-cmd[1]")],
thrLockFlash: props.globals.getNode("/systems/thrust/thr-locked-flash"),
thrLockTime: props.globals.getNode("/systems/thrust/thr-locked-time"),
},
};
setlistener("/controls/engines/engine[0]/throttle-pos", func {
engstate1 = pts.Engines.Engine.state[0].getValue();
engstate2 = pts.Engines.Engine.state[1].getValue();
thr1 = pts.Controls.Engines.Engine.throttlePos[0].getValue();
if (!Thrust.alphaFloor.getValue() and !Thrust.togaLk.getValue()) {
if (thr1 < 0.01) {
pts.Systems.Thrust.state[0].setValue("IDLE");
unflex();
atoff_request();
} else if (thr1 >= 0.01 and thr1 < 0.60) {
pts.Systems.Thrust.state[0].setValue("MAN");
unflex();
} else if (thr1 >= 0.60 and thr1 < 0.65) {
pts.Systems.Thrust.state[0].setValue("CL");
unflex();
} else if (thr1 >= 0.65 and thr1 < 0.78) {
pts.Systems.Thrust.state[0].setValue("MAN THR");
unflex();
} else if (thr1 >= 0.78 and thr1 < 0.83) {
if (pts.Systems.Thrust.engOut.getValue() != 1) {
if (Thrust.thrustLimit.getValue() == "FLX") {
if (pts.Gear.wow[0].getValue() and (engstate1 == 3 or engstate2 == 3)) {
fmgc.Input.athr.setValue(1);
}
} else {
}
}
pts.Systems.Thrust.state[0].setValue("MCT");
} else if (thr1 >= 0.83 and thr1 < 0.95) {
pts.Systems.Thrust.state[0].setValue("MAN THR");
unflex();
} else if (thr1 >= 0.95) {
if (pts.Gear.wow[0].getValue() and (engstate1 == 3 or engstate2 == 3)) {
fmgc.Input.athr.setValue(1);
}
pts.Systems.Thrust.state[0].setValue("TOGA");
unflex();
}
} else {
if (thr1 < 0.01) {
pts.Systems.Thrust.state[0].setValue("IDLE");
} else if (thr1 >= 0.01 and thr1 < 0.60) {
pts.Systems.Thrust.state[0].setValue("MAN");
} else if (thr1 >= 0.60 and thr1 < 0.65) {
pts.Systems.Thrust.state[0].setValue("CL");
} else if (thr1 >= 0.65 and thr1 < 0.78) {
pts.Systems.Thrust.state[0].setValue("MAN THR");
} else if (thr1 >= 0.78 and thr1 < 0.83) {
pts.Systems.Thrust.state[0].setValue("MCT");
} else if (thr1 >= 0.83 and thr1 < 0.95) {
pts.Systems.Thrust.state[0].setValue("MAN THR");
} else if (thr1 >= 0.95) {
pts.Systems.Thrust.state[0].setValue("TOGA");
}
}
}, 0, 0);
setlistener("/controls/engines/engine[1]/throttle-pos", func {
engstate1 = pts.Engines.Engine.state[0].getValue();
engstate2 = pts.Engines.Engine.state[1].getValue();
thr2 = pts.Controls.Engines.Engine.throttlePos[1].getValue();
if (!Thrust.alphaFloor.getValue() and !Thrust.togaLk.getValue()) {
if (thr2 < 0.01) {
pts.Systems.Thrust.state[1].setValue("IDLE");
unflex();
atoff_request();
} else if (thr2 >= 0.01 and thr2 < 0.60) {
pts.Systems.Thrust.state[1].setValue("MAN");
unflex();
} else if (thr2 >= 0.60 and thr2 < 0.65) {
pts.Systems.Thrust.state[1].setValue("CL");
unflex();
} else if (thr2 >= 0.65 and thr2 < 0.78) {
pts.Systems.Thrust.state[1].setValue("MAN THR");
unflex();
} else if (thr2 >= 0.78 and thr2 < 0.83) {
if (pts.Systems.Thrust.engOut.getValue() != 1) {
if (Thrust.thrustLimit.getValue() == "FLX") {
if (pts.Gear.wow[0].getValue() and (engstate1 == 3 or engstate2 == 3)) {
fmgc.Input.athr.setValue(1);
}
} else {
}
}
pts.Systems.Thrust.state[1].setValue("MCT");
} else if (thr2 >= 0.83 and thr2 < 0.95) {
pts.Systems.Thrust.state[1].setValue("MAN THR");
unflex();
} else if (thr2 >= 0.95) {
if (pts.Gear.wow[0].getValue() and (engstate1 == 3 or engstate2 == 3)) {
fmgc.Input.athr.setValue(1);
}
pts.Systems.Thrust.state[1].setValue("TOGA");
unflex();
}
} else {
if (thr2 < 0.01) {
pts.Systems.Thrust.state[1].setValue("IDLE");
} else if (thr2 >= 0.01 and thr2 < 0.60) {
pts.Systems.Thrust.state[1].setValue("MAN");
} else if (thr2 >= 0.60 and thr2 < 0.65) {
pts.Systems.Thrust.state[1].setValue("CL");
} else if (thr2 >= 0.65 and thr2 < 0.78) {
pts.Systems.Thrust.state[1].setValue("MAN THR");
} else if (thr2 >= 0.78 and thr2 < 0.83) {
pts.Systems.Thrust.state[1].setValue("MCT");
} else if (thr2 >= 0.83 and thr2 < 0.95) {
pts.Systems.Thrust.state[1].setValue("MAN THR");
} else if (thr2 >= 0.95) {
pts.Systems.Thrust.state[1].setValue("TOGA");
}
}
}, 0, 0);
# Alpha Floor and Toga Lock
setlistener("/it-autoflight/input/athr", func {
if (Thrust.alphaFloor.getValue()) {
fmgc.Input.athr.setValue(1);
} else {
Thrust.togaLk.setValue(0);
}
});
# Checks if all throttles are in the IDLE position, before tuning off the A/THR.
var atoff_request = func {
state1 = pts.Systems.Thrust.state[0].getValue();
state2 = pts.Systems.Thrust.state[1].getValue();
if (state1 == "IDLE" and state2 == "IDLE" and !Thrust.alphaFloor.getValue() and !Thrust.togaLk.getValue()) {
if (fmgc.Input.athr.getValue() and pts.Position.gearAglFt.getValue() > 50) {
fcu.athrOff("soft");
} elsif (pts.Position.gearAglFt.getValue() < 50) {
fcu.athrOff("none");
}
}
}
var thrust_loop = maketimer(0.04, func {
state1 = pts.Systems.Thrust.state[0].getValue();
state2 = pts.Systems.Thrust.state[1].getValue();
engstate1 = pts.Engines.Engine.state[0].getValue();
engstate2 = pts.Engines.Engine.state[1].getValue();
thr1 = pts.Controls.Engines.Engine.throttlePos[0].getValue();
thr2 = pts.Controls.Engines.Engine.throttlePos[1].getValue();
eprtoga = getprop("/systems/thrust/epr/toga-lim");
eprmct = getprop("/systems/thrust/epr/mct-lim");
eprflx = getprop("/systems/thrust/epr/flx-lim");
eprclb = getprop("/systems/thrust/epr/clb-lim");
n1toga = getprop("/systems/thrust/n1/toga-lim");
n1mct = getprop("/systems/thrust/n1/mct-lim");
n1flx = getprop("/systems/thrust/n1/flx-lim");
n1clb = getprop("/systems/thrust/n1/clb-lim");
gs = pts.Velocities.groundspeed.getValue();
if (fmgc.FMGCNodes.flexSet.getValue() and !Fadec.n1Mode[0].getValue() and !Fadec.n1Mode[1].getValue() and pts.Gear.wow[1].getValue() and pts.Gear.wow[2].getValue() and gs < 40) {
Thrust.limFlex.setValue(1);
} else if (!fmgc.FMGCNodes.flexSet.getValue() or engstate1 != 3 or engstate2 != 3) {
Thrust.limFlex.setValue(0);
}
if (pts.Controls.Engines.Engine.reverser[0].getValue() or pts.Controls.Engines.Engine.reverser[1].getValue()) {
Thrust.thrustLimit.setValue("MREV");
Thrust.eprLimit.setValue(1.0);
Thrust.n1Limit.setValue(0.0);
} else if (!pts.Gear.wow[1].getValue() or !pts.Gear.wow[2].getValue() or (engstate1 != 3 and engstate2 != 3)) {
if ((state1 == "TOGA" or state2 == "TOGA" or (state1 == "MAN THR" and thr1 >= 0.83) or (state2 == "MAN THR" and thr2 >= 0.83)) or Thrust.alphaFloor.getValue() or Thrust.togaLk.getValue()) {
Thrust.thrustLimit.setValue("TOGA");
Thrust.eprLimit.setValue(eprtoga);
Thrust.n1Limit.setValue(n1toga);
} else if ((state1 == "MCT" or state2 == "MCT" or (state1 == "MAN THR" and thr1 < 0.83) or (state2 == "MAN THR" and thr2 < 0.83)) and !Thrust.limFlex.getValue()) {
Thrust.thrustLimit.setValue("MCT");
Thrust.eprLimit.setValue(eprmct);
Thrust.n1Limit.setValue(n1mct);
} else if ((state1 == "MCT" or state2 == "MCT" or (state1 == "MAN THR" and thr1 < 0.83) or (state2 == "MAN THR" and thr2 < 0.83)) and Thrust.limFlex.getValue()) {
Thrust.thrustLimit.setValue("FLX");
Thrust.eprLimit.setValue(eprflx);
Thrust.n1Limit.setValue(n1flx);
} else if (state1 == "CL" or state2 == "CL" or state1 == "MAN" or state2 == "MAN" or state1 == "IDLE" or state2 == "IDLE") {
Thrust.thrustLimit.setValue("CLB");
Thrust.eprLimit.setValue(eprclb);
Thrust.n1Limit.setValue(n1clb);
}
} else if (fmgc.FMGCNodes.flexSet.getValue() and !Fadec.n1Mode[0].getValue() and !Fadec.n1Mode[1].getValue()) {
if ((state1 == "TOGA" or state2 == "TOGA" or (state1 == "MAN THR" and thr1 >= 0.83) or (state2 == "MAN THR" and thr2 >= 0.83)) or Thrust.alphaFloor.getValue() or Thrust.togaLk.getValue()) {
Thrust.thrustLimit.setValue("TOGA");
Thrust.eprLimit.setValue(eprtoga);
Thrust.n1Limit.setValue(n1toga);
} else {
Thrust.thrustLimit.setValue("FLX");
Thrust.eprLimit.setValue(eprflx);
Thrust.n1Limit.setValue(n1flx);
}
} else {
Thrust.thrustLimit.setValue("TOGA");
Thrust.eprLimit.setValue(eprtoga);
Thrust.n1Limit.setValue(n1toga);
}
alpha = pts.Fdm.JSBsim.Aero.alphaNorm.getValue();
flaps = pts.Controls.Flight.flapsPos.getValue();
if (flaps == 0) {
alphaProt = 9.5;
} else if (flaps == 1 or flaps == 2 or flaps == 3) {
alphaProt = 15.0;
} else if (flaps == 4) {
alphaProt = 14.0;
} else if (flaps == 5) {
alphaProt = 13.0;
}
togaLock = alphaProt - 1;
if (!pts.Gear.wow[1].getValue() and !pts.Gear.wow[2].getValue() and fbw.FBW.activeLaw.getValue() == 0 and (!pts.Systems.Thrust.engOut.getValue() or (pts.Systems.Thrust.engOut.getValue() and flaps == 0)) and !Fadec.n1Mode[0].getValue()
and !Fadec.n1Mode[1].getValue()) {
if (alpha > alphaProt and pts.Position.gearAglFt.getValue() >= 100) {
Thrust.alphaFloor.setValue(1);
Thrust.togaLk.setValue(0);
fmgc.Input.athr.setValue(1);
} else if (Thrust.alphaFloor.getValue() and alpha < togaLock) {
fmgc.Input.athr.setValue(1);
Thrust.alphaFloor.setValue(0);
Thrust.togaLk.setValue(1);
}
} else {
Thrust.alphaFloor.setValue(0);
Thrust.togaLk.setValue(0);
}
});
var unflex = func {
state1 = pts.Systems.Thrust.state[0].getValue();
state2 = pts.Systems.Thrust.state[1].getValue();
if (state1 != "MCT" and state2 != "MCT" and !pts.Gear.wow[1].getValue() and !pts.Gear.wow[2].getValue()) {
Thrust.limFlex.setValue(0);
}
}
var thrust_flash = maketimer(0.5, func {
state1 = pts.Systems.Thrust.state[0].getValue();
state2 = pts.Systems.Thrust.state[1].getValue();
if (!pts.Gear.wow[1].getValue() and !pts.Gear.wow[2].getValue() and (pts.Engines.Engine.state[0].getValue() != 3 or pts.Engines.Engine.state[1].getValue() != 3)) {
pts.Systems.Thrust.engOut.setValue(1)
} else {
pts.Systems.Thrust.engOut.setValue(0)
}
if (state1 == "CL" and state2 == "CL" and pts.Systems.Thrust.engOut.getValue() != 1) {
Thrust.lvrClb.setValue(0);
} else if (state1 == "MCT" and state2 == "MCT" and !Thrust.limFlex.getValue() and pts.Systems.Thrust.engOut.getValue()) {
Thrust.lvrClb.setValue(0);
} else {
var status = Thrust.lvrClb.getValue();
if (status == 0) {
if (!pts.Gear.wow[0].getValue()) {
if (pts.Systems.Thrust.state[0].getValue() == "MAN" or pts.Systems.Thrust.state[1].getValue() == "MAN") {
Thrust.lvrClb.setValue(1);
} else {
if (pts.Instrumentation.Altimeter.indicatedFt.getValue() >= Thrust.clbReduc.getValue() and !pts.Gear.wow[1].getValue() and !pts.Gear.wow[2].getValue()) {
Thrust.lvrClb.setValue(1);
} else if ((state1 == "CL" and state2 != "CL") or (state1 != "CL" and state2 == "CL") and pts.Systems.Thrust.engOut.getValue() != 1) {
Thrust.lvrClb.setValue(1);
} else {
Thrust.lvrClb.setValue(0);
}
}
}
} else if (status == 1) {
Thrust.lvrClb.setValue(0);
}
}
});
var lockThr = func() {
state1 = pts.Systems.Thrust.state[0].getValue();
state2 = pts.Systems.Thrust.state[1].getValue();
if ((state1 == "CL" and state2 == "CL" and !pts.Systems.Thrust.engOut.getValue()) or (state1 == "MCT" and state2 == "MCT" and pts.Systems.Thrust.engOut.getValue())) {
Thrust.Lock.thrLockTime.setValue(pts.Sim.Time.elapsedSec.getValue());
Thrust.Lock.thrLockCmd.setValue(1);
lockTimer.start();
}
}
var checkLockThr = func() {
if (Thrust.Lock.thrLockTime.getValue() + 5 > pts.Sim.Time.elapsedSec.getValue()) { return; }
if (fmgc.Output.athr.getBoolValue()) {
lockTimer.stop();
Thrust.Lock.thrLockCmd.setValue(0);
Thrust.Lock.thrLockAlert.setValue(0);
Thrust.Lock.thrLockTime.setValue(0);
Thrust.Lock.thrLockFlash.setValue(0);
return;
}
if (!Thrust.Lock.thrLockCmd.getValue()) {
lockTimer.stop();
Thrust.Lock.thrLockCmd.setValue(0);
Thrust.Lock.thrLockAlert.setValue(0);
Thrust.Lock.thrLockTime.setValue(0);
Thrust.Lock.thrLockFlash.setValue(0);
return;
}
state1 = pts.Systems.Thrust.state[0].getValue();
state2 = pts.Systems.Thrust.state[1].getValue();
if ((state1 != "CL" and state2 != "CL" and !pts.Systems.Thrust.engOut.getValue()) or (state1 != "MCT" and state2 != "MCT" and pts.Systems.Thrust.engOut.getValue())) {
lockTimer.stop();
Thrust.Lock.thrLockCmd.setValue(0);
Thrust.Lock.thrLockAlert.setValue(0);
Thrust.Lock.thrLockTime.setValue(0);
Thrust.Lock.thrLockFlash.setValue(0);
} elsif ((state1 == "CL" and state2 == "CL" and !pts.Systems.Thrust.engOut.getValue()) or (state1 == "MCT" and state2 == "MCT" and pts.Systems.Thrust.engOut.getValue())) {
Thrust.Lock.thrLockAlert.setValue(1);
Thrust.Lock.thrLockTime.setValue(pts.Sim.Time.elapsedSec.getValue());
Thrust.Lock.thrLockFlash.setValue(1);
lockTimer.stop();
lockTimer2.start();
}
}
var checkLockThr2 = func() {
if (fmgc.Output.athr.getBoolValue()) {
lockTimer2.stop();
Thrust.Lock.thrLockCmd.setValue(0);
Thrust.Lock.thrLockAlert.setValue(0);
Thrust.Lock.thrLockTime.setValue(0);
Thrust.Lock.thrLockFlash.setValue(0);
return;
}
if (!Thrust.Lock.thrLockCmd.getValue()) {
lockTimer2.stop();
Thrust.Lock.thrLockCmd.setValue(0);
Thrust.Lock.thrLockAlert.setValue(0);
Thrust.Lock.thrLockTime.setValue(0);
Thrust.Lock.thrLockFlash.setValue(0);
return;
}
if (Thrust.Lock.thrLockTime.getValue() + 5 < pts.Sim.Time.elapsedSec.getValue()) {
Thrust.Lock.thrLockFlash.setValue(0);
settimer(func() {
Thrust.Lock.thrLockFlash.setValue(1);
Thrust.Lock.thrLockTime.setValue(pts.Sim.Time.elapsedSec.getValue());
ecam.athr_lock.noRepeat = 0;
ecam.athr_lock.noRepeat2 = 0;
}, 0.2);
}
state1 = pts.Systems.Thrust.state[0].getValue();
state2 = pts.Systems.Thrust.state[1].getValue();
if ((state1 != "CL" and state2 != "CL" and !pts.Systems.Thrust.engOut.getValue()) or (state1 != "MCT" and state2 != "MCT" and pts.Systems.Thrust.engOut.getValue())) {
lockTimer2.stop();
Thrust.Lock.thrLockCmd.setValue(0);
Thrust.Lock.thrLockAlert.setValue(0);
Thrust.Lock.thrLockFlash.setValue(0);
Thrust.Lock.thrLockTime.setValue(0);
}
}
setlistener("/systems/thrust/thr-locked", func {
if (Thrust.Lock.thrLockCmd.getValue()) {
Thrust.Lock.thrLockCmdN1[0].setValue(pts.Controls.Engines.Engine.throttleOutput[0].getValue());
Thrust.Lock.thrLockCmdN1[1].setValue(pts.Controls.Engines.Engine.throttleOutput[1].getValue());
}
}, 0, 0);
var lockTimer = maketimer(0.1, checkLockThr);
var lockTimer2 = maketimer(0.1, checkLockThr2);

View file

@ -1,5 +1,4 @@
# A3XX CFM FADEC by Joshua Davidson (Octal450)
# A3XX CFM FADEC
# Copyright (c) 2020 Josh Davidson (Octal450)
var powerAvailTemp = nil;
@ -16,7 +15,7 @@ var N12 = nil;
var N21 = nil;
var N22 = nil;
var FADEC = {
var FADEC_S = {
Power: {
powered1: props.globals.initNode("/systems/fadec/powered1", 0, "BOOL"),
powered2: props.globals.initNode("/systems/fadec/powered2", 0, "BOOL"),
@ -49,8 +48,8 @@ var FADEC = {
n1ModeSwitch2: props.globals.initNode("/controls/fadec/n1mode2", 0, "BOOL"),
},
Modes: {
n1Mode1: props.globals.initNode("/systems/fadec/n1mode1", 0, "BOOL"), # 0 == EPR, 1 == N1 Rated, 2 == N1 Unrated #
n1Mode2: props.globals.initNode("/systems/fadec/n1mode2", 0, "BOOL"),
n1Mode1: props.globals.initNode("/fdm/jsbsim/fadec/control-1/n1-mode", 0, "BOOL"), # 0 == EPR, 1 == N1 Rated, 2 == N1 Unrated #
n1Mode2: props.globals.initNode("/fdm/jsbsim/fadec/control-2/n1-mode", 0, "BOOL"),
},
init: func() {
me.Power.poweredTime.setValue(-300);

View file

@ -0,0 +1,155 @@
# A3XX FADEC/Throttle Control System
# Copyright (c) 2021 Josh Davidson (Octal450)
if (pts.Options.eng.getValue() == "IAE") {
io.include("fadec-iae.nas");
} else {
io.include("fadec-cfm.nas");
}
var FADEC = {
alphaFloor: props.globals.getNode("/fdm/jsbsim/fadec/alpha-floor"),
clbReduc: props.globals.getNode("/fdm/jsbsim/fadec/clbreduc-ft"),
detentOut: [props.globals.getNode("/fdm/jsbsim/fadec/control-1/detent-out", 1), props.globals.getNode("/fdm/jsbsim/fadec/control-2/detent-out", 1)],
detentOutTemp: [0, 0],
detentText: [props.globals.getNode("/fdm/jsbsim/fadec/control-1/detent-text"), props.globals.getNode("/fdm/jsbsim/fadec/control-2/detent-text")],
detentTextTemp: [0, 0],
engOut: props.globals.getNode("/fdm/jsbsim/fadec/eng-out"),
Limit: {
activeEpr: props.globals.getNode("/fdm/jsbsim/fadec/limit/active-epr"),
activeMode: props.globals.getNode("/fdm/jsbsim/fadec/limit/active-mode"),
activeN1: props.globals.getNode("/fdm/jsbsim/fadec/limit/active-n1"),
flexActive: props.globals.getNode("/fdm/jsbsim/fadec/limit/flex-active"),
flexActiveCmd: props.globals.getNode("/fdm/jsbsim/fadec/limit/flex-active-cmd"),
flexTemp: props.globals.getNode("/fdm/jsbsim/fadec/limit/flex-temp"),
},
lvrClb: props.globals.getNode("/fdm/jsbsim/fadec/lvrclb"),
lvrClbStatus: 0,
togaLk: props.globals.getNode("/fdm/jsbsim/fadec/toga-lk"),
thrustLimit: props.globals.getNode("/controls/engines/thrust-limit"),
Lock: {
thrLockAlert: props.globals.getNode("/fdm/jsbsim/fadec/thr-locked-alert"),
thrLockCmd: props.globals.getNode("/fdm/jsbsim/fadec/thr-locked"),
thrLockCmdN1: [props.globals.getNode("/fdm/jsbsim/fadec/thr-lock-cmd[0]"), props.globals.getNode("/fdm/jsbsim/fadec/thr-lock-cmd[1]")],
thrLockFlash: props.globals.getNode("/fdm/jsbsim/fadec/thr-locked-flash"),
thrLockTime: props.globals.getNode("/fdm/jsbsim/fadec/thr-locked-time"),
},
manThrAboveMct: [0, 0],
n1Mode: [props.globals.getNode("/fdm/jsbsim/fadec/control-1/n1-mode"), props.globals.getNode("/fdm/jsbsim/fadec/control-2/n1-mode")],
init: func() {
me.engOut.setBoolValue(0);
me.Limit.activeMode.setBoolValue("TOGA");
me.Limit.flexActive.setBoolValue(0);
me.Limit.flexActiveCmd.setBoolValue(0);
systems.FADEC_S.init();
thrustFlashT.start();
},
canEngageAthr: func() {
if (pts.Gear.wow[0].getValue() and (pts.Engines.Engine.state[0].getValue() == 3 or pts.Engines.Engine.state[1].getValue() == 3)) {
return 1;
} else {
return 0;
}
},
cancelFlex: func() {
if (me.detentOut[0].getValue() != 4 and me.detentOut[1].getValue() != 4 and !pts.Gear.wow[1].getValue() and !pts.Gear.wow[2].getValue()) {
me.Limit.flexActive.setBoolValue(0);
}
},
idleAthrOff: func() {
if (me.detentOut[0].getValue() == 0 and me.detentOut[1].getValue() == 0) { # And not in TOGA LK and not in ALPHA FLOOR
if (fmgc.Input.athr.getValue() and pts.Position.gearAglFt.getValue() > 50) {
fcu.athrOff("soft");
} else {
fcu.athrOff("none");
}
}
},
updateDetent: func(n) {
me.detentOutTemp[n] = me.detentOut[n].getValue();
if (me.detentOutTemp[n] == 6) {
me.manThrAboveMct[n] = 1;
me.detentText[n].setValue("TOGA");
if (!fmgc.Output.athr.getBoolValue() and me.canEngageAthr()) {
fmgc.Input.athr.setValue(1);
}
} else if (me.detentOutTemp[n] == 5) {
me.manThrAboveMct[n] = 1;
me.detentText[n].setValue("MAN THR");
} else if (me.detentOutTemp[n] == 4) {
me.manThrAboveMct[n] = 0;
me.detentText[n].setValue("MCT");
if (me.engOut.getValue() != 1 and me.Limit.flexActive.getBoolValue()) {
if (!fmgc.Output.athr.getBoolValue() and me.canEngageAthr()) {
fmgc.Input.athr.setValue(1);
}
}
} else if (me.detentOutTemp[n] == 3) {
me.manThrAboveMct[n] = 0;
me.detentText[n].setValue("MAN THR");
} else if (me.detentOutTemp[n] == 2) {
me.manThrAboveMct[n] = 0;
me.detentText[n].setValue("CL");
} else if (me.detentOutTemp[n] == 1) {
me.manThrAboveMct[n] = 0;
me.detentText[n].setValue("MAN");
} else if (me.detentOutTemp[n] == 0) {
me.manThrAboveMct[n] = 0;
me.detentText[n].setValue("IDLE");
me.idleAthrOff();
}
if (me.detentOutTemp[n] != 4) {
if (me.Limit.flexActiveCmd.getBoolValue()) {
me.cancelFlex();
}
}
},
loop: func() {
FADEC_S.loop();
},
thrustFlash: func() {
me.detentTextTemp[0] = systems.FADEC.detentText[0].getValue();
me.detentTextTemp[1] = systems.FADEC.detentText[1].getValue();
if (!pts.Gear.wow[1].getValue() and !pts.Gear.wow[2].getValue() and (pts.Engines.Engine.state[0].getValue() != 3 or pts.Engines.Engine.state[1].getValue() != 3)) {
systems.FADEC.engOut.setValue(1)
} else {
systems.FADEC.engOut.setValue(0)
}
if (me.detentTextTemp[0] == "CL" and me.detentTextTemp[1] == "CL" and me.engOut.getValue() != 1) {
me.lvrClb.setValue(0);
} else if (me.detentTextTemp[0] == "MCT" and me.detentTextTemp[1] == "MCT" and !me.Limit.flexActive.getBoolValue() and me.engOut.getValue()) {
me.lvrClb.setValue(0);
} else {
me.lvrClbStatus = me.lvrClb.getValue();
if (me.lvrClbStatus == 0) {
if (!pts.Gear.wow[0].getValue()) {
if (systems.FADEC.detentText[0].getValue() == "MAN" or systems.FADEC.detentText[1].getValue() == "MAN") {
me.lvrClb.setValue(1);
} else {
if (pts.Instrumentation.Altimeter.indicatedFt.getValue() >= me.clbReduc.getValue() and !pts.Gear.wow[1].getValue() and !pts.Gear.wow[2].getValue()) {
me.lvrClb.setValue(1);
} else if ((me.detentTextTemp[0] == "CL" and me.detentTextTemp[1] != "CL") or (me.detentTextTemp[0] != "CL" and me.detentTextTemp[1] == "CL") and me.engOut.getValue() != 1) {
me.lvrClb.setValue(1);
} else {
me.lvrClb.setValue(0);
}
}
}
} else if (me.lvrClbStatus == 1) {
me.lvrClb.setValue(0);
}
}
},
};
var thrustFlashT = maketimer(0.5, FADEC, FADEC.thrustFlash);
setlistener("/fdm/jsbsim/fadec/control-1/detent-out", func {
FADEC.updateDetent(0);
}, 0, 0);
setlistener("/fdm/jsbsim/fadec/control-2/detent-out", func {
FADEC.updateDetent(1);
}, 0, 0);

View file

@ -1,4 +1,6 @@
# A3XX IAE FADEC by Joshua Davidson (Octal450)
# A3XX IAE FADEC
# Copyright (c) 2020 Josh Davidson (Octal450)
var powerAvailTemp = nil;
var master1 = nil;
var master2 = nil;
@ -13,7 +15,7 @@ var N12 = nil;
var N21 = nil;
var N22 = nil;
var FADEC = {
var FADEC_S = {
Power: {
powered1: props.globals.initNode("/systems/fadec/powered1", 0, "BOOL"),
powered2: props.globals.initNode("/systems/fadec/powered2", 0, "BOOL"),
@ -46,12 +48,9 @@ var FADEC = {
n1ModeSwitch2: props.globals.initNode("/controls/fadec/n1mode2", 0, "BOOL"),
},
Modes: {
n1Mode1: props.globals.initNode("/systems/fadec/n1mode1", 0, "BOOL"), # 0 == EPR, 1 == N1 Rated, 2 == N1 Unrated #
n1Mode2: props.globals.initNode("/systems/fadec/n1mode2", 0, "BOOL"),
n1Mode1: props.globals.initNode("/fdm/jsbsim/fadec/control-1/n1-mode", 0, "BOOL"), # 0 == EPR, 1 == N1 Rated, 2 == N1 Unrated #
n1Mode2: props.globals.initNode("/fdm/jsbsim/fadec/control-2/n1-mode", 0, "BOOL"),
},
# Copyright (c) 2020 Josh Davidson (Octal450)
init: func() {
me.Power.poweredTime.setValue(-300);
me.Eng1.eng1Time.setValue(-300);

View file

@ -170,8 +170,8 @@ var PNEU = {
targetalt = getprop("/systems/pressurization/targetalt");
ambient = getprop("/systems/pressurization/ambientpsi");
cabinpsi = getprop("/systems/pressurization/cabinpsi");
state1 = pts.Systems.Thrust.state[0].getValue();
state2 = pts.Systems.Thrust.state[1].getValue();
state1 = systems.FADEC.detentText[0].getValue();
state2 = systems.FADEC.detentText[1].getValue();
pressmode = getprop("/systems/pressurization/mode");
vs = getprop("/systems/pressurization/vs-norm");
manvs = getprop("/systems/pressurization/manvs-cmd");

View file

@ -1195,7 +1195,7 @@
<path>Cockpit/detenta.wav</path>
<condition>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>IDLE</value>
</equals>
</condition>
@ -1210,7 +1210,7 @@
<path>Cockpit/detentb.wav</path>
<condition>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>IDLE</value>
</equals>
</condition>
@ -1225,7 +1225,7 @@
<path>Cockpit/detenta.wav</path>
<condition>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MAN</value>
</equals>
</condition>
@ -1240,7 +1240,7 @@
<path>Cockpit/detentb.wav</path>
<condition>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MAN</value>
</equals>
</condition>
@ -1255,7 +1255,7 @@
<path>Cockpit/detenta.wav</path>
<condition>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>CL</value>
</equals>
</condition>
@ -1270,7 +1270,7 @@
<path>Cockpit/detentb.wav</path>
<condition>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>CL</value>
</equals>
</condition>
@ -1285,7 +1285,7 @@
<path>Cockpit/detenta.wav</path>
<condition>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MAN THR</value>
</equals>
</condition>
@ -1300,7 +1300,7 @@
<path>Cockpit/detentb.wav</path>
<condition>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MAN THR</value>
</equals>
</condition>
@ -1315,7 +1315,7 @@
<path>Cockpit/detenta.wav</path>
<condition>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MCT</value>
</equals>
</condition>
@ -1330,7 +1330,7 @@
<path>Cockpit/detentb.wav</path>
<condition>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MCT</value>
</equals>
</condition>
@ -1345,7 +1345,7 @@
<path>Cockpit/detenta.wav</path>
<condition>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>TOGA</value>
</equals>
</condition>
@ -1360,7 +1360,7 @@
<path>Cockpit/detentb.wav</path>
<condition>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>TOGA</value>
</equals>
</condition>
@ -1375,7 +1375,7 @@
<path>Cockpit/detenta.wav</path>
<condition>
<equals>
<property>/controls/engines/engine[0]/reverser</property>
<property>/controls/engines/engine[0]/reverse-cmd</property>
<value>0</value>
</equals>
</condition>
@ -1390,7 +1390,7 @@
<path>Cockpit/detentb.wav</path>
<condition>
<equals>
<property>/controls/engines/engine[1]/reverser</property>
<property>/controls/engines/engine[1]/reverse-cmd</property>
<value>0</value>
</equals>
</condition>
@ -1405,7 +1405,7 @@
<path>Cockpit/detenta.wav</path>
<condition>
<equals>
<property>/controls/engines/engine[0]/reverser</property>
<property>/controls/engines/engine[0]/reverse-cmd</property>
<value>1</value>
</equals>
</condition>
@ -1420,7 +1420,7 @@
<path>Cockpit/detentb.wav</path>
<condition>
<equals>
<property>/controls/engines/engine[1]/reverser</property>
<property>/controls/engines/engine[1]/reverse-cmd</property>
<value>1</value>
</equals>
</condition>

View file

@ -6,7 +6,6 @@
<system name="A320: CFM56 Engine">
<property value="45">fadec/limit/rated-temp</property>
<property value="0">fadec/limit/flex-active</property>
<property value="30">fadec/limit/flex-rated-temp</property>
<property value="27000">fadec/limit/rated-thrust</property>
<property value="18.9">fadec/limit/min-n1</property>
@ -17,7 +16,7 @@
<property value="0">/controls/engines/engine[0]/throttle-pos</property>
<property value="0">/controls/engines/engine[1]/throttle-lever</property>
<property value="0">/controls/engines/engine[1]/throttle-pos</property>
<property value="0">/fdm/jsbsim/fadec/control-2/lever-n1</property>
<property value="20">fadec/limit/idle</property>
<channel name="Thrust Limits">
@ -186,7 +185,7 @@
<summer name="fadec/limit/flex-temp-input"> <!-- (Rated - Flex) + TAT -->
<input>fadec/limit/flex-rated-temp</input> <!-- Fix the calculations -->
<input>-/FMGC/internal/flex</input>
<input>-fadec/limit/flex-temp</input>
<input>propulsion/tat-c</input>
</summer>
@ -440,6 +439,200 @@
<c1>0.75</c1>
<output>fcs/throttle-pos-norm[0]</output>
</lag_filter>
<switch name="fadec/control-1/detent">
<default value="0"/>
<test value="6"> <!-- TOGA -->
fadec/control-1/throttle-pos ge /systems/acconfig/options/fadec/toga-b
</test>
<test value="5"> <!-- MAN THR -->
fadec/control-1/throttle-pos gt /systems/acconfig/options/fadec/mct-t
</test>
<test value="4"> <!-- MCT/FLX -->
fadec/control-1/throttle-pos ge /systems/acconfig/options/fadec/mct-b
</test>
<test value="3"> <!-- MAN THR -->
fadec/control-1/throttle-pos gt /systems/acconfig/options/fadec/climb-t
</test>
<test value="2"> <!-- CL -->
fadec/control-1/throttle-pos ge /systems/acconfig/options/fadec/climb-b
</test>
<test value="1"> <!-- MAN -->
fadec/control-1/throttle-pos gt /systems/acconfig/options/fadec/idle-t
</test>
<output>fadec/control-1/detent-out</output>
</switch>
<!-- Engine 2 -->
<switch name="fadec/control-2/throttle-pos">
<default value="/controls/engines/engine[1]/throttle"/>
<!--test value="0">
fadec/reverse-2/position-norm ne 0
</test-->
<!--test logic="AND" value="fadec/athr-cmd-2">
</test-->
</switch>
<fcs_function name="fadec/control-2/idle-climb-n1">
<function>
<sum>
<property>fadec/limit/min-n1</property>
<product>
<difference>
<property>fadec/control-2/throttle-pos</property>
<property>/systems/acconfig/options/fadec/idle-t</property>
</difference>
<quotient>
<difference>
<property>fadec/limit/climb</property>
<property>fadec/limit/min-n1</property>
</difference>
<difference>
<property>/systems/acconfig/options/fadec/climb-b</property>
<property>/systems/acconfig/options/fadec/idle-t</property>
</difference>
</quotient>
</product>
</sum>
</function>
<clipto>
<min>fadec/limit/min-n1</min>
<max>fadec/limit/climb</max>
</clipto>
</fcs_function>
<fcs_function name="fadec/control-2/climb-mct-n1">
<function>
<sum>
<property>fadec/limit/climb</property>
<product>
<difference>
<property>fadec/control-2/throttle-pos</property>
<property>/systems/acconfig/options/fadec/climb-t</property>
</difference>
<quotient>
<difference>
<property>fadec/limit/mct</property>
<property>fadec/limit/climb</property>
</difference>
<difference>
<property>/systems/acconfig/options/fadec/mct-b</property>
<property>/systems/acconfig/options/fadec/climb-t</property>
</difference>
</quotient>
</product>
</sum>
</function>
<clipto>
<min>fadec/limit/climb</min>
<max>fadec/limit/mct</max>
</clipto>
</fcs_function>
<fcs_function name="fadec/control-2/mct-toga-n1">
<function>
<sum>
<property>fadec/limit/mct</property>
<product>
<difference>
<property>fadec/control-2/throttle-pos</property>
<property>/systems/acconfig/options/fadec/mct-t</property>
</difference>
<quotient>
<difference>
<property>fadec/limit/toga</property>
<property>fadec/limit/mct</property>
</difference>
<difference>
<property>/systems/acconfig/options/fadec/toga-b</property>
<property>/systems/acconfig/options/fadec/mct-t</property>
</difference>
</quotient>
</product>
</sum>
</function>
<clipto>
<min>fadec/limit/mct</min>
<max>fadec/limit/toga</max>
</clipto>
</fcs_function>
<switch name="fadec/control-2/lever-n1">
<default value="fadec/control-2/idle-climb-n1"/>
<test value="fadec/control-2/mct-toga-n1">
fadec/control-2/throttle-pos gt /systems/acconfig/options/fadec/mct-t
</test>
<test value="fadec/control-2/climb-mct-n1">
fadec/control-2/throttle-pos gt /systems/acconfig/options/fadec/climb-t
</test>
</switch>
<fcs_function name="fadec/control-2/lever-norm">
<function>
<table>
<independentVar lookup="row">fadec/control-2/lever-n1</independentVar>
<tableData>
18.9 0
104.0 1
</tableData>
</table>
</function>
</fcs_function>
<switch name="fadec/control-2/throttle-output">
<default value="fadec/control-2/lever-norm"/> <!-- CHANGE THE -->
<!--test value="fadec/reverse-2/throttle-rev-cmd">
/controls/engines/engine[1]/reverse-lever gt 0
</test-->
</switch>
<lag_filter name="fadec/control-2/throttle-fdm">
<input>fadec/control-2/throttle-output</input>
<c1>0.75</c1>
<output>fcs/throttle-pos-norm[1]</output>
</lag_filter>
<switch name="fadec/control-2/detent">
<default value="0"/>
<test value="6"> <!-- TOGA -->
fadec/control-2/throttle-pos ge /systems/acconfig/options/fadec/toga-b
</test>
<test value="5"> <!-- MAN THR -->
fadec/control-2/throttle-pos gt /systems/acconfig/options/fadec/mct-t
</test>
<test value="4"> <!-- MCT/FLX -->
fadec/control-2/throttle-pos ge /systems/acconfig/options/fadec/mct-b
</test>
<test value="3"> <!-- MAN THR -->
fadec/control-2/throttle-pos gt /systems/acconfig/options/fadec/climb-t
</test>
<test value="2"> <!-- CL -->
fadec/control-2/throttle-pos ge /systems/acconfig/options/fadec/climb-b
</test>
<test value="1"> <!-- MAN -->
fadec/control-2/throttle-pos gt /systems/acconfig/options/fadec/idle-t
</test>
<output>fadec/control-2/detent-out</output>
</switch>
<fcs_function name="fadec/both-at-idle">
<function>
<ifthen>
<le>
<difference>
<max>
<property>/engines/engine[0]/n1-actual</property>
<property>/engines/engine[1]/n1-actual</property>
</max>
<value>0.005</value>
</difference>
<property>fadec/limit/idle</property>
</le>
<value>1</value>
<value>0</value>
</ifthen>
</function>
</fcs_function>
</channel>

View file

@ -652,22 +652,22 @@
</lag_filter>
<lag_filter name="fcs/reverse-lever[0]">
<input>/controls/engines/engine[0]/reverser</input>
<input>/controls/engines/engine[0]/reverse-cmd</input>
<c1>20</c1>
</lag_filter>
<lag_filter name="fcs/reverse-lever[1]">
<input>/controls/engines/engine[1]/reverser</input>
<input>/controls/engines/engine[1]/reverse-cmd</input>
<c1>20</c1>
</lag_filter>
<lag_filter name="fcs/reverse-thr-lever[0]">
<input>/controls/engines/engine[0]/throttle-rev</input>
<input>/controls/engines/engine[0]/reverse-lever</input>
<c1>20</c1>
</lag_filter>
<lag_filter name="fcs/reverse-thr-lever[1]">
<input>/controls/engines/engine[1]/throttle-rev</input>
<input>/controls/engines/engine[1]/reverse-lever</input>
<c1>20</c1>
</lag_filter>

View file

@ -191,21 +191,21 @@
<test logic="OR">
<test logic="AND">
/controls/engines/engine[0]/throttle ge 0.779
/systems/thrust/lim-flex eq 1
fadec/flex-active eq 1
</test>
<test logic="AND">
/controls/engines/engine[0]/throttle ge 0.99
/systems/thrust/lim-flex eq 0
fadec/flex-active eq 0
</test>
</test>
<test logic="OR">
<test logic="AND">
/controls/engines/engine[1]/throttle ge 0.779
/systems/thrust/lim-flex eq 1
fadec/flex-active eq 1
</test>
<test logic="AND">
/controls/engines/engine[1]/throttle ge 0.99
/systems/thrust/lim-flex eq 0
fadec/flex-active eq 0
</test>
</test>
</test>

View file

@ -2219,7 +2219,7 @@
<test logic="OR">
<test logic="AND">
/it-fbw/law eq 0
/fdm/jsbsim/fcs/slat-pos-deg lt 15
fcs/slat-pos-deg lt 15
<test logic="OR">
<test logic="AND">
/systems/navigation/adr/output/aoa-1 ge 13.5
@ -2237,7 +2237,7 @@
</test>
<test logic="AND">
/it-fbw/law eq 0
/fdm/jsbsim/fcs/slat-pos-deg ge 15
fcs/slat-pos-deg ge 15
<test logic="AND">
/systems/navigation/adr/output/aoa-1 ge 22
/systems/navigation/adr/operating-1 eq 1
@ -2253,7 +2253,7 @@
</test>
<test logic="AND">
/it-fbw/law ne 0
/fdm/jsbsim/fcs/slat-pos-deg lt 15
fcs/slat-pos-deg lt 15
<test logic="OR">
<test logic="AND">
/systems/navigation/adr/output/aoa-1 ge 8
@ -2271,7 +2271,7 @@
</test>
<test logic="AND">
/it-fbw/law ne 0
/fdm/jsbsim/fcs/slat-pos-deg ge 15
fcs/slat-pos-deg ge 15
<test logic="AND">
/systems/navigation/adr/output/aoa-1 ge 14
/systems/navigation/adr/operating-1 eq 1
@ -2309,8 +2309,8 @@
<switch name="/ECAM/warnings/logic/eng/ground-spoilers">
<default value="0"/>
<test logic="AND" value="1">
/fdm/jsbsim/spoilers/max-spoiler eq 1
/fdm/jsbsim/spoilers/main-cmd gt 0
spoilers/max-spoiler eq 1
spoilers/main-cmd gt 0
</test>
</switch>
@ -2640,25 +2640,25 @@
/ECAM/warnings/logic/eng/new-retard-logic ne 1
<test logic="OR">
<test logic="AND">
/systems/thrust/lim-flex eq 0
fadec/flex-active eq 0
<test logic="OR">
/ECAM/warnings/logic/eng/thr-lever-2-mct-output eq 1
/ECAM/warnings/logic/eng/thr-lever-2-mcl-mct-output eq 1
</test>
</test>
<test logic="AND">
/systems/thrust/lim-flex eq 1
fadec/flex-active eq 1
/ECAM/warnings/logic/eng/thr-lever-2-mcl-mct-output eq 1
</test>
<test logic="AND">
/systems/thrust/lim-flex eq 0
fadec/flex-active eq 0
<test logic="OR">
/ECAM/warnings/logic/eng/thr-lever-1-mct-output eq 1
/ECAM/warnings/logic/eng/thr-lever-1-mcl-mct-output eq 1
</test>
</test>
<test logic="AND">
/systems/thrust/lim-flex eq 1
fadec/flex-active eq 1
/ECAM/warnings/logic/eng/thr-lever-1-mcl-mct-output eq 1
</test>
</test>
@ -2674,8 +2674,8 @@
/ECAM/warning-phase ne 7
</test>
<test logic="OR">
/controls/engines/engine[0]/throttle-rev gt 0.0
/controls/engines/engine[1]/throttle-rev gt 0.0
/controls/engines/engine[0]/reverse-lever gt 0.0
/controls/engines/engine[1]/reverse-lever gt 0.0
</test>
</test>
</switch>
@ -3305,7 +3305,7 @@
<default value="0"/>
<test logic="AND" value="1">
/ECAM/warnings/fctl/spd-brk-still-out-50-seconds eq 1
/engines/both-at-idle eq 1
fadec/both-at-idle eq 1
</test>
</switch>
@ -3643,7 +3643,7 @@
</test>
<test logic="AND">
/controls/gear/gear-down eq 1
/fdm/jsbsim/fcs/slat-pos-deg ge 4
fcs/slat-pos-deg ge 4
</test>
</test>
/it-autoflight/output/lat eq 4

View file

@ -28,14 +28,14 @@
<switch name="spoilers/throttle[0]">
<default value="/controls/engines/engine[0]/throttle"/>
<test logic="OR" value="0">
/controls/engines/engine[0]/reverser eq 1
/controls/engines/engine[0]/reverse-cmd eq 1
</test>
</switch>
<switch name="spoilers/throttle[1]">
<default value="/controls/engines/engine[1]/throttle"/>
<test logic="OR" value="0">
/controls/engines/engine[1]/reverser eq 1
/controls/engines/engine[1]/reverse-cmd eq 1
</test>
</switch>

View file

@ -220,7 +220,7 @@
<value>FLX</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MCT</value>
</equals>
</and>
@ -261,7 +261,7 @@
<value>FLX</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MCT</value>
</equals>
</and>
@ -299,7 +299,7 @@
<or>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>0</value>
</equals>
<less-than>
@ -307,7 +307,7 @@
<value>0.83</value>
</less-than>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MAN THR</value>
</equals>
</and>
@ -317,7 +317,7 @@
<value>0.83</value>
</greater-than-equals>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MAN THR</value>
</equals>
</and>
@ -329,38 +329,38 @@
<or>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>1</value>
</equals>
<equals>
<property>/systems/thrust/lim-flex</property>
<property>/fdm/jsbsim/fadec/flex-active</property>
<value>0</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MCT</value>
</equals>
</and>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>1</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MAN THR</value>
</equals>
</and>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>CL</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MAN</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>IDLE</value>
</equals>
</or>
@ -379,21 +379,21 @@
<or>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>1</value>
</equals>
<equals>
<property>/systems/thrust/lim-flex</property>
<property>/fdm/jsbsim/fadec/flex-active</property>
<value>0</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MCT</value>
</equals>
</and>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>1</value>
</equals>
<less-than>
@ -401,16 +401,16 @@
<value>0.83</value>
</less-than>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MAN THR</value>
</equals>
</and>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>CL</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MAN</value>
</equals>
</or>
@ -438,21 +438,21 @@
<or>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>1</value>
</equals>
<equals>
<property>/systems/thrust/lim-flex</property>
<property>/fdm/jsbsim/fadec/flex-active</property>
<value>0</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MCT</value>
</equals>
</and>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>1</value>
</equals>
<less-than>
@ -460,16 +460,16 @@
<value>0.83</value>
</less-than>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MAN THR</value>
</equals>
</and>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>CL</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MAN</value>
</equals>
</or>
@ -517,7 +517,7 @@
<or>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>0</value>
</equals>
<less-than>
@ -525,7 +525,7 @@
<value>0.83</value>
</less-than>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MAN THR</value>
</equals>
</and>
@ -535,7 +535,7 @@
<value>0.83</value>
</greater-than-equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MAN THR</value>
</equals>
</and>
@ -547,38 +547,38 @@
<or>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>1</value>
</equals>
<equals>
<property>/systems/thrust/lim-flex</property>
<property>/fdm/jsbsim/fadec/flex-active</property>
<value>0</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MCT</value>
</equals>
</and>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>1</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MAN THR</value>
</equals>
</and>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>CL</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MAN</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>IDLE</value>
</equals>
</or>
@ -597,21 +597,21 @@
<or>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>1</value>
</equals>
<equals>
<property>/systems/thrust/lim-flex</property>
<property>/fdm/jsbsim/fadec/flex-active</property>
<value>0</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MCT</value>
</equals>
</and>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>1</value>
</equals>
<less-than>
@ -619,16 +619,16 @@
<value>0.83</value>
</less-than>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MAN THR</value>
</equals>
</and>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>CL</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MAN</value>
</equals>
</or>
@ -656,21 +656,21 @@
<or>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>1</value>
</equals>
<equals>
<property>/systems/thrust/lim-flex</property>
<property>/fdm/jsbsim/fadec/flex-active</property>
<value>0</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MCT</value>
</equals>
</and>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>1</value>
</equals>
<less-than>
@ -678,16 +678,16 @@
<value>0.83</value>
</less-than>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MAN THR</value>
</equals>
</and>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>CL</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MAN</value>
</equals>
</or>
@ -734,42 +734,42 @@
<condition>
<and>
<equals>
<property>/systems/thrust/alpha-floor</property>
<property>/fdm/jsbsim/fadec/alpha-floor</property>
<value>0</value>
</equals>
<equals>
<property>/systems/thrust/toga-lk</property>
<property>/fdm/jsbsim/fadec/toga-lk</property>
<value>0</value>
</equals>
<or>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>1</value>
</equals>
<equals>
<property>/systems/thrust/lim-flex</property>
<property>/fdm/jsbsim/fadec/flex-active</property>
<value>0</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MCT</value>
</equals>
</and>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MAN THR</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>CL</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MAN</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>IDLE</value>
</equals>
</or>
@ -781,7 +781,7 @@
<or>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>0</value>
</equals>
<less-than>
@ -789,7 +789,7 @@
<value>0.83</value>
</less-than>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MAN THR</value>
</equals>
</and>
@ -799,7 +799,7 @@
<value>0.83</value>
</greater-than-equals>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MAN THR</value>
</equals>
</and>
@ -811,38 +811,38 @@
<or>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>1</value>
</equals>
<equals>
<property>/systems/thrust/lim-flex</property>
<property>/fdm/jsbsim/fadec/flex-active</property>
<value>0</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MCT</value>
</equals>
</and>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>1</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MAN THR</value>
</equals>
</and>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>CL</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MAN</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>IDLE</value>
</equals>
</or>
@ -861,21 +861,21 @@
<or>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>1</value>
</equals>
<equals>
<property>/systems/thrust/lim-flex</property>
<property>/fdm/jsbsim/fadec/flex-active</property>
<value>0</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MCT</value>
</equals>
</and>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>1</value>
</equals>
<less-than>
@ -883,16 +883,16 @@
<value>0.83</value>
</less-than>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MAN THR</value>
</equals>
</and>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>CL</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MAN</value>
</equals>
</or>
@ -914,42 +914,42 @@
<condition>
<and>
<equals>
<property>/systems/thrust/alpha-floor</property>
<property>/fdm/jsbsim/fadec/alpha-floor</property>
<value>0</value>
</equals>
<equals>
<property>/systems/thrust/toga-lk</property>
<property>/fdm/jsbsim/fadec/toga-lk</property>
<value>0</value>
</equals>
<or>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>1</value>
</equals>
<equals>
<property>/systems/thrust/lim-flex</property>
<property>/fdm/jsbsim/fadec/flex-active</property>
<value>0</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MCT</value>
</equals>
</and>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MAN THR</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>CL</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MAN</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>IDLE</value>
</equals>
</or>
@ -961,7 +961,7 @@
<or>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>0</value>
</equals>
<less-than>
@ -969,7 +969,7 @@
<value>0.83</value>
</less-than>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MAN THR</value>
</equals>
</and>
@ -979,7 +979,7 @@
<value>0.83</value>
</greater-than-equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MAN THR</value>
</equals>
</and>
@ -991,38 +991,38 @@
<or>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>1</value>
</equals>
<equals>
<property>/systems/thrust/lim-flex</property>
<property>/fdm/jsbsim/fadec/flex-active</property>
<value>0</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MCT</value>
</equals>
</and>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>1</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MAN THR</value>
</equals>
</and>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>CL</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MAN</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>IDLE</value>
</equals>
</or>
@ -1041,21 +1041,21 @@
<or>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>1</value>
</equals>
<equals>
<property>/systems/thrust/lim-flex</property>
<property>/fdm/jsbsim/fadec/flex-active</property>
<value>0</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MCT</value>
</equals>
</and>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>1</value>
</equals>
<less-than>
@ -1063,16 +1063,16 @@
<value>0.83</value>
</less-than>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MAN THR</value>
</equals>
</and>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>CL</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MAN</value>
</equals>
</or>
@ -1091,7 +1091,7 @@
<gain>1.0</gain>
<update-interval-secs>0.05</update-interval-secs>
<input>/fdm/jsbsim/fadec/limit/toga</input>
<output>/systems/thrust/n1/toga-lim</output>
<output>/fdm/jsbsim/fadec/n1/toga-lim</output>
</filter>
<filter>
@ -1111,7 +1111,7 @@
</table>
</expression>
</input>
<output>/systems/thrust/n1/mct-lim</output>
<output>/fdm/jsbsim/fadec/n1/mct-lim</output>
</filter>
<filter>
@ -1120,7 +1120,7 @@
<gain>1.0</gain>
<update-interval-secs>0.05</update-interval-secs>
<input>/fdm/jsbsim/fadec/limit/flex</input>
<output>/systems/thrust/n1/flx-lim</output>
<output>/fdm/jsbsim/fadec/n1/flx-lim</output>
</filter>
<filter>
@ -1140,7 +1140,7 @@
</table>
</expression>
</input>
<output>/systems/thrust/n1/clb-lim</output>
<output>/fdm/jsbsim/fadec/n1/clb-lim</output>
</filter>
<filter>
@ -1150,20 +1150,20 @@
<input>
<condition>
<equals>
<property>/controls/engines/engine[0]/reverser</property>
<property>/controls/engines/engine[0]/reverse-cmd</property>
<value>1</value>
</equals>
</condition>
<property>/controls/engines/engine[0]/throttle-rev</property>
<property>/controls/engines/engine[0]/reverse-lever</property>
</input>
<input>
<condition>
<equals>
<property>/systems/thrust/thr-locked</property>
<property>/fdm/jsbsim/fadec/thr-locked</property>
<value>1</value>
</equals>
</condition>
<property>/systems/thrust/thr-lock-cmd[0]</property>
<property>/fdm/jsbsim/fadec/thr-lock-cmd[0]</property>
</input>
<input>
<condition>
@ -1173,7 +1173,7 @@
<value>FLX</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MCT</value>
</equals>
</and>
@ -1207,20 +1207,20 @@
<input>
<condition>
<equals>
<property>/controls/engines/engine[1]/reverser</property>
<property>/controls/engines/engine[1]/reverse-cmd</property>
<value>1</value>
</equals>
</condition>
<property>/controls/engines/engine[1]/throttle-rev</property>
<property>/controls/engines/engine[1]/reverse-lever</property>
</input>
<input>
<condition>
<equals>
<property>/systems/thrust/thr-locked</property>
<property>/fdm/jsbsim/fadec/thr-locked</property>
<value>1</value>
</equals>
</condition>
<property>/systems/thrust/thr-lock-cmd[1]</property>
<property>/fdm/jsbsim/fadec/thr-lock-cmd[1]</property>
</input>
<input>
<condition>
@ -1230,7 +1230,7 @@
<value>FLX</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MCT</value>
</equals>
</and>

View file

@ -32,7 +32,7 @@
<input>
<expression>
<table>
<property>/FMGC/internal/flex</property>
<property>/fdm/jsbsim/fadec/limit/flex-temp</property>
<entry><ind> 70</ind><dep>0.797</dep></entry>
<entry><ind> 40</ind><dep>0.822</dep></entry>
<entry><ind>-60</ind><dep>1.000</dep></entry>
@ -315,7 +315,7 @@
<value>FLX</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MCT</value>
</equals>
</and>
@ -422,7 +422,7 @@
<value>FLX</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MCT</value>
</equals>
</and>
@ -493,7 +493,7 @@
<value>FLX</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MCT</value>
</equals>
</and>
@ -533,7 +533,7 @@
<value>FLX</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MCT</value>
</equals>
</and>
@ -571,7 +571,7 @@
<or>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>0</value>
</equals>
<less-than>
@ -579,7 +579,7 @@
<value>0.83</value>
</less-than>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MAN THR</value>
</equals>
</and>
@ -589,7 +589,7 @@
<value>0.83</value>
</greater-than-equals>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MAN THR</value>
</equals>
</and>
@ -601,38 +601,38 @@
<or>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>1</value>
</equals>
<equals>
<property>/systems/thrust/lim-flex</property>
<property>/fdm/jsbsim/fadec/flex-active</property>
<value>0</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MCT</value>
</equals>
</and>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>1</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MAN THR</value>
</equals>
</and>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>CL</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MAN</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>IDLE</value>
</equals>
</or>
@ -651,21 +651,21 @@
<or>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>1</value>
</equals>
<equals>
<property>/systems/thrust/lim-flex</property>
<property>/fdm/jsbsim/fadec/flex-active</property>
<value>0</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MCT</value>
</equals>
</and>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>1</value>
</equals>
<less-than>
@ -673,16 +673,16 @@
<value>0.83</value>
</less-than>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MAN THR</value>
</equals>
</and>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>CL</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MAN</value>
</equals>
</or>
@ -710,21 +710,21 @@
<or>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>1</value>
</equals>
<equals>
<property>/systems/thrust/lim-flex</property>
<property>/fdm/jsbsim/fadec/flex-active</property>
<value>0</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MCT</value>
</equals>
</and>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>1</value>
</equals>
<less-than>
@ -732,16 +732,16 @@
<value>0.83</value>
</less-than>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MAN THR</value>
</equals>
</and>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>CL</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MAN</value>
</equals>
</or>
@ -789,7 +789,7 @@
<or>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>0</value>
</equals>
<less-than>
@ -797,7 +797,7 @@
<value>0.83</value>
</less-than>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MAN THR</value>
</equals>
</and>
@ -807,7 +807,7 @@
<value>0.83</value>
</greater-than-equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MAN THR</value>
</equals>
</and>
@ -819,38 +819,38 @@
<or>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>1</value>
</equals>
<equals>
<property>/systems/thrust/lim-flex</property>
<property>/fdm/jsbsim/fadec/flex-active</property>
<value>0</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MCT</value>
</equals>
</and>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>1</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MAN THR</value>
</equals>
</and>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>CL</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MAN</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>IDLE</value>
</equals>
</or>
@ -869,21 +869,21 @@
<or>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>1</value>
</equals>
<equals>
<property>/systems/thrust/lim-flex</property>
<property>/fdm/jsbsim/fadec/flex-active</property>
<value>0</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MCT</value>
</equals>
</and>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>1</value>
</equals>
<less-than>
@ -891,16 +891,16 @@
<value>0.83</value>
</less-than>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MAN THR</value>
</equals>
</and>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>CL</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MAN</value>
</equals>
</or>
@ -928,21 +928,21 @@
<or>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>1</value>
</equals>
<equals>
<property>/systems/thrust/lim-flex</property>
<property>/fdm/jsbsim/fadec/flex-active</property>
<value>0</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MCT</value>
</equals>
</and>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>1</value>
</equals>
<less-than>
@ -950,16 +950,16 @@
<value>0.83</value>
</less-than>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MAN THR</value>
</equals>
</and>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>CL</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MAN</value>
</equals>
</or>
@ -1006,42 +1006,42 @@
<condition>
<and>
<equals>
<property>/systems/thrust/alpha-floor</property>
<property>/fdm/jsbsim/fadec/alpha-floor</property>
<value>0</value>
</equals>
<equals>
<property>/systems/thrust/toga-lk</property>
<property>/fdm/jsbsim/fadec/toga-lk</property>
<value>0</value>
</equals>
<or>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>1</value>
</equals>
<equals>
<property>/systems/thrust/lim-flex</property>
<property>/fdm/jsbsim/fadec/flex-active</property>
<value>0</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MCT</value>
</equals>
</and>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MAN THR</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>CL</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MAN</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>IDLE</value>
</equals>
</or>
@ -1053,7 +1053,7 @@
<or>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>0</value>
</equals>
<less-than>
@ -1061,7 +1061,7 @@
<value>0.83</value>
</less-than>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MAN THR</value>
</equals>
</and>
@ -1071,7 +1071,7 @@
<value>0.83</value>
</greater-than-equals>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MAN THR</value>
</equals>
</and>
@ -1083,38 +1083,38 @@
<or>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>1</value>
</equals>
<equals>
<property>/systems/thrust/lim-flex</property>
<property>/fdm/jsbsim/fadec/flex-active</property>
<value>0</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MCT</value>
</equals>
</and>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>1</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MAN THR</value>
</equals>
</and>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>CL</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MAN</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>IDLE</value>
</equals>
</or>
@ -1133,21 +1133,21 @@
<or>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>1</value>
</equals>
<equals>
<property>/systems/thrust/lim-flex</property>
<property>/fdm/jsbsim/fadec/flex-active</property>
<value>0</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MCT</value>
</equals>
</and>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>1</value>
</equals>
<less-than>
@ -1155,16 +1155,16 @@
<value>0.83</value>
</less-than>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MAN THR</value>
</equals>
</and>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>CL</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MAN</value>
</equals>
</or>
@ -1186,42 +1186,42 @@
<condition>
<and>
<equals>
<property>/systems/thrust/alpha-floor</property>
<property>/fdm/jsbsim/fadec/alpha-floor</property>
<value>0</value>
</equals>
<equals>
<property>/systems/thrust/toga-lk</property>
<property>/fdm/jsbsim/fadec/toga-lk</property>
<value>0</value>
</equals>
<or>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>1</value>
</equals>
<equals>
<property>/systems/thrust/lim-flex</property>
<property>/fdm/jsbsim/fadec/flex-active</property>
<value>0</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MCT</value>
</equals>
</and>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MAN THR</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>CL</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MAN</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>IDLE</value>
</equals>
</or>
@ -1233,7 +1233,7 @@
<or>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>0</value>
</equals>
<less-than>
@ -1241,7 +1241,7 @@
<value>0.83</value>
</less-than>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MAN THR</value>
</equals>
</and>
@ -1251,7 +1251,7 @@
<value>0.83</value>
</greater-than-equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MAN THR</value>
</equals>
</and>
@ -1263,38 +1263,38 @@
<or>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>1</value>
</equals>
<equals>
<property>/systems/thrust/lim-flex</property>
<property>/fdm/jsbsim/fadec/flex-active</property>
<value>0</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MCT</value>
</equals>
</and>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>1</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MAN THR</value>
</equals>
</and>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>CL</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MAN</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>IDLE</value>
</equals>
</or>
@ -1313,21 +1313,21 @@
<or>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>1</value>
</equals>
<equals>
<property>/systems/thrust/lim-flex</property>
<property>/fdm/jsbsim/fadec/flex-active</property>
<value>0</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MCT</value>
</equals>
</and>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>1</value>
</equals>
<less-than>
@ -1335,16 +1335,16 @@
<value>0.83</value>
</less-than>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MAN THR</value>
</equals>
</and>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>CL</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MAN</value>
</equals>
</or>
@ -1382,7 +1382,7 @@
</expression>
<scale>/engines/epr-scale</scale>
</input>
<output>/systems/thrust/epr/toga-lim-cmd</output>
<output>/fdm/jsbsim/fadec/epr/toga-lim-cmd</output>
</filter>
<filter>
@ -1393,12 +1393,12 @@
<input>
<expression>
<sum>
<property>/systems/thrust/epr/toga-lim-cmd</property>
<property>/fdm/jsbsim/fadec/epr/toga-lim-cmd</property>
<property>/engines/epr-scale-b</property>
</sum>
</expression>
</input>
<output>/systems/thrust/epr/toga-lim</output>
<output>/fdm/jsbsim/fadec/epr/toga-lim</output>
</filter>
<filter>
@ -1426,7 +1426,7 @@
</expression>
<scale>/engines/epr-scale</scale>
</input>
<output>/systems/thrust/epr/mct-lim-cmd</output>
<output>/fdm/jsbsim/fadec/epr/mct-lim-cmd</output>
</filter>
<filter>
@ -1437,12 +1437,12 @@
<input>
<expression>
<sum>
<property>/systems/thrust/epr/mct-lim-cmd</property>
<property>/fdm/jsbsim/fadec/epr/mct-lim-cmd</property>
<property>/engines/epr-scale-b</property>
</sum>
</expression>
</input>
<output>/systems/thrust/epr/mct-lim</output>
<output>/fdm/jsbsim/fadec/epr/mct-lim</output>
</filter>
<filter>
@ -1470,7 +1470,7 @@
</expression>
<scale>/engines/epr-scale</scale>
</input>
<output>/systems/thrust/epr/flx-lim-cmd</output>
<output>/fdm/jsbsim/fadec/epr/flx-lim-cmd</output>
</filter>
<filter>
@ -1481,12 +1481,12 @@
<input>
<expression>
<sum>
<property>/systems/thrust/epr/flx-lim-cmd</property>
<property>/fdm/jsbsim/fadec/epr/flx-lim-cmd</property>
<property>/engines/epr-scale-b</property>
</sum>
</expression>
</input>
<output>/systems/thrust/epr/flx-lim</output>
<output>/fdm/jsbsim/fadec/epr/flx-lim</output>
</filter>
<filter>
@ -1514,7 +1514,7 @@
</expression>
<scale>/engines/epr-scale</scale>
</input>
<output>/systems/thrust/epr/clb-lim-cmd</output>
<output>/fdm/jsbsim/fadec/epr/clb-lim-cmd</output>
</filter>
<filter>
@ -1525,12 +1525,12 @@
<input>
<expression>
<sum>
<property>/systems/thrust/epr/clb-lim-cmd</property>
<property>/fdm/jsbsim/fadec/epr/clb-lim-cmd</property>
<property>/engines/epr-scale-b</property>
</sum>
</expression>
</input>
<output>/systems/thrust/epr/clb-lim</output>
<output>/fdm/jsbsim/fadec/epr/clb-lim</output>
</filter>
<filter>
@ -1540,20 +1540,20 @@
<input>
<condition>
<equals>
<property>/controls/engines/engine[0]/reverser</property>
<property>/controls/engines/engine[0]/reverse-cmd</property>
<value>1</value>
</equals>
</condition>
<property>/controls/engines/engine[0]/throttle-rev</property>
<property>/controls/engines/engine[0]/reverse-lever</property>
</input>
<input>
<condition>
<equals>
<property>/systems/thrust/thr-locked</property>
<property>/fdm/jsbsim/fadec/thr-locked</property>
<value>1</value>
</equals>
</condition>
<property>/systems/thrust/thr-lock-cmd[0]</property>
<property>/fdm/jsbsim/fadec/thr-lock-cmd[0]</property>
</input>
<input>
<condition>
@ -1563,7 +1563,7 @@
<value>FLX</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MCT</value>
</equals>
</and>
@ -1597,20 +1597,20 @@
<input>
<condition>
<equals>
<property>/controls/engines/engine[1]/reverser</property>
<property>/controls/engines/engine[1]/reverse-cmd</property>
<value>1</value>
</equals>
</condition>
<property>/controls/engines/engine[1]/throttle-rev</property>
<property>/controls/engines/engine[1]/reverse-lever</property>
</input>
<input>
<condition>
<equals>
<property>/systems/thrust/thr-locked</property>
<property>/fdm/jsbsim/fadec/thr-locked</property>
<value>1</value>
</equals>
</condition>
<property>/systems/thrust/thr-lock-cmd[1]</property>
<property>/fdm/jsbsim/fadec/thr-lock-cmd[1]</property>
</input>
<input>
<condition>
@ -1620,7 +1620,7 @@
<value>FLX</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MCT</value>
</equals>
</and>

View file

@ -53,7 +53,7 @@
<value>0</value>
</equals>
<not-equals>
<property>/systems/thrust/thr-locked</property>
<property>/fdm/jsbsim/fadec/thr-locked</property>
<value>1</value>
</not-equals>
</and>
@ -111,7 +111,7 @@
<value>0</value>
</equals>
<not-equals>
<property>/systems/thrust/thr-locked</property>
<property>/fdm/jsbsim/fadec/thr-locked</property>
<value>1</value>
</not-equals>
</and>
@ -151,7 +151,7 @@
<value>0</value>
</equals>
<not-equals>
<property>/systems/thrust/thr-locked</property>
<property>/fdm/jsbsim/fadec/thr-locked</property>
<value>1</value>
</not-equals>
<or>
@ -181,27 +181,27 @@
<or>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>1</value>
</equals>
<equals>
<property>/systems/thrust/lim-flex</property>
<property>/fdm/jsbsim/fadec/flex-active</property>
<value>0</value>
</equals>
<or>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MCT</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MCT</value>
</equals>
</or>
</and>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>1</value>
</equals>
<or>
@ -211,7 +211,7 @@
<value>0.83</value>
</less-than>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MAN THR</value>
</equals>
</and>
@ -221,26 +221,26 @@
<value>0.83</value>
</less-than>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MAN THR</value>
</equals>
</and>
</or>
</and>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MAN</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>CL</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MAN</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>CL</value>
</equals>
</or>
@ -274,7 +274,7 @@
<value>1</value>
</equals>
<not-equals>
<property>/systems/thrust/thr-locked</property>
<property>/fdm/jsbsim/fadec/thr-locked</property>
<value>1</value>
</not-equals>
<or>
@ -304,27 +304,27 @@
<or>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>1</value>
</equals>
<equals>
<property>/systems/thrust/lim-flex</property>
<property>/fdm/jsbsim/fadec/flex-active</property>
<value>0</value>
</equals>
<or>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MCT</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MCT</value>
</equals>
</or>
</and>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>1</value>
</equals>
<or>
@ -334,7 +334,7 @@
<value>0.83</value>
</less-than>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MAN THR</value>
</equals>
</and>
@ -344,26 +344,26 @@
<value>0.83</value>
</less-than>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MAN THR</value>
</equals>
</and>
</or>
</and>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MAN</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>CL</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MAN</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>CL</value>
</equals>
</or>
@ -401,7 +401,7 @@
<value>1</value>
</equals>
<not-equals>
<property>/systems/thrust/thr-locked</property>
<property>/fdm/jsbsim/fadec/thr-locked</property>
<value>1</value>
</not-equals>
<or>
@ -429,27 +429,27 @@
<or>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>1</value>
</equals>
<equals>
<property>/systems/thrust/lim-flex</property>
<property>/fdm/jsbsim/fadec/flex-active</property>
<value>0</value>
</equals>
<or>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MCT</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MCT</value>
</equals>
</or>
</and>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>1</value>
</equals>
<or>
@ -459,7 +459,7 @@
<value>0.83</value>
</less-than>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MAN THR</value>
</equals>
</and>
@ -469,26 +469,26 @@
<value>0.83</value>
</less-than>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MAN THR</value>
</equals>
</and>
</or>
</and>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MAN</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>CL</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MAN</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>CL</value>
</equals>
</or>
@ -512,7 +512,7 @@
<value>1</value>
</equals>
<not-equals>
<property>/systems/thrust/thr-locked</property>
<property>/fdm/jsbsim/fadec/thr-locked</property>
<value>1</value>
</not-equals>
<or>
@ -540,27 +540,27 @@
<or>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>1</value>
</equals>
<equals>
<property>/systems/thrust/lim-flex</property>
<property>/fdm/jsbsim/fadec/flex-active</property>
<value>0</value>
</equals>
<or>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MCT</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MCT</value>
</equals>
</or>
</and>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>1</value>
</equals>
<or>
@ -570,7 +570,7 @@
<value>0.83</value>
</less-than>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MAN THR</value>
</equals>
</and>
@ -580,26 +580,26 @@
<value>0.83</value>
</less-than>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MAN THR</value>
</equals>
</and>
</or>
</and>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MAN</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>CL</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MAN</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>CL</value>
</equals>
</or>
@ -623,33 +623,33 @@
<value>0</value>
</equals>
<equals>
<property>/systems/thrust/thr-locked</property>
<property>/fdm/jsbsim/fadec/thr-locked</property>
<value>1</value>
</equals>
<and>
<not>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>1</value>
</equals>
<equals>
<property>/systems/thrust/lim-flex</property>
<property>/fdm/jsbsim/fadec/flex-active</property>
<value>0</value>
</equals>
<or>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MCT</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MCT</value>
</equals>
</or>
</not>
<not>
<equals>
<property>/systems/thrust/eng-out</property>
<property>/fdm/jsbsim/fadec/eng-out</property>
<value>1</value>
</equals>
<or>
@ -659,7 +659,7 @@
<value>0.83</value>
</less-than>
<equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MAN THR</value>
</equals>
</and>
@ -669,26 +669,26 @@
<value>0.83</value>
</less-than>
<equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MAN THR</value>
</equals>
</and>
</or>
</not>
<not-equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>MAN</value>
</not-equals>
<not-equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>CL</value>
</not-equals>
<not-equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>MAN</value>
</not-equals>
<not-equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>CL</value>
</not-equals>
</and>
@ -698,15 +698,15 @@
<input>
<condition>
<equals>
<property>/systems/thrust/thr-locked</property>
<property>/fdm/jsbsim/fadec/thr-locked</property>
<value>1</value>
</equals>
</condition>
<expression>
<div>
<max>
<property>/systems/thrust/thr-lock-cmd[0]</property>
<property>/systems/thrust/thr-lock-cmd[1]</property>
<property>/fdm/jsbsim/fadec/thr-lock-cmd[0]</property>
<property>/fdm/jsbsim/fadec/thr-lock-cmd[1]</property>
</max>
<table>
<property>/environment/temperature-degc</property>
@ -721,11 +721,11 @@
<condition>
<and>
<not-equals>
<property>/systems/thrust/state1</property>
<property>/fdm/jsbsim/fadec/control-1/detent-text</property>
<value>IDLE</value>
</not-equals>
<not-equals>
<property>/systems/thrust/state2</property>
<property>/fdm/jsbsim/fadec/control-2/detent-text</property>
<value>IDLE</value>
</not-equals>
</and>

View file

@ -125,7 +125,7 @@
</condition>
<expression>
<table>
<property>/systems/thrust/epr/toga-lim</property>
<property>/fdm/jsbsim/fadec/epr/toga-lim</property>
<entry><ind>0.970</ind><dep>-139</dep></entry>
<entry><ind>1.000</ind><dep>-125</dep></entry>
<entry><ind>1.200</ind><dep> -55</dep></entry>
@ -388,7 +388,7 @@
<input>
<expression>
<table>
<property>/systems/thrust/n1/toga-lim</property>
<property>/fdm/jsbsim/fadec/n1/toga-lim</property>
<entry><ind> 20.0</ind><dep>-131</dep></entry>
<entry><ind> 50.0</ind><dep> -64</dep></entry>
<entry><ind>100.0</ind><dep> 48</dep></entry>