1
0
Fork 0
This commit is contained in:
legoboyvdlp R 2020-05-06 17:05:53 +01:00
parent cb6fafd9c1
commit 062177aba6
12 changed files with 284 additions and 32 deletions

View file

@ -846,7 +846,7 @@
<temp-cabin-aft type="double">0.5</temp-cabin-aft>
<temp-cabin-fwd type="double">0.5</temp-cabin-fwd>
<temp-cockpit type="double">0.5</temp-cockpit>
<x-bleed type="bool">0</x-bleed>
<x-bleed type="int">1</x-bleed> <!-- auto -->
</switches>
</pneumatics>
<switches>
@ -1174,12 +1174,18 @@
<engine-2-hp-psi type="double">0</engine-2-hp-psi>
</source>
<valves>
<apu-bleed-valve type="bool">0</apu-bleed-valve>
<crossbleed-valve type="bool">0</crossbleed-valve>
<pack-1 type="bool">0</pack-1>
<pack-2 type="bool">0</pack-2>
<starter-valve-1 type="bool">0</starter-valve-1>
<starter-valve-2 type="bool">0</starter-valve-2>
<apu-bleed-valve type="double">0</apu-bleed-valve>
<crossbleed-valve type="double">0</crossbleed-valve>
<engine-1-prv-valve type="double">0</engine-1-prv-valve>
<engine-2-prv-valve type="double">0</engine-2-prv-valve>
<engine-1-prv-valve-disag type="bool">0</engine-1-prv-valve-disag>
<engine-2-prv-valve-disag type="bool">0</engine-2-prv-valve-disag>
<engine-1-opv-valve type="double">0</engine-1-opv-valve>
<engine-2-opv-valve type="double">0</engine-2-opv-valve>
<pack-1 type="double">0</pack-1>
<pack-2 type="double">0</pack-2>
<starter-valve-1 type="double">0</starter-valve-1>
<starter-valve-2 type="double">0</starter-valve-2>
</valves>
</pneumatics>

View file

@ -380,8 +380,8 @@ var beforestart_b = func {
setprop("/controls/pneumatic/switches/bleedapu", 1);
setprop("/controls/pneumatic/switches/bleed1", 1);
setprop("/controls/pneumatic/switches/bleed2", 1);
setprop("/controls/pneumatic/switches/pack1", 1);
setprop("/controls/pneumatic/switches/pack2", 1);
setprop("/controls/pneumatics/switches/pack-1", 1);
setprop("/controls/pneumatics/switches/pack-2", 1);
setprop("/controls/adirs/ir[0]/knob","1");
setprop("/controls/adirs/ir[1]/knob","1");
setprop("/controls/adirs/ir[2]/knob","1");
@ -472,8 +472,8 @@ var taxi_b = func {
setprop("/controls/pneumatic/switches/bleedapu", 1);
setprop("/controls/pneumatic/switches/bleed1", 1);
setprop("/controls/pneumatic/switches/bleed2", 1);
setprop("/controls/pneumatic/switches/pack1", 1);
setprop("/controls/pneumatic/switches/pack2", 1);
setprop("/controls/pneumatics/switches/pack-1", 1);
setprop("/controls/pneumatics/switches/pack-2", 1);
setprop("/controls/adirs/ir[0]/knob","1");
setprop("/controls/adirs/ir[1]/knob","1");
setprop("/controls/adirs/ir[2]/knob","1");

View file

@ -4033,7 +4033,7 @@
<repeatable>false</repeatable>
<binding>
<command>property-cycle</command>
<property>controls/pneumatic/switches/xbleed</property>
<property>/controls/pneumatics/switches/x-bleed</property>
<value>0</value>
<value>1</value>
<value>2</value>
@ -4049,7 +4049,7 @@
<repeatable>false</repeatable>
<binding>
<command>property-cycle</command>
<property>controls/pneumatic/switches/xbleed</property>
<property>/controls/pneumatics/switches/x-bleed</property>
<value>2</value>
<value>1</value>
<value>0</value>
@ -4064,7 +4064,7 @@
<name>X-Bleed rotate</name>
<type>rotate</type>
<object-name>XbleedKnb</object-name>
<property>controls/pneumatic/switches/xbleed</property>
<property>/controls/pneumatics/switches/x-bleed</property>
<interpolation>
<entry><ind>0</ind><dep> 55</dep></entry>
<entry><ind>1</ind><dep> 0</dep></entry>
@ -4106,7 +4106,7 @@
</or>
</condition>
<command>property-toggle</command>
<property>controls/pneumatic/switches/pack1</property>
<property>controls/pneumatics/switches/pack-1</property>
</binding>
<binding>
<command>nasal</command>
@ -4126,7 +4126,7 @@
<value>1</value>
</equals>
<equals>
<property>controls/pneumatic/switches/pack1</property>
<property>controls/pneumatics/switches/pack-1</property>
<value>1</value>
</equals>
</and>
@ -4144,7 +4144,7 @@
<condition>
<or>
<equals>
<property>controls/pneumatic/switches/pack1</property>
<property>controls/pneumatics/switches/pack-1</property>
<value>0</value>
</equals>
<equals>
@ -4452,7 +4452,7 @@
</or>
</condition>
<command>property-toggle</command>
<property>controls/pneumatic/switches/pack2</property>
<property>controls/pneumatics/switches/pack-2</property>
</binding>
<binding>
<command>nasal</command>
@ -4472,7 +4472,7 @@
<value>1</value>
</equals>
<equals>
<property>controls/pneumatic/switches/pack2</property>
<property>controls/pneumatics/switches/pack-2</property>
<value>1</value>
</equals>
</and>
@ -4490,7 +4490,7 @@
<condition>
<or>
<equals>
<property>controls/pneumatic/switches/pack2</property>
<property>controls/pneumatics/switches/pack-2</property>
<value>0</value>
</equals>
<equals>

View file

@ -29,6 +29,15 @@ var counter = 0;
var noMainMsg = 0;
var storeFirstWarning = nil;
var warningNodes = {
Timers: {
bleed1Fault: props.globals.initNode("/ECAM/warnings/timer/bleed-1-fault"),
bleed1FaultOutput: props.globals.initNode("/ECAM/warnings/timer/bleed-1-fault-output"),
bleed2Fault: props.globals.initNode("/ECAM/warnings/timer/bleed-2-fault"),
bleed2FaultOutput: props.globals.initNode("/ECAM/warnings/timer/bleed-2-fault-output"),
},
};
var warning = {
new: func(msg,colour = "g",aural = 9,light = 9,isMainMsg = 0,lastSubmsg = 0, sdPage = "nil", isMemo = 0) {
var t = {parents:[warning]};

View file

@ -1221,13 +1221,89 @@ var messages_priority_2 = func {
apuAutoShutdown.isMainMsg = 1;
}
if (apuAutoShutdownMast.clearFlag == 0 and getprop("controls/apu/master") and apuAutoShutdown.active == 1) {
if (apuAutoShutdownMast.clearFlag == 0 and pts.APU.masterSw.getValue() and apuAutoShutdown.active == 1) {
apuAutoShutdownMast.active = 1;
} else {
ECAM_controller.warningReset(apuAutoShutdownMast);
apuAutoShutdown.isMainMsg = 0;
}
# Bleed
# BLEED 1 FAULT
if ((FWC.Timer.eng1idleOutput.getBoolValue() and !pts.Controls.Engines.Engine.cutoffSw[0].getValue()) and (systems.PNEU.Psi.engine1.getValue() >= 57 or systems.PNEU.Ovht.ovht1.getValue())) {
warningNodes.Timers.bleed1Fault.setValue(1);
} else {
warningNodes.Timers.bleed1Fault.setValue(0);
}
if (bleed1Fault.clearFlag == 0 and (phaseVar == 2 or phaseVar == 6 or phaseVar == 9) and warningNodes.Timers.bleed1FaultOutput.getValue() and (!systems.PNEU.Switch.pack1.getValue() or !systems.PNEU.Switch.pack2.getValue() or getprop("/ECAM/phases/wing-anti-ice-pulse"))) { # inverse pulse
bleed1Fault.active = 1;
} else {
ECAM_controller.warningReset(bleed1Fault);
}
if (bleed1Fault.active) {
if (bleed1FaultOff.clearFlag == 0 and (systems.PNEU.Switch.bleed1.getValue() or systems.PNEU.Switch.bleed2.getValue()) and (systems.PNEU.Warnings.prv1Disag.getValue() or systems.PNEU.Warnings.prv2Disag.getValue())) {
bleed1FaultOff.active = 1;
} else {
ECAM_controller.warningReset(bleed1FaultOff);
}
if (bleed1FaultPack.clearFlag == 0 and systems.PNEU.Switch.pack1.getValue() and systems.PNEU.Switch.pack2.getValue() and getprop("/controls/switches/wing")) {
bleed1FaultPack.active = 1;
} else {
ECAM_controller.warningReset(bleed1FaultPack);
}
if (bleed1FaultXBleed.clearFlag == 0 and systems.PNEU.Valves.crossbleed.getValue() == 0) {
bleed1FaultXBleed.active = 1;
} else {
ECAM_controller.warningReset(bleed1FaultXBleed);
}
} else {
ECAM_controller.warningReset(bleed1FaultOff);
ECAM_controller.warningReset(bleed1FaultPack);
ECAM_controller.warningReset(bleed1FaultXBleed);
}
# BLEED 2 FAULT
if ((FWC.Timer.eng2idleOutput.getBoolValue() and !pts.Controls.Engines.Engine.cutoffSw[1].getValue()) and (systems.PNEU.Psi.engine2.getValue() >= 57 or systems.PNEU.Ovht.ovht2.getValue())) {
warningNodes.Timers.bleed2Fault.setValue(1);
} else {
warningNodes.Timers.bleed2Fault.setValue(0);
}
if (bleed2Fault.clearFlag == 0 and (phaseVar == 2 or phaseVar == 6 or phaseVar == 9) and warningNodes.Timers.bleed2FaultOutput.getValue() and (!systems.PNEU.Switch.pack1.getValue() or !systems.PNEU.Switch.pack2.getValue() or getprop("/ECAM/phases/wing-anti-ice-pulse"))) { # inverse pulse
bleed2Fault.active = 1;
} else {
ECAM_controller.warningReset(bleed2Fault);
}
if (bleed2Fault.active) {
if (bleed2FaultOff.clearFlag == 0 and (systems.PNEU.Switch.bleed1.getValue() or systems.PNEU.Switch.bleed2.getValue()) and (systems.PNEU.Warnings.prv1Disag.getValue() or systems.PNEU.Warnings.prv2Disag.getValue())) {
bleed2FaultOff.active = 1;
} else {
ECAM_controller.warningReset(bleed2FaultOff);
}
if (bleed2FaultPack.clearFlag == 0 and systems.PNEU.Switch.pack1.getValue() and systems.PNEU.Switch.pack2.getValue() and getprop("/controls/switches/wing")) {
bleed2FaultPack.active = 1;
} else {
ECAM_controller.warningReset(bleed2FaultPack);
}
if (bleed2FaultXBleed.clearFlag == 0 and systems.PNEU.Valves.crossbleed.getValue() == 0) {
bleed2FaultXBleed.active = 1;
} else {
ECAM_controller.warningReset(bleed2FaultXBleed);
}
} else {
ECAM_controller.warningReset(bleed2FaultOff);
ECAM_controller.warningReset(bleed2FaultPack);
ECAM_controller.warningReset(bleed2FaultXBleed);
}
# Eng fire
if (eng1FireDetFault.clearFlag == 0 and (systems.engFireDetectorUnits.vector[0].condition == 0 or (systems.engFireDetectorUnits.vector[0].loopOne == 9 and systems.engFireDetectorUnits.vector[0].loopTwo == 9 and systems.eng1Inop.getBoolValue())) and (phaseVar == 6 or phaseVar >= 9 or phaseVar <= 2)) {
eng1FireDetFault.active = 1;
} else {

View file

@ -240,6 +240,62 @@ var warnings = std.Vector.new([
var apuAutoShutdown = warning.new(msg: "APU AUTO SHUT DOWN", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var apuAutoShutdownMast = warning.new(msg: " -MASTER SW..........OFF", colour: "c"),
# Bleed
var bleed1Fault = warning.new(msg: "AIR ENG 1 BLEED FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var bleed1FaultOff = warning.new(msg: " -ENG 1 BLEED........OFF", colour: "c"),
var bleed1FaultPack = warning.new(msg: " -PACK 1.............OFF", colour: "c"),
var bleed1FaultXBleed = warning.new(msg: " -X BLEED...........OPEN", colour: "c"),
var bleed2Fault = warning.new(msg: "AIR ENG 2 BLEED FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var bleed2FaultOff = warning.new(msg: " -ENG 2 BLEED........OFF", colour: "c"),
var bleed2FaultPack = warning.new(msg: " -PACK 2.............OFF", colour: "c"),
var bleed2FaultXBleed = warning.new(msg: " -X BLEED...........OPEN", colour: "c"),
var apuFault = 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 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"),
var xBleedIcing = warning.new(msg: " AVOID ICING CONDITIONS", colour: "c"),
var bleed1Off = warning.new(msg: "AIR BLEED 1 OFF", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var bleed2Off = warning.new(msg: "AIR BLEED 2 OFF", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var engBleedLowTemp = warning.new(msg: "AIR ENG 1+2 BLEED LO TEMP", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var engBleedLowTempAthr = warning.new(msg: " -A/THR..............OFF", colour: "c"),
var engBleedLowTempAdv = warning.new(msg: " -THR LEVERS.....ADVANCE", colour: "c"),
var engBleedLowTempSucc = warning.new(msg: " •IF UNSUCCESSFUL :", colour: "c"),
var engBleedLowTempIce = warning.new(msg: " -WING A.ICE.........OFF", colour: "c"),
var engBleedLowTempIcing = warning.new(msg: " AVOID ICING CONDITIONS", colour: "c"),
var eng1BleedLowTemp = warning.new(msg: "AIR ENG 1 BLEED LO TEMP", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var eng1BleedLowTempAthr = warning.new(msg: " -A/THR..............OFF", colour: "c"),
var eng1BleedLowTempAdv = warning.new(msg: " -THR LEVER 1....ADVANCE", colour: "c"),
var eng1BleedLowTempSucc = warning.new(msg: " •IF UNSUCCESSFUL :", colour: "c"),
var eng1BleedLowTempXBld = warning.new(msg: " -X BLEED...........OPEN", colour: "c"),
var eng1BleedLowTempOff = warning.new(msg: " -ENG 1 BLEED........OFF", colour: "c"),
var eng1BleedLowTempPack = warning.new(msg: " -PACK 1.............OFF", colour: "c"),
var eng1BleedLowTempIce = warning.new(msg: " -WING A.ICE.........OFF", colour: "c"),
var eng1BleedLowTempIcing = warning.new(msg: " AVOID ICING CONDITIONS", colour: "c"),
var eng2BleedLowTemp = warning.new(msg: "AIR ENG 2 BLEED LO TEMP", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var eng2BleedLowTempAthr = warning.new(msg: " -A/THR..............OFF", colour: "c"),
var eng2BleedLowTempAdv = warning.new(msg: " -THR LEVER 2....ADVANCE", colour: "c"),
var eng2BleedLowTempSucc = warning.new(msg: " •IF UNSUCCESSFUL :", colour: "c"),
var eng2BleedLowTempXBld = warning.new(msg: " -X BLEED...........OPEN", colour: "c"),
var eng2BleedLowTempOff = warning.new(msg: " -ENG 2 BLEED........OFF", colour: "c"),
var eng2BleedLowTempPack = warning.new(msg: " -PACK 2.............OFF", colour: "c"),
var eng2BleedLowTempIce = warning.new(msg: " -WING A.ICE.........OFF", colour: "c"),
var eng2BleedLowTempIcing = warning.new(msg: " AVOID ICING CONDITIONS", colour: "c"),
var eng1BleedAbPress = warning.new(msg: "AIR ENG 1 BLEED ABNORM PR", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var eng1BleedAbPressPack = warning.new(msg: " -PACK 1.............OFF", colour: "c"),
var eng1BleedAbPressXBld = warning.new(msg: " -X BLEED...........OPEN", colour: "c"),
var eng2BleedAbPress = warning.new(msg: "AIR ENG 2 BLEED ABNORM PR", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var eng2BleedAbPressPack = warning.new(msg: " -PACK 1.............OFF", colour: "c"),
var eng2BleedAbPressXBld = warning.new(msg: " -X BLEED...........OPEN", colour: "c"),
var eng1BleedNotClsd = warning.new(msg: "AIR ENG 1 BLEED NOT CLSD", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var eng1BleedNotClsdOff = warning.new(msg: " -ENG 2 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),
var bleedMon1Fault = warning.new(msg: "BLEED MONIT SYS 1 FAULT", colour: "a", aural: 0, light: 0),
var bleedMon2Fault = warning.new(msg: "BLEED MONIT SYS 2 FAULT", colour: "a", aural: 0, light: 0),
# FIRE det fault
var eng1FireDetFault = warning.new(msg: "ENG 1 FIRE DET FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var eng1LoopAFault = warning.new(msg: "ENG 1 FIRE LOOP A FAULT", colour: "a", isMainMsg: 1),

View file

@ -110,13 +110,13 @@ var phaseLoop = func() {
gnd = 0;
}
if (eng1n2 < 59.4) {
if (eng1n2 >= 59.4) {
FWC.Timer.eng1idle.setValue(1);
} else {
FWC.Timer.eng1idle.setValue(0);
}
if (eng2n2 < 59.4) {
if (eng2n2 >= 59.4) {
FWC.Timer.eng2idle.setValue(1);
} else {
FWC.Timer.eng2idle.setValue(0);
@ -128,7 +128,7 @@ var phaseLoop = func() {
FWC.Timer.eng1or2.setValue(0);
}
if ((FWC.Timer.eng1idleOutput.getBoolValue() or master1) and (FWC.Timer.eng2idleOutput.getBoolValue() or master2)) {
if ((!FWC.Timer.eng1idleOutput.getBoolValue() or master1) and (!FWC.Timer.eng2idleOutput.getBoolValue() or master2)) {
twoEngOff = 1;
} else {
twoEngOff = 0;

View file

@ -22,6 +22,12 @@ var PNEU = {
xbleed: props.globals.getNode("/systems/failures/pneumatics/x-bleed-valve"),
},
Psi: {
engine1: props.globals.getNode("/systems/pneumatics/psi/engine-1-psi"),
engine2: props.globals.getNode("/systems/pneumatics/psi/engine-2-psi"),
},
Ovht: {
ovht1: props.globals.getNode("/systems/pneumatics/precooler/ovht-1"),
ovht2: props.globals.getNode("/systems/pneumatics/precooler/ovht-2"),
},
Switch: {
apu: props.globals.getNode("/controls/pneumatics/switches/apu"),
@ -40,6 +46,15 @@ var PNEU = {
tempCockpit: props.globals.getNode("/controls/pneumatics/switches/temp-cockpit"),
xbleed: props.globals.getNode("/controls/pneumatics/switches/x-bleed"),
},
Warnings: {
prv1Disag: props.globals.getNode("/systems/pneumatics/valves/engine-1-prv-valve-disag"),
prv2Disag: props.globals.getNode("/systems/pneumatics/valves/engine-2-prv-valve-disag"),
},
Valves: {
crossbleed: props.globals.getNode("/systems/pneumatics/valves/crossbleed-valve"),
prv1: props.globals.getNode("/systems/pneumatics/valves/engine-1-prv-valve"),
prv2: props.globals.getNode("/systems/pneumatics/valves/engine-2-prv-valve"),
},
init: func() {
me.resetFail();
},

View file

@ -78,8 +78,8 @@ var PNEU = {
setprop("controls/pneumatic/switches/bleed2", 1);
setprop("controls/pneumatic/switches/bleedapu", 0);
setprop("controls/pneumatic/switches/groundair", 0);
setprop("controls/pneumatic/switches/pack1", 1);
setprop("controls/pneumatic/switches/pack2", 1);
setprop("controls/pneumatics/switches/pack-1", 1);
setprop("controls/pneumatics/switches/pack-2", 1);
setprop("controls/pneumatic/switches/hot-air", 1);
setprop("controls/pneumatic/switches/ram-air", 0);
setprop("controls/pneumatic/switches/pack-flo", 9); # LO: 7, NORM: 9, HI: 11.
@ -168,8 +168,8 @@ var PNEU = {
bleed1_sw = getprop("controls/pneumatic/switches/bleed1");
bleed2_sw = getprop("controls/pneumatic/switches/bleed2");
bleedapu_sw = getprop("controls/pneumatic/switches/bleedapu");
pack1_sw = getprop("controls/pneumatic/switches/pack1");
pack2_sw = getprop("controls/pneumatic/switches/pack2");
pack1_sw = getprop("controls/pneumatics/switches/pack-1");
pack2_sw = getprop("controls/pneumatics/switches/pack-2");
hot_air_sw = getprop("controls/pneumatic/switches/hot-air");
ram_air_sw = getprop("controls/pneumatic/switches/ram-air");
pack_flo_sw = getprop("controls/pneumatic/switches/pack-flo");
@ -417,15 +417,15 @@ var PNEU = {
},
};
setlistener("/controls/pneumatic/switches/pack1", func {
pack1_sw = getprop("controls/pneumatic/switches/pack1");
setlistener("/controls/pneumatics/switches/pack-1", func {
pack1_sw = getprop("controls/pneumatics/switches/pack-1");
if (pack1_sw) {
setprop("systems/pneumatic/pack1-fault", 1);
}
});
setlistener("/controls/pneumatic/switches/pack2", func {
pack2_sw = getprop("controls/pneumatic/switches/pack2");
setlistener("/controls/pneumatics/switches/pack-2", func {
pack2_sw = getprop("controls/pneumatics/switches/pack-2");
if (pack2_sw) {
setprop("systems/pneumatic/pack2-fault", 1);
}

View file

@ -40,6 +40,21 @@
<rate_limit sense="decr">100</rate_limit> <!-- Instant -->
<rate_limit sense="incr">0.33</rate_limit> <!-- 3 seconds -->
</actuator>
<actuator name="/ECAM/warnings/timer/bleed-1-fault-output">
<description>Timer for the ECAM system</description>
<input>/ECAM/warnings/timer/bleed-1-fault</input>
<rate_limit sense="decr">100</rate_limit> <!-- Instant -->
<rate_limit sense="incr">0.2</rate_limit> <!-- 5 seconds -->
</actuator>
<actuator name="/ECAM/warnings/timer/bleed-2-fault-output">
<description>Timer for the ECAM system</description>
<input>/ECAM/warnings/timer/bleed-2-fault</input>
<rate_limit sense="decr">100</rate_limit> <!-- Instant -->
<rate_limit sense="incr">0.2</rate_limit> <!-- 5 seconds -->
</actuator>
</channel>
</system>

View file

@ -26,6 +26,44 @@
<rate_limit>/systems/pneumatics/valves/apu-bleed-valve-power</rate_limit>
</actuator>
<!-- Crossbleed -->
<switch name="/systems/pneumatics/valves/crossbleed-valve-cmd">
<default value="/systems/pneumatics/valves/crossbleed-valve-cmd"/>
<test logic="AND" value="0"> <!-- CB 2HV -->
/systems/electrical/bus/dc-ess-shed ge 25
/controls/pneumatics/switches/x-bleed eq 0
</test>
<test logic="AND" value="1">
/systems/electrical/bus/dc-ess-shed ge 25
/controls/pneumatics/switches/x-bleed eq 2
</test>
<test logic="AND" value="0"> <!-- CB 1HV, 4HV -->
/systems/electrical/bus/dc-2 ge 25
<test logic="OR">
/controls/pneumatics/switches/apu eq 0
/systems/pneumatics/valves/apu-bleed-valve eq 0
</test>
</test>
<test logic="AND" value="1"> <!-- CB 1HV, 4HV -->
/systems/electrical/bus/dc-2 ge 25
/controls/pneumatics/switches/apu eq 1
/systems/pneumatics/valves/apu-bleed-valve ne 0
</test>
</switch>
<switch name="/systems/pneumatics/valves/crossbleed-valve-power">
<default value="0"/>
<test logic="OR" value="0.2">
/systems/electrical/bus/dc-ess-shed ge 25
/systems/electrical/bus/dc-2 ge 25
</test>
</switch>
<actuator name="/systems/pneumatics/valves/crossbleed-valve">
<input>/systems/pneumatics/valves/crossbleed-valve-cmd</input>
<rate_limit>/systems/pneumatics/valves/crossbleed-valve-power</rate_limit>
</actuator>
<!-- Low Pressure valve -->
<switch name="/systems/pneumatics/valves/engine-1-lp-valve-cmd">
<default value="1"/>
@ -149,6 +187,18 @@
<rate_limit>/systems/pneumatics/valves/engine-1-prv-valve-power</rate_limit>
</actuator>
<switch name="/systems/pneumatics/valves/engine-1-prv-valve-disag">
<default value="0"/>
<test logic="AND" value="1">
/systems/pneumatics/valves/engine-1-prv-valve-cmd eq 0
/systems/pneumatics/valves/engine-1-prv-valve ne 0
</test>
<test logic="AND" value="1">
/systems/pneumatics/valves/engine-1-prv-valve-cmd eq 1
/systems/pneumatics/valves/engine-1-prv-valve ne 1
</test>
</switch>
<switch name="/systems/pneumatics/valves/engine-2-prv-valve-cmd">
<default value="0"/>
<test logic="OR" value="0">
@ -174,6 +224,18 @@
</test>
</switch>
<switch name="/systems/pneumatics/valves/engine-2-prv-valve-disag">
<default value="0"/>
<test logic="AND" value="1">
/systems/pneumatics/valves/engine-2-prv-valve-cmd eq 0
/systems/pneumatics/valves/engine-2-prv-valve ne 0
</test>
<test logic="AND" value="1">
/systems/pneumatics/valves/engine-2-prv-valve-cmd eq 1
/systems/pneumatics/valves/engine-2-prv-valve ne 1
</test>
</switch>
<actuator name="/systems/pneumatics/valves/engine-2-prv-valve">
<input>/systems/pneumatics/valves/engine-2-prv-valve-cmd</input>
<rate_limit>/systems/pneumatics/valves/engine-2-prv-valve-power</rate_limit>

View file

@ -400,4 +400,17 @@
<output>ECAM/phases/monostable/to-power-set-output</output>
</flipflop>
<!-- take inverse of this for rising pulse -->
<flipflop>
<type>monostable</type>
<inverted type="bool">true</inverted>
<time>
<value>1.0</value>
</time>
<S>
<property>/controls/switches/wing</property>
</S>
<output>/ECAM/phases/wing-anti-ice-pulse</output>
</flipflop>
</PropertyList>