Experimental cockpit oxygen system
This commit is contained in:
parent
55c2e17d55
commit
80a299831f
10 changed files with 380 additions and 8 deletions
|
@ -212,6 +212,7 @@ xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd">
|
|||
<system file="a320-engine-fire"/>
|
||||
<system file="a320-adr"/>
|
||||
<system file="a320-apu"/>
|
||||
<system file="a320-oxygen"/>
|
||||
<system file="a320-fmgc"/>
|
||||
<system file="a320-misc"/>
|
||||
|
||||
|
|
|
@ -211,6 +211,7 @@ xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd">
|
|||
<system file="a320-engine-fire"/>
|
||||
<system file="a320-adr"/>
|
||||
<system file="a320-apu"/>
|
||||
<system file="a320-oxygen"/>
|
||||
<system file="a320-fmgc"/>
|
||||
<system file="a320-misc"/>
|
||||
|
||||
|
|
|
@ -211,6 +211,7 @@ xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd">
|
|||
<system file="a320-engine-fire"/>
|
||||
<system file="a320-adr"/>
|
||||
<system file="a320-apu"/>
|
||||
<system file="a320-oxygen"/>
|
||||
<system file="a320-fmgc"/>
|
||||
<system file="a320-misc"/>
|
||||
|
||||
|
|
|
@ -1058,6 +1058,16 @@
|
|||
<ratman type="bool">0</ratman>
|
||||
</protectors>
|
||||
</OH>
|
||||
<oxygen>
|
||||
<cockpit-mask-1-on type="bool">0</cockpit-mask-1-on>
|
||||
<cockpit-mask-2-on type="bool">0</cockpit-mask-2-on>
|
||||
<cockpit-mask-3-on type="bool">0</cockpit-mask-3-on>
|
||||
<cockpit-mask-4-on type="bool">0</cockpit-mask-4-on>
|
||||
<cockpit-mask-1-selector type="bool">0</cockpit-mask-1-selector>
|
||||
<cockpit-mask-2-selector type="bool">0</cockpit-mask-2-selector>
|
||||
<cockpit-mask-3-selector type="bool">0</cockpit-mask-3-selector>
|
||||
<cockpit-mask-4-selector type="bool">0</cockpit-mask-4-selector>
|
||||
</oxygen>
|
||||
<pneumatics n="0">
|
||||
<switches n="0">
|
||||
<apu type="bool">0</apu>
|
||||
|
@ -1580,6 +1590,7 @@
|
|||
<operating-3 type="bool">0</operating-3>
|
||||
</adr>
|
||||
</navigation>
|
||||
|
||||
</systems>
|
||||
|
||||
<options n="0">
|
||||
|
|
|
@ -211,6 +211,7 @@ xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd">
|
|||
<system file="a320-engine-fire"/>
|
||||
<system file="a320-adr"/>
|
||||
<system file="a320-apu"/>
|
||||
<system file="a320-oxygen"/>
|
||||
<system file="a320-fmgc"/>
|
||||
<system file="a320-misc"/>
|
||||
|
||||
|
|
|
@ -211,6 +211,7 @@ xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd">
|
|||
<system file="a320-engine-fire"/>
|
||||
<system file="a320-adr"/>
|
||||
<system file="a320-apu"/>
|
||||
<system file="a320-oxygen"/>
|
||||
<system file="a320-fmgc"/>
|
||||
<system file="a320-misc"/>
|
||||
|
||||
|
|
|
@ -342,6 +342,42 @@
|
|||
<value>1</value>
|
||||
</binding>
|
||||
</button>
|
||||
|
||||
<group>
|
||||
<layout>hbox</layout>
|
||||
<hrule>
|
||||
<stretch type="bool">true</stretch>
|
||||
</hrule>
|
||||
<text>
|
||||
<label>Oxygen</label>
|
||||
</text>
|
||||
<hrule>
|
||||
<stretch type="bool">true</stretch>
|
||||
</hrule>
|
||||
</group>
|
||||
|
||||
<text>
|
||||
<x>10</x>
|
||||
<y>200</y>
|
||||
<label>8888 litres</label><!-- placeholder for width -->
|
||||
<format>%4.0f litres</format>
|
||||
<property>/systems/oxygen/cockpit-oxygen/cockpit-bottle-L</property>
|
||||
<live>true</live>
|
||||
</text>
|
||||
|
||||
<button>
|
||||
<legend>Replace Oxygen Bottle</legend>
|
||||
<halign>center</halign>
|
||||
<padding>5</padding>
|
||||
<enable>
|
||||
<property>/gear/gear[1]/wow</property>
|
||||
</enable>
|
||||
<binding>
|
||||
<command>property-assign</command>
|
||||
<property>/systems/oxygen/cockpit-oxygen/cockpit-bottle-L</property>
|
||||
<value>2183</value>
|
||||
</binding>
|
||||
</button>
|
||||
</group>
|
||||
|
||||
</PropertyList>
|
||||
|
|
|
@ -26,7 +26,6 @@ var canvas_lowerECAMPageDoor =
|
|||
obj["Cabin3LeftSlide"].hide();
|
||||
obj["Cabin3RightSlide"].hide();
|
||||
|
||||
obj["DOOROXY-REGUL-LO-PR"].hide();
|
||||
obj["AvionicsLine1"].hide();
|
||||
obj["AvionicsLine2"].hide();
|
||||
obj["AvionicsLbl1"].hide();
|
||||
|
@ -153,16 +152,23 @@ var canvas_lowerECAMPageDoor =
|
|||
obj["Cargo1Line"].hide();
|
||||
}
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("oxyPB", nil, func(val) {
|
||||
if (val) {
|
||||
obj["DOOROXY-OxyIndicator"].setColor(0.8078,0.8039,0.8078);
|
||||
obj["DOOROXY-PR"].setColor(0.0509,0.7529,0.2941);
|
||||
obj["DOOROXY-PR"].setText("1300");
|
||||
props.UpdateManager.FromHashList(["oxyPB","oxyBottlePress","oxyBottleRegulLoPr"], nil, func(val) {
|
||||
if (val.oxyPB) {
|
||||
if (val.oxyBottlePress < 300 or val.oxyBottleRegulLoPr) {
|
||||
obj["DOOROXY-OxyIndicator"].setColor(0.7333,0.3803,0);
|
||||
} else {
|
||||
obj["DOOROXY-OxyIndicator"].setColor(0.8078,0.8039,0.8078);
|
||||
}
|
||||
} else {
|
||||
obj["DOOROXY-OxyIndicator"].setColor(0.7333,0.3803,0);
|
||||
obj["DOOROXY-PR"].setColor(0.7333,0.3803,0);
|
||||
obj["DOOROXY-PR"].setText("0");
|
||||
}
|
||||
|
||||
if (val.oxyBottlePress < 300) {
|
||||
obj["DOOROXY-PR"].setColor(0.7333,0.3803,0);
|
||||
} else {
|
||||
obj["DOOROXY-PR"].setColor(0.0509,0.7529,0.2941);
|
||||
}
|
||||
obj["DOOROXY-PR"].setText(sprintf("%4.0f", math.round(val.oxyBottlePress, 10)));
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("pressVS", nil, func(val) {
|
||||
if (val > 9950) {
|
||||
|
@ -186,6 +192,13 @@ var canvas_lowerECAMPageDoor =
|
|||
obj["DOOR-VS-Container"].hide();
|
||||
}
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("oxyBottleRegulLoPr", nil, func(val) {
|
||||
if (val) {
|
||||
obj["DOOROXY-REGUL-LO-PR"].show();
|
||||
} else {
|
||||
obj["DOOROXY-REGUL-LO-PR"].hide();
|
||||
}
|
||||
}),
|
||||
];
|
||||
|
||||
obj.displayedGForce = 0;
|
||||
|
@ -327,6 +340,8 @@ var input = {
|
|||
cargoBulk: "/sim/model/door-positions/cargobulk/position-norm",
|
||||
cargoFwd: "/sim/model/door-positions/cargofwd/position-norm",
|
||||
oxyPB: "/controls/oxygen/crewOxyPB",
|
||||
oxyBottlePress: "/systems/oxygen/cockpit-oxygen/bottle-psi",
|
||||
oxyBottleRegulLoPr: "/systems/oxygen/cockpit-oxygen/regul-lo-pr",
|
||||
};
|
||||
|
||||
foreach (var name; keys(input)) {
|
||||
|
|
BIN
Sounds/Announce/depressurization.wav
Normal file
BIN
Sounds/Announce/depressurization.wav
Normal file
Binary file not shown.
305
Systems/a320-oxygen.xml
Normal file
305
Systems/a320-oxygen.xml
Normal file
|
@ -0,0 +1,305 @@
|
|||
<!-- Airbus A320 Fuel -->
|
||||
|
||||
<!-- Copyright (c) 2019 Jonathan Redpath -->
|
||||
|
||||
<system name="A320: Oxygen">
|
||||
<property value="2183">/systems/oxygen/cockpit-oxygen/cockpit-bottle-L</property>
|
||||
<property value="15">/systems/oxygen/cockpit-oxygen/distributor-manifold-L</property>
|
||||
|
||||
<channel name="Cockpit Oxygen" execrate="8">
|
||||
|
||||
<!-- Bottle: 2183L @ 1850 psi NTPD -->
|
||||
|
||||
<!-- Regulator:
|
||||
HP - transducer to ECAM
|
||||
LP - 65 to 94 psi
|
||||
flow: 0 to 300 L / min
|
||||
Cyl PSI: 100 to 2030 psi
|
||||
-->
|
||||
|
||||
<switch name="/systems/oxygen/cockpit-oxygen/supply-valve-cmd">
|
||||
<default value="0"/>
|
||||
<test logic="AND" value="1"> <!-- solenoid valve; when not energized, it shuts -->
|
||||
/controls/oxygen/crewOxyPB eq 1
|
||||
/systems/electrical/bus/dc-ess-shed ge 25
|
||||
</test>
|
||||
</switch>
|
||||
|
||||
<actuator name="/systems/oxygen/cockpit-oxygen/supply-valve">
|
||||
<input>/systems/oxygen/cockpit-oxygen/supply-valve-cmd</input>
|
||||
<rate_limit>10</rate_limit>
|
||||
</actuator>
|
||||
|
||||
<fcs_function name="/systems/oxygen/cockpit-oxygen/mask-1-flow-rate">
|
||||
<function>
|
||||
<product>
|
||||
<quotient>
|
||||
<property>/systems/oxygen/cockpit-oxygen/distributor-manifold-L</property>
|
||||
<value>15</value>
|
||||
</quotient>
|
||||
<property>/controls/oxygen/cockpit-mask-1-on</property>
|
||||
<table>
|
||||
<independentVar lookup="row">/systems/pressurization/cabinalt</independentVar>
|
||||
<independentVar lookup="column">/controls/oxygen/cockpit-mask-1-selector</independentVar>
|
||||
<tableData>
|
||||
0 1
|
||||
0 0 29.5
|
||||
5000 0.0 31.0
|
||||
8000 0.17 36.4
|
||||
10000 0.71 36.9
|
||||
15000 5.60 37.9
|
||||
20000 15.9 38.9
|
||||
30000 30.4 39.9
|
||||
35000 40.9 40.9
|
||||
40000 41.9 41.9
|
||||
</tableData>
|
||||
</table>
|
||||
</product>
|
||||
</function>
|
||||
</fcs_function>
|
||||
|
||||
<fcs_function name="/systems/oxygen/cockpit-oxygen/mask-2-flow-rate">
|
||||
<function>
|
||||
<product>
|
||||
<quotient>
|
||||
<property>/systems/oxygen/cockpit-oxygen/distributor-manifold-L</property>
|
||||
<value>15</value>
|
||||
</quotient>
|
||||
<property>/controls/oxygen/cockpit-mask-2-on</property>
|
||||
<table>
|
||||
<independentVar lookup="row">/systems/pressurization/cabinalt</independentVar>
|
||||
<independentVar lookup="column">/controls/oxygen/cockpit-mask-2-selector</independentVar>
|
||||
<tableData>
|
||||
0 1
|
||||
0 0 29.5
|
||||
5000 0.0 31.0
|
||||
8000 0.17 36.4
|
||||
10000 0.71 36.9
|
||||
15000 5.60 37.9
|
||||
20000 15.9 38.9
|
||||
30000 30.4 39.9
|
||||
35000 40.9 40.9
|
||||
40000 41.9 41.9
|
||||
</tableData>
|
||||
</table>
|
||||
</product>
|
||||
</function>
|
||||
</fcs_function>
|
||||
|
||||
<fcs_function name="/systems/oxygen/cockpit-oxygen/mask-3-flow-rate">
|
||||
<function>
|
||||
<product>
|
||||
<quotient>
|
||||
<property>/systems/oxygen/cockpit-oxygen/distributor-manifold-L</property>
|
||||
<value>15</value>
|
||||
</quotient>
|
||||
<property>/controls/oxygen/cockpit-mask-3-on</property>
|
||||
<table>
|
||||
<independentVar lookup="row">/systems/pressurization/cabinalt</independentVar>
|
||||
<independentVar lookup="column">/controls/oxygen/cockpit-mask-3-selector</independentVar>
|
||||
<tableData>
|
||||
0 1
|
||||
0 0 29.5
|
||||
5000 0.0 31.0
|
||||
8000 0.17 36.4
|
||||
10000 0.71 36.9
|
||||
15000 5.60 37.9
|
||||
20000 15.9 38.9
|
||||
30000 30.4 39.9
|
||||
35000 40.9 40.9
|
||||
40000 41.9 41.9
|
||||
</tableData>
|
||||
</table>
|
||||
</product>
|
||||
</function>
|
||||
</fcs_function>
|
||||
|
||||
<fcs_function name="/systems/oxygen/cockpit-oxygen/mask-4-flow-rate">
|
||||
<function>
|
||||
<product>
|
||||
<quotient>
|
||||
<property>/systems/oxygen/cockpit-oxygen/distributor-manifold-L</property>
|
||||
<value>15</value>
|
||||
</quotient>
|
||||
<property>/controls/oxygen/cockpit-mask-4-on</property>
|
||||
<table>
|
||||
<independentVar lookup="row">/systems/pressurization/cabinalt</independentVar>
|
||||
<independentVar lookup="column">/controls/oxygen/cockpit-mask-4-selector</independentVar>
|
||||
<tableData>
|
||||
0 1
|
||||
0 0 29.5
|
||||
5000 0.0 31.0
|
||||
8000 0.17 36.4
|
||||
10000 0.71 36.9
|
||||
15000 5.60 37.9
|
||||
20000 15.9 38.9
|
||||
30000 30.4 39.9
|
||||
35000 40.9 40.9
|
||||
40000 41.9 41.9
|
||||
</tableData>
|
||||
</table>
|
||||
</product>
|
||||
</function>
|
||||
</fcs_function>
|
||||
|
||||
<fcs_function name="Cockpit Oxygen Bottle">
|
||||
<function>
|
||||
<sum>
|
||||
<property>/systems/oxygen/cockpit-oxygen/cockpit-bottle-L</property>
|
||||
<product>
|
||||
<quotient>
|
||||
<property>-/systems/oxygen/cockpit-oxygen/hp-regulator-flow-rate</property>
|
||||
<value>60</value>
|
||||
</quotient>
|
||||
<property>simulation/channel-dt</property>
|
||||
</product>
|
||||
</sum>
|
||||
</function>
|
||||
<output>/systems/oxygen/cockpit-oxygen/cockpit-bottle-L</output>
|
||||
<clipto>
|
||||
<min>0.0</min>
|
||||
<max>2183.0</max>
|
||||
</clipto>
|
||||
</fcs_function>
|
||||
|
||||
<fcs_function name="/systems/oxygen/cockpit-oxygen/bottle-psi">
|
||||
<function>
|
||||
<product>
|
||||
<value>58.58145</value>
|
||||
<pow>
|
||||
<property>/systems/oxygen/cockpit-oxygen/cockpit-bottle-L</property>
|
||||
<value>0.4512568</value>
|
||||
</pow>
|
||||
</product>
|
||||
</function>
|
||||
</fcs_function>
|
||||
|
||||
<fcs_function name="/systems/oxygen/cockpit-oxygen/bottle-flow-rate">
|
||||
<function>
|
||||
<table>
|
||||
<independentVar lookup="row">/systems/oxygen/cockpit-oxygen/cockpit-bottle-L</independentVar>
|
||||
<tableData>
|
||||
0 0
|
||||
500 200
|
||||
1000 275
|
||||
2000 300
|
||||
2183 300
|
||||
</tableData>
|
||||
</table>
|
||||
</function>
|
||||
</fcs_function>
|
||||
|
||||
<fcs_function name="/systems/oxygen/cockpit-oxygen/distributor-fill-rate">
|
||||
<function>
|
||||
<product>
|
||||
<property>/systems/oxygen/cockpit-oxygen/supply-valve</property>
|
||||
<table>
|
||||
<independentVar lookup="row">/systems/oxygen/cockpit-oxygen/distributor-manifold-L</independentVar>
|
||||
<tableData>
|
||||
0 300
|
||||
14.5 170
|
||||
15 0
|
||||
</tableData>
|
||||
</table>
|
||||
</product>
|
||||
</function>
|
||||
</fcs_function>
|
||||
|
||||
<fcs_function name="/systems/oxygen/cockpit-oxygen/hp-regulator-flow-rate-calc">
|
||||
<function>
|
||||
<product>
|
||||
<property>/systems/oxygen/cockpit-oxygen/bottle-flow-rate</property>
|
||||
<property>/systems/oxygen/cockpit-oxygen/supply-valve</property>
|
||||
</product>
|
||||
</function>
|
||||
</fcs_function>
|
||||
|
||||
<fcs_function name="/systems/oxygen/cockpit-oxygen/hp-regulator-flow-rate">
|
||||
<function>
|
||||
<sum>
|
||||
<property>/systems/oxygen/cockpit-oxygen/mask-1-flow-rate</property>
|
||||
<property>/systems/oxygen/cockpit-oxygen/mask-2-flow-rate</property>
|
||||
<property>/systems/oxygen/cockpit-oxygen/mask-3-flow-rate</property>
|
||||
<property>/systems/oxygen/cockpit-oxygen/mask-4-flow-rate</property>
|
||||
<property>/systems/oxygen/cockpit-oxygen/distributor-fill-rate</property>
|
||||
</sum>
|
||||
</function>
|
||||
<clipto>
|
||||
<min>0.0</min>
|
||||
<max>/systems/oxygen/cockpit-oxygen/hp-regulator-flow-rate-calc</max>
|
||||
</clipto>
|
||||
</fcs_function>
|
||||
|
||||
<!-- Distributor -->
|
||||
<fcs_function name="/systems/oxygen/cockpit-oxygen/distributor-manifold-rate">
|
||||
<function>
|
||||
<sum>
|
||||
<property>-/systems/oxygen/cockpit-oxygen/mask-1-flow-rate</property>
|
||||
<property>-/systems/oxygen/cockpit-oxygen/mask-2-flow-rate</property>
|
||||
<property>-/systems/oxygen/cockpit-oxygen/mask-3-flow-rate</property>
|
||||
<property>-/systems/oxygen/cockpit-oxygen/mask-4-flow-rate</property>
|
||||
<property>/systems/oxygen/cockpit-oxygen/hp-regulator-flow-rate</property>
|
||||
</sum>
|
||||
</function>
|
||||
</fcs_function>
|
||||
|
||||
<fcs_function name="Cockpit Oxygen Distributor">
|
||||
<function>
|
||||
<sum>
|
||||
<property>/systems/oxygen/cockpit-oxygen/distributor-manifold-L</property>
|
||||
<product>
|
||||
<quotient>
|
||||
<property>/systems/oxygen/cockpit-oxygen/distributor-manifold-rate</property>
|
||||
<value>60</value>
|
||||
</quotient>
|
||||
<property>simulation/channel-dt</property>
|
||||
</product>
|
||||
</sum>
|
||||
</function>
|
||||
<output>/systems/oxygen/cockpit-oxygen/distributor-manifold-L</output>
|
||||
<clipto>
|
||||
<min>0.0</min>
|
||||
<max>15.0</max>
|
||||
</clipto>
|
||||
</fcs_function>
|
||||
|
||||
<fcs_function name="/systems/oxygen/cockpit-oxygen/distributor-psi">
|
||||
<function>
|
||||
<product>
|
||||
<value>75</value>
|
||||
<log10>
|
||||
<sum>
|
||||
<property>/systems/oxygen/cockpit-oxygen/distributor-manifold-L</property>
|
||||
<value>1</value>
|
||||
</sum>
|
||||
</log10>
|
||||
</product>
|
||||
</function>
|
||||
</fcs_function>
|
||||
|
||||
<switch name="/systems/oxygen/cockpit-oxygen/regul-lo-pr">
|
||||
<default value="0"/>
|
||||
<test logic="OR" value="1">
|
||||
/systems/oxygen/cockpit-oxygen/distributor-psi lt 50
|
||||
</test>
|
||||
</switch>
|
||||
</channel>
|
||||
|
||||
<channel name="Passenger Oxygen" execrate="8">
|
||||
|
||||
<!-- Chemical generators
|
||||
Masks drop automatically if altitude > 14000 or 16000 if HI ALT
|
||||
or MAN ON button
|
||||
Taped message + SYS ON comes online
|
||||
15 minutes supply
|
||||
SYS ON goes off only when TIMER RESET
|
||||
|
||||
Door actuators AC ESS SHED 801PP
|
||||
Pressure switch for 14K feet powered by 401PP (DC ESS)
|
||||
Reset + taped msg + sys on light powred by 401PP
|
||||
|
||||
Regulators: below 10k zero flow
|
||||
-->
|
||||
</channel>
|
||||
|
||||
</system>
|
Loading…
Add table
Reference in a new issue