Air Cond - pack flow ctl valves
This commit is contained in:
parent
b3aeb925ce
commit
dd5c49ef8c
10 changed files with 323 additions and 105 deletions
|
@ -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"/>
|
||||
|
|
|
@ -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"/>
|
||||
|
|
|
@ -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"/>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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"/>
|
||||
|
|
|
@ -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"/>
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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
196
Systems/a320-aircond.xml
Normal 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>
|
Loading…
Add table
Reference in a new issue