1
0
Fork 0

ENG 1(2) SHUTDOWN

This commit is contained in:
legoboyvdlp R 2021-02-02 13:31:20 +00:00
parent 146f14bde5
commit b4a2a16656
6 changed files with 310 additions and 11 deletions

View file

@ -94,6 +94,8 @@ var warningNodes = {
eng1Fail: props.globals.initNode("/ECAM/warnings/logic/eng/eng-1-fail"),
eng2Fail: props.globals.initNode("/ECAM/warnings/logic/eng/eng-2-fail"),
phase5Trans: props.globals.initNode("/ECAM/warnings/logic/eng/phase-5-output"),
eng1Shutdown: props.globals.initNode("/ECAM/warnings/logic/eng/eng-1-shutdown"),
eng2Shutdown: props.globals.initNode("/ECAM/warnings/logic/eng/eng-2-shutdown"),
},
Timers: {
apuFaultOutput: props.globals.initNode("/ECAM/warnings/timer/apu-fault-output"),

View file

@ -1292,6 +1292,111 @@ var messages_priority_2 = func {
ECAM_controller.warningReset(eng1FailRelight);
}
if (warningNodes.Logic.eng1Shutdown.getValue() and eng1ShutDown.clearFlag == 0) {
eng1ShutDown.active = 1;
if (phaseVar2 != 4 and phaseVar2 != 5 and systems.fireButtons[0].getValue() == 0 and (systems.PNEU.Valves.wingLeft.getValue() or systems.PNEU.Valves.wingRight.getValue())) {
if (eng1ShutDownPack.clearFlag == 0 and systems.PNEU.Switch.pack1.getValue() and systems.PNEU.Switch.pack2.getValue()) {
eng1ShutDownPack.active = 1;
} else {
ECAM_controller.warningReset(eng1ShutDownPack);
}
if (eng1ShutDownXBleed.clearFlag == 0 and systems.PNEU.Valves.crossbleed.getValue() == 0) {
eng1ShutDownXBleed.active = 1;
} else {
ECAM_controller.warningReset(eng1ShutDownXBleed);
}
} else {
ECAM_controller.warningReset(eng1ShutDownPack);
ECAM_controller.warningReset(eng1ShutDownXBleed);
}
if (FWC.Timer.gnd.getValue() == 0 or systems.fireButtons[0].getValue() == 0) {
if (eng1ShutDownModeSel.clearFlag == 0 and pts.Controls.Engines.startSw.getValue() != 2) {
eng1ShutDownModeSel.active = 1;
} else {
ECAM_controller.warningReset(eng1ShutDownModeSel);
}
if (systems.FUEL.Switches.crossfeed.getValue() == 0) {
if (eng1ShutDownFuelLeak.clearFlag == 0) {
eng1ShutDownFuelLeak.active = 1;
} else {
ECAM_controller.warningReset(eng1ShutDownFuelLeak);
}
if (eng1ShutDownImbalance.clearFlag == 0) {
eng1ShutDownImbalance.active = 1;
} else {
ECAM_controller.warningReset(eng1ShutDownImbalance);
}
} else {
ECAM_controller.warningReset(eng1ShutDownFuelLeak);
ECAM_controller.warningReset(eng1ShutDownImbalance);
}
} else {
ECAM_controller.warningReset(eng1ShutDownModeSel);
ECAM_controller.warningReset(eng1ShutDownFuelLeak);
ECAM_controller.warningReset(eng1ShutDownImbalance);
}
if (eng1ShutDownTCAS.clearFlag == 0 and pts.Instrumentation.TCAS.Inputs.mode.getValue() != 2) {
eng1ShutDownTCAS.active = 1;
} else {
ECAM_controller.warningReset(eng1ShutDownTCAS);
}
if (0 == 1 and eng1ShutDownBuffet.clearFlag == 0) { # reverser unlocked
eng1ShutDownBuffet.active = 1;
} else {
ECAM_controller.warningReset(eng1ShutDownBuffet);
}
if (0 == 1 and eng1ShutDownSpeed.clearFlag == 0) {
eng1ShutDownSpeed.active = 1;
} else {
ECAM_controller.warningReset(eng1ShutDownSpeed);
}
if (systems.fireButtons[0].getValue() == 1) {
if (eng1ShutDownXBleedS.clearFlag == 0 and systems.PNEU.Valves.crossbleed.getValue() != 0) {
eng1ShutDownXBleedS.active = 1;
} else {
ECAM_controller.warningReset(eng1ShutDownXBleedS);
}
if (eng1ShutDownWingAI.clearFlag == 0 and (systems.PNEU.Valves.wingLeft.getValue() or systems.PNEU.Valves.wingRight.getValue())) {
eng1ShutDownWingAI.active = 1;
} else {
ECAM_controller.warningReset(eng1ShutDownWingAI);
}
if (eng1ShutDownIcing.clearFlag == 0) {
eng1ShutDownIcing.active = 1;
} else {
ECAM_controller.warningReset(eng1ShutDownIcing);
}
} else {
ECAM_controller.warningReset(eng1ShutDownXBleedS);
ECAM_controller.warningReset(eng1ShutDownWingAI);
ECAM_controller.warningReset(eng1ShutDownIcing);
}
} else {
ECAM_controller.warningReset(eng1ShutDown);
ECAM_controller.warningReset(eng1ShutDownPack);
ECAM_controller.warningReset(eng1ShutDownXBleed);
ECAM_controller.warningReset(eng1ShutDownModeSel);
ECAM_controller.warningReset(eng1ShutDownImbalance);
ECAM_controller.warningReset(eng1ShutDownTCAS);
ECAM_controller.warningReset(eng1ShutDownFuelLeak);
ECAM_controller.warningReset(eng1ShutDownBuffet);
ECAM_controller.warningReset(eng1ShutDownSpeed);
ECAM_controller.warningReset(eng1ShutDownXBleedS);
ECAM_controller.warningReset(eng1ShutDownWingAI);
ECAM_controller.warningReset(eng1ShutDownIcing);
}
if (warningNodes.Logic.eng2Fail.getValue() and eng2Fail.clearFlag == 0) {
eng2Fail.active = 1;
@ -1394,6 +1499,117 @@ var messages_priority_2 = func {
ECAM_controller.warningReset(eng2FailRelight);
}
if (warningNodes.Logic.eng2Shutdown.getValue() and eng2ShutDown.clearFlag == 0) {
eng2ShutDown.active = 1;
if (phaseVar2 != 4 and phaseVar2 != 5 and systems.fireButtons[1].getValue() == 0 and (systems.PNEU.Valves.wingLeft.getValue() or systems.PNEU.Valves.wingRight.getValue())) {
if (eng2ShutDownPack1.clearFlag == 0 and systems.ELEC.EmerElec.getValue() and systems.PNEU.Switch.pack1.getValue() and systems.PNEU.Switch.pack2.getValue()) {
eng2ShutDownPack1.active = 1;
} else {
ECAM_controller.warningReset(eng2ShutDownPack1);
}
if (eng2ShutDownPack.clearFlag == 0 and !systems.ELEC.EmerElec.getValue() and systems.PNEU.Switch.pack1.getValue() and systems.PNEU.Switch.pack2.getValue()) {
eng2ShutDownPack.active = 1;
} else {
ECAM_controller.warningReset(eng2ShutDownPack);
}
if (eng2ShutDownXBleed.clearFlag == 0 and systems.PNEU.Valves.crossbleed.getValue() == 0) {
eng2ShutDownXBleed.active = 1;
} else {
ECAM_controller.warningReset(eng2ShutDownXBleed);
}
} else {
ECAM_controller.warningReset(eng2ShutDownPack);
ECAM_controller.warningReset(eng2ShutDownXBleed);
}
if (FWC.Timer.gnd.getValue() == 0 or systems.fireButtons[1].getValue() == 0) {
if (eng2ShutDownModeSel.clearFlag == 0 and pts.Controls.Engines.startSw.getValue() != 2) {
eng2ShutDownModeSel.active = 1;
} else {
ECAM_controller.warningReset(eng2ShutDownModeSel);
}
if (systems.FUEL.Switches.crossfeed.getValue() == 0) {
if (eng2ShutDownFuelLeak.clearFlag == 0) {
eng2ShutDownFuelLeak.active = 1;
} else {
ECAM_controller.warningReset(eng2ShutDownFuelLeak);
}
if (eng2ShutDownImbalance.clearFlag == 0) {
eng2ShutDownImbalance.active = 1;
} else {
ECAM_controller.warningReset(eng2ShutDownImbalance);
}
} else {
ECAM_controller.warningReset(eng2ShutDownFuelLeak);
ECAM_controller.warningReset(eng2ShutDownImbalance);
}
} else {
ECAM_controller.warningReset(eng2ShutDownModeSel);
ECAM_controller.warningReset(eng2ShutDownFuelLeak);
ECAM_controller.warningReset(eng2ShutDownImbalance);
}
if (eng2ShutDownTCAS.clearFlag == 0 and pts.Instrumentation.TCAS.Inputs.mode.getValue() != 2) {
eng2ShutDownTCAS.active = 1;
} else {
ECAM_controller.warningReset(eng2ShutDownTCAS);
}
if (0 == 1 and eng2ShutDownBuffet.clearFlag == 0) { # reverser unlocked
eng2ShutDownBuffet.active = 1;
} else {
ECAM_controller.warningReset(eng2ShutDownBuffet);
}
if (0 == 1 and eng2ShutDownSpeed.clearFlag == 0) {
eng2ShutDownSpeed.active = 1;
} else {
ECAM_controller.warningReset(eng2ShutDownSpeed);
}
if (systems.fireButtons[1].getValue() == 1) {
if (eng2ShutDownXBleedS.clearFlag == 0 and systems.PNEU.Valves.crossbleed.getValue() != 0) {
eng2ShutDownXBleedS.active = 1;
} else {
ECAM_controller.warningReset(eng2ShutDownXBleedS);
}
if (eng2ShutDownWingAI.clearFlag == 0 and (systems.PNEU.Valves.wingLeft.getValue() or systems.PNEU.Valves.wingRight.getValue())) {
eng2ShutDownWingAI.active = 1;
} else {
ECAM_controller.warningReset(eng2ShutDownWingAI);
}
if (eng2ShutDownIcing.clearFlag == 0) {
eng2ShutDownIcing.active = 1;
} else {
ECAM_controller.warningReset(eng2ShutDownIcing);
}
} else {
ECAM_controller.warningReset(eng2ShutDownXBleedS);
ECAM_controller.warningReset(eng2ShutDownWingAI);
ECAM_controller.warningReset(eng2ShutDownIcing);
}
} else {
ECAM_controller.warningReset(eng2ShutDown);
ECAM_controller.warningReset(eng2ShutDownPack);
ECAM_controller.warningReset(eng2ShutDownXBleed);
ECAM_controller.warningReset(eng2ShutDownModeSel);
ECAM_controller.warningReset(eng2ShutDownImbalance);
ECAM_controller.warningReset(eng2ShutDownTCAS);
ECAM_controller.warningReset(eng2ShutDownFuelLeak);
ECAM_controller.warningReset(eng2ShutDownBuffet);
ECAM_controller.warningReset(eng2ShutDownSpeed);
ECAM_controller.warningReset(eng2ShutDownXBleedS);
ECAM_controller.warningReset(eng2ShutDownWingAI);
ECAM_controller.warningReset(eng2ShutDownIcing);
}
# DC EMER CONFIG
if (!systems.ELEC.EmerElec.getValue() and systems.ELEC.Bus.dcEss.getValue() < 25 and systems.ELEC.Bus.dc1.getValue() < 25 and systems.ELEC.Bus.dc2.getValue() < 25 and phaseVar2 != 4 and phaseVar2 != 8 and dcEmerconfig.clearFlag == 0) {
dcEmerconfig.active = 1;
@ -1875,7 +2091,7 @@ var messages_priority_2 = func {
warningNodes.Timers.bleed1Fault.setValue(0);
}
if (bleed1Fault.clearFlag == 0 and (phaseVar2 == 2 or phaseVar2 == 6 or phaseVar2 == 9) and warningNodes.Timers.bleed1FaultOutput.getValue() == 1 and (!systems.PNEU.Switch.pack1.getBoolValue() or !systems.PNEU.Switch.pack2.getBoolValue() or !(getprop("/ECAM/phases/wing-anti-ice-pulse") and getprop("/controls/ice-protection/wing")))) { # inverse pulse
if (bleed1Fault.clearFlag == 0 and (phaseVar2 == 2 or phaseVar2 == 6 or phaseVar2 == 9) and warningNodes.Timers.bleed1FaultOutput.getValue() == 1 and (!systems.PNEU.Switch.pack1.getBoolValue() or !systems.PNEU.Switch.pack2.getBoolValue() or !(getprop("/ECAM/phases/wing-anti-ice-pulse") and wing_pb.getValue()))) { # inverse pulse
bleed1Fault.active = 1;
} else {
ECAM_controller.warningReset(bleed1Fault);
@ -1912,7 +2128,7 @@ var messages_priority_2 = func {
warningNodes.Timers.bleed2Fault.setValue(0);
}
if (bleed2Fault.clearFlag == 0 and (phaseVar2 == 2 or phaseVar2 == 6 or phaseVar2 == 9) and warningNodes.Timers.bleed2FaultOutput.getValue() == 1 and (!systems.PNEU.Switch.pack1.getBoolValue() or !systems.PNEU.Switch.pack2.getBoolValue() or !(getprop("/ECAM/phases/wing-anti-ice-pulse") and getprop("/controls/ice-protection/wing")))) { # inverse pulse
if (bleed2Fault.clearFlag == 0 and (phaseVar2 == 2 or phaseVar2 == 6 or phaseVar2 == 9) and warningNodes.Timers.bleed2FaultOutput.getValue() == 1 and (!systems.PNEU.Switch.pack1.getBoolValue() or !systems.PNEU.Switch.pack2.getBoolValue() or !(getprop("/ECAM/phases/wing-anti-ice-pulse") and wing_pb.getValue()))) { # inverse pulse
bleed2Fault.active = 1;
} else {
ECAM_controller.warningReset(bleed2Fault);
@ -2430,7 +2646,7 @@ var messages_priority_2 = func {
} else {
ECAM_controller.warningReset(wingIceSysFaultXbld);
}
if ((warningNodes.Logic.waiLclosed.getValue() or warningNodes.Logic.waiRclosed.getValue()) and getprop("/controls/ice-protection/wing")) {
if ((warningNodes.Logic.waiLclosed.getValue() or warningNodes.Logic.waiRclosed.getValue()) and wing_pb.getValue()) {
wingIceSysFaultOff.active = 1;
} else {
ECAM_controller.warningReset(wingIceSysFaultOff);
@ -2451,7 +2667,7 @@ var messages_priority_2 = func {
if (wingIceOpenGnd.clearFlag == 0 and warningNodes.Logic.waiGndFlight.getValue() and (phaseVar2 <= 2 or phaseVar2 >= 9)) {
wingIceOpenGnd.active = 1;
if (pts.Gear.wow[1].getValue() and getprop("/controls/ice-protection/wing")) {
if (pts.Gear.wow[1].getValue() and wing_pb.getValue()) {
wingIceOpenGndShut.active = 1;
} else {
ECAM_controller.warningReset(wingIceOpenGndShut);
@ -2998,7 +3214,7 @@ var messages_right_memo = func {
eng_aice.active = 0;
}
if (getprop("/controls/ice-protection/wing") == 1) {
if (wing_pb.getValue() == 1) {
wing_aice.active = 1;
} else {
wing_aice.active = 0;

View file

@ -282,6 +282,20 @@ var warnings = std.Vector.new([
var eng1FailNoDamage = warning.new(msg: " IF NO DAMAGE : ", colour: "w"),
var eng1FailRelight = warning.new(msg: " -ENG 1 RELIGHT.CONSIDER", colour: "c"),
# ENG 1 SHUT DOWN
var eng1ShutDown = warning.new(msg: "ENG 1 SHUT DOWN ", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var eng1ShutDownPack = warning.new(msg: " -PACK 1.............OFF", colour: "c"),
var eng1ShutDownXBleed = warning.new(msg: " -X BLEED...........OPEN", colour: "c"),
var eng1ShutDownModeSel = warning.new(msg: " -ENG MODE SEL.......IGN", colour: "c"),
var eng1ShutDownFuelLeak = warning.new(msg: " •IF NO FUEL LEAK :", colour: "w"),
var eng1ShutDownImbalance = warning.new(msg: " -IMBALANCE......MONITOR", colour: "c"),
var eng1ShutDownTCAS = warning.new(msg: " -TCAS MODE SEL.......TA", colour: "c"),
var eng1ShutDownBuffet = warning.new(msg: " •IF BUFFET : ", colour: "w"),
var eng1ShutDownSpeed = warning.new(msg: " MAX SPEED...........240", colour: "c"),
var eng1ShutDownXBleedS = warning.new(msg: " -X BLEED...........SHUT", colour: "c"),
var eng1ShutDownWingAI = warning.new(msg: " -WING ANTI ICE......OFF", colour: "c"),
var eng1ShutDownIcing = warning.new(msg: " AVOID ICING CONDITIONS", colour: "c"),
# ENG 2 FAIL
var eng2Fail = warning.new(msg: "ENG 2 FAIL ", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var thrustMalfunction2 = warning.new(msg: " THRUST MALFUNCTION ", colour: "a"),
@ -297,6 +311,21 @@ var warnings = std.Vector.new([
var eng2FailNoDamage = warning.new(msg: " IF NO DAMAGE : ", colour: "w"),
var eng2FailRelight = warning.new(msg: " -ENG 2 RELIGHT.CONSIDER", colour: "c"),
# ENG 2 SHUT DOWN
var eng2ShutDown = warning.new(msg: "ENG 2 SHUT DOWN ", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var eng2ShutDownPack1 = warning.new(msg: " -PACK 1.............OFF", colour: "c"),
var eng2ShutDownPack = warning.new(msg: " -PACK 2.............OFF", colour: "c"),
var eng2ShutDownXBleed = warning.new(msg: " -X BLEED...........OPEN", colour: "c"),
var eng2ShutDownModeSel = warning.new(msg: " -ENG MODE SEL.......IGN", colour: "c"),
var eng2ShutDownFuelLeak = warning.new(msg: " •IF NO FUEL LEAK :", colour: "w"),
var eng2ShutDownImbalance = warning.new(msg: " -IMBALANCE......MONITOR", colour: "c"),
var eng2ShutDownTCAS = warning.new(msg: " -TCAS MODE SEL.......TA", colour: "c"),
var eng2ShutDownBuffet = warning.new(msg: " •IF BUFFET : ", colour: "w"),
var eng2ShutDownSpeed = warning.new(msg: " MAX SPEED...........240", colour: "c"),
var eng2ShutDownXBleedS = warning.new(msg: " -X BLEED...........SHUT", colour: "c"),
var eng2ShutDownWingAI = warning.new(msg: " -WING ANTI ICE......OFF", colour: "c"),
var eng2ShutDownIcing = warning.new(msg: " AVOID ICING CONDITIONS", colour: "c"),
# DC EMER CONFIG
var dcEmerconfig = warning.new(msg: "ELEC DC EMER CONFIG", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var dcEmerconfigManOn = warning.new(msg: " -EMER ELEC PWR...MAN ON", colour: "c"),

View file

@ -20,13 +20,13 @@ var Transponder = {
activeADIRS: 1,
condition: 0,
failed: 0,
codeDigitsNodes: [props.globals.getNode("instrumentation/transponder/inputs/digit[0]", 1), props.globals.getNode("instrumentation/transponder/inputs/digit[1]", 1), props.globals.getNode("instrumentation/transponder/inputs/digit[2]", 1), props.globals.getNode("instrumentation/transponder/inputs/digit[3]", 1)],
serviceableNode: props.globals.getNode("instrumentation/transponder/serviceable", 1),
knobNode: props.globals.getNode("instrumentation/transponder/inputs/knob-mode", 1),
identNode: props.globals.getNode("instrumentation/transponder/inputs/ident-btn", 1),
codeDigitsNodes: [props.globals.getNode("/instrumentation/transponder/inputs/digit[0]", 1), props.globals.getNode("/instrumentation/transponder/inputs/digit[1]", 1), props.globals.getNode("/instrumentation/transponder/inputs/digit[2]", 1), props.globals.getNode("instrumentation/transponder/inputs/digit[3]", 1)],
serviceableNode: props.globals.getNode("/instrumentation/transponder/serviceable", 1),
knobNode: props.globals.getNode("/instrumentation/transponder/inputs/knob-mode", 1),
identNode: props.globals.getNode("/instrumentation/transponder/inputs/ident-btn", 1),
ac1Node: props.globals.getNode("/systems/electrical/bus/ac-1", 1),
tcasNode: props.globals.getNode("instrumentation/tcas/inputs/mode"),
aglNode: props.globals.getNode("position/gear-agl-ft", 1),
tcasNode: props.globals.getNode("/instrumentation/tcas/inputs/mode"),
aglNode: props.globals.getNode("/position/gear-agl-ft", 1),
electricNode: props.globals.getNode("/systems/electrical/outputs/transponder", 1), # communicate to generic systems
new: func(elecSrc, ADIRS) {
var t = {parents:[Transponder]};

View file

@ -99,6 +99,8 @@ var PNEU = {
hotAir: props.globals.getNode("/systems/air-conditioning/valves/hot-air"),
starter1: props.globals.getNode("/systems/pneumatics/valves/starter-valve-1"),
starter2: props.globals.getNode("/systems/pneumatics/valves/starter-valve-2"),
wingLeft: props.globals.getNode("/systems/pneumatics/valves/wing-ice-1"),
wingRight: props.globals.getNode("/systems/pneumatics/valves/wing-ice-2"),
},
pressMode: props.globals.getNode("/systems/pressurization/mode", 1),
init: func() {

View file

@ -2422,6 +2422,56 @@
</test>
</switch>
<switch name="/ECAM/warnings/logic/eng/eng-shutdown-phase">
<default value="0"/>
<test logic="OR" value="1">
/ECAM/warning-phase eq 1
/ECAM/warning-phase eq 2
/ECAM/warning-phase eq 9
/ECAM/warning-phase eq 10
</test>
</switch>
<switch name="/ECAM/warnings/logic/eng/eng-1-shutdown">
<default value="0"/>
<test logic="AND" value="1">
/ECAM/dual-failure-enabled eq 0
<test logic="OR">
<test logic="AND">
<test logic="OR">
/ECAM/warnings/logic/eng/eng-shutdown-phase eq 1
/ECAM/timer/ground-calc eq 0
</test>
/controls/engines/engine[0]/fire-btn eq 1
</test>
<test logic="AND">
/ECAM/warnings/logic/eng/eng-shutdown-phase eq 0
/controls/engines/engine[0]/cutoff-switch eq 1
</test>
</test>
</test>
</switch>
<switch name="/ECAM/warnings/logic/eng/eng-2-shutdown">
<default value="0"/>
<test logic="AND" value="1">
/ECAM/dual-failure-enabled eq 0
<test logic="OR">
<test logic="AND">
<test logic="OR">
/ECAM/warnings/logic/eng/eng-shutdown-phase eq 1
/ECAM/timer/ground-calc eq 0
</test>
/controls/engines/engine[1]/fire-btn eq 1
</test>
<test logic="AND">
/ECAM/warnings/logic/eng/eng-shutdown-phase eq 0
/controls/engines/engine[1]/cutoff-switch eq 1
</test>
</test>
</test>
</switch>
</channel>
<channel name="Config" execrate="16">