diff --git a/Models/FlightDeck/a320.flightdeck.xml b/Models/FlightDeck/a320.flightdeck.xml index b68029b0..910db173 100644 --- a/Models/FlightDeck/a320.flightdeck.xml +++ b/Models/FlightDeck/a320.flightdeck.xml @@ -6810,7 +6810,7 @@ property-adjust controls/engines/engine[0]/throttle - 0.01 + 0.01 1 @@ -6821,7 +6821,7 @@ property-adjust controls/engines/engine[0]/throttle - -0.01 + -0.01 0 @@ -6840,20 +6840,11 @@ Engine 1 throttle lever rev rotate thr_l - fdm/jsbsim/fcs/reverse-lever[0] - -3.5 - - trim.axis - - - - Engine 1 throttle lever rev 2 - rotate - thr_l - fdm/jsbsim/fcs/reverse-thr-lever[0] + fdm/jsbsim/fadec/reverse-lever[0] - 0.00 0 - 0.50-20 + 0.00 0.0 + 0.25 -3.5 + 1.00-23.5 trim.axis @@ -6870,7 +6861,7 @@ property-adjust controls/engines/engine[1]/throttle - 0.01 + 0.01 1 @@ -6881,7 +6872,7 @@ property-adjust controls/engines/engine[1]/throttle - -0.01 + -0.01 0 @@ -6900,20 +6891,11 @@ Engine 2 throttle lever rev rotate thr_r - fdm/jsbsim/fcs/reverse-lever[1] - -3.5 - - trim.axis - - - - Engine 2 throttle lever rev 2 - rotate - thr_r - fdm/jsbsim/fcs/reverse-thr-lever[1] + fdm/jsbsim/fadec/reverse-lever[1] - 0.00 0 - 0.50-20 + 0.00 0.0 + 0.25 -3.5 + 1.00-23.5 trim.axis @@ -8168,8 +8150,8 @@ false false led.txf - 0.010 - 1.0 + 0.010 + 1.0 0.012 0.050 @@ -8199,8 +8181,8 @@ false false led.txf - 0.010 - 1.0 + 0.010 + 1.0 0.012 0.060 @@ -8230,8 +8212,8 @@ false false led.txf - 0.008 - 1.0 + 0.008 + 1.0 0.012 0.060 @@ -8261,8 +8243,8 @@ false false led.txf - 0.010 - 1.1 + 0.010 + 1.1 0.012 0.060 @@ -8292,8 +8274,8 @@ false false led.txf - 0.010 - 1.0 + 0.010 + 1.0 0.012 0.060 @@ -8323,8 +8305,8 @@ false false led.txf - 0.008 - 1.0 + 0.008 + 1.0 0.012 0.060 @@ -8354,8 +8336,8 @@ false false led.txf - 0.010 - 1.0 + 0.010 + 1.0 0.012 0.040 @@ -8531,8 +8513,8 @@ false false led.txf - 0.007 - 1.0 + 0.007 + 1.0 0.012 0.040 @@ -8562,8 +8544,8 @@ false false led.txf - 0.007 - 1.0 + 0.007 + 1.0 0.012 0.040 @@ -8595,8 +8577,8 @@ false false led.txf - 0.007 - 1.0 + 0.007 + 1.0 0.012 0.040 @@ -8626,8 +8608,8 @@ false false led.txf - 0.007 - 1.0 + 0.007 + 1.0 0.012 0.040 diff --git a/Models/Instruments/Upper-ECAM/Upper-ECAM.nas b/Models/Instruments/Upper-ECAM/Upper-ECAM.nas index 67ba5947..ca855aa5 100644 --- a/Models/Instruments/Upper-ECAM/Upper-ECAM.nas +++ b/Models/Instruments/Upper-ECAM/Upper-ECAM.nas @@ -996,13 +996,13 @@ input = { slatLocked: "/fdm/jsbsim/fcs/slat-locked", # N1 parameters - N1_1: "/ECAM/Upper/N1[0]", - N1_2: "/ECAM/Upper/N1[1]", + N1_1: "/instrumentation/upper-ecam/n1[0]", + N1_2: "/instrumentation/upper-ecam/n1[1]", N1_actual_1: "/engines/engine[0]/n1-actual", N1_actual_2: "/engines/engine[1]/n1-actual", - N1_lim: "/ECAM/Upper/N1ylim", - N1thr_1: "/ECAM/Upper/N1thr[0]", - N1thr_2: "/ECAM/Upper/N1thr[1]", + N1_lim: "/instrumentation/upper-ecam/n1-limit", + N1thr_1: "/instrumentation/upper-ecam/n1-thr[0]", + N1thr_2: "/instrumentation/upper-ecam/n1-thr[1]", # N2 parameters N2_actual_1: "/engines/engine[0]/n2-actual", diff --git a/Nasal/Libraries/libraries.nas b/Nasal/Libraries/libraries.nas index 967b11dc..e5c1bb58 100644 --- a/Nasal/Libraries/libraries.nas +++ b/Nasal/Libraries/libraries.nas @@ -91,6 +91,7 @@ var systemsInit = func() { systems.FUEL.init(); systems.ADIRS.init(); systems.eng_init(); + systems.ENGINE.init(); systems.FADEC.init(); systems.APUController.init(); systems.BrakeSys.reset(); diff --git a/Nasal/Systems/Engines/engines-common.nas b/Nasal/Systems/Engines/engines-common.nas index 00f39a20..93f91900 100644 --- a/Nasal/Systems/Engines/engines-common.nas +++ b/Nasal/Systems/Engines/engines-common.nas @@ -17,121 +17,114 @@ var eng_common_init = func { manStart[1].setValue(0); } -# Engine thrust commands +var ENGINE = { + reverseLever: [props.globals.getNode("/controls/engines/engine[0]/reverse-lever"), props.globals.getNode("/controls/engines/engine[1]/reverse-lever")], + reverseLeverTemp: [0, 0], + throttle: [props.globals.getNode("/controls/engines/engine[0]/throttle"), props.globals.getNode("/controls/engines/engine[1]/throttle")], + init: func() { + me.reverseLever[0].setBoolValue(0); + me.reverseLever[1].setBoolValue(0); + }, +}; + +# Engine Sim Control Stuff 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); + ENGINE.throttle[0].setValue(0); + 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); + ENGINE.throttle[0].setValue(0.63); } if (pts.Sim.Input.Selected.engine[1].getBoolValue()) { - pts.Controls.Engines.Engine.throttle[1].setValue(0.63); + 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); + ENGINE.throttle[0].setValue(0.8); } if (pts.Sim.Input.Selected.engine[1].getBoolValue()) { - pts.Controls.Engines.Engine.throttle[1].setValue(0.8); + 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); + ENGINE.throttle[0].setValue(1); } if (pts.Sim.Input.Selected.engine[1].getBoolValue()) { - pts.Controls.Engines.Engine.throttle[1].setValue(1); + 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); - #} +# Intentionally not using + or -, floating point error would be BAD +# We just based it off Engine 1 +var doRevThrust = func() { + ENGINE.reverseLeverTemp[0] = ENGINE.reverseLever[0].getValue(); + if ((pts.Gear.wow[1].getBoolValue() or pts.Gear.wow[2].getBoolValue()) and systems.FADEC.maxDetent.getValue() == 0) { + if (ENGINE.reverseLeverTemp[0] < 0.25) { + ENGINE.reverseLever[0].setValue(0.25); + ENGINE.reverseLever[1].setValue(0.25); + } else if (ENGINE.reverseLeverTemp[0] < 0.5) { + ENGINE.reverseLever[0].setValue(0.5); + ENGINE.reverseLever[1].setValue(0.5); + } else if (ENGINE.reverseLeverTemp[0] < 0.75) { + ENGINE.reverseLever[0].setValue(0.75); + ENGINE.reverseLever[1].setValue(0.75); + } else if (ENGINE.reverseLeverTemp[0] < 1.0) { + ENGINE.reverseLever[0].setValue(1.0); + ENGINE.reverseLever[1].setValue(1.0); + } + ENGINE.throttle[0].setValue(0); + ENGINE.throttle[1].setValue(0); + } else { + ENGINE.reverseLever[0].setValue(0); + ENGINE.reverseLever[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() { + ENGINE.reverseLeverTemp[0] = ENGINE.reverseLever[0].getValue(); + if ((pts.Gear.wow[1].getBoolValue() or pts.Gear.wow[2].getBoolValue()) and systems.FADEC.maxDetent.getValue() == 0) { + if (ENGINE.reverseLeverTemp[0] > 0.75) { + ENGINE.reverseLever[0].setValue(0.75); + ENGINE.reverseLever[1].setValue(0.75); + } else if (ENGINE.reverseLeverTemp[0] > 0.5) { + ENGINE.reverseLever[0].setValue(0.5); + ENGINE.reverseLever[1].setValue(0.5); + } else if (ENGINE.reverseLeverTemp[0] > 0.25) { + ENGINE.reverseLever[0].setValue(0.25); + ENGINE.reverseLever[1].setValue(0.25); + } else if (ENGINE.reverseLeverTemp[0] > 0) { + ENGINE.reverseLever[0].setValue(0); + ENGINE.reverseLever[1].setValue(0); + } + ENGINE.throttle[0].setValue(0); + ENGINE.throttle[1].setValue(0); + } else { + ENGINE.reverseLever[0].setValue(0); + ENGINE.reverseLever[1].setValue(0); + } } -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); - # } - #} +var toggleFastRevThrust = func() { + if ((pts.Gear.wow[1].getBoolValue() or pts.Gear.wow[2].getBoolValue()) and systems.FADEC.maxDetent.getValue() == 0) { + if (ENGINE.reverseLever[0].getValue() != 0) { # NOT a bool, this way it always closes even if partially open + ENGINE.reverseLever[0].setValue(0); + ENGINE.reverseLever[1].setValue(0); + } else { + ENGINE.reverseLever[0].setValue(1); + ENGINE.reverseLever[1].setValue(1); + } + ENGINE.throttle[0].setValue(0); + ENGINE.throttle[1].setValue(0); + } else { + ENGINE.reverseLever[0].setValue(0); + ENGINE.reverseLever[1].setValue(0); + } } diff --git a/Nasal/Systems/fadec-common.nas b/Nasal/Systems/fadec-common.nas index f4e7e441..4a5f83d5 100644 --- a/Nasal/Systems/fadec-common.nas +++ b/Nasal/Systems/fadec-common.nas @@ -27,7 +27,6 @@ var FADEC = { }, lvrClb: props.globals.getNode("/fdm/jsbsim/fadec/lvrclb"), lvrClbStatus: 0, - togaLk: props.globals.getNode("/fdm/jsbsim/fadec/toga-lk"), Lock: { thrLockAlert: props.globals.getNode("/fdm/jsbsim/fadec/thr-locked-alert"), thrLockCmd: props.globals.getNode("/fdm/jsbsim/fadec/thr-locked"), @@ -36,7 +35,9 @@ var FADEC = { thrLockTime: props.globals.getNode("/fdm/jsbsim/fadec/thr-locked-time"), }, manThrAboveMct: [0, 0], + maxDetent: props.globals.getNode("/fdm/jsbsim/fadec/max-detent"), n1Mode: [props.globals.getNode("/fdm/jsbsim/fadec/control-1/n1-mode"), props.globals.getNode("/fdm/jsbsim/fadec/control-2/n1-mode")], + togaLk: props.globals.getNode("/fdm/jsbsim/fadec/toga-lk"), init: func() { me.engOut.setBoolValue(0); me.Limit.activeMode.setBoolValue("TOGA"); diff --git a/Systems/a320-cfm56-5b4-engine-fadec.xml b/Systems/a320-cfm56-5b4-engine-fadec.xml index 07623ba0..4baec5e6 100644 --- a/Systems/a320-cfm56-5b4-engine-fadec.xml +++ b/Systems/a320-cfm56-5b4-engine-fadec.xml @@ -392,6 +392,150 @@ + + + + + + + /controls/engines/engine[0]/reverse-lever ge 0.25 + + /controls/engines/engine[0]/reverse-cmd + + + + + + /systems/hydraulic/green-psi ge 1500 + /systems/acconfig/autoconfig-running eq 1 + + + + + fadec/reverse-1/position-cmd + fadec/reverse-1/position-rate + /engines/engine[0]/reverser-pos-norm + + + + fadec/reverse-1/position-norm + 3.14 + + + + + + /controls/engines/engine[0]/reverse-lever eq 1 + + + /controls/engines/engine[0]/reverse-lever eq 0.75 + + + /controls/engines/engine[0]/reverse-lever eq 0.5 + + + 0.08 + 1.0 + + + + + + + 0.08 + + + /controls/engines/engine[0]/reverse-lever + 0.25 + + + + fadec/limit/mrev-norm + 0.08 + + 0.75 + + + + + + 0.08 + fadec/limit/mrev-norm + + + + + + + + /controls/engines/engine[1]/reverse-lever ge 0.25 + + /controls/engines/engine[1]/reverse-cmd + + + + + + /systems/hydraulic/yellow-psi ge 1500 + /systems/acconfig/autoconfig-running eq 1 + + + + + fadec/reverse-2/position-cmd + fadec/reverse-2/position-rate + /engines/engine[1]/reverser-pos-norm + + + + fadec/reverse-2/position-norm + 3.14 + + + + + + /controls/engines/engine[1]/reverse-lever eq 1 + + + /controls/engines/engine[1]/reverse-lever eq 0.75 + + + /controls/engines/engine[1]/reverse-lever eq 0.5 + + + 0.08 + 1.0 + + + + + + + 0.08 + + + /controls/engines/engine[1]/reverse-lever + 0.25 + + + + fadec/limit/mrev-norm + 0.08 + + 0.75 + + + + + + 0.08 + fadec/limit/mrev-norm + + + + + @@ -402,9 +546,9 @@ - + @@ -649,9 +793,9 @@ - + @@ -1039,9 +1183,9 @@ - + + fadec/reverse-1/position-norm ne 0 + fadec/athr/active eq 1 @@ -1067,9 +1211,9 @@ - + + fadec/reverse-2/position-norm ne 0 + fadec/athr/active eq 1 @@ -1129,5 +1273,79 @@ + + + + + + + /engines/engine[0]/n1-actual + + 20 -131 + 50 -64 + 100 48 + 110 65 + +
+
+
+ + + + + /engines/engine[1]/n1-actual + + 20 -131 + 50 -64 + 100 48 + 110 65 + +
+
+
+ + + + + fadec/control-1/lever-n1 + + 20 -131 + 50 -64 + 100 48 + 110 65 + +
+
+
+ + + + + fadec/control-2/lever-n1 + + 20 -131 + 50 -64 + 100 48 + 110 65 + +
+
+
+ + + + + fadec/limit/toga + + 20 -131 + 50 -64 + 100 48 + 110 65 + +
+
+
+ +
diff --git a/Systems/a320-cockpit.xml b/Systems/a320-cockpit.xml index 4335ba76..41c21b16 100644 --- a/Systems/a320-cockpit.xml +++ b/Systems/a320-cockpit.xml @@ -24,6 +24,26 @@ + + + /controls/engines/engine[0]/reverse-lever + 20 + + + + /controls/engines/engine[1]/reverse-lever + 20 + + + + /controls/engines/engine[0]/cutoff-switch + 20 + + + + /controls/engines/engine[1]/cutoff-switch + 20 + diff --git a/Systems/a320-fcs.xml b/Systems/a320-fcs.xml index 55e5e65a..2752da6f 100644 --- a/Systems/a320-fcs.xml +++ b/Systems/a320-fcs.xml @@ -639,40 +639,6 @@ - - - - /controls/engines/engine[0]/reverse-cmd - 20 - - - - /controls/engines/engine[1]/reverse-cmd - 20 - - - - /controls/engines/engine[0]/reverse-lever - 20 - - - - /controls/engines/engine[1]/reverse-lever - 20 - - - - /controls/engines/engine[0]/cutoff-switch - 20 - - - - /controls/engines/engine[1]/cutoff-switch - 20 - - - - diff --git a/Systems/upper-ecam.xml b/Systems/upper-ecam.xml index 607af68f..dd113deb 100644 --- a/Systems/upper-ecam.xml +++ b/Systems/upper-ecam.xml @@ -217,27 +217,10 @@ /ECAM/Upper/EGT[1] - + Flap Indicator