From 24f03e837c81f626bd3c3985138abe54972dd000 Mon Sep 17 00:00:00 2001 From: legoboyvdlp R Date: Fri, 29 May 2020 20:20:46 +0100 Subject: [PATCH] ECAM --- Models/Instruments/OHpanel/OHpanel.xml | 22 +-- Nasal/ECAM/ECAM-controller.nas | 5 + Nasal/ECAM/ECAM-logic.nas | 95 +++++++++ Systems/a320-aircond.xml | 50 ++++- Systems/a320-fwc.xml | 256 +++++++++++++++++++++++++ Systems/ecam-proprules.xml | 11 ++ 6 files changed, 417 insertions(+), 22 deletions(-) diff --git a/Models/Instruments/OHpanel/OHpanel.xml b/Models/Instruments/OHpanel/OHpanel.xml index 73dc4d92..9ffadeb1 100644 --- a/Models/Instruments/OHpanel/OHpanel.xml +++ b/Models/Instruments/OHpanel/OHpanel.xml @@ -4136,16 +4136,7 @@ ACPack1Btn1F - - - systems/pneumatic/pack1-fault - 1 - - - controls/pneumatics/switches/pack-1 - 1 - - + /systems/air-conditioning/warnings/pack-1-fault-light controls/switches/annun-test 1 @@ -4494,16 +4485,7 @@ ACPack2Btn1F - - - systems/pneumatic/pack2-fault - 1 - - - controls/pneumatics/switches/pack-2 - 1 - - + /systems/air-conditioning/warnings/pack-2-fault-light controls/switches/annun-test 1 diff --git a/Nasal/ECAM/ECAM-controller.nas b/Nasal/ECAM/ECAM-controller.nas index 883daa37..c1385511 100644 --- a/Nasal/ECAM/ECAM-controller.nas +++ b/Nasal/ECAM/ECAM-controller.nas @@ -48,6 +48,9 @@ var warningNodes = { waiRclosed: props.globals.initNode("/ECAM/warnings/flipflop/wing-anti-ice-right-closed"), procWaiShutdown: props.globals.initNode("/ECAM/warnings/logic/proc-wai-shutdown-output"), waiGndFlight: props.globals.initNode("/ECAM/warnings/logic/wing-anti-ice-gnd-fault"), + pack12Fault: props.globals.initNode("/ECAM/warnings/logic/pack-1-2-fault"), + pack1ResetPb: props.globals.initNode("/ECAM/warnings/logic/reset-pack-1-switch-cmd"), + pack2ResetPb: props.globals.initNode("/ECAM/warnings/logic/reset-pack-2-switch-cmd"), }, Timers: { apuFaultOutput: props.globals.initNode("/ECAM/warnings/timer/apu-fault-output"), @@ -69,6 +72,8 @@ var warningNodes = { eng2AiceNotOpen: props.globals.initNode("/ECAM/warnings/timer/eng-aice-2-closed-output"), waiLhiPr: props.globals.initNode("/ECAM/warnings/timer/wing-hi-pr-left"), waiRhiPr: props.globals.initNode("/ECAM/warnings/timer/wing-hi-pr-right"), + pack1Fault: props.globals.initNode("/ECAM/warnings/timer/pack-1-fault-2"), + pack2Fault: props.globals.initNode("/ECAM/warnings/timer/pack-2-fault-2"), }, Flipflops: { bleed1LowTemp: props.globals.initNode("/ECAM/warnings/logic/bleed-1-low-temp-flipflop-output"), diff --git a/Nasal/ECAM/ECAM-logic.nas b/Nasal/ECAM/ECAM-logic.nas index c1f4d2f8..a80833cd 100644 --- a/Nasal/ECAM/ECAM-logic.nas +++ b/Nasal/ECAM/ECAM-logic.nas @@ -1572,6 +1572,75 @@ var messages_priority_2 = func { } # PACK + if (pack12Fault.clearFlag == 0 and (phaseVar <= 2 or phaseVar >= 9 or phaseVar == 6) and warningNodes.Logic.pack12Fault.getValue()) { # TODO NOT OUTFLOW OR HOT AIR FAULT + pack12Fault.active = 1; + + if (systems.PNEU.Switch.pack1.getBoolValue()) { + pack12FaultPackOff1.active = 1; + } else { + ECAM_controller.warningReset(pack12FaultPackOff1); + } + + if (systems.PNEU.Switch.pack2.getBoolValue()) { + pack12FaultPackOff2.active = 1; + } else { + ECAM_controller.warningReset(pack12FaultPackOff2); + } + + if (!systems.PNEU.Switch.ramAir.getBoolValue() and !gnd and pts.Instrumentation.Altimeter.indicatedFt.getValue() >= 16000) { + pack12FaultDescend.active = 1; + } else { + ECAM_controller.warningReset(pack12FaultDescend); + } + + if (!systems.PNEU.Switch.ramAir.getBoolValue() and !gnd) { + pack12FaultDiffPr.active = 1; + pack12FaultDiffPr2.active = 1; + pack12FaultRam.active = 1; + } else { + ECAM_controller.warningReset(pack12FaultDiffPr); + ECAM_controller.warningReset(pack12FaultDiffPr2); + ECAM_controller.warningReset(pack12FaultRam); + } + + if (!gnd) { + pack12FaultMax.active = 1; + } else { + ECAM_controller.warningReset(pack12FaultMax); + } + + if (warningNodes.Logic.pack1ResetPb.getBoolValue() or warningNodes.Logic.pack2ResetPb.getBoolValue()) { + pack12FaultOvht.active = 1; + + if (warningNodes.Logic.pack1ResetPb.getBoolValue()) { + pack12FaultPackOn1.active = 1; + } else { + ECAM_controller.warningReset(pack12FaultPackOn1); + } + + if (warningNodes.Logic.pack2ResetPb.getBoolValue()) { + pack12FaultPackOn2.active = 1; + } else { + ECAM_controller.warningReset(pack12FaultPackOn2); + } + } else { + ECAM_controller.warningReset(pack12FaultOvht); + ECAM_controller.warningReset(pack12FaultPackOn1); + ECAM_controller.warningReset(pack12FaultPackOn2); + } + } else { + ECAM_controller.warningReset(pack12Fault); + ECAM_controller.warningReset(pack12FaultPackOff1); + ECAM_controller.warningReset(pack12FaultPackOff2); + ECAM_controller.warningReset(pack12FaultDescend); + ECAM_controller.warningReset(pack12FaultDiffPr); + ECAM_controller.warningReset(pack12FaultDiffPr2); + ECAM_controller.warningReset(pack12FaultRam); + ECAM_controller.warningReset(pack12FaultMax); + ECAM_controller.warningReset(pack12FaultOvht); + ECAM_controller.warningReset(pack12FaultPackOn1); + ECAM_controller.warningReset(pack12FaultPackOn2); + } if (pack1Ovht.clearFlag == 0 and (phaseVar <= 2 or phaseVar >= 9 or phaseVar == 6) and warningNodes.Flipflops.pack1Ovht.getValue()) { pack1Ovht.active = 1; @@ -1609,6 +1678,32 @@ var messages_priority_2 = func { ECAM_controller.warningReset(pack2OvhtPack); } + if (pack1Fault.clearFlag == 0 and (phaseVar <= 2 or phaseVar >= 9 or phaseVar == 6) and warningNodes.Timers.pack1Fault.getValue() == 1) { + pack1Fault.active = 1; + + if (systems.PNEU.Switch.pack1.getBoolValue()) { + pack1FaultOff.active = 1; + } else { + ECAM_controller.warningReset(pack1FaultOff); + } + } else { + ECAM_controller.warningReset(pack1Fault); + ECAM_controller.warningReset(pack1FaultOff); + } + + if (pack2Fault.clearFlag == 0 and (phaseVar <= 2 or phaseVar >= 9 or phaseVar == 6) and warningNodes.Timers.pack2Fault.getValue() == 1) { + pack2Fault.active = 1; + + if (systems.PNEU.Switch.pack2.getBoolValue()) { + pack2FaultOff.active = 1; + } else { + ECAM_controller.warningReset(pack2FaultOff); + } + } else { + ECAM_controller.warningReset(pack2Fault); + ECAM_controller.warningReset(pack2FaultOff); + } + # ENG AICE if (eng1IceClosed.clearFlag == 0 and (phaseVar <= 2 or phaseVar >= 9 or phaseVar == 6) and warningNodes.Timers.eng1AiceNotOpen.getValue() == 1) { eng1IceClosed.active = 1; diff --git a/Systems/a320-aircond.xml b/Systems/a320-aircond.xml index 2803012a..21a9702a 100644 --- a/Systems/a320-aircond.xml +++ b/Systems/a320-aircond.xml @@ -6,6 +6,7 @@ + /systems/air-conditioning/packs/pack-1-outlet-temp ge 260 /controls/engines/engine[0]/fire-btn eq 1 @@ -51,6 +52,7 @@ + /systems/air-conditioning/packs/pack-2-outlet-temp ge 260 /controls/engines/engine[1]/fire-btn eq 1 @@ -337,7 +339,7 @@ /systems/air-conditioning/packs/pack-1-outlet-temp ge 260 - + /ECAM/warnings/logic/pack-1-2-fault eq 0 @@ -345,7 +347,51 @@ /systems/air-conditioning/packs/pack-2-outlet-temp ge 260 - + /ECAM/warnings/logic/pack-1-2-fault eq 0 + + + + + + + /ECAM/warnings/logic/pack-1-disagree-input eq 1 + /systems/air-conditioning/warnings/pack-1-ovht eq 1 + + + + + + + /ECAM/warnings/logic/pack-2-disagree-input eq 1 + /systems/air-conditioning/warnings/pack-2-ovht eq 1 + + + + + + + + /systems/air-conditioning/valves/flow-control-valve-1 ne 1 + /systems/air-conditioning/valves/flow-control-valve-1-cmd eq 1 + + + /systems/air-conditioning/valves/flow-control-valve-1 ne 0 + /systems/air-conditioning/valves/flow-control-valve-1-cmd eq 0 + + + + + + + + + /systems/air-conditioning/valves/flow-control-valve-2 ne 1 + /systems/air-conditioning/valves/flow-control-valve-2-cmd eq 1 + + + /systems/air-conditioning/valves/flow-control-valve-2 ne 0 + /systems/air-conditioning/valves/flow-control-valve-2-cmd eq 0 + diff --git a/Systems/a320-fwc.xml b/Systems/a320-fwc.xml index 08c76752..2edf3c06 100644 --- a/Systems/a320-fwc.xml +++ b/Systems/a320-fwc.xml @@ -229,6 +229,77 @@ 100 0.025 + + + Timer for the ECAM system + /ECAM/warnings/logic/cranking-35-sec-input + 100 + 0.028571 + + + + Timer for the ECAM system + /ECAM/warnings/logic/pack-1-fault-closed-input + 100 + 0.1 + + + + Timer for the ECAM system + /ECAM/warnings/logic/pack-2-fault-closed-input + 100 + 0.1 + + + + Timer for the ECAM system + /ECAM/warnings/logic/pack-1-disagree-input + 100 + 0.1 + + + + Timer for the ECAM system + /ECAM/warnings/logic/pack-2-fault-closed-input + 100 + 0.1 + + + + Timer for the ECAM system + /ECAM/warnings/logic/ignition + 100 + 0.028571 + + + + Timer for the ECAM system + /ECAM/warnings/logic/pack-1-fault-input + 100 + 0.20 + + + + Timer for the ECAM system + /ECAM/warnings/logic/pack-2-fault-input + 100 + 0.20 + + + + Timer for the ECAM system + /ECAM/warnings/logic/pack-1-fault-warning-input + 100 + 0.50 + + + + Timer for the ECAM system + /ECAM/warnings/logic/pack-2-fault-warning-input + 100 + 0.50 + + @@ -864,6 +935,191 @@ + + + + /controls/engines/engine-start-switch eq 0 + + + + + + + + /controls/engines/engine-start-switch eq 0 + /ECAM/warnings/timer/cranking-35-sec eq 1 + + /controls/pneumatics/switches/pack-1 eq 1 + /systems/air-conditioning/valves/flow-control-valve-1 eq 0 + /systems/air-conditioning/packs/pack-1-outlet-temp lt 260 + /ECAM/warnings/logic/bleed-1-avail eq 1 + + + + + + + + /controls/engines/engine-start-switch eq 0 + /ECAM/warnings/timer/cranking-35-sec eq 1 + + /controls/pneumatics/switches/pack-2 eq 1 + /systems/air-conditioning/valves/flow-control-valve-2 eq 0 + /systems/air-conditioning/packs/pack-2-outlet-temp lt 260 + /ECAM/warnings/logic/bleed-2-avail eq 1 + + + + + + + /systems/air-conditioning/warnings/pack-1-disagree eq 1 + /ECAM/warnings/logic/bleed-1-avail eq 1 + + + + + + + /systems/air-conditioning/warnings/pack-2-disagree eq 1 + /ECAM/warnings/logic/bleed-2-avail eq 1 + + + + + + + /systems/pneumatics/valves/starter-valve-1 ne 0 + /systems/pneumatics/valves/starter-valve-2 ne 0 + /controls/engines/engine-start-switch eq 2 + /engines/engine[0]/state eq 1 + /engines/engine[0]/state eq 2 + /engines/engine[1]/state eq 1 + /engines/engine[1]/state eq 2 + + + + + + + /ECAM/warnings/timer/ignition eq 1 + /ECAM/warnings/logic/ignition eq 1 + + /controls/pneumatics/switches/pack-1 eq 0 + /ECAM/warning-phase eq 2 + + + + + + + + /ECAM/warnings/timer/ignition eq 1 + /ECAM/warnings/logic/ignition eq 1 + + /controls/pneumatics/switches/pack-2 eq 0 + /ECAM/warning-phase eq 2 + + + + + + + + /ECAM/warnings/logic/inhibit-pack-1-fault eq 0 + + /ECAM/warnings/timer/pack-1-fault-closed eq 1 + /ECAM/warnings/timer/pack-1-disagree eq 1 + + + + + + + + /ECAM/warnings/logic/inhibit-pack-2-fault eq 0 + + /ECAM/warnings/timer/pack-2-fault-closed eq 1 + /ECAM/warnings/timer/pack-2-disagree eq 1 + + + + + + + + /ECAM/warning-phase eq 6 + + + + + + + + /controls/pneumatics/switches/pack-2 eq 0 + + /ECAM/warnings/timer/pack-1-fault-5 eq 1 + /systems/air-conditioning/warnings/pack-1-ovht eq 1 + + + + /controls/pneumatics/switches/pack-1 eq 0 + + /ECAM/warnings/timer/pack-2-fault-5 eq 1 + /systems/air-conditioning/warnings/pack-2-ovht eq 1 + + + + /controls/pneumatics/switches/pack-1 eq 0 + /controls/pneumatics/switches/pack-2 eq 0 + + /ECAM/warning-phase ne 1 + /ECAM/warning-phase ne 2 + /ECAM/warning-phase ne 10 + + /ECAM/phases/monostable/phase-6-180 eq 0 + /ECAM/phases/monostable/phase-6-180-pulse eq 0 + + + + + + + + + + /controls/pneumatics/switches/pack-1 eq 0 + /ECAM/warnings/timer/pack-1-fault-5 eq 0 + /ECAM/warnings/flipflop/pack-1-ovht eq 1 + + + + + + + /controls/pneumatics/switches/pack-2 eq 0 + /ECAM/warnings/timer/pack-2-fault-5 eq 0 + /ECAM/warnings/flipflop/pack-2-ovht eq 1 + + + + + + + + /ECAM/warnings/timer/pack-1-fault-5 eq 1 + /ECAM/warnings/logic/pack-1-2-fault eq 0 + + + + + + + /ECAM/warnings/timer/pack-2-fault-5 eq 1 + /ECAM/warnings/logic/pack-1-2-fault eq 0 + + + diff --git a/Systems/ecam-proprules.xml b/Systems/ecam-proprules.xml index 1028fa55..31e0a268 100644 --- a/Systems/ecam-proprules.xml +++ b/Systems/ecam-proprules.xml @@ -412,6 +412,17 @@ /ECAM/phases/wing-anti-ice-pulse + + monostable + + + /ECAM/phases/monostable/phase-6-180 + + /ECAM/phases/monostable/phase-6-180-pulse + + monostable