1
0
Fork 0

add ENG1/2 FAIL warnings, THR LVR NOT SET message

This commit is contained in:
legoboyvdlp R 2021-02-01 18:39:25 +00:00
parent cbc2f565f9
commit 146f14bde5
5 changed files with 606 additions and 18 deletions

View file

@ -89,6 +89,11 @@ var warningNodes = {
rudTrimConfig2: props.globals.initNode("/ECAM/warnings/fctl/rudder-trim-config-range"),
dc2FuelConsumptionIncreased: props.globals.initNode("/ECAM/warnings/logic/dc-2-fuel-consumption-increased"),
dc2FMSPredictions: props.globals.initNode("/ECAM/warnings/logic/dc-2-fms-predictions-unreliable"),
thrLeversNotSet: props.globals.initNode("/ECAM/warnings/logic/eng/thr-lever-not-set"),
revSet: props.globals.initNode("/ECAM/warnings/logic/eng/reverse-set"),
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"),
},
Timers: {
apuFaultOutput: props.globals.initNode("/ECAM/warnings/timer/apu-fault-output"),

View file

@ -1160,6 +1160,240 @@ var messages_priority_3 = func {
var messages_priority_2 = func {
phaseVar2 = phaseNode.getValue();
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()) {
engThrustLvrNotSetMCT.active = 1;
ECAM_controller.warningReset(engThrustLvrNotSetMCT);
} else {
engThrustLvrNotSetTO.active = 1;
ECAM_controller.warningReset(engThrustLvrNotSetTO);
}
} else {
ECAM_controller.warningReset(engThrustLvrNotSet);
ECAM_controller.warningReset(engThrustLvrNotSetMCT);
ECAM_controller.warningReset(engThrustLvrNotSetTO);
}
if ((phaseVar2 >= 5 and phaseVar2 <= 7) and warningNodes.Logic.revSet.getValue() and engRevSet.clearFlag == 0) {
engRevSet.active = 1;
if (engRevSetLevers.clearFlag == 0) {
engRevSetLevers.active = 1;
} else {
ECAM_controller.warningReset(engRevSetLevers);
}
} else {
ECAM_controller.warningReset(engRevSet);
ECAM_controller.warningReset(engRevSetLevers);
}
if (warningNodes.Logic.eng1Fail.getValue() and eng1Fail.clearFlag == 0) {
eng1Fail.active = 1;
if (0 == 1 and thrustMalfunction1.clearFlag == 0) { # OVER THR PROTECT
thrustMalfunction1.active = 1;
} else {
ECAM_controller.warningReset(thrustMalfunction1);
}
if (0 == 1 and shaftFailure1.clearFlag == 0) { # PW ONLY
shaftFailure1.active = 1;
} else {
ECAM_controller.warningReset(shaftFailure1);
}
if (phaseVar2 != 2 and phaseVar2 != 9 and pts.Controls.Engines.startSw.getValue() != 2 and eng1FailModeSel.clearFlag == 0) { # and not stall and not EGT protect
eng1FailModeSel.active = 1;
} else {
ECAM_controller.warningReset(eng1FailModeSel);
}
if (phaseVar2 != 4 and warningNodes.Logic.phase5Trans.getValue() == 1) {
if (eng1FailThrLvrIdle.clearFlag == 0 and pts.Controls.Engines.Engine.throttleLever[0].getValue() > 0.01) {
eng1FailThrLvrIdle.active = 1;
} else {
ECAM_controller.warningReset(eng1FailThrLvrIdle);
}
if (eng1FailNoRelight.clearFlag == 0 and phaseVar2 != 2 and phaseVar2 != 9 and pts.Controls.Engines.Engine.cutoffSw[0].getValue() == 0) {
eng1FailNoRelight.active = 1;
} else {
ECAM_controller.warningReset(eng1FailNoRelight);
}
if (eng1FailMasterOff.clearFlag == 0 and pts.Controls.Engines.Engine.cutoffSw[0].getValue() == 0) {
eng1FailMasterOff.active = 1;
} else {
ECAM_controller.warningReset(eng1FailMasterOff);
}
if (eng1FailDamage.clearFlag == 0 and systems.fireButtons[0].getValue() == 0) {
eng1FailDamage.active = 1;
} else {
ECAM_controller.warningReset(eng1FailDamage);
}
if (eng1FailFirePB.clearFlag == 0 and systems.fireButtons[0].getValue() == 0) {
eng1FailFirePB.active = 1;
} else {
ECAM_controller.warningReset(eng1FailFirePB);
}
if (eng1FailAgent1DischT.clearFlag == 0 and !systems.extinguisherBottles.vector[0].lightProp.getValue()) {
eng1FailAgent1DischT.active = 1;
} else {
ECAM_controller.warningReset(eng1FailAgent1DischT);
}
if (eng1FailAgent1Disch.clearFlag == 0 and !systems.extinguisherBottles.vector[0].lightProp.getValue()) {
eng1FailAgent1Disch.active = 1;
} else {
ECAM_controller.warningReset(eng1FailAgent1Disch);
}
if (eng1FailNoDamage.clearFlag == 0) {
eng1FailNoDamage.active = 1;
} else {
ECAM_controller.warningReset(eng1FailNoDamage);
}
if (eng1FailRelight.clearFlag == 0) {
eng1FailRelight.active = 1;
} else {
ECAM_controller.warningReset(eng1FailRelight);
}
} else {
ECAM_controller.warningReset(eng1FailThrLvrIdle);
ECAM_controller.warningReset(eng1FailNoRelight);
ECAM_controller.warningReset(eng1FailMasterOff);
ECAM_controller.warningReset(eng1FailDamage);
ECAM_controller.warningReset(eng1FailFirePB);
ECAM_controller.warningReset(eng1FailAgent1DischT);
ECAM_controller.warningReset(eng1FailAgent1Disch);
ECAM_controller.warningReset(eng1FailNoDamage);
ECAM_controller.warningReset(eng1FailRelight);
}
} else {
ECAM_controller.warningReset(eng1Fail);
ECAM_controller.warningReset(thrustMalfunction1);
ECAM_controller.warningReset(shaftFailure1);
ECAM_controller.warningReset(eng1FailModeSel);
ECAM_controller.warningReset(eng1FailThrLvrIdle);
ECAM_controller.warningReset(eng1FailNoRelight);
ECAM_controller.warningReset(eng1FailMasterOff);
ECAM_controller.warningReset(eng1FailDamage);
ECAM_controller.warningReset(eng1FailFirePB);
ECAM_controller.warningReset(eng1FailAgent1DischT);
ECAM_controller.warningReset(eng1FailAgent1Disch);
ECAM_controller.warningReset(eng1FailNoDamage);
ECAM_controller.warningReset(eng1FailRelight);
}
if (warningNodes.Logic.eng2Fail.getValue() and eng2Fail.clearFlag == 0) {
eng2Fail.active = 1;
if (0 == 1 and thrustMalfunction2.clearFlag == 0) { # OVER THR PROTECT
thrustMalfunction2.active = 1;
} else {
ECAM_controller.warningReset(thrustMalfunction2);
}
if (0 == 1 and shaftFailure2.clearFlag == 0) { # PW ONLY
shaftFailure2.active = 1;
} else {
ECAM_controller.warningReset(shaftFailure2);
}
if (phaseVar2 != 2 and phaseVar2 != 9 and pts.Controls.Engines.startSw.getValue() != 2 and eng2FailModeSel.clearFlag == 0) { # and not stall and not EGT protect
eng2FailModeSel.active = 1;
} else {
ECAM_controller.warningReset(eng2FailModeSel);
}
if (phaseVar2 != 4 and warningNodes.Logic.phase5Trans.getValue() == 1) {
if (eng2FailThrLvrIdle.clearFlag == 0 and pts.Controls.Engines.Engine.throttleLever[1].getValue() > 0.01) {
eng2FailThrLvrIdle.active = 1;
} else {
ECAM_controller.warningReset(eng2FailThrLvrIdle);
}
if (eng2FailNoRelight.clearFlag == 0 and phaseVar2 != 2 and phaseVar2 != 9 and pts.Controls.Engines.Engine.cutoffSw[1].getValue() == 0) {
eng2FailNoRelight.active = 1;
} else {
ECAM_controller.warningReset(eng2FailNoRelight);
}
if (eng2FailMasterOff.clearFlag == 0 and pts.Controls.Engines.Engine.cutoffSw[1].getValue() == 0) {
eng2FailMasterOff.active = 1;
} else {
ECAM_controller.warningReset(eng2FailMasterOff);
}
if (eng2FailDamage.clearFlag == 0 and systems.fireButtons[1].getValue() == 0) {
eng2FailDamage.active = 1;
} else {
ECAM_controller.warningReset(eng2FailDamage);
}
if (eng2FailFirePB.clearFlag == 0 and systems.fireButtons[1].getValue() == 0) {
eng2FailFirePB.active = 1;
} else {
ECAM_controller.warningReset(eng2FailFirePB);
}
if (eng2FailAgent1DischT.clearFlag == 0 and !systems.extinguisherBottles.vector[2].lightProp.getValue()) {
eng2FailAgent1DischT.active = 1;
} else {
ECAM_controller.warningReset(eng2FailAgent1DischT);
}
if (eng2FailAgent1Disch.clearFlag == 0 and !systems.extinguisherBottles.vector[2].lightProp.getValue()) {
eng2FailAgent1Disch.active = 1;
} else {
ECAM_controller.warningReset(eng2FailAgent1Disch);
}
if (eng2FailNoDamage.clearFlag == 0) {
eng2FailNoDamage.active = 1;
} else {
ECAM_controller.warningReset(eng2FailNoDamage);
}
if (eng2FailRelight.clearFlag == 0) {
eng2FailRelight.active = 1;
} else {
ECAM_controller.warningReset(eng2FailRelight);
}
} else {
ECAM_controller.warningReset(eng2FailThrLvrIdle);
ECAM_controller.warningReset(eng2FailNoRelight);
ECAM_controller.warningReset(eng2FailMasterOff);
ECAM_controller.warningReset(eng2FailDamage);
ECAM_controller.warningReset(eng2FailFirePB);
ECAM_controller.warningReset(eng2FailAgent1DischT);
ECAM_controller.warningReset(eng2FailAgent1Disch);
ECAM_controller.warningReset(eng2FailNoDamage);
ECAM_controller.warningReset(eng2FailRelight);
}
} else {
ECAM_controller.warningReset(eng2Fail);
ECAM_controller.warningReset(thrustMalfunction2);
ECAM_controller.warningReset(shaftFailure2);
ECAM_controller.warningReset(eng2FailModeSel);
ECAM_controller.warningReset(eng2FailThrLvrIdle);
ECAM_controller.warningReset(eng2FailNoRelight);
ECAM_controller.warningReset(eng2FailMasterOff);
ECAM_controller.warningReset(eng2FailDamage);
ECAM_controller.warningReset(eng2FailFirePB);
ECAM_controller.warningReset(eng2FailAgent1DischT);
ECAM_controller.warningReset(eng2FailAgent1Disch);
ECAM_controller.warningReset(eng2FailNoDamage);
ECAM_controller.warningReset(eng2FailRelight);
}
# 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;

View file

@ -10,6 +10,7 @@
# Left E/WD
var warnings = std.Vector.new([
# LEVEL 3 WARN
var stall = warning.new(msg: "", aural: 2),
var flap_not_zero = warning.new(msg: "F/CTL FLAP LVR NOT ZERO", colour: "r", aural: 0, light: 0, isMainMsg: 1),
@ -47,12 +48,12 @@ var warnings = std.Vector.new([
var eng1FireFlAgent1Timer = warning.new(msg: " -AGENT 1 AFT 10 S.DISCH", colour: "w"),
var eng1FireFlAgent1 = warning.new(msg: " -AGENT 1..........DISCH", colour: "c"),
var eng1FireFlATC = warning.new(msg: " -ATC.............NOTIFY", colour: "c"),
var eng1FireFl30Sec = warning.new(msg: " •IF FIRE AFTER 30 S:", colour: "w", isMainMsg: 1),
var eng1FireFl30Sec = warning.new(msg: " •IF FIRE AFTER 30 S:", colour: "w"),
var eng1FireFlAgent2 = warning.new(msg: " -AGENT 2..........DISCH", colour: "c"),
# ENG 1 FIRE (ground)
var eng1FireGnlever = warning.new(msg: " -THR LEVERS........IDLE", colour: "c"),
var eng1FireGnstopped = warning.new(msg: " •WHEN A/C IS STOPPED:", colour: "w", isMainMsg: 1),
var eng1FireGnstopped = warning.new(msg: " •WHEN A/C IS STOPPED:", colour: "w"),
var eng1FireGnparkbrk = warning.new(msg: " -PARKING BRK.........ON", colour: "c"),
var eng1FireGnATC = warning.new(msg: " -ATC.............NOTIFY", colour: "c"),
var eng1FireGncrew = warning.new(msg: " -CABIN CREW.......ALERT", colour: "c"),
@ -70,12 +71,12 @@ var warnings = std.Vector.new([
var eng2FireFlAgent1Timer = warning.new(msg: " -AGENT 1 AFT 10 S.DISCH", colour: "w"),
var eng2FireFlAgent1 = warning.new(msg: " -AGENT 1..........DISCH", colour: "c"),
var eng2FireFlATC = warning.new(msg: " -ATC.............NOTIFY", colour: "c"),
var eng2FireFl30Sec = warning.new(msg: " •IF FIRE AFTER 30 S:", colour: "w", isMainMsg: 1),
var eng2FireFl30Sec = warning.new(msg: " •IF FIRE AFTER 30 S:", colour: "w"),
var eng2FireFlAgent2 = warning.new(msg: " -AGENT 2..........DISCH", colour: "c"),
# ENG 2 FIRE (ground)
var eng2FireGnlever = warning.new(msg: " -THR LEVERS........IDLE", colour: "c"),
var eng2FireGnstopped = warning.new(msg: " •WHEN A/C IS STOPPED:", colour: "w", isMainMsg: 1),
var eng2FireGnstopped = warning.new(msg: " •WHEN A/C IS STOPPED:", colour: "w"),
var eng2FireGnparkbrk = warning.new(msg: " -PARKING BRK.........ON", colour: "c"),
var eng2FireGnATC = warning.new(msg: " -ATC.............NOTIFY", colour: "c"),
var eng2FireGncrew = warning.new(msg: " -CABIN CREW.......ALERT", colour: "c"),
@ -94,7 +95,7 @@ var warnings = std.Vector.new([
var ADR123FaultBUSSF = warning.new(msg: " -FO BKUP SPD/ALT.....ON", colour: "c"),
var ADR123FaultADRPB = warning.new(msg: " -ADR 1+2+3 P/B......OFF", colour: "c"),
var ADR123FaultSPD = warning.new(msg: " -SPD......FLY THE GREEN", colour: "c"),
var ADR123FaultAOADISAG = warning.new(msg: " •IF AOA DISAGREE: ", colour: "w", isMainMsg: 1),
var ADR123FaultAOADISAG = warning.new(msg: " •IF AOA DISAGREE: ", colour: "w"),
var ADR123FaultBUSSINOP = warning.new(msg: " BKUP SPD/ALT.DO NOT USE", colour: "c"),
var ADR123FaultSTBY = warning.new(msg: " -STBY INST.MAY BE UNREL", colour: "c"),
var ADR123FaultPROC = warning.new(msg: " -ALL ADR OFF PROC.APPLY", colour: "c"),
@ -123,7 +124,7 @@ var warnings = std.Vector.new([
var excessCabAlt = warning.new(msg: "CAB PR EXCESS CAB ALT", colour: "r", aural: 0, light: 0, isMainMsg: 1),
var excessCabAltMask = warning.new(msg: " -CREW OXY MASKS.....USE", colour: "c"),
var excessCabAltSigns = warning.new(msg: " -SIGNS...............ON", colour: "c"),
var excessCabAltEmerD = warning.new(msg: " •EMER DESCENT:", colour: "w", isMainMsg: 1),
var excessCabAltEmerD = warning.new(msg: " •EMER DESCENT:", colour: "w"),
var excessCabAltDES = warning.new(msg: " -DESCENT.......INITIATE", colour: "c"),
var excessCabAltTHRLVR = warning.new(msg: " -THR LEVERS........IDLE", colour: "c"),
var excessCabAltSPDBRK = warning.new(msg: " -SPD BRK...........FULL", colour: "c"),
@ -133,20 +134,20 @@ var warnings = std.Vector.new([
var excessCabAltPA = warning.new(msg: " -EMER DES (PA).ANNOUNCE", colour: "c"),
var excessCabAltXPDR = warning.new(msg: " -XPDR 7700.....CONSIDER", colour: "c"),
var excessCabAltMEA = warning.new(msg: " MAX FL.....100/MEA-MORA", colour: "c"),
var excessCabAltCabAlt = warning.new(msg: " •IF CAB ALT>14000 FT:", colour: "w", isMainMsg: 1),
var excessCabAltCabAlt = warning.new(msg: " •IF CAB ALT>14000 FT:", colour: "w"),
var excessCabAltMasks = warning.new(msg: " -PAX OXY MASKS...MAN ON", colour: "c"),
# ENG 1 OIL LO PR
var eng1OilLoPr = warning.new(msg: "ENG 1 OIL LO PR ", colour: "r", aural: 0, light: 0, isMainMsg: 1),
var eng1OilLoPrIf = warning.new(msg: " •IF OIL PR < 13 PSI :", colour: "w", isMainMsg: 1),
var eng1OilLoPrIf2 = warning.new(msg: " •IF OIL PR < 60 PSI :", colour: "w", isMainMsg: 1),
var eng1OilLoPrIf = warning.new(msg: " •IF OIL PR < 13 PSI :", colour: "w"),
var eng1OilLoPrIf2 = warning.new(msg: " •IF OIL PR < 60 PSI :", colour: "w"),
var eng1OilLoPrThrot = warning.new(msg: " -THR LEVER 1.......IDLE", colour: "c"),
var eng1OilLoPrMaster = warning.new(msg: " -ENG MASTER 1.......OFF", colour: "c"),
# ENG 2 OIL LO PR
var eng2OilLoPr = warning.new(msg: "ENG 2 OIL LO PR ", colour: "r", aural: 0, light: 0, isMainMsg: 1),
var eng2OilLoPrIf = warning.new(msg: " •IF OIL PR < 13 PSI :", colour: "w", isMainMsg: 1),
var eng2OilLoPrIf2 = warning.new(msg: " •IF OIL PR < 60 PSI :", colour: "w", isMainMsg: 1),
var eng2OilLoPrIf = warning.new(msg: " •IF OIL PR < 13 PSI :", colour: "w"),
var eng2OilLoPrIf2 = warning.new(msg: " •IF OIL PR < 60 PSI :", colour: "w"),
var eng2OilLoPrThrot = warning.new(msg: " -THR LEVER 2.......IDLE", colour: "c"),
var eng2OilLoPrMaster = warning.new(msg: " -ENG MASTER 2.......OFF", colour: "c"),
@ -161,7 +162,7 @@ var warnings = std.Vector.new([
var gearNotDownLocked = warning.new(msg: "L/G GEAR NOT DOWNLOCKED", colour: "r", aural: 0, light: 0, isMainMsg: 1),
var gearNotDownLockedRec = warning.new(msg: " -L/G LEVER......RECYCLE", colour: "c"),
var gearNotDownLockedWork = warning.new(msg: " •IF UNSUCCESSFUL:", colour: "w", isMainMsg: 1),
var gearNotDownLockedWork = warning.new(msg: " •IF UNSUCCESSFUL:", colour: "w"),
var gearNotDownLocked120 = warning.new(msg: " AFTER 120S:", colour: "w"),
var gearNotDownLockedGrav = warning.new(msg: " -L/G.........GRVTY EXTN", colour: "c"),
@ -171,17 +172,17 @@ var warnings = std.Vector.new([
# Cargo smoke
var cargoSmokeFwd = warning.new(msg: "SMOKE FWD CARGO SMOKE", colour: "r", aural: 0, light: 0, isMainMsg: 1),
var cargoSmokeFwdFans = warning.new(msg: " -CAB FANS...........OFF", colour: "c"),
var cargoSmokeFwdGrdClsd = warning.new(msg: " •IF FWD CRG CLSD:", colour: "w", isMainMsg: 1),
var cargoSmokeFwdGrdClsd = warning.new(msg: " •IF FWD CRG CLSD:", colour: "w"),
var cargoSmokeFwdAgent = warning.new(msg: " -AGENT............DISCH", colour: "c"),
var cargoSmokeFwdGrd = warning.new(msg: " •WHEN ON GROUND", colour: "w", isMainMsg: 1),
var cargoSmokeFwdDoors = warning.new(msg: " BEFORE OPEN CRG DOORS:", colour: "w", isMainMsg: 1),
var cargoSmokeFwdGrd = warning.new(msg: " •WHEN ON GROUND", colour: "w"),
var cargoSmokeFwdDoors = warning.new(msg: " BEFORE OPEN CRG DOORS:", colour: "w"),
var cargoSmokeFwdDisemb = warning.new(msg: "-PAX..........DISEMBARK", colour: "c"),
var cargoSmokeAft = warning.new(msg: "SMOKE AFT CARGO SMOKE", colour: "r", aural: 0, light: 0, isMainMsg: 1),
var cargoSmokeAftFans = warning.new(msg: " -CAB FANS...........OFF", colour: "c"),
var cargoSmokeAftGrdClsd = warning.new(msg: " •IF AFT CRG CLSD:", colour: "w", isMainMsg: 1),
var cargoSmokeAftGrdClsd = warning.new(msg: " •IF AFT CRG CLSD:", colour: "w"),
var cargoSmokeAftAgent = warning.new(msg: " -AGENT............DISCH", colour: "c"),
var cargoSmokeAftGrd = warning.new(msg: " •WHEN ON GROUND", colour: "w", isMainMsg: 1),
var cargoSmokeAftDoors = warning.new(msg: " BEFORE OPEN CRG DOORS:", colour: "w", isMainMsg: 1),
var cargoSmokeAftGrd = warning.new(msg: " •WHEN ON GROUND", colour: "w"),
var cargoSmokeAftDoors = warning.new(msg: " BEFORE OPEN CRG DOORS:", colour: "w"),
var cargoSmokeAftDisemb = warning.new(msg: "-PAX..........DISEMBARK", colour: "c"),
# Lavatory SMOKE
@ -256,6 +257,46 @@ var warnings = std.Vector.new([
var airBleedLeak = warning.new(msg: "AIR BLEED LEAK ", colour: "r", aural: 0, light: 0, isMainMsg: 1),
var airBleedLeakShut = warning.new(msg: " -X BLEED..........SHUT", colour: "c"),
# LEVEL 2 WARN
# THR LEVERS NOT SET
var engThrustLvrNotSet = warning.new(msg: "ENG THR LEVERS NOT SET ", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var engThrustLvrNotSetMCT = warning.new(msg: " -THR LEVERS ....MCT/FLX", colour: "c"),
var engThrustLvrNotSetTO = warning.new(msg: " -THR LEVERS.......TO/GA", colour: "c"),
# REV SET
var engRevSet = warning.new(msg: "ENG REV SET ", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var engRevSetLevers = warning.new(msg: " -THR LEVER......FWD THR", colour: "c"),
# ENG 1 FAIL
var eng1Fail = warning.new(msg: "ENG 1 FAIL ", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var thrustMalfunction1 = warning.new(msg: " THRUST MALFUNCTION ", colour: "a"),
var shaftFailure1 = warning.new(msg: " SHAFT FAILURE ", colour: "a"),
var eng1FailModeSel = warning.new(msg: " -ENG MODE SEL.......IGN", colour: "c"),
var eng1FailThrLvrIdle = warning.new(msg: " -THR LEVER 1.......IDLE", colour: "c"),
var eng1FailNoRelight = warning.new(msg: "•IF NO RELIGHT AFTER 30S", colour: "w"),
var eng1FailMasterOff = warning.new(msg: " -ENG MASTER 1.......OFF", colour: "c"),
var eng1FailDamage = warning.new(msg: " IF DAMAGE : ", colour: "w"),
var eng1FailFirePB = warning.new(msg: " -ENG 1 FIRE P/B....PUSH", colour: "c"),
var eng1FailAgent1DischT = warning.new(msg: " -AGENT1 AFTER 10S.DISCH", colour: "c"),
var eng1FailAgent1Disch = warning.new(msg: " -AGENT 1..........DISCH", colour: "c"),
var eng1FailNoDamage = warning.new(msg: " IF NO DAMAGE : ", colour: "w"),
var eng1FailRelight = warning.new(msg: " -ENG 1 RELIGHT.CONSIDER", 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"),
var shaftFailure2 = warning.new(msg: " SHAFT FAILURE ", colour: "a"),
var eng2FailModeSel = warning.new(msg: " -ENG MODE SEL.......IGN", colour: "c"),
var eng2FailThrLvrIdle = warning.new(msg: " -THR LEVER 2.......IDLE", colour: "c"),
var eng2FailNoRelight = warning.new(msg: "•IF NO RELIGHT AFTER 30S", colour: "w"),
var eng2FailMasterOff = warning.new(msg: " -ENG MASTER 2.......OFF", colour: "c"),
var eng2FailDamage = warning.new(msg: " IF DAMAGE : ", colour: "w"),
var eng2FailFirePB = warning.new(msg: " -ENG 2 FIRE P/B....PUSH", colour: "c"),
var eng2FailAgent1DischT = warning.new(msg: " -AGENT2 AFTER 10S.DISCH", colour: "c"),
var eng2FailAgent1Disch = warning.new(msg: " -AGENT 2..........DISCH", colour: "c"),
var eng2FailNoDamage = warning.new(msg: " IF NO DAMAGE : ", colour: "w"),
var eng2FailRelight = warning.new(msg: " -ENG 2 RELIGHT.CONSIDER", 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

@ -2183,6 +2183,245 @@
</test>
</switch>
<switch name="/ECAM/warnings/logic/eng/new-retard-logic">
<default value="0"/>
<test logic="OR" value="1">
/ECAM/warnings/logic/eng/eng-1-thr-lvr-abv-idle eq 1
/ECAM/warnings/logic/eng/eng-2-thr-lvr-abv-idle eq 1
</test>
</switch>
<switch name="/ECAM/warnings/logic/eng/thr-lever-1-mcl-mct">
<default value="0"/>
<test logic="AND" value="1">
/engines/engine[0]/n2-actual ge 59.4
/controls/engines/engine[0]/throttle-pos ge 0.60
/controls/engines/engine[0]/throttle-pos lt 0.78
</test>
</switch>
<actuator name="/ECAM/warnings/logic/eng/thr-lever-1-mcl-mct-output">
<input>/ECAM/warnings/logic/eng/thr-lever-1-mcl-mct</input>
<rate_limit sense="decr">120</rate_limit> <!-- Instant -->
<rate_limit sense="incr">0.25</rate_limit> <!-- 4 seconds -->
</actuator>
<switch name="/ECAM/warnings/logic/eng/thr-lever-1-mct">
<default value="0"/>
<test logic="AND" value="1">
/engines/engine[0]/n2-actual ge 59.4
/controls/engines/engine[0]/throttle-pos ge 0.60
/controls/engines/engine[0]/throttle-pos lt 0.83
</test>
</switch>
<actuator name="/ECAM/warnings/logic/eng/thr-lever-1-mct-output">
<input>/ECAM/warnings/logic/eng/thr-lever-1-mct</input>
<rate_limit sense="decr">120</rate_limit> <!-- Instant -->
<rate_limit sense="incr">0.25</rate_limit> <!-- 4 seconds -->
</actuator>
<switch name="/ECAM/warnings/logic/eng/thr-lever-2-mcl-mct">
<default value="0"/>
<test logic="AND" value="1">
/engines/engine[1]/n2-actual ge 59.4
/controls/engines/engine[1]/throttle-pos ge 0.60
/controls/engines/engine[1]/throttle-pos lt 0.78
</test>
</switch>
<actuator name="/ECAM/warnings/logic/eng/thr-lever-2-mcl-mct-output">
<input>/ECAM/warnings/logic/eng/thr-lever-2-mcl-mct</input>
<rate_limit sense="decr">120</rate_limit> <!-- Instant -->
<rate_limit sense="incr">0.25</rate_limit> <!-- 4 seconds -->
</actuator>
<switch name="/ECAM/warnings/logic/eng/thr-lever-2-mct">
<default value="0"/>
<test logic="AND" value="1">
/engines/engine[1]/n2-actual ge 59.4
/controls/engines/engine[1]/throttle-pos ge 0.60
/controls/engines/engine[1]/throttle-pos lt 0.83
</test>
</switch>
<actuator name="/ECAM/warnings/logic/eng/thr-lever-2-mct-output">
<input>/ECAM/warnings/logic/eng/thr-lever-2-mct</input>
<rate_limit sense="decr">120</rate_limit> <!-- Instant -->
<rate_limit sense="incr">0.25</rate_limit> <!-- 4 seconds -->
</actuator>
<switch name="/ECAM/warnings/logic/eng/thr-lever-not-set">
<default value="0"/>
<test logic="AND" value="1">
/ECAM/warnings/logic/eng/new-retard-logic ne 1
<test logic="OR">
<test logic="AND">
/systems/thrust/lim-flex 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
/ECAM/warnings/logic/eng/thr-lever-2-mcl-mct-output eq 1
</test>
<test logic="AND">
/systems/thrust/lim-flex 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
/ECAM/warnings/logic/eng/thr-lever-1-mcl-mct-output eq 1
</test>
</test>
</test>
</switch>
<switch name="/ECAM/warnings/logic/eng/reverse-set">
<default value="0"/>
<test logic="AND" value="1">
/ECAM/timer/ground-calc eq 0
<test logic="OR">
/gear/gear[1]/rollspeed-ms lt 36
/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
</test>
</test>
</switch>
<switch name="/ECAM/warnings/logic/eng/eng-1-fail-cond-set-input">
<default value="0"/>
<test logic="OR" value="1">
/engines/engine[0]/n2-actual ge 59.4
</test>
</switch>
<actuator name="/ECAM/warnings/logic/eng/eng-1-fail-cond-set">
<input>/ECAM/warnings/logic/eng/eng-1-fail-cond-set-input</input>
<rate_limit sense="decr">120</rate_limit> <!-- Instant -->
<rate_limit sense="incr">0.3333</rate_limit> <!-- 3 seconds -->
</actuator>
<switch name="/ECAM/warnings/logic/eng/eng-1-fail-cond-reset">
<default value="0"/>
<test logic="OR" value="1">
/controls/engines/engine[0]/cutoff-switch eq 1
/controls/engines/engine[0]/fire-btn eq 1
</test>
</switch>
<switch name="/ECAM/warnings/logic/eng/eng-2-fail-cond-set-input">
<default value="0"/>
<test logic="OR" value="1">
/engines/engine[1]/n2-actual ge 59.4
</test>
</switch>
<actuator name="/ECAM/warnings/logic/eng/eng-2-fail-cond-set">
<input>/ECAM/warnings/logic/eng/eng-2-fail-cond-set-input</input>
<rate_limit sense="decr">120</rate_limit> <!-- Instant -->
<rate_limit sense="incr">0.3333</rate_limit> <!-- 3 seconds -->
</actuator>
<switch name="/ECAM/warnings/logic/eng/eng-2-fail-cond-reset">
<default value="0"/>
<test logic="OR" value="1">
/controls/engines/engine[1]/cutoff-switch eq 1
/controls/engines/engine[1]/fire-btn eq 1
</test>
</switch>
<switch name="/ECAM/warnings/logic/eng/eng-1-fail-set">
<default value="0"/>
<test logic="AND" value="1">
/controls/engines/engine[0]/cutoff-switch eq 0
/controls/engines/engine[0]/fire-btn eq 0
/engines/engine[0]/n2-actual lt 59.4
/ECAM/warnings/logic/eng/eng-1-fail-cond eq 1
</test>
</switch>
<switch name="/ECAM/warnings/logic/eng/eng-2-fail-set">
<default value="0"/>
<test logic="AND" value="1">
/controls/engines/engine[1]/cutoff-switch eq 0
/controls/engines/engine[1]/fire-btn eq 0
/engines/engine[1]/n2-actual lt 59.4
/ECAM/warnings/logic/eng/eng-2-fail-cond eq 1
</test>
</switch>
<switch name="/ECAM/warnings/logic/eng/eng-1-fail-reset">
<default value="0"/>
<test logic="OR" value="1">
/engines/engine[0]/n2-actual ge 59.4
/ECAM/dual-failure-enabled eq 1
</test>
</switch>
<switch name="/ECAM/warnings/logic/eng/eng-2-fail-reset">
<default value="0"/>
<test logic="OR" value="1">
/engines/engine[1]/n2-actual ge 59.4
/ECAM/dual-failure-enabled eq 1
</test>
</switch>
<actuator name="/ECAM/warnings/logic/eng/eng-1-master-60-sec">
<input>/controls/engines/engine[0]/cutoff-switch</input>
<rate_limit sense="decr">120</rate_limit> <!-- Instant -->
<rate_limit sense="incr">0.01666666666</rate_limit> <!-- 60 seconds -->
</actuator>
<actuator name="/ECAM/warnings/logic/eng/eng-2-master-60-sec">
<input>/controls/engines/engine[1]/cutoff-switch</input>
<rate_limit sense="decr">120</rate_limit> <!-- Instant -->
<rate_limit sense="incr">0.01666666666</rate_limit> <!-- 60 seconds -->
</actuator>
<switch name="/ECAM/warnings/logic/eng/phase-5">
<default value="0"/>
<test logic="AND" value="1">
<test logic="AND">
/ECAM/warnings/logic/stall/phase-4-output eq 0
/ECAM/warnings/logic/stall/phase-4 eq 0
/ECAM/warning-phase eq 5
</test>
</test>
</switch>
<switch name="/ECAM/warnings/logic/eng/eng-1-fail">
<default value="0"/>
<test logic="AND" value="1">
<test logic="OR">
/ECAM/warnings/logic/eng/phase-5-output eq 1
/ECAM/warnings/logic/eng/phase-5-output-2 eq 1
/ECAM/warnings/logic/eng/eng-1-master-60-sec eq 0 <!-- because the sense of cutoff is inverted -->
</test>
/ECAM/warnings/logic/eng/eng-1-fail-output eq 1
</test>
</switch>
<switch name="/ECAM/warnings/logic/eng/eng-2-fail">
<default value="0"/>
<test logic="AND" value="1">
<test logic="OR">
/ECAM/warnings/logic/eng/phase-5-output eq 1
/ECAM/warnings/logic/eng/phase-5-output-2 eq 1
/ECAM/warnings/logic/eng/eng-2-master-60-sec eq 0 <!-- because the sense of cutoff is inverted -->
</test>
/ECAM/warnings/logic/eng/eng-2-fail-output eq 1
</test>
</switch>
</channel>
<channel name="Config" execrate="16">

View file

@ -1081,4 +1081,73 @@
</R>
<output>/ECAM/warnings/fctl/park-brk-config-output</output>
</flipflop>
<flipflop>
<type>RS</type>
<S>
<property>/ECAM/warnings/logic/eng/eng-1-fail-cond-set</property>
</S>
<R>
<property>/ECAM/warnings/logic/eng/eng-1-fail-cond-reset</property>
</R>
<output>/ECAM/warnings/logic/eng/eng-1-fail-cond</output>
</flipflop>
<flipflop>
<type>RS</type>
<S>
<property>/ECAM/warnings/logic/eng/eng-2-fail-cond-set</property>
</S>
<R>
<property>/ECAM/warnings/logic/eng/eng-2-fail-cond-reset</property>
</R>
<output>/ECAM/warnings/logic/eng/eng-2-fail-cond</output>
</flipflop>
<flipflop>
<type>RS</type>
<S>
<property>/ECAM/warnings/logic/eng/eng-1-fail-set</property>
</S>
<R>
<property>/ECAM/warnings/logic/eng/eng-1-fail-reset</property>
</R>
<output>/ECAM/warnings/logic/eng/eng-1-fail-output</output>
</flipflop>
<flipflop>
<type>RS</type>
<S>
<property>/ECAM/warnings/logic/eng/eng-2-fail-set</property>
</S>
<R>
<property>/ECAM/warnings/logic/eng/eng-2-fail-reset</property>
</R>
<output>/ECAM/warnings/logic/eng/eng-2-fail-output</output>
</flipflop>
<flipflop>
<type>monostable</type>
<inverted type="bool">true</inverted>
<time>
<value>30.0</value>
</time>
<S>
<property>/ECAM/warnings/logic/eng/phase-5</property>
</S>
<output>/ECAM/warnings/logic/eng/phase-5-output</output>
</flipflop>
<flipflop>
<type>monostable</type>
<inverted type="bool">true</inverted>
<time>
<value>1.0</value>
</time>
<S>
<property>/ECAM/warnings/logic/eng/phase-5-output</property>
</S>
<output>/ECAM/warnings/logic/eng/phase-5-output-2</output>
</flipflop>
</PropertyList>