From 16aba3cbfb5f98be8c2943b9963f7b1100b638c8 Mon Sep 17 00:00:00 2001 From: legoboyvdlp R Date: Tue, 2 Feb 2021 15:57:48 +0000 Subject: [PATCH] Big revision of the electrical warnings --- Nasal/ECAM/ECAM-controller.nas | 13 ++ Nasal/ECAM/ECAM-logic.nas | 235 +++++++++++++++++++++++++---- Nasal/ECAM/ECAM-messages.nas | 14 +- Systems/a320-fwc.xml | 261 +++++++++++++++++++++++++++++++++ Systems/ecam-proprules.xml | 11 ++ 5 files changed, 501 insertions(+), 33 deletions(-) diff --git a/Nasal/ECAM/ECAM-controller.nas b/Nasal/ECAM/ECAM-controller.nas index d5d82df3..aedf2937 100644 --- a/Nasal/ECAM/ECAM-controller.nas +++ b/Nasal/ECAM/ECAM-controller.nas @@ -87,6 +87,8 @@ var warningNodes = { spdBrkConfig2: props.globals.initNode("/ECAM/warnings/fctl/spd-brk-config-range"), pitchTrimConfig2: props.globals.initNode("/ECAM/warnings/fctl/pitch-trim-config-range"), rudTrimConfig2: props.globals.initNode("/ECAM/warnings/fctl/rudder-trim-config-range"), + dcEssFuelConsumptionIncreased: props.globals.initNode("/ECAM/warnings/logic/dc-ess-fuel-consumption-increased"), + dcEssFMSPredictions: props.globals.initNode("/ECAM/warnings/logic/dc-ess-fms-predictions-unreliable"), 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"), @@ -131,6 +133,17 @@ var warningNodes = { leftElevFail: props.globals.initNode("/ECAM/warnings/fctl/leftElevFault-output"), rightElevFail: props.globals.initNode("/ECAM/warnings/fctl/rightElevFault-output"), staticInverter: props.globals.initNode("/systems/electrical/some-electric-thingie/static-inverter-timer"), + dcEmerConfig: props.globals.initNode("/ECAM/warnings/logic/dc-emer-config-output"), + dc12Fault: props.globals.initNode("/ECAM/warnings/logic/dc-1-2-output"), + dcEssFault: props.globals.initNode("/ECAM/warnings/logic/dc-ess-output"), + dc1Fault: props.globals.initNode("/ECAM/warnings/logic/dc-1-output"), + dc2Fault: props.globals.initNode("/ECAM/warnings/logic/dc-2-output"), + dcBatFault: props.globals.initNode("/ECAM/warnings/logic/dc-bat-output"), + ac1Fault: props.globals.initNode("/ECAM/warnings/logic/ac-1-output"), + ac2Fault: props.globals.initNode("/ECAM/warnings/logic/ac-2-output"), + acEssFault: props.globals.initNode("/ECAM/warnings/logic/ac-ess-output"), + dcEssShed: props.globals.initNode("/ECAM/warnings/logic/dc-ess-shed-output"), + acEssShed: props.globals.initNode("/ECAM/warnings/logic/ac-ess-shed-output"), }, Flipflops: { apuGenFault: props.globals.initNode("/ECAM/warnings/flipflop/apu-gen-fault"), diff --git a/Nasal/ECAM/ECAM-logic.nas b/Nasal/ECAM/ECAM-logic.nas index 8d09bb15..066a7c91 100644 --- a/Nasal/ECAM/ECAM-logic.nas +++ b/Nasal/ECAM/ECAM-logic.nas @@ -1628,113 +1628,284 @@ var messages_priority_2 = func { } # 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) { + if (warningNodes.Timers.dcEmerConfig.getValue() == 1 and phaseVar2 != 4 and phaseVar2 != 8 and dcEmerconfig.clearFlag == 0) { dcEmerconfig.active = 1; - dcEmerconfigManOn.active = 1; + if (systems.ELEC.Source.EmerGen.relayPos.getValue() == 0 and dcEmerconfigManOn.clearFlag == 0) { + dcEmerconfigManOn.active = 1; + } else { + ECAM_controller.warningReset(dcEmerconfigManOn); + } + + if ((warningNodes.Logic.dcEssFuelConsumptionIncreased.getValue() or warningNodes.Logic.dc2FuelConsumptionIncreased.getValue()) and dcEmerconfigFuel.clearFlag == 0) { + dcEmerconfigFuel.active = 1; + } else { + ECAM_controller.warningReset(dcEmerconfigFuel); + } } else { ECAM_controller.warningReset(dcEmerconfig); ECAM_controller.warningReset(dcEmerconfigManOn); + ECAM_controller.warningReset(dcEmerconfigFuel); } - if (!systems.ELEC.EmerElec.getValue() and !dcEmerconfig.active and systems.ELEC.Bus.dc1.getValue() < 25 and systems.ELEC.Bus.dc2.getValue() < 25 and phaseVar2 != 4 and phaseVar2 != 8 and dcBus12Fault.clearFlag == 0) { + if (warningNodes.Timers.dc12Fault.getValue() == 1 and phaseVar2 != 4 and phaseVar2 != 8 and dcBus12Fault.clearFlag == 0) { dcBus12Fault.active = 1; - dcBus12FaultBlower.active = 1; - dcBus12FaultExtract.active = 1; - dcBus12FaultBaroRef.active = 1; - dcBus12FaultIcing.active = 1; - dcBus12FaultBrking.active = 1; + + if (dcBus12FaultBlower.clearFlag == 0) { + dcBus12FaultBlower.active = 1; + } else { + ECAM_controller.warningReset(dcBus12FaultBlower); + } + + if (dcBus12FaultExtract.clearFlag == 0) { + dcBus12FaultExtract.active = 1; + } else { + ECAM_controller.warningReset(dcBus12FaultExtract); + } + + if (dcBus12FaultBaroRef.clearFlag == 0) { + dcBus12FaultBaroRef.active = 1; + } else { + ECAM_controller.warningReset(dcBus12FaultBaroRef); + } + + if (dcBus12FaultFuel.clearFlag == 0 and warningNodes.Logic.dc2FuelConsumptionIncreased.getValue()) { + dcBus12FaultFuel.active = 1; + } else { + ECAM_controller.warningReset(dcBus12FaultFuel); + } + + if (dcBus12FaultPredict.clearFlag == 0 and warningNodes.Logic.dc2FMSPredictions.getValue()) { + dcBus12FaultPredict.active = 1; + } else { + ECAM_controller.warningReset(dcBus12FaultPredict); + } + + if (dcBus12FaultIcing.clearFlag == 0) { + dcBus12FaultIcing.active = 1; + } else { + ECAM_controller.warningReset(dcBus12FaultIcing); + } + + if (dcBus12FaultBrking.clearFlag == 0) { + dcBus12FaultBrking.active = 1; + } else { + ECAM_controller.warningReset(dcBus12FaultBrking); + } } else { ECAM_controller.warningReset(dcBus12Fault); ECAM_controller.warningReset(dcBus12FaultBlower); ECAM_controller.warningReset(dcBus12FaultExtract); ECAM_controller.warningReset(dcBus12FaultBaroRef); + ECAM_controller.warningReset(dcBus12FaultFuel); + ECAM_controller.warningReset(dcBus12FaultPredict); ECAM_controller.warningReset(dcBus12FaultIcing); ECAM_controller.warningReset(dcBus12FaultBrking); } - if (!systems.ELEC.EmerElec.getValue() and systems.ELEC.Bus.acEss.getValue() < 110 and phaseVar2 != 4 and phaseVar2 != 8 and AcBusEssFault.clearFlag == 0) { + if (warningNodes.Timers.acEssFault.getValue() == 1 and phaseVar2 != 4 and phaseVar2 != 8 and AcBusEssFault.clearFlag == 0) { AcBusEssFault.active = 1; - if (!systems.ELEC.Switch.acEssFeed.getBoolValue()) { + if (!systems.ELEC.Switch.acEssFeed.getBoolValue() and AcBusEssFaultFeed.clearFlag == 0) { AcBusEssFaultFeed.active = 1; } else { ECAM_controller.warningReset(AcBusEssFaultFeed); } - AcBusEssFaultAtc.active = 1; + + if (atc.transponderPanel.atcSel != 2 and AcBusEssFaultAtc.clearFlag == 0) { + AcBusEssFaultAtc.active = 1; + } else { + ECAM_controller.warningReset(AcBusEssFaultAtc); + } } else { ECAM_controller.warningReset(AcBusEssFault); ECAM_controller.warningReset(AcBusEssFaultFeed); ECAM_controller.warningReset(AcBusEssFaultAtc); } - if (!systems.ELEC.EmerElec.getValue() and systems.ELEC.Bus.ac1.getValue() < 110 and phaseVar2 != 4 and phaseVar2 != 8 and AcBus1Fault.clearFlag == 0) { + if (warningNodes.Timers.ac1Fault.getValue() == 1 and phaseVar2 != 4 and phaseVar2 != 8 and AcBus1Fault.clearFlag == 0) { AcBus1Fault.active = 1; - AcBus1FaultBlower.active = 1; + + if (AcBus1FaultBlower.clearFlag == 0) { + AcBus1FaultBlower.active = 1; + } else { + ECAM_controller.warningReset(AcBus1FaultBlower); + } } else { ECAM_controller.warningReset(AcBus1Fault); ECAM_controller.warningReset(AcBus1FaultBlower); } - if (!dcEmerconfig.active and systems.ELEC.Bus.dcEss.getValue() < 25 and phaseVar2 != 4 and phaseVar2 != 8 and DcEssBusFault.clearFlag == 0) { + if (warningNodes.Timers.dcEssFault.getValue() == 1 and phaseVar2 != 4 and phaseVar2 != 8 and DcEssBusFault.clearFlag == 0) { DcEssBusFault.active = 1; - DcEssBusFaultRadio.active = 1; - DcEssBusFaultRadio2.active = 1; - DcEssBusFaultBaro.active = 1; - DcEssBusFaultGPWS.active = 1; + if (DcEssBusFaultRadio.clearFlag == 0) { + DcEssBusFaultRadio.active = 1; + } else { + ECAM_controller.warningReset(DcEssBusFaultRadio); + } + if (DcEssBusFaultRadio2.clearFlag == 0) { + DcEssBusFaultRadio2.active = 1; + } else { + ECAM_controller.warningReset(DcEssBusFaultRadio2); + } + + if (DcEssBusFaultBaro.clearFlag == 0) { + DcEssBusFaultBaro.active = 1; + } else { + ECAM_controller.warningReset(DcEssBusFaultBaro); + } + + if (0 == 1 and systems.ELEC.Bus.dc2.getValue() < 25 and systems.ELEC.Bus.dcEss.getValue() < 25 and DcEssBusFaultGear.clearFlag == 0) { # LGCIU12 FAULT + DcEssBusFaultGear.active = 1; + } else { + ECAM_controller.warningReset(DcEssBusFaultGear); + } + + if (DcEssBusFaultGPWS.clearFlag == 0) { + DcEssBusFaultGPWS.active = 1; + } else { + ECAM_controller.warningReset(DcEssBusFaultGPWS); + } + + if (DcEssBusFaultFuel.clearFlag == 0 and warningNodes.Logic.dcEssFuelConsumptionIncreased.getValue()) { + DcEssBusFaultFuel.active = 1; + } else { + ECAM_controller.warningReset(DcEssBusFaultFuel); + } + + if (DcEssBusFaultPredict.clearFlag == 0 and warningNodes.Logic.dcEssFMSPredictions.getValue()) { + DcEssBusFaultPredict.active = 1; + } else { + ECAM_controller.warningReset(DcEssBusFaultPredict); + } + + if (DcEssBusFaultIcing.clearFlag == 0) { + DcEssBusFaultIcing.active = 1; + } else { + ECAM_controller.warningReset(DcEssBusFaultIcing); + } } else { ECAM_controller.warningReset(DcEssBusFault); ECAM_controller.warningReset(DcEssBusFaultRadio); ECAM_controller.warningReset(DcEssBusFaultRadio2); ECAM_controller.warningReset(DcEssBusFaultBaro); + ECAM_controller.warningReset(DcEssBusFaultGear); ECAM_controller.warningReset(DcEssBusFaultGPWS); + ECAM_controller.warningReset(DcEssBusFaultFuel); + ECAM_controller.warningReset(DcEssBusFaultPredict); + ECAM_controller.warningReset(DcEssBusFaultIcing); } - if (!systems.ELEC.EmerElec.getValue() and systems.ELEC.Bus.ac2.getValue() < 110 and phaseVar2 != 4 and phaseVar2 != 8 and AcBus2Fault.clearFlag == 0) { + if (warningNodes.Timers.ac2Fault.getValue() == 1 and phaseVar2 != 4 and phaseVar2 != 8 and AcBus2Fault.clearFlag == 0) { AcBus2Fault.active = 1; - AcBus2FaultExtract.active = 1; + if (AcBus2FaultExtract.clearFlag == 0) { + AcBus2FaultExtract.active = 1; + } else { + ECAM_controller.warningReset(AcBus2FaultExtract); + } + + if (atc.transponderPanel.atcSel != 1 and AcBus2FaultAtc.clearFlag == 0) { + AcBus2FaultAtc.active = 1; + } else { + ECAM_controller.warningReset(AcBus2FaultAtc); + } } else { ECAM_controller.warningReset(AcBus2Fault); ECAM_controller.warningReset(AcBus2FaultExtract); + ECAM_controller.warningReset(AcBus2FaultAtc); } - if (!systems.ELEC.EmerElec.getValue() and systems.ELEC.Bus.dc1.getValue() < 25 and systems.ELEC.Bus.dc2.getValue() >= 25 and phaseVar2 != 4 and phaseVar2 != 8 and dcBus1Fault.clearFlag == 0) { + if (warningNodes.Timers.dc1Fault.getValue() == 1 and phaseVar2 != 4 and phaseVar2 != 8 and dcBus1Fault.clearFlag == 0) { dcBus1Fault.active = 1; - dcBus1FaultBlower.active = 1; - dcBus1FaultExtract.active = 1; + + if (dcBus1FaultBlower.clearFlag == 0) { + dcBus1FaultBlower.active = 1; + } else { + ECAM_controller.warningReset(dcBus1FaultBlower); + } + if (dcBus1FaultExtract.clearFlag == 0) { + dcBus1FaultExtract.active = 1; + } else { + ECAM_controller.warningReset(dcBus1FaultExtract); + } + if (dcBus1FaultIcing.clearFlag == 0) { + dcBus1FaultIcing.active = 1; + } else { + ECAM_controller.warningReset(dcBus1FaultIcing); + } } else { ECAM_controller.warningReset(dcBus1Fault); ECAM_controller.warningReset(dcBus1FaultBlower); ECAM_controller.warningReset(dcBus1FaultExtract); + ECAM_controller.warningReset(dcBus1FaultIcing); } - if (!systems.ELEC.EmerElec.getValue() and systems.ELEC.Bus.dc1.getValue() >= 25 and systems.ELEC.Bus.dc2.getValue() <= 25 and phaseVar2 != 4 and phaseVar2 != 8 and dcBus2Fault.clearFlag == 0) { + if (warningNodes.Timers.dc2Fault.getValue() == 1 and phaseVar2 != 4 and phaseVar2 != 8 and dcBus2Fault.clearFlag == 0) { dcBus2Fault.active = 1; - dcBus2FaultAirData.active = 1; - dcBus2FaultBaro.active = 1; + + if (dcBus2FaultAirData.clearFlag == 0 and systems.SwitchingPanel.Switches.airData.getValue() != 1) { + dcBus2FaultAirData.active = 1; + } else { + ECAM_controller.warningReset(dcBus2FaultAirData); + } + + if (dcBus2FaultBaro.clearFlag == 0) { + dcBus2FaultBaro.active = 1; + } else { + ECAM_controller.warningReset(dcBus2FaultBaro); + } + + if (0 == 1 and systems.ELEC.Bus.dc2.getValue() < 25 and systems.ELEC.Bus.dcEss.getValue() < 25 and dcBus2FaultGear.clearFlag == 0) { # LGCIU12 FAULT + dcBus2FaultGear.active = 1; + } else { + ECAM_controller.warningReset(dcBus2FaultGear); + } + + if (dcBus2FaultFuel.clearFlag == 0 and warningNodes.Logic.dc2FuelConsumptionIncreased.getValue()) { + dcBus2FaultFuel.active = 1; + } else { + ECAM_controller.warningReset(dcBus2FaultFuel); + } + + if (dcBus2FaultPredict.clearFlag == 0 and warningNodes.Logic.dc2FMSPredictions.getValue()) { + dcBus2FaultPredict.active = 1; + } else { + ECAM_controller.warningReset(dcBus2FaultPredict); + } } else { ECAM_controller.warningReset(dcBus2Fault); ECAM_controller.warningReset(dcBus2FaultAirData); ECAM_controller.warningReset(dcBus2FaultBaro); + ECAM_controller.warningReset(dcBus2FaultGear); + ECAM_controller.warningReset(dcBus2FaultFuel); + ECAM_controller.warningReset(dcBus2FaultPredict); } - if (!systems.ELEC.EmerElec.getValue() and !dcEmerconfig.active and systems.ELEC.Bus.dcBat.getValue() < 25 and phaseVar2 != 4 and phaseVar2 != 5 and phaseVar2 != 7 and phaseVar2 != 8 and dcBusBatFault.clearFlag == 0) { + if (warningNodes.Timers.dcBatFault.getValue() == 1 and phaseVar2 != 4 and phaseVar2 != 5 and phaseVar2 != 7 and phaseVar2 != 8 and dcBusBatFault.clearFlag == 0) { dcBusBatFault.active = 1; } else { ECAM_controller.warningReset(dcBusBatFault); } - if (!(systems.ELEC.EmerElec.getValue() and !systems.ELEC.Source.EmerGen.relayPos.getValue()) and systems.ELEC.Bus.dcEssShed.getValue() < 25 and systems.ELEC.Bus.dcEss.getValue() >= 25 and phaseVar2 != 4 and phaseVar2 != 8 and dcBusEssShed.clearFlag == 0) { + if (warningNodes.Timers.dcEssShed.getValue() == 1 and phaseVar2 != 4 and phaseVar2 != 8 and dcBusEssShed.clearFlag == 0) { dcBusEssShed.active = 1; - dcBusEssShedExtract.active = 1; - dcBusEssShedIcing.active = 1; + if (dcBusEssShedExtract.clearFlag == 0) { + dcBusEssShedExtract.active = 1; + } else { + ECAM_controller.warningReset(dcBusEssShedExtract); + } + if (dcBusEssShedIcing.clearFlag == 0) { + dcBusEssShedIcing.active = 1; + } else { + ECAM_controller.warningReset(dcBusEssShedIcing); + } } else { ECAM_controller.warningReset(dcBusEssShed); ECAM_controller.warningReset(dcBusEssShedExtract); ECAM_controller.warningReset(dcBusEssShedIcing); } - if (!(systems.ELEC.EmerElec.getValue() and !systems.ELEC.Source.EmerGen.relayPos.getValue()) and systems.ELEC.Bus.acEssShed.getValue() < 110 and systems.ELEC.Bus.acEss.getValue() >= 110 and phaseVar2 != 4 and phaseVar2 != 8 and acBusEssShed.clearFlag == 0) { + if (warningNodes.Timers.acEssShed.getValue() == 1 and phaseVar2 != 4 and phaseVar2 != 8 and acBusEssShed.clearFlag == 0) { acBusEssShed.active = 1; - if (!systems.ELEC.EmerElec.getValue()) { + if (!systems.ELEC.EmerElec.getValue() and atc.transponderPanel.atcSel != 2 and acBusEssShedAtc.clearFlag == 0) { acBusEssShedAtc.active = 1; } else { ECAM_controller.warningReset(acBusEssShed); diff --git a/Nasal/ECAM/ECAM-messages.nas b/Nasal/ECAM/ECAM-messages.nas index d788112d..247f78a9 100644 --- a/Nasal/ECAM/ECAM-messages.nas +++ b/Nasal/ECAM/ECAM-messages.nas @@ -345,12 +345,15 @@ var warnings = std.Vector.new([ # 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"), + var dcEmerconfigFuel = warning.new(msg: " FUEL CONSUMPT INCRSD", colour: "c"), # DC BUS 1 OR 2 FAULT var dcBus12Fault = warning.new(msg: "ELEC DC BUS 1+2 FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1), var dcBus12FaultBlower = warning.new(msg: " -BLOWER............OVRD", colour: "c"), var dcBus12FaultExtract = warning.new(msg: " -EXTRACT...........OVRD", colour: "c"), var dcBus12FaultBaroRef = warning.new(msg: " -BARO REF.........CHECK", colour: "c"), + var dcBus12FaultFuel = warning.new(msg: " FUEL CONSUMPT INCRSD", colour: "c"), + var dcBus12FaultPredict = warning.new(msg: " FMS PRED UNRELIABLE", colour: "c"), var dcBus12FaultIcing = warning.new(msg: " AVOID ICING CONDITIONS", colour: "c"), var dcBus12FaultBrking = warning.new(msg: " MAX BRK........1000 PSI", colour: "c"), @@ -368,21 +371,30 @@ var warnings = std.Vector.new([ var DcEssBusFaultRadio = warning.new(msg: " -VHF 2 OR 3.........USE", colour: "c"), var DcEssBusFaultRadio2 = warning.new(msg: " -AUDIO SWTG......SELECT", colour: "c"), var DcEssBusFaultBaro = warning.new(msg: " -BARO REF.........CHECK", colour: "c"), - var DcEssBusFaultGPWS = warning.new(msg: " -GPWS...............OFF", colour: "c"), + var DcEssBusFaultGear = warning.new(msg: " -L/G.........GRVTY EXTN", colour: "c"), + var DcEssBusFaultGPWS = warning.new(msg: " -GPWS SYS...........OFF", colour: "c"), + var DcEssBusFaultFuel = warning.new(msg: " FUEL CONSUMPT INCRSD", colour: "c"), + var DcEssBusFaultPredict = warning.new(msg: " FMS PRED UNRELIABLE", colour: "c"), + var DcEssBusFaultIcing = warning.new(msg: " AVOID ICING CONDITIONS", colour: "c"), # AC BUS 2 FAULT var AcBus2Fault = warning.new(msg: "ELEC AC BUS 2 FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1), var AcBus2FaultExtract = warning.new(msg: " -EXTRACT...........OVRD", colour: "c"), + var AcBus2FaultAtc = warning.new(msg: " -ATC..............SYS 1", colour: "c"), # DC BUS 1 FAULT var dcBus1Fault = warning.new(msg: "ELEC DC BUS 1 FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1), var dcBus1FaultBlower = warning.new(msg: " -BLOWER............OVRD", colour: "c"), var dcBus1FaultExtract = warning.new(msg: " -EXTRACT...........OVRD", colour: "c"), + var dcBus1FaultIcing = warning.new(msg: " AVOID ICING CONDITIONS", colour: "c"), # DC BUS 2 FAULT var dcBus2Fault = warning.new(msg: "ELEC DC BUS 2 FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1), var dcBus2FaultAirData = warning.new(msg: " -AIR DATA SWTG......F/O", colour: "c"), var dcBus2FaultBaro = warning.new(msg: " -BARO REF.........CHECK", colour: "c"), + var dcBus2FaultGear = warning.new(msg: " -L/G.........GRVTY EXTN", colour: "c"), + var dcBus2FaultFuel = warning.new(msg: " FUEL CONSUMPT INCRSD", colour: "c"), + var dcBus2FaultPredict = warning.new(msg: " FMS PRED UNRELIABLE", colour: "c"), # DC BAT BUS FAULT var dcBusBatFault = warning.new(msg: "ELEC DC BAT BUS FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1), diff --git a/Systems/a320-fwc.xml b/Systems/a320-fwc.xml index c905cded..6e43357b 100644 --- a/Systems/a320-fwc.xml +++ b/Systems/a320-fwc.xml @@ -1757,6 +1757,90 @@ + + + + /ECAM/timer/ground-calc eq 0 + /ECAM/dual-failure-enabled eq 0 + + + + /ECAM/warnings/hyd/yellow-abnorm-lo-pr eq 1 + /systems/electrical/bus/dc-2 lt 25 + + /ECAM/warnings/logic/SFLAPEXT eq 1 + + + + + /ECAM/warnings/hyd/blue-abnorm-lo-pr ne 1 + /ECAM/warnings/hyd/green-abnorm-lo-pr eq 1 + + /systems/electrical/bus/dc-2 lt 25 + + /ECAM/warnings/logic/SSLATEXT eq 1 + + /ECAM/warnings/hyd/blue-abnorm-lo-pr eq 0 + /systems/electrical/bus/ac-1 ge 110 + + + + + + hydraulics/aileron-l/pressure-switch-or eq 1 + + /systems/fctl/elac2 eq 0 + /systems/hydraulic/green-psi lt 1500 + + /ECAM/warnings/logic/BLUE-EMER-ELEC ne 1 + + + hydraulics/aileron-r/pressure-switch-or eq 1 + + /systems/fctl/elac2 eq 0 + /systems/hydraulic/blue-psi lt 1500 + + + + + + /systems/electrical/bus/ac-1 ge 110 + /ECAM/warnings/hyd/green-abnorm-lo-pr eq 0 + + + /ECAM/warnings/hyd/blue-abnorm-lo-pr eq 1 + + hydraulics/spoiler-l3/final-deg gt 0.01 + hydraulics/spoiler-r3/final-deg gt 0.01 + + + + /ECAM/warnings/hyd/blue-abnorm-lo-pr eq 1 + + + hydraulics/aileron-l/pressure-switch-or eq 1 + + /systems/fctl/elac2 eq 0 + /systems/hydraulic/green-psi lt 1500 + + /ECAM/warnings/logic/BLUE-EMER-ELEC ne 1 + + + hydraulics/aileron-r/pressure-switch-or eq 1 + + /systems/fctl/elac1 eq 0 + /systems/hydraulic/green-psi lt 1500 + + + + + + + + + + + @@ -1764,6 +1848,183 @@ /systems/electrical/relay/dc-ess-shed-switch/contact-pos eq 0 + + + + + /ECAM/warnings/logic/dc-ess-fuel-consumption-increased eq 1 + /systems/electrical/bus/dc-2 ge 25 + + + + + + + /systems/electrical/some-electric-thingie/emer-elec-config ne 1 + /systems/electrical/bus/dc-1 lt 25 + /systems/electrical/bus/dc-2 lt 25 + /systems/electrical/bus/dc-ess lt 25 + + + + + /ECAM/warnings/logic/dc-emer-config + 120 + 5 + + + + + + /systems/electrical/some-electric-thingie/emer-elec-config ne 1 + /systems/electrical/bus/dc-1 lt 25 + /systems/electrical/bus/dc-2 lt 25 + /ECAM/warnings/logic/dc-emer-config ne 1 + + + + + /ECAM/warnings/logic/dc-1-2 + 120 + 0.5 + + + + + + /systems/electrical/bus/dc-ess lt 25 + /ECAM/warnings/logic/dc-emer-config ne 1 + + + + + /ECAM/warnings/logic/dc-ess-fault + 120 + 0.5 + + + + + + /systems/electrical/bus/dc-bat lt 25 + /ECAM/warnings/logic/dc-emer-config ne 1 + /systems/electrical/some-electric-thingie/emer-elec-config ne 1 + + + + + /ECAM/warnings/logic/dc-bat-fault + 120 + 5 + + + + + + /systems/electrical/bus/dc-1 lt 25 + /systems/electrical/bus/dc-2 ge 25 + /systems/electrical/some-electric-thingie/emer-elec-config ne 1 + + + + + /ECAM/warnings/logic/dc-1-fault + 120 + 0.5 + + + + + + /systems/electrical/bus/dc-2 lt 25 + /systems/electrical/bus/dc-1 ge 25 + /systems/electrical/some-electric-thingie/emer-elec-config ne 1 + + + + + /ECAM/warnings/logic/dc-2-fault + 120 + 0.5 + + + + + + /systems/electrical/bus/ac-1 lt 110 + /systems/electrical/some-electric-thingie/emer-elec-config ne 1 + + + + + /ECAM/warnings/logic/ac-1-fault + 120 + 5 + + + + + + /systems/electrical/bus/ac-2 lt 110 + /systems/electrical/some-electric-thingie/emer-elec-config ne 1 + + + + + /ECAM/warnings/logic/ac-2-fault + 120 + 5 + + + + + + /systems/electrical/bus/ac-ess lt 110 + /systems/electrical/some-electric-thingie/emer-elec-config ne 1 + + + + + /ECAM/warnings/logic/ac-ess-fault + 120 + 5 + + + + + + /systems/electrical/bus/dc-ess-shed lt 25 + /systems/electrical/bus/dc-ess ge 25 + + /systems/electrical/some-electric-thingie/emer-elec-config-10-sec ne 1 + /systems/electrical/some-electric-thingie/emer-elec-config ne 1 + + + + + + /ECAM/warnings/logic/dc-ess-shed-fault + 120 + 0.5 + + + + + + /systems/electrical/bus/ac-ess-shed lt 110 + /systems/electrical/bus/ac-ess ge 110 + + /systems/electrical/some-electric-thingie/emer-elec-config-10-sec ne 1 + /systems/electrical/some-electric-thingie/emer-elec-config ne 1 + + + + + + /ECAM/warnings/logic/ac-ess-shed-fault + 120 + 0.5 + diff --git a/Systems/ecam-proprules.xml b/Systems/ecam-proprules.xml index 0cc0f736..9aca49cd 100644 --- a/Systems/ecam-proprules.xml +++ b/Systems/ecam-proprules.xml @@ -78,6 +78,17 @@ /systems/electrical/some-electric-thingie/generator-2-reset + + monostable + + + /systems/electrical/some-electric-thingie/emer-elec-config + + /systems/electrical/some-electric-thingie/emer-elec-config-10-sec + + monostable