1
0
Fork 0

APU bleed

This commit is contained in:
legoboyvdlp R 2020-05-05 19:43:21 +01:00
parent 531603e16b
commit 42c1a86668
4 changed files with 111 additions and 39 deletions

View file

@ -80,6 +80,9 @@ var tank3_content_lbs = props.globals.getNode("/fdm/jsbsim/propulsion/tank[2]/co
var apu_master = props.globals.getNode("/controls/apu/master", 1);
var ir2_knob = props.globals.getNode("/controls/adirs/ir[1]/knob", 1);
var switch_bleedapu = props.globals.getNode("/controls/pneumatic/switches/apu", 1);
var apuBleedNotOn = props.globals.getNode("/systems/pneumatics/warnings/apu-bleed-not-on", 1);
var apu_valve = props.globals.getNode("/systems/pneumatics/valves/apu-bleed-valve-cmd", 1);
var apu_valve_state = props.globals.getNode("/systems/pneumatics/valves/apu-bleed-valve", 1);
var pneumatic_xbleed_state = props.globals.getNode("/systems/pneumatics/xbleed-state", 1);
var xbleed = props.globals.getNode("/systems/pneumatics/valves/crossbleed-valve", 1);
var hp_valve1_state = props.globals.getNode("/systems/pneumatics/valves/engine-1-hp-valve", 1);
@ -671,21 +674,29 @@ var canvas_lowerECAM_apu = {
me["APUGenHz"].setText(sprintf("%s", math.round(apu_hz.getValue())));
# APU Bleed
if (systems.ADIRS.Operating.adr[0].getValue() and (apu_master.getValue() == 1 or bleedapu.getValue() > 0)) {
me["APUBleedPSI"].setColor(0.0509,0.7529,0.2941);
me["APUBleedPSI"].setText(sprintf("%s", math.round(bleedapu.getValue())));
} else {
#if (systems.ADIRS.Operating.adr[0].getValue() and (apu_master.getValue() == 1 or bleedapu.getValue() > 0)) {
# me["APUBleedPSI"].setColor(0.0509,0.7529,0.2941);
# me["APUBleedPSI"].setText(sprintf("%s", math.round(bleedapu.getValue())));
#} else {
me["APUBleedPSI"].setColor(0.7333,0.3803,0);
me["APUBleedPSI"].setText(sprintf("%s", "XX"));
}
#}
if (switch_bleedapu.getValue() == 1) {
var apu_valve_state2 = apu_valve_state.getValue();
if (apu_valve_state2 == 1) {
me["APUBleedValve"].setRotation(90 * D2R);
me["APUBleedOnline"].show();
} else {
me["APUBleedValve"].setRotation(0);
}
if (apu_valve_state2 == apu_valve_state.getValue()) {
me["APUBleedValve"].setColor(0.0509,0.7529,0.2941);
me["APUBleedOnline"].show();
} else {
me["APUBleedValve"].setColor(0.7333,0.3803,0);
me["APUBleedOnline"].hide();
}
# APU N and EGT
if (apu_master.getValue() == 1) {
@ -725,7 +736,7 @@ var canvas_lowerECAM_bleed = {
return m;
},
getKeys: func() {
return ["TAT","SAT","GW","UTCh","UTCm","GW-weight-unit", "BLEED-XFEED", "BLEED-Ram-Air", "BLEED-APU", "BLEED-HP-Valve-1",
return ["TAT","SAT","GW","UTCh","UTCm","GW-weight-unit", "BLEED-XFEED", "BLEED-Ram-Air", "BLEED-APU", "BLEED-HP-Valve-1","BLEED-APU-LINES",
"BLEED-ENG-1", "BLEED-HP-Valve-2", "BLEED-ENG-2", "BLEED-Precooler-1-Inlet-Press", "BLEED-Precooler-1-Outlet-Temp",
"BLEED-Precooler-2-Inlet-Press", "BLEED-Precooler-2-Outlet-Temp", "BLEED-ENG-1-label", "BLEED-ENG-2-label",
"BLEED-GND", "BLEED-Pack-1-Flow-Valve", "BLEED-Pack-2-Flow-Valve", "BLEED-Pack-1-Out-Temp",
@ -798,7 +809,26 @@ var canvas_lowerECAM_bleed = {
} else {
me["BLEED-ENG-1"].setColor(0.7333,0.3803,0);
}
# APU BLEED valve
var apu_valve_state2 = apu_valve_state.getValue();
if (apu_master.getValue()) {
me["BLEED-APU-LINES"].show();
if (apu_valve_state2 == 1) {
me["BLEED-APU"].setRotation(0);
} else {
me["BLEED-APU"].setRotation(90 * D2R);
}
if (apuBleedNotOn.getValue() != 1) {
me["BLEED-APU"].setColor(0.0509,0.7529,0.2941);
} else {
me["BLEED-APU"].setColor(0.7333,0.3803,0);
}
} else {
me["BLEED-APU-LINES"].hide();
}
# ENG BLEED valve 2
var eng_valve_state = eng_valve2_state.getValue();

View file

@ -4246,7 +4246,7 @@
</or>
</condition>
<command>property-toggle</command>
<property>controls/pneumatic/switches/bleedapu</property>
<property>controls/pneumatics/switches/apu</property>
</binding>
<binding>
<command>nasal</command>
@ -4266,7 +4266,7 @@
<value>1</value>
</equals>
<equals>
<property>controls/pneumatic/switches/bleedapu</property>
<property>controls/pneumatics/switches/apu</property>
<value>1</value>
</equals>
</and>
@ -4284,7 +4284,7 @@
<condition>
<or>
<equals>
<property>controls/pneumatic/switches/bleedapu</property>
<property>controls/pneumatics/switches/apu</property>
<value>1</value>
</equals>
<equals>

View file

@ -5,16 +5,16 @@
var APUNodes = {
Controls: {
master: props.globals.getNode("controls/apu/master"),
fire: props.globals.getNode("controls/apu/fire-btn"),
bleed: props.globals.getNode("controls/pneumatic/switches/bleedapu"),
master: props.globals.getNode("/controls/apu/master"),
fire: props.globals.getNode("/controls/apu/fire-btn"),
bleed: props.globals.getNode("/controls/pneumatics/switches/apu"),
},
Oil: {
level: props.globals.getNode("systems/apu/oil/level-l"),
pressure: props.globals.getNode("systems/apu/oil/oil-pressure-psi"),
temperature: props.globals.getNode("systems/apu/oil/oil-temperature-degC"),
level: props.globals.getNode("/systems/apu/oil/level-l"),
pressure: props.globals.getNode("/systems/apu/oil/oil-pressure-psi"),
temperature: props.globals.getNode("/systems/apu/oil/oil-temperature-degC"),
},
masterElecThreeMin: props.globals.getNode("systems/apu/dc-bat-three-minutes"),
masterElecThreeMin: props.globals.getNode("/systems/apu/dc-bat-three-minutes"),
};
var APU = {
@ -22,8 +22,8 @@ var APU = {
inletFlap: aircraft.door.new("controls/apu/inlet-flap", 12),
fuelValveCmd: props.globals.getNode("/systems/fuel/valves/apu-lp-valve-cmd"),
fuelValvePos: props.globals.getNode("/systems/fuel/valves/apu-lp-valve"),
inletFlapPos: props.globals.getNode("controls/apu/inlet-flap/position-norm"),
oilLevel: props.globals.getNode("systems/apu/oil/level-l"),
inletFlapPos: props.globals.getNode("/controls/apu/inlet-flap/position-norm"),
oilLevel: props.globals.getNode("/systems/apu/oil/level-l"),
listenSignals: 0,
listenStopSignal: 0,
bleedTime: 0,
@ -34,16 +34,16 @@ var APU = {
lowOilLevel: 0,
},
GenericControls: {
starter: props.globals.getNode("controls/engines/engine[2]/starter"),
cutoff: props.globals.getNode("controls/engines/engine[2]/cutoff"),
throttle: props.globals.getNode("controls/engines/engine[2]/throttle"),
starter: props.globals.getNode("/controls/engines/engine[2]/starter"),
cutoff: props.globals.getNode("/controls/engines/engine[2]/cutoff"),
throttle: props.globals.getNode("/controls/engines/engine[2]/throttle"),
},
signals: {
startInProgress: props.globals.getNode("systems/apu/start"),
startInProgress: props.globals.getNode("/systems/apu/start"),
oilTestComplete: 0,
available: props.globals.getNode("systems/apu/available"),
available: props.globals.getNode("/systems/apu/available"),
bleedWasUsed: 0,
fault: props.globals.getNode("systems/apu/fault"),
fault: props.globals.getNode("/systems/apu/fault"),
autoshutdown: 0,
emer: 0,
},

View file

@ -3,6 +3,29 @@
<system name="A320: Pneumatic">
<channel name="Valves">
<!-- apu -->
<switch name="/systems/pneumatics/valves/apu-bleed-valve-cmd">
<default value="0"/>
<test logic="AND" value="1">
/engines/engine[2]/n1 ge 95
/controls/pneumatics/switches/apu eq 1
</test>
</switch>
<switch name="/systems/pneumatics/valves/apu-bleed-valve-power">
<default value="0"/>
<test logic="OR" value="5">
/systems/electrical/bus/dc-ess-shed ge 25
<!-- confirm, some a320 have it on dc-bat, but this makes sense, since x-bleed is on ess shed too.
Definitely, some A320 have it on dc-ess-shed, but why is there any difference? -->
</test>
</switch>
<actuator name="/systems/pneumatics/valves/apu-bleed-valve">
<input>/systems/pneumatics/valves/apu-bleed-valve-cmd</input>
<rate_limit>/systems/pneumatics/valves/apu-bleed-valve-power</rate_limit>
</actuator>
<!-- Low Pressure valve -->
<switch name="/systems/pneumatics/valves/engine-1-lp-valve-cmd">
<default value="1"/>
@ -11,7 +34,7 @@
</test>
</switch>
<switch name="/systems/pneumatics/valves/engine-1-lp-valve-cmd-power">
<switch name="/systems/pneumatics/valves/engine-1-lp-valve-power">
<default value="0"/>
<test logic="OR" value="5">
/systems/electrical/bus/dc-ess-shed ge 25
@ -20,7 +43,7 @@
<actuator name="/systems/pneumatics/valves/engine-1-lp-valve">
<input>/systems/pneumatics/valves/engine-1-lp-valve-cmd</input>
<rate_limit>/systems/pneumatics/valves/engine-1-lp-valve-cmd-power</rate_limit>
<rate_limit>/systems/pneumatics/valves/engine-1-lp-valve-power</rate_limit>
</actuator>
<switch name="/systems/pneumatics/valves/engine-2-lp-valve-cmd">
@ -30,7 +53,7 @@
</test>
</switch>
<switch name="/systems/pneumatics/valves/engine-2-lp-valve-cmd-power">
<switch name="/systems/pneumatics/valves/engine-2-lp-valve-power">
<default value="0"/>
<test logic="OR" value="5">
/systems/electrical/bus/dc-2 ge 25
@ -39,7 +62,7 @@
<actuator name="/systems/pneumatics/valves/engine-2-lp-valve">
<input>/systems/pneumatics/valves/engine-2-lp-valve-cmd</input>
<rate_limit>/systems/pneumatics/valves/engine-2-lp-valve-cmd-power</rate_limit>
<rate_limit>/systems/pneumatics/valves/engine-2-lp-valve-power</rate_limit>
</actuator>
@ -59,7 +82,7 @@
</test>
</switch>
<switch name="/systems/pneumatics/valves/engine-1-hp-valve-cmd-power">
<switch name="/systems/pneumatics/valves/engine-1-hp-valve-power">
<default value="0"/>
<test logic="OR" value="3">
/systems/electrical/bus/dc-ess-shed ge 25
@ -68,7 +91,7 @@
<actuator name="/systems/pneumatics/valves/engine-1-hp-valve">
<input>/systems/pneumatics/valves/engine-1-hp-valve-cmd</input>
<rate_limit>/systems/pneumatics/valves/engine-1-hp-valve-cmd-power</rate_limit>
<rate_limit>/systems/pneumatics/valves/engine-1-hp-valve-power</rate_limit>
</actuator>
<switch name="/systems/pneumatics/valves/engine-2-hp-valve-cmd">
@ -86,7 +109,7 @@
</test>
</switch>
<switch name="/systems/pneumatics/valves/engine-2-hp-valve-cmd-power">
<switch name="/systems/pneumatics/valves/engine-2-hp-valve-power">
<default value="0"/>
<test logic="OR" value="3">
/systems/electrical/bus/dc-2 ge 25
@ -95,7 +118,7 @@
<actuator name="/systems/pneumatics/valves/engine-2-hp-valve">
<input>/systems/pneumatics/valves/engine-2-hp-valve-cmd</input>
<rate_limit>/systems/pneumatics/valves/engine-2-hp-valve-cmd-power</rate_limit>
<rate_limit>/systems/pneumatics/valves/engine-2-hp-valve-power</rate_limit>
</actuator>
<!-- Pressure regulation valve -->
@ -112,7 +135,7 @@
</test>
</switch>
<switch name="/systems/pneumatics/valves/engine-1-prv-valve-cmd-power">
<switch name="/systems/pneumatics/valves/engine-1-prv-valve-power">
<default value="0"/>
<test logic="OR" value="5.0">
/systems/electrical/bus/dc-ess-shed ge 25
@ -123,7 +146,7 @@
<actuator name="/systems/pneumatics/valves/engine-1-prv-valve">
<input>/systems/pneumatics/valves/engine-1-prv-valve-cmd</input>
<rate_limit>/systems/pneumatics/valves/engine-1-prv-valve-cmd-power</rate_limit>
<rate_limit>/systems/pneumatics/valves/engine-1-prv-valve-power</rate_limit>
</actuator>
<switch name="/systems/pneumatics/valves/engine-2-prv-valve-cmd">
@ -142,7 +165,7 @@
</test>
</switch>
<switch name="/systems/pneumatics/valves/engine-2-prv-valve-cmd-power">
<switch name="/systems/pneumatics/valves/engine-2-prv-valve-power">
<default value="0"/>
<test logic="OR" value="5.0">
/systems/electrical/bus/dc-2 ge 25
@ -153,7 +176,7 @@
<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-cmd-power</rate_limit>
<rate_limit>/systems/pneumatics/valves/engine-2-prv-valve-power</rate_limit>
</actuator>
<!-- Overpressure valve -->
@ -492,4 +515,23 @@
</switch>
</channel>
<channel name="ECAM">
<switch name="/systems/pneumatics/warnings/apu-bleed-not-on-cmd">
<default value="0"/>
<test logic="AND" value="1">
/systems/pneumatics/valves/apu-bleed-valve eq 0
/controls/apu/master eq 1
/controls/pneumatics/switches/apu eq 1
</test>
</switch>
<actuator name="/systems/pneumatics/warnings/apu-bleed-not-on">
<input>/systems/pneumatics/warnings/apu-bleed-not-on-cmd</input>
<rate_limit sense="incr">0.1</rate_limit>
<rate_limit sense="decr">100</rate_limit>
</actuator>
</channel>
</system>