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 @@
+
+ monostable
+
+
+ /ECAM/phases/monostable/phase-6-180
+
+
+
+
monostable