1
0
Fork 0

Big revision of the electrical warnings

This commit is contained in:
legoboyvdlp R 2021-02-02 15:57:48 +00:00
parent d73eecc4f3
commit 16aba3cbfb
5 changed files with 501 additions and 33 deletions

View file

@ -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"),

View file

@ -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);

View file

@ -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),

View file

@ -1757,6 +1757,90 @@
</test>
</switch>
<switch name="/ECAM/warnings/logic/dc-ess-fuel-consumption-increased">
<default value="0"/>
<test logic="AND" value="1">
/ECAM/timer/ground-calc eq 0
/ECAM/dual-failure-enabled eq 0
<test logic="OR">
<test logic="AND">
<test logic="OR">
/ECAM/warnings/hyd/yellow-abnorm-lo-pr eq 1
/systems/electrical/bus/dc-2 lt 25
</test>
/ECAM/warnings/logic/SFLAPEXT eq 1
</test>
<test logic="AND">
<test logic="OR">
<test logic="AND">
/ECAM/warnings/hyd/blue-abnorm-lo-pr ne 1
/ECAM/warnings/hyd/green-abnorm-lo-pr eq 1
</test>
/systems/electrical/bus/dc-2 lt 25
</test>
/ECAM/warnings/logic/SSLATEXT eq 1
<test logic="OR">
/ECAM/warnings/hyd/blue-abnorm-lo-pr eq 0
/systems/electrical/bus/ac-1 ge 110
</test>
</test>
<test logic="AND">
<test logic="OR">
<test logic="AND">
hydraulics/aileron-l/pressure-switch-or eq 1
<test logic="OR">
/systems/fctl/elac2 eq 0
/systems/hydraulic/green-psi lt 1500
</test>
/ECAM/warnings/logic/BLUE-EMER-ELEC ne 1
</test>
<test logic="AND">
hydraulics/aileron-r/pressure-switch-or eq 1
<test logic="OR">
/systems/fctl/elac2 eq 0
/systems/hydraulic/blue-psi lt 1500
</test>
</test>
</test>
</test>
<test logic="AND">
/systems/electrical/bus/ac-1 ge 110
/ECAM/warnings/hyd/green-abnorm-lo-pr eq 0
<test logic="OR">
<test logic="AND">
/ECAM/warnings/hyd/blue-abnorm-lo-pr eq 1
<test logic="OR">
hydraulics/spoiler-l3/final-deg gt 0.01
hydraulics/spoiler-r3/final-deg gt 0.01
</test>
</test>
<test logic="AND">
/ECAM/warnings/hyd/blue-abnorm-lo-pr eq 1
<test logic="OR">
<test logic="AND">
hydraulics/aileron-l/pressure-switch-or eq 1
<test logic="OR">
/systems/fctl/elac2 eq 0
/systems/hydraulic/green-psi lt 1500
</test>
/ECAM/warnings/logic/BLUE-EMER-ELEC ne 1
</test>
<test logic="AND">
hydraulics/aileron-r/pressure-switch-or eq 1
<test logic="OR">
/systems/fctl/elac1 eq 0
/systems/hydraulic/green-psi lt 1500
</test>
</test>
</test>
</test>
</test>
</test>
</test>
</test>
</switch>
<switch name="/ECAM/warnings/logic/dc-2-fms-predictions-unreliable">
<default value="0"/>
<test logic="AND" value="1">
@ -1764,6 +1848,183 @@
/systems/electrical/relay/dc-ess-shed-switch/contact-pos eq 0
</test>
</switch>
<switch name="/ECAM/warnings/logic/dc-ess-fms-predictions-unreliable">
<default value="0"/>
<test logic="AND" value="1">
/ECAM/warnings/logic/dc-ess-fuel-consumption-increased eq 1
/systems/electrical/bus/dc-2 ge 25
</test>
</switch>
<switch name="/ECAM/warnings/logic/dc-emer-config">
<default value="0"/>
<test logic="AND" value="1">
/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
</test>
</switch>
<actuator name="/ECAM/warnings/logic/dc-emer-config-output">
<input>/ECAM/warnings/logic/dc-emer-config</input>
<rate_limit sense="decr">120</rate_limit> <!-- Instant -->
<rate_limit sense="incr">5</rate_limit> <!-- 0.2 seconds -->
</actuator>
<switch name="/ECAM/warnings/logic/dc-1-2">
<default value="0"/>
<test logic="AND" value="1">
/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
</test>
</switch>
<actuator name="/ECAM/warnings/logic/dc-1-2-output">
<input>/ECAM/warnings/logic/dc-1-2</input>
<rate_limit sense="decr">120</rate_limit> <!-- Instant -->
<rate_limit sense="incr">0.5</rate_limit> <!-- 2 seconds -->
</actuator>
<switch name="/ECAM/warnings/logic/dc-ess-fault">
<default value="0"/>
<test logic="AND" value="1">
/systems/electrical/bus/dc-ess lt 25
/ECAM/warnings/logic/dc-emer-config ne 1
</test>
</switch>
<actuator name="/ECAM/warnings/logic/dc-ess-output">
<input>/ECAM/warnings/logic/dc-ess-fault</input>
<rate_limit sense="decr">120</rate_limit> <!-- Instant -->
<rate_limit sense="incr">0.5</rate_limit> <!-- 2 seconds -->
</actuator>
<switch name="/ECAM/warnings/logic/dc-bat-fault">
<default value="0"/>
<test logic="AND" value="1">
/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
</test>
</switch>
<actuator name="/ECAM/warnings/logic/dc-bat-output">
<input>/ECAM/warnings/logic/dc-bat-fault</input>
<rate_limit sense="decr">120</rate_limit> <!-- Instant -->
<rate_limit sense="incr">5</rate_limit> <!-- 0.2 seconds -->
</actuator>
<switch name="/ECAM/warnings/logic/dc-1-fault">
<default value="0"/>
<test logic="AND" value="1">
/systems/electrical/bus/dc-1 lt 25
/systems/electrical/bus/dc-2 ge 25
/systems/electrical/some-electric-thingie/emer-elec-config ne 1
</test>
</switch>
<actuator name="/ECAM/warnings/logic/dc-1-output">
<input>/ECAM/warnings/logic/dc-1-fault</input>
<rate_limit sense="decr">120</rate_limit> <!-- Instant -->
<rate_limit sense="incr">0.5</rate_limit> <!-- 2 seconds -->
</actuator>
<switch name="/ECAM/warnings/logic/dc-2-fault">
<default value="0"/>
<test logic="AND" value="1">
/systems/electrical/bus/dc-2 lt 25
/systems/electrical/bus/dc-1 ge 25
/systems/electrical/some-electric-thingie/emer-elec-config ne 1
</test>
</switch>
<actuator name="/ECAM/warnings/logic/dc-2-output">
<input>/ECAM/warnings/logic/dc-2-fault</input>
<rate_limit sense="decr">120</rate_limit> <!-- Instant -->
<rate_limit sense="incr">0.5</rate_limit> <!-- 2 seconds -->
</actuator>
<switch name="/ECAM/warnings/logic/ac-1-fault">
<default value="0"/>
<test logic="AND" value="1">
/systems/electrical/bus/ac-1 lt 110
/systems/electrical/some-electric-thingie/emer-elec-config ne 1
</test>
</switch>
<actuator name="/ECAM/warnings/logic/ac-1-output">
<input>/ECAM/warnings/logic/ac-1-fault</input>
<rate_limit sense="decr">120</rate_limit> <!-- Instant -->
<rate_limit sense="incr">5</rate_limit> <!-- 0.2 seconds -->
</actuator>
<switch name="/ECAM/warnings/logic/ac-2-fault">
<default value="0"/>
<test logic="AND" value="1">
/systems/electrical/bus/ac-2 lt 110
/systems/electrical/some-electric-thingie/emer-elec-config ne 1
</test>
</switch>
<actuator name="/ECAM/warnings/logic/ac-2-output">
<input>/ECAM/warnings/logic/ac-2-fault</input>
<rate_limit sense="decr">120</rate_limit> <!-- Instant -->
<rate_limit sense="incr">5</rate_limit> <!-- 0.2 seconds -->
</actuator>
<switch name="/ECAM/warnings/logic/ac-ess-fault">
<default value="0"/>
<test logic="AND" value="1">
/systems/electrical/bus/ac-ess lt 110
/systems/electrical/some-electric-thingie/emer-elec-config ne 1
</test>
</switch>
<actuator name="/ECAM/warnings/logic/ac-ess-output">
<input>/ECAM/warnings/logic/ac-ess-fault</input>
<rate_limit sense="decr">120</rate_limit> <!-- Instant -->
<rate_limit sense="incr">5</rate_limit> <!-- 0.2 seconds -->
</actuator>
<switch name="/ECAM/warnings/logic/dc-ess-shed-fault">
<default value="0"/>
<test logic="AND" value="1">
/systems/electrical/bus/dc-ess-shed lt 25
/systems/electrical/bus/dc-ess ge 25
<test logic="OR">
/systems/electrical/some-electric-thingie/emer-elec-config-10-sec ne 1
/systems/electrical/some-electric-thingie/emer-elec-config ne 1
</test>
</test>
</switch>
<actuator name="/ECAM/warnings/logic/dc-ess-shed-output">
<input>/ECAM/warnings/logic/dc-ess-shed-fault</input>
<rate_limit sense="decr">120</rate_limit> <!-- Instant -->
<rate_limit sense="incr">0.5</rate_limit> <!-- 2 seconds -->
</actuator>
<switch name="/ECAM/warnings/logic/ac-ess-shed-fault">
<default value="0"/>
<test logic="AND" value="1">
/systems/electrical/bus/ac-ess-shed lt 110
/systems/electrical/bus/ac-ess ge 110
<test logic="OR">
/systems/electrical/some-electric-thingie/emer-elec-config-10-sec ne 1
/systems/electrical/some-electric-thingie/emer-elec-config ne 1
</test>
</test>
</switch>
<actuator name="/ECAM/warnings/logic/ac-ess-shed-output">
<input>/ECAM/warnings/logic/ac-ess-shed-fault</input>
<rate_limit sense="decr">120</rate_limit> <!-- Instant -->
<rate_limit sense="incr">0.5</rate_limit> <!-- 2 seconds -->
</actuator>
</channel>
<channel name="STALL" execrate="16">

View file

@ -78,6 +78,17 @@
<output>/systems/electrical/some-electric-thingie/generator-2-reset</output>
</flipflop>
<flipflop>
<type>monostable</type>
<time>
<value>10.0</value>
</time>
<S>
<not><property>/systems/electrical/some-electric-thingie/emer-elec-config</property></not>
</S>
<output>/systems/electrical/some-electric-thingie/emer-elec-config-10-sec</output>
</flipflop>
<flipflop>
<type>monostable</type>
<time>