1
0
Fork 0

Air Cond - pack flow ctl valves

This commit is contained in:
legoboyvdlp R 2020-05-13 00:44:03 +01:00
parent b3aeb925ce
commit dd5c49ef8c
10 changed files with 323 additions and 105 deletions

View file

@ -206,6 +206,7 @@ xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd">
<system file="a320-electrical"/>
<system file="a320-hydraulic"/>
<system file="a320-pneumatic"/>
<system file="a320-aircond"/> <!-- after pneu -->
<system file="a320-lights"/>
<system file="a320-engine-fire"/>
<system file="a320-adr"/>

View file

@ -205,6 +205,7 @@ xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd">
<system file="a320-electrical"/>
<system file="a320-hydraulic"/>
<system file="a320-pneumatic"/>
<system file="a320-aircond"/> <!-- after pneu -->
<system file="a320-lights"/>
<system file="a320-engine-fire"/>
<system file="a320-adr"/>

View file

@ -205,6 +205,7 @@ xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd">
<system file="a320-electrical"/>
<system file="a320-hydraulic"/>
<system file="a320-pneumatic"/>
<system file="a320-aircond"/> <!-- after pneu -->
<system file="a320-lights"/>
<system file="a320-engine-fire"/>
<system file="a320-adr"/>

View file

@ -848,7 +848,7 @@
<hot-air type="bool">0</hot-air>
<pack-1 type="bool">0</pack-1>
<pack-2 type="bool">0</pack-2>
<pack-flow type="bool">0</pack-flow>
<pack-flow type="double">1.0</pack-flow>
<ram-air type="bool">0</ram-air>
<temp-cabin-aft type="double">0.5</temp-cabin-aft>
<temp-cabin-fwd type="double">0.5</temp-cabin-fwd>
@ -952,6 +952,18 @@
<acconfig n="0">
<autoconfig-running>0</autoconfig-running>
</acconfig>
<air-conditioning>
<temperatures>
<cabin-overall-temp-kelvin type="double">297</cabin-overall-temp-kelvin>
</temperatures>
<recirc>
<recirc-fans type="bool">0</recirc-fans>
</recirc>
<valves>
<flow-control-valve-1 type="double">0</flow-control-valve-1>
<flow-control-valve-2 type="double">0</flow-control-valve-2>
</valves>
</air-conditioning>
<atc>
<transponder-code type="string">2000</transponder-code>
<failed type="bool">0</failed>
@ -1227,6 +1239,11 @@
</warnings>
</pneumatics>
<pressurization>
<cabinpsi type="double">14.7</cabinpsi>
<ditchingpb type="double">14.7</ditchingpb>
</pressurization>
<pitot n="1">
<serviceable>1</serviceable>
</pitot>

View file

@ -205,6 +205,7 @@ xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd">
<system file="a320-electrical"/>
<system file="a320-hydraulic"/>
<system file="a320-pneumatic"/>
<system file="a320-aircond"/> <!-- after pneu -->
<system file="a320-lights"/>
<system file="a320-engine-fire"/>
<system file="a320-adr"/>

View file

@ -205,6 +205,7 @@ xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd">
<system file="a320-electrical"/>
<system file="a320-hydraulic"/>
<system file="a320-pneumatic"/>
<system file="a320-aircond"/> <!-- after pneu -->
<system file="a320-lights"/>
<system file="a320-engine-fire"/>
<system file="a320-adr"/>

View file

@ -114,8 +114,8 @@ var pack1_bypass = props.globals.getNode("/systems/pneumatics/pack-1-bypass", 1)
var pack2_bypass = props.globals.getNode("/systems/pneumatics/pack-2-bypass", 1);
var pack1_flow = props.globals.getNode("/systems/pneumatics/pack-1-flow", 1);
var pack2_flow = props.globals.getNode("/systems/pneumatics/pack-2-flow", 1);
var pack1_valve = props.globals.getNode("/systems/pneumatics/valves/pack-1", 1);
var pack2_valve = props.globals.getNode("/systems/pneumatics/valves/pack-1", 1);
var pack1_valve = props.globals.getNode("/systems/air-conditioning/valves/flow-control-valve-1", 1);
var pack2_valve = props.globals.getNode("/systems/air-conditioning/valves/flow-control-valve-2", 1);
var switch_pack1 = props.globals.getNode("/controls/pneumatics/switches/pack-1", 1);
var switch_pack2 = props.globals.getNode("/controls/pneumatics/switches/pack-2", 1);
var oil_qt1_actual = props.globals.getNode("/engines/engine[0]/oil-qt-actual", 1);

View file

@ -3840,10 +3840,10 @@
<repeatable>false</repeatable>
<binding>
<command>property-cycle</command>
<property>controls/pneumatic/switches/pack-flo</property>
<value>7</value>
<value>9</value>
<value>11</value>
<property>controls/pneumatics/switches/pack-flow</property>
<value>0.8</value>
<value>1.0</value>
<value>1.2</value>
</binding>
<binding>
<command>nasal</command>
@ -3856,10 +3856,10 @@
<repeatable>false</repeatable>
<binding>
<command>property-cycle</command>
<property>controls/pneumatic/switches/pack-flo</property>
<value>11</value>
<value>9</value>
<value>7</value>
<property>controls/pneumatics/switches/pack-flow</property>
<value>1.2</value>
<value>1.0</value>
<value>0.8</value>
</binding>
<binding>
<command>nasal</command>
@ -3871,11 +3871,11 @@
<name>AC pack flow rotate</name>
<type>rotate</type>
<object-name>ACFlowKnb</object-name>
<property>controls/pneumatic/switches/pack-flo</property>
<property>controls/pneumatics/switches/pack-flow</property>
<interpolation>
<entry><ind> 7</ind><dep> 55</dep></entry>
<entry><ind> 9</ind><dep> 0</dep></entry>
<entry><ind>11</ind><dep>-55</dep></entry>
<entry><ind>0.8</ind><dep> 55</dep></entry>
<entry><ind>1.0</ind><dep> 0</dep></entry>
<entry><ind>1.2</ind><dep>-55</dep></entry>
</interpolation>
<axis>
<x>1</x>

View file

@ -84,46 +84,46 @@ var PNEU = {
me.resetFail();
# Legacy shit
setprop("systems/pressurization/mode", "GN");
setprop("systems/pressurization/vs", "0");
setprop("systems/pressurization/targetvs", "0");
setprop("systems/pressurization/vs-norm", "0");
setprop("systems/pressurization/auto", 1);
setprop("systems/pressurization/deltap", "0");
setprop("systems/pressurization/outflowpos", "0");
setprop("systems/pressurization/deltap-norm", "0");
setprop("systems/pressurization/outflowpos-norm", "0");
setprop("systems/pressurization/outflowpos-man", "0.5");
setprop("systems/pressurization/outflowpos-man-sw", "0");
setprop("systems/pressurization/outflowpos-norm-cmd", "0");
setprop("systems/pressurization/cabinalt", getprop("instrumentation/altimeter/indicated-altitude-ft"));
setprop("systems/pressurization/targetalt", getprop("instrumentation/altimeter/indicated-altitude-ft"));
setprop("systems/pressurization/diff-to-target", "0");
setprop("systems/pressurization/ditchingpb", 0);
setprop("systems/pressurization/targetvs", "0");
setprop("systems/pressurization/ambientpsi", "0");
setprop("systems/pressurization/cabinpsi", "0");
setprop("systems/pressurization/manvs-cmd", "0");
setprop("systems/pressurization/pack-1-out-temp", 0);
setprop("systems/pressurization/pack-2-out-temp", 0);
setprop("systems/pressurization/pack-1-bypass", 0);
setprop("systems/pressurization/pack-2-bypass", 0);
setprop("systems/pressurization/pack-1-flow", 0);
setprop("systems/pressurization/pack-2-flow", 0);
setprop("systems/pressurization/pack-1-comp-out-temp", 0);
setprop("systems/pressurization/pack-2-comp-out-temp", 0);
setprop("systems/pressurization/pack-1-valve", 0);
setprop("systems/pressurization/pack-2-valve", 0);
setprop("systems/ventilation/cabin/fans", 0); # aircon fans
setprop("systems/ventilation/avionics/fan", 0);
setprop("systems/ventilation/avionics/extractvalve", "0");
setprop("systems/ventilation/avionics/inletvalve", "0");
setprop("systems/ventilation/lavatory/extractfan", 0);
setprop("systems/ventilation/lavatory/extractvalve", "0");
setprop("controls/oxygen/masksDeploy", 0);
setprop("controls/oxygen/masksDeployMan", 0);
setprop("controls/oxygen/masksReset", 0); # this is the TMR RESET pb on the maintenance panel, needs 3D model
setprop("controls/oxygen/masksSys", 0);
setprop("/systems/pressurization/mode", "GN");
setprop("/systems/pressurization/vs", "0");
setprop("/systems/pressurization/targetvs", "0");
setprop("/systems/pressurization/vs-norm", "0");
setprop("/systems/pressurization/auto", 1);
setprop("/systems/pressurization/deltap", "0");
setprop("/systems/pressurization/outflowpos", "0");
setprop("/systems/pressurization/deltap-norm", "0");
setprop("/systems/pressurization/outflowpos-norm", "0");
setprop("/systems/pressurization/outflowpos-man", "0.5");
setprop("/systems/pressurization/outflowpos-man-sw", "0");
setprop("/systems/pressurization/outflowpos-norm-cmd", "0");
setprop("/systems/pressurization/cabinalt", getprop("instrumentation/altimeter/indicated-altitude-ft"));
setprop("/systems/pressurization/targetalt", getprop("instrumentation/altimeter/indicated-altitude-ft"));
setprop("/systems/pressurization/diff-to-target", "0");
setprop("/systems/pressurization/ditchingpb", 0);
setprop("/systems/pressurization/targetvs", "0");
setprop("/systems/pressurization/ambientpsi", "0");
setprop("/systems/pressurization/cabinpsi", "0");
setprop("/systems/pressurization/manvs-cmd", "0");
setprop("/systems/pressurization/pack-1-out-temp", 0);
setprop("/systems/pressurization/pack-2-out-temp", 0);
setprop("/systems/pressurization/pack-1-bypass", 0);
setprop("/systems/pressurization/pack-2-bypass", 0);
setprop("/systems/pressurization/pack-1-flow", 0);
setprop("/systems/pressurization/pack-2-flow", 0);
setprop("/systems/pressurization/pack-1-comp-out-temp", 0);
setprop("/systems/pressurization/pack-2-comp-out-temp", 0);
setprop("/systems/pressurization/pack-1-valve", 0);
setprop("/systems/pressurization/pack-2-valve", 0);
setprop("/systems/ventilation/cabin/fans", 0); # aircon fans
setprop("/systems/ventilation/avionics/fan", 0);
setprop("/systems/ventilation/avionics/extractvalve", "0");
setprop("/systems/ventilation/avionics/inletvalve", "0");
setprop("/systems/ventilation/lavatory/extractfan", 0);
setprop("/systems/ventilation/lavatory/extractvalve", "0");
setprop("/controls/oxygen/masksDeploy", 0);
setprop("/controls/oxygen/masksDeployMan", 0);
setprop("/controls/oxygen/masksReset", 0); # this is the TMR RESET pb on the maintenance panel, needs 3D model
setprop("/controls/oxygen/masksSys", 0);
},
resetFail: func() {
me.Fail.apu.setBoolValue(0);
@ -147,77 +147,77 @@ var PNEU = {
wowc = getprop("gear/gear[0]/wow");
wowl = getprop("gear/gear[1]/wow");
wowr = getprop("gear/gear[2]/wow");
eng1_starter = getprop("systems/pneumatics/valves/starter-valve-1");
eng2_starter = getprop("systems/pneumatics/valves/starter-valve-2");
eng1_starter = getprop("/systems/pneumatics/valves/starter-valve-1");
eng2_starter = getprop("/systems/pneumatics/valves/starter-valve-2");
if (stateL == 1 or stateR == 1 or stateL == 2 or stateR == 2) {
setprop("systems/pneumatics/start-psi", 18);
setprop("/systems/pneumatics/start-psi", 18);
} else {
setprop("systems/pneumatics/start-psi", 0);
setprop("/systems/pneumatics/start-psi", 0);
}
if (getprop("controls/engines/engine-start-switch") == 2 and wowc == 1 and (stateL != 3 or stateR != 3)) {
setprop("systems/pneumatics/starting", 1);
if (getprop("/controls/engines/engine-start-switch") == 2 and wowc == 1 and (stateL != 3 or stateR != 3)) {
setprop("/systems/pneumatics/starting", 1);
} else if (wowc == 1 and eng1_starter == 1 or eng2_starter == 1) {
setprop("systems/pneumatics/starting", 1);
setprop("/systems/pneumatics/starting", 1);
} else {
setprop("systems/pneumatics/starting", 0);
setprop("/systems/pneumatics/starting", 0);
}
# Legacy pressurization
cabinalt = getprop("systems/pressurization/cabinalt");
targetalt = getprop("systems/pressurization/targetalt");
ambient = getprop("systems/pressurization/ambientpsi");
cabinpsi = getprop("systems/pressurization/cabinpsi");
state1 = getprop("systems/thrust/state1");
state2 = getprop("systems/thrust/state2");
pressmode = getprop("systems/pressurization/mode");
vs = getprop("systems/pressurization/vs-norm");
manvs = getprop("systems/pressurization/manvs-cmd");
pause = getprop("sim/freeze/master");
auto = getprop("systems/pressurization/auto");
cabinalt = getprop("/systems/pressurization/cabinalt");
targetalt = getprop("/systems/pressurization/targetalt");
ambient = getprop("/systems/pressurization/ambientpsi");
cabinpsi = getprop("/systems/pressurization/cabinpsi");
state1 = getprop("/systems/thrust/state1");
state2 = getprop("/systems/thrust/state2");
pressmode = getprop("/systems/pressurization/mode");
vs = getprop("/systems/pressurization/vs-norm");
manvs = getprop("/systems/pressurization/manvs-cmd");
pause = getprop("/sim/freeze/master");
auto = getprop("/systems/pressurization/auto");
speed = getprop("velocities/groundspeed-kt");
ditch = getprop("systems/pressurization/ditchingpb");
outflowpos = getprop("systems/pressurization/outflowpos");
targetvs = getprop("systems/pressurization/targetvs");
ditch = getprop("/systems/pressurization/ditchingpb");
outflowpos = getprop("/systems/pressurization/outflowpos");
targetvs = getprop("/systems/pressurization/targetvs");
setprop("systems/pressurization/diff-to-target", targetalt - cabinalt);
setprop("systems/pressurization/deltap", cabinpsi - ambient);
setprop("/systems/pressurization/diff-to-target", targetalt - cabinalt);
setprop("/systems/pressurization/deltap", cabinpsi - ambient);
if ((pressmode == "GN") and (pressmode != "CL") and (wowl and wowr) and ((state1 == "MCT") or (state1 == "TOGA")) and ((state2 == "MCT") or (state2 == "TOGA"))) {
setprop("systems/pressurization/mode", "TO");
setprop("/systems/pressurization/mode", "TO");
} else if (((!wowl) or (!wowr)) and (speed > 100) and (pressmode == "TO")) {
setprop("systems/pressurization/mode", "CL");
setprop("/systems/pressurization/mode", "CL");
}
if (vs != targetvs and !wowl and !wowr) {
setprop("systems/pressurization/vs", targetvs);
setprop("/systems/pressurization/vs", targetvs);
}
if (cabinalt != targetalt and !wowl and !wowr and !pause and auto) {
setprop("systems/pressurization/cabinalt", cabinalt + ((vs / 60) / 10));
setprop("/systems/pressurization/cabinalt", cabinalt + ((vs / 60) / 10));
} else if (!auto and !pause) {
setprop("systems/pressurization/cabinalt", cabinalt + ((manvs / 60) / 10));
setprop("/systems/pressurization/cabinalt", cabinalt + ((manvs / 60) / 10));
}
if (ditch and auto) {
setprop("systems/pressurization/outflowpos", "1");
setprop("systems/ventilation/avionics/extractvalve", "1");
setprop("systems/ventilation/avionics/inletvalve", "1");
setprop("/systems/pressurization/outflowpos", "1");
setprop("/systems/ventilation/avionics/extractvalve", "1");
setprop("/systems/ventilation/avionics/inletvalve", "1");
}
if (systems.ELEC.Bus.dcEss.getValue() >= 25 or systems.ELEC.Bus.acEss.getValue() > 110) {
setprop("systems/ventilation/avionics/fan", 1);
setprop("systems/ventilation/lavatory/extractfan", 1);
setprop("/systems/ventilation/avionics/fan", 1);
setprop("/systems/ventilation/lavatory/extractfan", 1);
} else {
setprop("systems/ventilation/avionics/fan", 0);
setprop("systems/ventilation/lavatory/extractfan", 0);
setprop("/systems/ventilation/avionics/fan", 0);
setprop("/systems/ventilation/lavatory/extractfan", 0);
}
# Oxygen
if (cabinalt > 13500) {
setprop("controls/oxygen/masksDeploy", 1);
setprop("controls/oxygen/masksSys", 1);
setprop("/controls/oxygen/masksDeploy", 1);
setprop("/controls/oxygen/masksSys", 1);
}
},
};
@ -226,30 +226,30 @@ var PNEU = {
# Oxygen (Cabin)
setlistener("/controls/oxygen/masksDeployMan", func {
guard = getprop("controls/oxygen/masksGuard");
masks = getprop("controls/oxygen/masksDeployMan");
guard = getprop("/controls/oxygen/masksGuard");
masks = getprop("/controls/oxygen/masksDeployMan");
if (guard and masks) {
setprop("controls/oxygen/masksDeployMan", 0);
setprop("/controls/oxygen/masksDeployMan", 0);
} else if (!guard and masks) {
setprop("controls/oxygen/masksDeployMan", 1);
setprop("controls/oxygen/masksDeploy", 1);
setprop("controls/oxygen/masksSys", 1);
setprop("/controls/oxygen/masksDeployMan", 1);
setprop("/controls/oxygen/masksDeploy", 1);
setprop("/controls/oxygen/masksSys", 1);
}
}, 0, 0);
setlistener("/controls/oxygen/masksDeployMan", func {
masks = getprop("controls/oxygen/masksDeployMan");
autoMasks = getprop("controls/oxygen/masksDeploy");
masks = getprop("/controls/oxygen/masksDeployMan");
autoMasks = getprop("/controls/oxygen/masksDeploy");
if (!masks) {
setprop("controls/oxygen/masksDeployMan", 1);
setprop("/controls/oxygen/masksDeployMan", 1);
}
}, 0, 0);
setlistener("/controls/oxygen/masksDeploy", func {
masks = getprop("controls/oxygen/masksDeployMan");
autoMasks = getprop("controls/oxygen/masksDeploy");
masks = getprop("/controls/oxygen/masksDeployMan");
autoMasks = getprop("/controls/oxygen/masksDeploy");
if (!autoMasks) {
setprop("controls/oxygen/masksDeploy", 1);
setprop("/controls/oxygen/masksDeploy", 1);
}
}, 0, 0);

196
Systems/a320-aircond.xml Normal file
View file

@ -0,0 +1,196 @@
<!-- Copyright (c) 2019 Jonathan Redpath (legoboyvdlp) -->
<system name="A320: Air Conditioning">
<channel name="Valves">
<switch name="/systems/air-conditioning/valves/flow-control-valve-1-cmd">
<default value="0"/>
<test logic="OR" value="0">
/controls/engines/engine[0]/fire-btn eq 1
<test logic="OR">
<test logic="AND">
<test logic="OR">
/systems/pneumatics/valves/starter-valve-1 ne 0
/systems/pneumatics/valves/starter-valve-2 ne 0
</test>
/gear/gear[1]/wow eq 1
</test>
<test logic="AND">
<test logic="OR">
/systems/pneumatics/valves/starter-valve-1 ne 0
<test logic="AND">
/systems/pneumatics/valves/crossbleed-valve eq 1
/systems/pneumatics/valves/starter-valve-2 ne 0
</test>
</test>
/gear/gear[1]/wow eq 0
</test>
</test>
/systems/pressurization/ditchingpb eq 1
/systems/pneumatics/psi/engine-1-psi le 13.8
</test>
<test logic="AND" value="1">
/controls/pneumatics/switches/pack-1 eq 1
</test>
</switch>
<switch name="/systems/air-conditioning/valves/flow-control-valve-1-power">
<default value="0"/>
<test logic="AND" value="5">
/systems/failures/pneumatics/pack-1-valve eq 0
/systems/electrical/bus/dc-ess-shed ge 25
</test>
</switch>
<actuator name="/systems/air-conditioning/valves/flow-control-valve-1">
<input>/systems/air-conditioning/valves/flow-control-valve-1-cmd</input>
<rate_limit>/systems/air-conditioning/valves/flow-control-valve-1-power</rate_limit>
</actuator>
<switch name="/systems/air-conditioning/valves/flow-control-valve-2-cmd">
<default value="0"/>
<test logic="OR" value="0">
/controls/engines/engine[1]/fire-btn eq 1
<test logic="OR">
<test logic="AND">
<test logic="OR">
/systems/pneumatics/valves/starter-valve-1 ne 0
/systems/pneumatics/valves/starter-valve-2 ne 0
</test>
/gear/gear[1]/wow eq 1
</test>
<test logic="AND">
<test logic="OR">
/systems/pneumatics/valves/starter-valve-2 ne 0
<test logic="AND">
/systems/pneumatics/valves/crossbleed-valve eq 1
/systems/pneumatics/valves/starter-valve-1 ne 0
</test>
</test>
/gear/gear[1]/wow eq 0
</test>
</test>
</test>
<test logic="AND" value="1">
/controls/pneumatics/switches/pack-2 eq 1
</test>
</switch>
<switch name="/systems/air-conditioning/valves/flow-control-valve-2-power">
<default value="0"/>
<test logic="AND" value="5">
/systems/failures/pneumatics/pack-2-valve eq 0
/systems/electrical/bus/dc-2 ge 25
</test>
</switch>
<actuator name="/systems/air-conditioning/valves/flow-control-valve-2">
<input>/systems/air-conditioning/valves/flow-control-valve-2-cmd</input>
<rate_limit>/systems/air-conditioning/valves/flow-control-valve-2-power</rate_limit>
</actuator>
</channel>
<channel name="Packs">
<switch name="/systems/air-conditioning/packs/single-pack">
<default value="0"/>
<test logic="OR" value="1">
<test logic="AND">
/systems/air-conditioning/valves/flow-control-valve-1 eq 0
/systems/air-conditioning/valves/flow-control-valve-2 eq 1
</test>
<test logic="AND">
/systems/air-conditioning/valves/flow-control-valve-1 eq 1
/systems/air-conditioning/valves/flow-control-valve-2 eq 0
</test>
</test>
</switch>
<switch name="/systems/air-conditioning/packs/pack-flow">
<default value="/controls/pneumatics/switches/pack-flow"/>
<test logic="OR" value="1.2">
/systems/pneumatics/valves/apu-bleed-valve eq 1
/systems/air-conditioning/packs/single-pack eq 1
</test>
</switch>
<switch name="/systems/air-conditioning/packs/pack-factor">
<default value="0"/>
<test logic="AND" value="0.0">
/systems/air-conditioning/valves/flow-control-valve-1 eq 0
/systems/air-conditioning/valves/flow-control-valve-2 eq 0
</test>
<test logic="OR" value="0.6">
/systems/air-conditioning/valves/flow-control-valve-1 eq 0
/systems/air-conditioning/valves/flow-control-valve-2 eq 0
</test>
<test logic="AND" value="1.0">
/systems/air-conditioning/valves/flow-control-valve-1 eq 1
/systems/air-conditioning/valves/flow-control-valve-2 eq 1
</test>
</switch>
</channel>
<channel name="Mass flow">
<fcs_function name="/systems/air-conditioning/mass-flow-fresh-kg_s">
<function>
<quotient>
<product>
<property>/systems/air-conditioning/packs/pack-factor</property>
<property>/systems/air-conditioning/packs/pack-flow</property>
<product>
<property>/systems/pressurization/cabinpsi</property>
<value>68.9476</value>
</product>
<value>0.928</value>
</product>
<product>
<value>2.87</value>
<property>/systems/air-conditioning/temperatures/cabin-overall-temp-kelvin</property>
</product>
</quotient>
</function>
</fcs_function>
<switch name="/systems/air-conditioning/recirc/recirc-factor">
<default value="0"/>
<test logic="AND" value="0.738095">
/systems/air-conditioning/packs/pack-flow eq 1.0
</test>
<test logic="OR" value="0.5686275">
/systems/air-conditioning/packs/pack-flow eq 1.2
</test>
<test logic="AND" value="0.93998">
/systems/air-conditioning/packs/pack-flow eq 0.8
</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>/systems/air-conditioning/recirc/recirc-fans</property>
<property>/systems/air-conditioning/mass-flow-fresh-kg_s</property>
</product>
<property>/systems/air-conditioning/mass-flow-fresh-kg_s</property>
</sum>
</function>
</fcs_function>
<fcs_function name="/systems/air-conditioning/mass-flow-cockpit-kg_s">
<function>
<product>
<value>0.14</value>
<property>/systems/air-conditioning/mass-flow-total-kg_s</property>
</product>
</function>
</fcs_function>
</channel>
</system>