1
0
Fork 0

Trim air / cabin fans failures

This commit is contained in:
legoboyvdlp R 2020-06-20 20:52:04 +01:00
parent 914ecaed4f
commit 85b9d39593
5 changed files with 110 additions and 19 deletions

View file

@ -51,6 +51,7 @@ var warningNodes = {
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"),
cabinFans: props.globals.initNode("/ECAM/warnings/logic/cabin-fans-fault"),
},
Timers: {
apuFaultOutput: props.globals.initNode("/ECAM/warnings/timer/apu-fault-output"),
@ -76,6 +77,7 @@ var warningNodes = {
pack2Fault: props.globals.initNode("/ECAM/warnings/timer/pack-2-fault-2"),
pack1Off: props.globals.initNode("/ECAM/warnings/timer/pack-1-off"),
pack2Off: props.globals.initNode("/ECAM/warnings/timer/pack-2-off"),
trimAirFault: props.globals.initNode("/ECAM/warnings/timer/trim-air-fault"),
},
Flipflops: {
bleed1LowTemp: props.globals.initNode("/ECAM/warnings/logic/bleed-1-low-temp-flipflop-output"),

View file

@ -1716,8 +1716,44 @@ var messages_priority_2 = func {
ECAM_controller.warningReset(pack2Off);
}
# COND
if (cabFanFault.clearFlag == 0 and (phaseVar <= 2 or phaseVar >= 9 or phaseVar == 6) and warningNodes.Logic.cabinFans.getBoolValue()) {
cabFanFault.active = 1;
cabFanFaultFlow.active = 1;
} else {
ECAM_controller.warningReset(cabFanFault);
ECAM_controller.warningReset(cabFanFaultFlow);
}
if (trimAirFault.clearFlag == 0 and (phaseVar <= 2 or phaseVar >= 9 or phaseVar == 6) and warningNodes.Timers.trimAirFault.getValue() == 1) {
trimAirFault.active = 1;
if (systems.PNEU.Fail.trimValveAft.getBoolValue()) {
trimAirFaultAft.active = 1;
} else {
ECAM_controller.warningReset(trimAirFaultAft);
}
if (systems.PNEU.Fail.trimValveFwd.getBoolValue()) {
trimAirFaultFwd.active = 1;
} else {
ECAM_controller.warningReset(trimAirFaultFwd);
}
if (systems.PNEU.Fail.trimValveCockpit.getBoolValue()) {
trimAirFaultCkpt.active = 1;
} else {
ECAM_controller.warningReset(trimAirFaultCkpt);
}
} else {
ECAM_controller.warningReset(trimAirFault);
ECAM_controller.warningReset(trimAirFaultAft);
ECAM_controller.warningReset(trimAirFaultFwd);
ECAM_controller.warningReset(trimAirFaultCkpt);
}
# ENG AICE
if (eng1IceClosed.clearFlag == 0 and (phaseVar <= 2 or phaseVar >= 9 or phaseVar == 6) and warningNodes.Timers.eng1AiceNotOpen.getValue() == 1) {
if (eng1IceClosed.clearFlag == 0 and (phaseVar <= 2 or phaseVar >= 9 or phaseVar == 6) and warningNodes.Timers.eng1AiceNotOpen.getValue() == 1) {
eng1IceClosed.active = 1;
eng1IceClosedIcing.active = 1;
} else {
@ -1725,7 +1761,7 @@ var messages_priority_2 = func {
ECAM_controller.warningReset(eng1IceClosedIcing);
}
if (eng2IceClosed.clearFlag == 0 and (phaseVar <= 2 or phaseVar >= 9 or phaseVar == 6) and warningNodes.Timers.eng2AiceNotOpen.getValue() == 1) {
if (eng2IceClosed.clearFlag == 0 and (phaseVar <= 2 or phaseVar >= 9 or phaseVar == 6) and warningNodes.Timers.eng2AiceNotOpen.getValue() == 1) {
eng2IceClosed.active = 1;
eng2IceClosedIcing.active = 1;
} else {
@ -1733,7 +1769,7 @@ var messages_priority_2 = func {
ECAM_controller.warningReset(eng2IceClosedIcing);
}
if (eng1IceOpen.clearFlag == 0 and (phaseVar <= 2 or phaseVar >= 9 or phaseVar == 6) and warningNodes.Timers.eng1AiceNotClsd.getValue() == 1) {
if (eng1IceOpen.clearFlag == 0 and (phaseVar <= 2 or phaseVar >= 9 or phaseVar == 6) and warningNodes.Timers.eng1AiceNotClsd.getValue() == 1) {
eng1IceOpen.active = 1;
eng1IceOpenThrust.active = 1;
} else {
@ -1741,7 +1777,7 @@ var messages_priority_2 = func {
ECAM_controller.warningReset(eng1IceOpenThrust);
}
if (eng2IceOpen.clearFlag == 0 and (phaseVar <= 2 or phaseVar >= 9 or phaseVar == 6) and warningNodes.Timers.eng2AiceNotClsd.getValue() == 1) {
if (eng2IceOpen.clearFlag == 0 and (phaseVar <= 2 or phaseVar >= 9 or phaseVar == 6) and warningNodes.Timers.eng2AiceNotClsd.getValue() == 1) {
eng2IceOpen.active = 1;
eng2IceOpenThrust.active = 1;
} else {

View file

@ -250,8 +250,8 @@ var warnings = std.Vector.new([
var bleed2FaultPack = warning.new(msg: " -PACK 2.............OFF", colour: "c"),
var bleed2FaultXBleed = warning.new(msg: " -X BLEED...........OPEN", colour: "c"),
var apuBleedFault = warning.new(msg: "AIR APU BLEED FAULT", colour: "a", aural: 1, light: 1),
var hpValve1Fault = warning.new(msg: "AIR ENG 1 HP VALVE FAULT", colour: "a", aural: 0, light: 0),
var hpValve2Fault = warning.new(msg: "AIR ENG 2 HP VALVE FAULT", colour: "a", aural: 0, light: 0),
var hpValve1Fault = warning.new(msg: "AIR ENG 1 HP VALVE FAULT", colour: "a"),
var hpValve2Fault = warning.new(msg: "AIR ENG 2 HP VALVE FAULT", colour: "a"),
var xBleedFault = warning.new(msg: "AIR X BLEED FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var xBleedFaultMan = warning.new(msg: " -X BLEED........MAN CTL", colour: "c"),
var xBleedOff = warning.new(msg: " -WING ANTI ICE......OFF", colour: "c"),
@ -292,9 +292,9 @@ var warnings = std.Vector.new([
var eng1BleedNotClsdOff = warning.new(msg: " -ENG 1 BLEED........OFF", colour: "c"),
var eng2BleedNotClsd = warning.new(msg: "AIR ENG 2 BLEED NOT CLSD", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var eng2BleedNotClsdOff = warning.new(msg: " -ENG 2 BLEED........OFF", colour: "c"),
var bleedMonFault = warning.new(msg: "BLEED MONITORING FAULT", colour: "a", aural: 0, light: 0, isMainMsg: 1),
var bleedMon1Fault = warning.new(msg: "BLEED MONIT SYS 1 FAULT", colour: "a", aural: 0, light: 0, isMainMsg: 1),
var bleedMon2Fault = warning.new(msg: "BLEED MONIT SYS 2 FAULT", colour: "a", aural: 0, light: 0, isMainMsg: 1),
var bleedMonFault = warning.new(msg: "BLEED MONITORING FAULT", colour: "a", isMainMsg: 1),
var bleedMon1Fault = warning.new(msg: "BLEED MONIT SYS 1 FAULT", colour: "a", isMainMsg: 1),
var bleedMon2Fault = warning.new(msg: "BLEED MONIT SYS 2 FAULT", colour: "a", isMainMsg: 1),
# PACK
var pack12Fault = warning.new(msg: "AIR PACK 1+2 FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
@ -322,10 +322,12 @@ var warnings = std.Vector.new([
var pack2FaultOff = warning.new(msg: " -PACK 2.............OFF", colour: "c"),
var pack1Off = warning.new(msg: "AIR PACK 1 OFF", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var pack2Off = warning.new(msg: "AIR PACK 2 OFF", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var pack1RegulFlt = warning.new(msg: "AIR PACK 1 REGUL FAULT", colour: "a", aural: 0, light: 0, isMainMsg: 1),
var pack2RegulFlt = warning.new(msg: "AIR PACK 2 REGUL FAULT", colour: "a", aural: 0, light: 0, isMainMsg: 1),
var aftCrgVentFlt = warning.new(msg: "AIR AFT CRG VENT FAULT", colour: "a", aural: 0, light: 0, isMainMsg: 1),
var fwdCrgVentFlt = warning.new(msg: "AIR FWD CRG VENT FAULT", colour: "a", aural: 0, light: 0, isMainMsg: 1),
var cabFanFault = warning.new(msg: "COND L+R CAB FAN FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var cabFanFaultFlow = warning.new(msg: " -PACK FLOW...........HI", colour: "c"),
var trimAirFault = warning.new(msg: "COND TRIM AIR SYS FAULT", colour: "a", isMainMsg: 1),
var trimAirFaultAft = warning.new(msg: " -AFT CAB TRIM VALVE", colour: "c"),
var trimAirFaultFwd = warning.new(msg: " -FWD CAB TRIM VALVE", colour: "c"),
var trimAirFaultCkpt = warning.new(msg: " -CKPT TRIM VALVE", colour: "c"),
# Eng AICE
var eng1IceClosed = warning.new(msg: "ANTI ICE ENG1 VALVE CLSD", colour: "a", aural: 1, light: 1, isMainMsg: 1),
@ -364,9 +366,9 @@ var warnings = std.Vector.new([
var wingIceROpenThrust = warning.new(msg: " THRUST LIM PENALTY", colour: "c"),
var wingIceOpenGnd = warning.new(msg: "WING A.ICE OPEN ON GND", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var wingIceOpenGndShut = warning.new(msg: " -WING ANTI ICE......OFF", colour: "c"),
var wingIceLHiPr = warning.new(msg: "WING A.ICE L HI PR", colour: "a", aural: 0, light: 0, isMainMsg: 1),
var wingIceLHiPr = warning.new(msg: "WING A.ICE L HI PR", colour: "a", isMainMsg: 1),
var wingIceLHiPrThrust = warning.new(msg: " THRUST LIM PENTALTY", colour: "c"),
var wingIceRHiPr = warning.new(msg: "WING A.ICE R HI PR", colour: "a", aural: 0, light: 0, isMainMsg: 1),
var wingIceRHiPr = warning.new(msg: "WING A.ICE R HI PR", colour: "a", isMainMsg: 1),
var wingIceRHiPrThrust = warning.new(msg: " THRUST LIM PENTALTY", colour: "c"),
# FIRE det fault

View file

@ -313,7 +313,7 @@
<function>
<ifthen>
<eq>
<property>/controls/pneumatics/switches/hot-air</property>
<property>/systems/air-conditioning/valves/hot-air</property>
<value>0</value>
</eq>
<min>
@ -373,7 +373,7 @@
<function>
<ifthen>
<eq>
<property>/controls/pneumatics/switches/hot-air</property>
<property>/systems/air-conditioning/valves/hot-air</property>
<value>0</value>
</eq>
<min>
@ -413,7 +413,7 @@
<function>
<ifthen>
<eq>
<property>/controls/pneumatics/switches/hot-air</property>
<property>/systems/air-conditioning/valves/hot-air</property>
<value>0</value>
</eq>
<min>
@ -766,12 +766,20 @@
</test>
</switch>
<switch name="/systems/air-conditioning/recirc/cabin-fans">
<default value="0"/>
<test logic="AND" value="1">
/controls/switches/pneumatics/cabin-fans eq 1
/systems/failures/pneumatics/cabin-fans eq 0
</test>
</switch>
<fcs_function name="/systems/air-conditioning/mass-flow-total-kg_s">
<function>
<sum>
<product>
<property>/systems/air-conditioning/recirc/recirc-factor</property>
<property>/controls/switches/pneumatics/cabin-fans</property>
<property>/systems/air-conditioning/recirc/cabin-fans</property>
<property>/systems/air-conditioning/mass-flow-fresh-kg_s</property>
</product>
<property>/systems/air-conditioning/mass-flow-fresh-kg_s</property>

View file

@ -314,6 +314,13 @@
<rate_limit sense="incr">0.0166666</rate_limit> <!-- 60 seconds -->
</actuator>
<actuator name="/ECAM/warnings/timer/trim-air-fault">
<description>Timer for the ECAM system</description>
<input>/ECAM/warnings/logic/trim-air-fault-input</input>
<rate_limit sense="decr">100</rate_limit> <!-- Instant -->
<rate_limit sense="incr">0.2</rate_limit> <!-- 5 seconds -->
</actuator>
</channel>
<channel name="ECAM">
@ -1160,6 +1167,42 @@
</test>
</switch>
<switch name="/ECAM/warnings/logic/trim-air-fault-inhibit">
<default value="0"/>
<test logic="OR" value="1">
/systems/electrical/bus/ac-ess lt 110
<test logic="AND">
<test logic="OR">
/ECAM/warning-phase eq 1
/ECAM/warning-phase eq 10
</test>
/systems/air-conditioning/valves/hot-air eq 0
</test>
</test>
</switch>
<switch name="/ECAM/warnings/logic/trim-air-fault-input">
<default value="0"/>
<test logic="AND" value="1">
<test logic="OR">
/systems/failures/pneumatics/trim-valve-cabin-aft eq 1
/systems/failures/pneumatics/trim-valve-cabin-fwd eq 1
/systems/failures/pneumatics/trim-valve-cockpit eq 1
</test>
/ECAM/warnings/logic/trim-air-fault-inhibit eq 0
</test>
</switch>
<switch name="/ECAM/warnings/logic/cabin-fans-fault">
<default value="0"/>
<test logic="AND" value="1">
/systems/failures/pneumatics/cabin-fans eq 1
/systems/electrical/bus/dc-1 ge 25
/systems/electrical/bus/dc-2 ge 25
/systems/electrical/bus/ac-1 ge 110
/systems/electrical/bus/ac-2 ge 110
</test>
</switch>
</channel>
</system>