1
0
Fork 0
This commit is contained in:
legoboyvdlp R 2020-05-29 20:20:46 +01:00
parent b0aa8e134f
commit 24f03e837c
6 changed files with 417 additions and 22 deletions

View file

@ -4136,16 +4136,7 @@
<object-name>ACPack1Btn1F</object-name>
<condition>
<or>
<and>
<equals>
<property>systems/pneumatic/pack1-fault</property>
<value>1</value>
</equals>
<equals>
<property>controls/pneumatics/switches/pack-1</property>
<value>1</value>
</equals>
</and>
<property>/systems/air-conditioning/warnings/pack-1-fault-light</property>
<equals>
<property>controls/switches/annun-test</property>
<value>1</value>
@ -4494,16 +4485,7 @@
<object-name>ACPack2Btn1F</object-name>
<condition>
<or>
<and>
<equals>
<property>systems/pneumatic/pack2-fault</property>
<value>1</value>
</equals>
<equals>
<property>controls/pneumatics/switches/pack-2</property>
<value>1</value>
</equals>
</and>
<property>/systems/air-conditioning/warnings/pack-2-fault-light</property>
<equals>
<property>controls/switches/annun-test</property>
<value>1</value>

View file

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

View file

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

View file

@ -6,6 +6,7 @@
<switch name="/systems/air-conditioning/valves/flow-control-valve-1-cmd">
<default value="0"/>
<test logic="OR" value="0">
/systems/air-conditioning/packs/pack-1-outlet-temp ge 260
/controls/engines/engine[0]/fire-btn eq 1
<test logic="OR">
<test logic="AND">
@ -51,6 +52,7 @@
<switch name="/systems/air-conditioning/valves/flow-control-valve-2-cmd">
<default value="0"/>
<test logic="OR" value="0">
/systems/air-conditioning/packs/pack-2-outlet-temp ge 260
/controls/engines/engine[1]/fire-btn eq 1
<test logic="OR">
<test logic="AND">
@ -337,7 +339,7 @@
<default value="0"/>
<test logic="AND" value="1">
/systems/air-conditioning/packs/pack-1-outlet-temp ge 260
<!-- not pack 1 + 2 fault -->
/ECAM/warnings/logic/pack-1-2-fault eq 0
</test>
</switch>
@ -345,7 +347,51 @@
<default value="0"/>
<test logic="AND" value="1">
/systems/air-conditioning/packs/pack-2-outlet-temp ge 260
<!-- not pack 1 + 2 fault -->
/ECAM/warnings/logic/pack-1-2-fault eq 0
</test>
</switch>
<switch name="/systems/air-conditioning/warnings/pack-1-fault-light">
<default value="0"/>
<test logic="OR" value="1">
/ECAM/warnings/logic/pack-1-disagree-input eq 1
/systems/air-conditioning/warnings/pack-1-ovht eq 1
</test>
</switch>
<switch name="/systems/air-conditioning/warnings/pack-2-fault-light">
<default value="0"/>
<test logic="OR" value="1">
/ECAM/warnings/logic/pack-2-disagree-input eq 1
/systems/air-conditioning/warnings/pack-2-ovht eq 1
</test>
</switch>
<switch name="/systems/air-conditioning/warnings/pack-1-disagree">
<default value="0"/>
<test logic="OR" value="1">
<test logic="AND">
/systems/air-conditioning/valves/flow-control-valve-1 ne 1
/systems/air-conditioning/valves/flow-control-valve-1-cmd eq 1
</test>
<test logic="AND">
/systems/air-conditioning/valves/flow-control-valve-1 ne 0
/systems/air-conditioning/valves/flow-control-valve-1-cmd eq 0
</test>
</test>
</switch>
<switch name="/systems/air-conditioning/warnings/pack-2-disagree">
<default value="0"/>
<test logic="OR" value="1">
<test logic="AND">
/systems/air-conditioning/valves/flow-control-valve-2 ne 1
/systems/air-conditioning/valves/flow-control-valve-2-cmd eq 1
</test>
<test logic="AND">
/systems/air-conditioning/valves/flow-control-valve-2 ne 0
/systems/air-conditioning/valves/flow-control-valve-2-cmd eq 0
</test>
</test>
</switch>

View file

@ -229,6 +229,77 @@
<rate_limit sense="decr">100</rate_limit> <!-- Instant -->
<rate_limit sense="incr">0.025</rate_limit> <!-- 40 seconds -->
</actuator>
<actuator name="/ECAM/warnings/timer/cranking-35-sec">
<description>Timer for the ECAM system</description>
<input>/ECAM/warnings/logic/cranking-35-sec-input</input>
<rate_limit sense="decr">100</rate_limit> <!-- Instant -->
<rate_limit sense="incr">0.028571</rate_limit> <!-- 35 seconds -->
</actuator>
<actuator name="/ECAM/warnings/timer/pack-1-fault-closed">
<description>Timer for the ECAM system</description>
<input>/ECAM/warnings/logic/pack-1-fault-closed-input</input>
<rate_limit sense="decr">100</rate_limit> <!-- Instant -->
<rate_limit sense="incr">0.1</rate_limit> <!-- 10 seconds -->
</actuator>
<actuator name="/ECAM/warnings/timer/pack-2-fault-closed">
<description>Timer for the ECAM system</description>
<input>/ECAM/warnings/logic/pack-2-fault-closed-input</input>
<rate_limit sense="decr">100</rate_limit> <!-- Instant -->
<rate_limit sense="incr">0.1</rate_limit> <!-- 10 seconds -->
</actuator>
<actuator name="/ECAM/warnings/timer/pack-1-disagree">
<description>Timer for the ECAM system</description>
<input>/ECAM/warnings/logic/pack-1-disagree-input</input>
<rate_limit sense="decr">100</rate_limit> <!-- Instant -->
<rate_limit sense="incr">0.1</rate_limit> <!-- 10 seconds -->
</actuator>
<actuator name="/ECAM/warnings/timer/pack-2-disagree">
<description>Timer for the ECAM system</description>
<input>/ECAM/warnings/logic/pack-2-fault-closed-input</input>
<rate_limit sense="decr">100</rate_limit> <!-- Instant -->
<rate_limit sense="incr">0.1</rate_limit> <!-- 10 seconds -->
</actuator>
<actuator name="/ECAM/warnings/timer/ignition">
<description>Timer for the ECAM system</description>
<input>/ECAM/warnings/logic/ignition</input>
<rate_limit sense="incr">100</rate_limit> <!-- Instant -->
<rate_limit sense="decr">0.028571</rate_limit> <!-- 35 seconds -->
</actuator>
<actuator name="/ECAM/warnings/timer/pack-1-fault-5">
<description>Timer for the ECAM system</description>
<input>/ECAM/warnings/logic/pack-1-fault-input</input>
<rate_limit sense="incr">100</rate_limit> <!-- Instant -->
<rate_limit sense="decr">0.20</rate_limit> <!-- 5 seconds -->
</actuator>
<actuator name="/ECAM/warnings/timer/pack-2-fault-5">
<description>Timer for the ECAM system</description>
<input>/ECAM/warnings/logic/pack-2-fault-input</input>
<rate_limit sense="incr">100</rate_limit> <!-- Instant -->
<rate_limit sense="decr">0.20</rate_limit> <!-- 5 seconds -->
</actuator>
<actuator name="/ECAM/warnings/timer/pack-1-fault-2">
<description>Timer for the ECAM system</description>
<input>/ECAM/warnings/logic/pack-1-fault-warning-input</input>
<rate_limit sense="incr">100</rate_limit> <!-- Instant -->
<rate_limit sense="decr">0.50</rate_limit> <!-- 2 seconds -->
</actuator>
<actuator name="/ECAM/warnings/timer/pack-2-fault-2">
<description>Timer for the ECAM system</description>
<input>/ECAM/warnings/logic/pack-2-fault-warning-input</input>
<rate_limit sense="incr">100</rate_limit> <!-- Instant -->
<rate_limit sense="decr">0.50</rate_limit> <!-- 2 seconds -->
</actuator>
</channel>
<channel name="ECAM">
@ -864,6 +935,191 @@
</test>
</switch>
<switch name="/ECAM/warnings/logic/cranking-35-sec-input">
<default value="0"/>
<test value="1">
/controls/engines/engine-start-switch eq 0
</test>
</switch>
<switch name="/ECAM/warnings/logic/pack-1-fault-closed-input">
<default value="0"/>
<test logic="AND" value="1">
<test logic="OR">
/controls/engines/engine-start-switch eq 0
/ECAM/warnings/timer/cranking-35-sec eq 1
</test>
/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 <!-- confirm -->
/ECAM/warnings/logic/bleed-1-avail eq 1
</test>
</switch>
<switch name="/ECAM/warnings/logic/pack-2-fault-closed-input">
<default value="0"/>
<test logic="AND" value="1">
<test logic="OR">
/controls/engines/engine-start-switch eq 0
/ECAM/warnings/timer/cranking-35-sec eq 1
</test>
/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 <!-- confirm -->
/ECAM/warnings/logic/bleed-2-avail eq 1
</test>
</switch>
<switch name="/ECAM/warnings/logic/pack-1-disagree-input">
<default value="0"/>
<test logic="AND" value="1">
/systems/air-conditioning/warnings/pack-1-disagree eq 1
/ECAM/warnings/logic/bleed-1-avail eq 1
</test>
</switch>
<switch name="/ECAM/warnings/logic/pack-2-disagree-input">
<default value="0"/>
<test logic="AND" value="1">
/systems/air-conditioning/warnings/pack-2-disagree eq 1
/ECAM/warnings/logic/bleed-2-avail eq 1
</test>
</switch>
<switch name="/ECAM/warnings/logic/ignition">
<default value="0"/>
<test logic="OR" value="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
</test>
</switch>
<switch name="/ECAM/warnings/logic/inhibit-pack-1-fault">
<default value="0"/>
<test logic="OR" value="1">
/ECAM/warnings/timer/ignition eq 1
/ECAM/warnings/logic/ignition eq 1
<test logic="AND">
/controls/pneumatics/switches/pack-1 eq 0
/ECAM/warning-phase eq 2
</test>
</test>
</switch>
<switch name="/ECAM/warnings/logic/inhibit-pack-2-fault">
<default value="0"/>
<test logic="OR" value="1">
/ECAM/warnings/timer/ignition eq 1
/ECAM/warnings/logic/ignition eq 1
<test logic="AND">
/controls/pneumatics/switches/pack-2 eq 0
/ECAM/warning-phase eq 2
</test>
</test>
</switch>
<switch name="/ECAM/warnings/logic/pack-1-fault-input">
<default value="0"/>
<test logic="AND" value="1">
/ECAM/warnings/logic/inhibit-pack-1-fault eq 0
<test logic="OR">
/ECAM/warnings/timer/pack-1-fault-closed eq 1
/ECAM/warnings/timer/pack-1-disagree eq 1
</test>
</test>
</switch>
<switch name="/ECAM/warnings/logic/pack-2-fault-input">
<default value="0"/>
<test logic="AND" value="1">
/ECAM/warnings/logic/inhibit-pack-2-fault eq 0
<test logic="OR">
/ECAM/warnings/timer/pack-2-fault-closed eq 1
/ECAM/warnings/timer/pack-2-disagree eq 1
</test>
</test>
</switch>
<switch name="/ECAM/phases/monostable/phase-6-180">
<default value="0"/>
<test value="1">
/ECAM/warning-phase eq 6
</test>
</switch>
<switch name="/ECAM/warnings/logic/pack-1-2-fault">
<default value="0"/>
<test logic="OR" value="1">
<test logic="AND">
/controls/pneumatics/switches/pack-2 eq 0
<test logic="OR">
/ECAM/warnings/timer/pack-1-fault-5 eq 1
/systems/air-conditioning/warnings/pack-1-ovht eq 1
</test>
</test>
<test logic="AND">
/controls/pneumatics/switches/pack-1 eq 0
<test logic="OR">
/ECAM/warnings/timer/pack-2-fault-5 eq 1
/systems/air-conditioning/warnings/pack-2-ovht eq 1
</test>
</test>
<test logic="AND">
/controls/pneumatics/switches/pack-1 eq 0
/controls/pneumatics/switches/pack-2 eq 0
<test logic="AND">
/ECAM/warning-phase ne 1
/ECAM/warning-phase ne 2
/ECAM/warning-phase ne 10
<test logic="OR">
/ECAM/phases/monostable/phase-6-180 eq 0
/ECAM/phases/monostable/phase-6-180-pulse eq 0
</test>
</test>
</test>
</test>
</switch>
<switch name="/ECAM/warnings/logic/reset-pack-1-switch-cmd">
<default value="0"/>
<test logic="AND" value="1">
/controls/pneumatics/switches/pack-1 eq 0
/ECAM/warnings/timer/pack-1-fault-5 eq 0
/ECAM/warnings/flipflop/pack-1-ovht eq 1
</test>
</switch>
<switch name="/ECAM/warnings/logic/reset-pack-2-switch-cmd">
<default value="0"/>
<test logic="AND" value="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
</test>
</switch>
<switch name="/ECAM/warnings/logic/pack-1-fault-warning-input">
<default value="0"/>
<test logic="AND" value="1">
/ECAM/warnings/timer/pack-1-fault-5 eq 1
/ECAM/warnings/logic/pack-1-2-fault eq 0
</test>
</switch>
<switch name="/ECAM/warnings/logic/pack-2-fault-warning-input">
<default value="0"/>
<test logic="AND" value="1">
/ECAM/warnings/timer/pack-2-fault-5 eq 1
/ECAM/warnings/logic/pack-1-2-fault eq 0
</test>
</switch>
</channel>
</system>

View file

@ -412,6 +412,17 @@
<output>/ECAM/phases/wing-anti-ice-pulse</output>
</flipflop>
<flipflop>
<type>monostable</type>
<time>
<value>180.0</value>
</time>
<S>
<not><property>/ECAM/phases/monostable/phase-6-180</property></not>
</S>
<output>/ECAM/phases/monostable/phase-6-180-pulse</output>
</flipflop>
<!-- falling edge detectors -->
<flipflop>
<type>monostable</type>