1
0
Fork 0

Fuel system: push completed system

This commit is contained in:
legoboyvdlp R 2019-11-07 21:47:16 +00:00
parent f5432fc0e4
commit 5e64b5a9a9
14 changed files with 947 additions and 2256 deletions

View file

@ -29,7 +29,7 @@ xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd">
<pitch> 2.2 </pitch>
<yaw> 1 </yaw>
</orient>
<feed>3</feed>
<feed>4</feed>
<thruster file="direct">
<location unit="M">
<x> 14.3962788 </x>
@ -55,7 +55,7 @@ xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd">
<pitch> 2.2 </pitch>
<yaw> -1 </yaw>
</orient>
<feed>4</feed>
<feed>5</feed>
<thruster file="direct">
<location unit="M">
<x> 14.3962788 </x>
@ -96,6 +96,20 @@ xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd">
<density unit="LBS/GAL">6.67</density>
<temperature>50</temperature>
</tank>
<tank type="FUEL"> <!-- Center Tank -->
<location unit="M">
<x> 18.9731 </x>
<y> 0 </y>
<z> -0.61182 </z>
</location>
<capacity unit="LBS"> 14550.50 </capacity>
<contents unit="LBS"> 40.88 </contents>
<unusable-volume unit="LTR"> 23.20 </unusable-volume>
<priority>1</priority>
<density unit="LBS/GAL">6.67</density>
<temperature>50</temperature>
</tank>
<tank type="FUEL"> <!-- Inner Right Wing Tank -->
<location unit="M">
<x> 18.9231 </x>

View file

@ -29,7 +29,7 @@ xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd">
<pitch> 2.2 </pitch>
<yaw> 1 </yaw>
</orient>
<feed>3</feed>
<feed>5</feed>
<thruster file="direct">
<location unit="M">
<x> 14.3962788 </x>
@ -55,7 +55,7 @@ xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd">
<pitch> 2.2 </pitch>
<yaw> -1 </yaw>
</orient>
<feed>4</feed>
<feed>6</feed>
<thruster file="direct">
<location unit="M">
<x> 14.3962788 </x>

View file

@ -29,7 +29,7 @@ xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd">
<pitch> 2.2 </pitch>
<yaw> 1 </yaw>
</orient>
<feed>3</feed>
<feed>5</feed>
<thruster file="direct">
<location unit="M">
<x> 14.3962788 </x>
@ -55,7 +55,7 @@ xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd">
<pitch> 2.2 </pitch>
<yaw> -1 </yaw>
</orient>
<feed>4</feed>
<feed>6</feed>
<thruster file="direct">
<location unit="M">
<x> 14.3962788 </x>

View file

@ -640,6 +640,18 @@
<speedbrake-arm>0</speedbrake-arm>
<slats>0</slats>
</flight>
<fuel>
<switches>
<center-mode type="bool">1</center-mode>
<crossfeed type="bool">0</crossfeed>
<pump-left-1 type="bool">0</pump-left-1>
<pump-left-2 type="bool">0</pump-left-2>
<pump-center-1 type="bool">0</pump-center-1>
<pump-center-2 type="bool">0</pump-center-2>
<pump-right-1 type="bool">0</pump-right-1>
<pump-right-2 type="bool">0</pump-right-2>
</switches>
</fuel>
<gear>
<brake-parking type="bool">0</brake-parking>
<tiller-cmd-norm type="double">0</tiller-cmd-norm>
@ -921,7 +933,10 @@
<tank n="2">
<feed type="bool">0</feed>
</tank>
<x-feed type="bool">0</x-feed>
<ctr-pump-cmd-on-eng-start type="bool">0</ctr-pump-cmd-on-eng-start>
<refuel>
<refuelling type="bool">0</refuelling>
</refuel>
</fuel>
<hydraulic n="0">
<blue-psi>0</blue-psi>

View file

@ -29,7 +29,7 @@ xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd">
<pitch> 2.2 </pitch>
<yaw> 1 </yaw>
</orient>
<feed>3</feed>
<feed>5</feed>
<thruster file="direct">
<location unit="M">
<x> 14.3962788 </x>
@ -55,7 +55,7 @@ xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd">
<pitch> 2.2 </pitch>
<yaw> -1 </yaw>
</orient>
<feed>4</feed>
<feed>6</feed>
<thruster file="direct">
<location unit="M">
<x> 14.3962788 </x>

View file

@ -29,7 +29,7 @@ xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd">
<pitch> 2.2 </pitch>
<yaw> 1 </yaw>
</orient>
<feed>3</feed>
<feed>5</feed>
<thruster file="direct">
<location unit="M">
<x> 14.3962788 </x>
@ -55,7 +55,7 @@ xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd">
<pitch> 2.2 </pitch>
<yaw> -1 </yaw>
</orient>
<feed>4</feed>
<feed>6</feed>
<thruster file="direct">
<location unit="M">
<x> 14.3962788 </x>

View file

@ -2265,11 +2265,10 @@ var canvas_lowerECAM_fuel = {
me["FUEL-Flow-per-min"].setText("XX");
}
# this is now bound to the ENG master switch
# TODO use the valve prop and add amber if difference between eng master and valve
# TODO add transition state
# TODO fix amber/green at the same time when closed
if (cutoff_switch1.getValue() == 0) {
if (systems.FUEL.Valves.lpValve1.getValue()) == 0) {
me["FUEL-ENG-Master-1"].setRotation(0);
me["FUEL-ENG-Master-1"].setColor(0.0509,0.7529,0.2941);
me["FUEL-ENG-1-pipe"].setColor(0.0509,0.7529,0.2941);
@ -2279,11 +2278,10 @@ var canvas_lowerECAM_fuel = {
me["FUEL-ENG-1-pipe"].setColor(0.7333,0.3803,0);
}
# this is now bound to the ENG master switch
# TODO use the valve prop and add amber if difference between eng master and valve
# TODO add transition state
# TODO fix amber/green at the same time when closed
if (cutoff_switch2.getValue() == 0) {
if (systems.FUEL.Valves.lpValve2.getValue() == 0) {
me["FUEL-ENG-Master-2"].setRotation(0);
me["FUEL-ENG-Master-2"].setColor(0.0509,0.7529,0.2941);
me["FUEL-ENG-2-pipe"].setColor(0.0509,0.7529,0.2941);
@ -2297,7 +2295,7 @@ var canvas_lowerECAM_fuel = {
# TODO use the valve prop
# TODO add amber when disagree between switch and btn
# TODO add transition state
if (fuel_xfeed.getValue() == 1) {
if (systems.FUEL.Valves.crossfeed.getValue() == 1) {
me["FUEL-XFEED"].setRotation(0);
me["FUEL-XFEED-pipes"].show();
} else {
@ -2307,7 +2305,7 @@ var canvas_lowerECAM_fuel = {
# TODO add LO indication
# TODO fix amber/green at the same time when closed
if (tank0pump1.getValue() == 1) {
if (systems.FUEL.Switches.pumpLeft1.getValue() == 1) {
me["FUEL-Pump-Left-1-Open"].show();
me["FUEL-Pump-Left-1-Closed"].hide();
me["FUEL-Pump-Left-1"].setColor(0.0509,0.7529,0.2941);
@ -2319,7 +2317,7 @@ var canvas_lowerECAM_fuel = {
# TODO add LO indication
# TODO fix amber/green at the same time when closed
if (tank0pump2.getValue() == 1) {
if (systems.FUEL.Switches.pumpLeft2.getValue() == 1) {
me["FUEL-Pump-Left-2-Open"].show();
me["FUEL-Pump-Left-2-Closed"].hide();
me["FUEL-Pump-Left-2"].setColor(0.0509,0.7529,0.2941);
@ -2331,7 +2329,7 @@ var canvas_lowerECAM_fuel = {
# TODO fix amber/green at the same time when closed
# TODO add functionality to match FCOM 1.28.20 "Amber: Transfer valve is open, whereas commanded closed in automatic or manual mode"
if (tank1pump1.getValue() == 1) {
if (systems.FUEL.Switches.pumpCenter1.getValue() == 1) {
me["FUEL-Pump-Center-1-Open"].show();
me["FUEL-Pump-Center-1-Closed"].hide();
me["FUEL-Pump-Center-1"].setColor(0.0509,0.7529,0.2941);
@ -2343,7 +2341,7 @@ var canvas_lowerECAM_fuel = {
# TODO add LO indication
# TODO fix amber/green at the same time when closed
if (tank1pump2.getValue() == 1) {
if (systems.FUEL.Switches.pumpCenter2.getValue() == 1) {
me["FUEL-Pump-Center-2-Open"].show();
me["FUEL-Pump-Center-2-Closed"].hide();
me["FUEL-Pump-Center-2"].setColor(0.0509,0.7529,0.2941);
@ -2355,7 +2353,7 @@ var canvas_lowerECAM_fuel = {
# TODO add LO indication
# TODO fix amber/green at the same time when closed
if (tank2pump1.getValue() == 1) {
if (systems.FUEL.Switches.pumpRight1.getValue() == 1) {
me["FUEL-Pump-Right-1-Open"].show();
me["FUEL-Pump-Right-1-Closed"].hide();
me["FUEL-Pump-Right-1"].setColor(0.0509,0.7529,0.2941);
@ -2367,7 +2365,7 @@ var canvas_lowerECAM_fuel = {
# TODO add LO indication
# TODO fix amber/green at the same time when closed
if (tank2pump2.getValue() == 1) {
if (systems.FUEL.Switches.pumpRight2.getValue() == 1) {
me["FUEL-Pump-Right-2-Open"].show();
me["FUEL-Pump-Right-2-Closed"].hide();
me["FUEL-Pump-Right-2"].setColor(0.0509,0.7529,0.2941);
@ -2390,35 +2388,27 @@ var canvas_lowerECAM_fuel = {
# Fuel Quantity
# TODO add LO indication
if (fuel_left_quantity.getValue() >= 3170) {
me["FUEL-Left-Inner-quantity"].setText(sprintf("%s", math.round(fuel_left_quantity.getValue() - 1520, 10)));
me["FUEL-Left-Outer-quantity"].setText(sprintf("%s", 1520));
me["FUEL-Left-Outer-quantity"].setText(sprintf("%s", math.round(systems.FUEL.Quantity.leftOuter.getValue(), 10)));
me["FUEL-Left-Inner-quantity"].setText(sprintf("%s", math.round(systems.FUEL.Quantity.leftInner.getValue(), 10)));
me["FUEL-Center-quantity"].setText(sprintf("%s", math.round(systems.FUEL.Quantity.center.getValue(), 10)));
me["FUEL-Right-Inner-quantity"].setText(sprintf("%s", math.round(systems.FUEL.Quantity.rightInner.getValue(), 10)));
me["FUEL-Right-Outer-quantity"].setText(sprintf("%s", math.round(systems.FUEL.Quantity.rightOuter.getValue(), 10)));
if (!systems.FUEL.Valves.transfer1.getValue()) {
me["FUEL-Left-Transfer"].hide();
} else if (fuel_left_quantity.getValue() >= 1650) {
me["FUEL-Left-Inner-quantity"].setText(sprintf("%s", 1650));
me["FUEL-Left-Outer-quantity"].setText(sprintf("%s", math.round(fuel_left_quantity.getValue() - 1650, 10)));
} else {
me["FUEL-Left-Transfer"].setColor(0.7333,0.3803,0);
me["FUEL-Left-Transfer"].show();
} else {
me["FUEL-Left-Inner-quantity"].setText(sprintf("%s", math.round(fuel_left_quantity.getValue())));
me["FUEL-Left-Outer-quantity"].setText(sprintf("%s", 0));
me["FUEL-Left-Transfer"].hide();
}
me["FUEL-Center-quantity"].setText(sprintf("%s", math.round(fuel_center_quantity.getValue())));
if (fuel_right_quantity.getValue() >= 3170) {
me["FUEL-Right-Inner-quantity"].setText(sprintf("%s", math.round(fuel_right_quantity.getValue() - 1520, 10)));
me["FUEL-Right-Outer-quantity"].setText(sprintf("%s", 1520));
if (!systems.FUEL.Valves.transfer2.getValue()) {
me["FUEL-Right-Transfer"].hide();
} else if (fuel_right_quantity.getValue() >= 1650) {
me["FUEL-Right-Inner-quantity"].setText(sprintf("%s", 1650));
me["FUEL-Right-Outer-quantity"].setText(sprintf("%s", math.round(fuel_right_quantity.getValue() - 1650, 10)));
me["FUEL-Right-Transfer"].show();
me["FUEL-Right-Transfer"].setColor(0.7333,0.3803,0);
} else {
me["FUEL-Right-Inner-quantity"].setText(sprintf("%s", math.round(fuel_right_quantity.getValue(), 10)));
me["FUEL-Right-Outer-quantity"].setText(sprintf("%s", 0));
me["FUEL-Right-Transfer"].hide();
}
me["FUEL-Right-Transfer"].setColor(0.7333,0.3803,0);
me["FUEL-Right-Transfer"].show();
}
# Hide not yet implemented features
# TODO add them

View file

@ -2335,7 +2335,7 @@
</greater-than-equals>
</condition>
<command>property-toggle</command>
<property>controls/fuel/x-feed</property>
<property>controls/fuel/switches/crossfeed</property>
</binding>
<binding>
<command>nasal</command>
@ -2350,7 +2350,7 @@
<condition>
<or>
<equals>
<property>systems/fuel/x-feed</property>
<property>systems/fuel/valves/crossfeed-valve</property>
<value>1</value>
</equals>
<equals>
@ -2366,7 +2366,7 @@
<condition>
<or>
<equals>
<property>controls/fuel/x-feed</property>
<property>controls/fuel/switches/crossfeed</property>
<value>1</value>
</equals>
<equals>
@ -2389,12 +2389,12 @@
<binding>
<condition>
<greater-than-equals>
<property>systems/electrical/bus/dc-ess</property>
<property>systems/electrical/bus/dc-1</property>
<value>25</value>
</greater-than-equals>
</condition>
<command>property-toggle</command>
<property>controls/fuel/tank0pump1</property>
<property>controls/fuel/switches/pump-left-1</property>
</binding>
<binding>
<command>nasal</command>
@ -2414,7 +2414,7 @@
<value>1</value>
</equals>
<equals>
<property>controls/fuel/tank0pump1</property>
<property>controls/fuel/switches/pump-left-1</property>
<value>1</value>
</equals>
</and>
@ -2431,7 +2431,7 @@
<condition>
<or>
<equals>
<property>controls/fuel/tank0pump1</property>
<property>controls/fuel/switches/pump-left-1</property>
<value>0</value>
</equals>
<equals>
@ -2454,12 +2454,12 @@
<binding>
<condition>
<greater-than-equals>
<property>systems/electrical/bus/dc-ess</property>
<property>systems/electrical/bus/dc-1</property>
<value>25</value>
</greater-than-equals>
</condition>
<command>property-toggle</command>
<property>controls/fuel/tank0pump2</property>
<property>controls/fuel/switches/pump-left-2</property>
</binding>
<binding>
<command>nasal</command>
@ -2479,7 +2479,7 @@
<value>1</value>
</equals>
<equals>
<property>controls/fuel/tank0pump2</property>
<property>controls/fuel/switches/pump-left-2</property>
<value>1</value>
</equals>
</and>
@ -2496,7 +2496,7 @@
<condition>
<or>
<equals>
<property>controls/fuel/tank0pump2</property>
<property>controls/fuel/switches/pump-left-2</property>
<value>0</value>
</equals>
<equals>
@ -2519,12 +2519,12 @@
<binding>
<condition>
<greater-than-equals>
<property>systems/electrical/bus/dc-ess</property>
<property>systems/electrical/bus/dc-1</property>
<value>25</value>
</greater-than-equals>
</condition>
<command>property-toggle</command>
<property>controls/fuel/tank1pump1</property>
<property>controls/fuel/switches/pump-center-1</property>
</binding>
<binding>
<command>nasal</command>
@ -2544,7 +2544,7 @@
<value>1</value>
</equals>
<equals>
<property>controls/fuel/tank1pump1</property>
<property>controls/fuel/switches/pump-center-1</property>
<value>1</value>
</equals>
</and>
@ -2561,7 +2561,7 @@
<condition>
<or>
<equals>
<property>controls/fuel/tank1pump1</property>
<property>controls/fuel/switches/pump-center-1</property>
<value>0</value>
</equals>
<equals>
@ -2572,7 +2572,7 @@
</condition>
</animation>
<!--animation>
<animation>
<type>pick</type>
<object-name>FuelModeBtn</object-name>
<object-name>FuelModeBtn1F</object-name>
@ -2588,14 +2588,14 @@
</greater-than-equals>
</condition>
<command>property-toggle</command>
<property>controls/fuel/mode</property>
<property>controls/fuel/switches/center-mode</property>
</binding>
<binding>
<command>nasal</command>
<script>setprop("/sim/sounde/oh-btn", 1);</script>
</binding>
</action>
</animation-->
</animation>
<animation>
<type>select</type>
@ -2608,7 +2608,7 @@
<value>1</value>
</equals>
<equals>
<property>controls/fuel/mode</property>
<property>controls/fuel/switches/center-mode</property>
<value>1</value>
</equals>
</and>
@ -2625,7 +2625,7 @@
<condition>
<or>
<equals>
<property>controls/fuel/mode</property>
<property>controls/fuel/switches/center-mode</property>
<value>0</value>
</equals>
<equals>
@ -2648,12 +2648,12 @@
<binding>
<condition>
<greater-than-equals>
<property>systems/electrical/bus/dc-ess</property>
<property>systems/electrical/bus/dc-2</property>
<value>25</value>
</greater-than-equals>
</condition>
<command>property-toggle</command>
<property>controls/fuel/tank1pump2</property>
<property>controls/fuel/switches/pump-center-2</property>
</binding>
<binding>
<command>nasal</command>
@ -2673,7 +2673,7 @@
<value>1</value>
</equals>
<equals>
<property>controls/fuel/tank1pump2</property>
<property>controls/fuel/switches/pump-center-2</property>
<value>1</value>
</equals>
</and>
@ -2690,7 +2690,7 @@
<condition>
<or>
<equals>
<property>controls/fuel/tank1pump2</property>
<property>controls/fuel/switches/pump-center-2</property>
<value>0</value>
</equals>
<equals>
@ -2713,12 +2713,12 @@
<binding>
<condition>
<greater-than-equals>
<property>systems/electrical/bus/dc-ess</property>
<property>systems/electrical/bus/dc-2</property>
<value>25</value>
</greater-than-equals>
</condition>
<command>property-toggle</command>
<property>controls/fuel/tank2pump1</property>
<property>controls/fuel/switches/pump-right-1</property>
</binding>
<binding>
<command>nasal</command>
@ -2738,7 +2738,7 @@
<value>1</value>
</equals>
<equals>
<property>controls/fuel/tank2pump1</property>
<property>controls/fuel/switches/pump-right-1</property>
<value>1</value>
</equals>
</and>
@ -2755,7 +2755,7 @@
<condition>
<or>
<equals>
<property>controls/fuel/tank2pump1</property>
<property>controls/fuel/switches/pump-right-1</property>
<value>0</value>
</equals>
<equals>
@ -2778,12 +2778,12 @@
<binding>
<condition>
<greater-than-equals>
<property>systems/electrical/bus/dc-ess</property>
<property>systems/electrical/bus/dc-2</property>
<value>25</value>
</greater-than-equals>
</condition>
<command>property-toggle</command>
<property>controls/fuel/tank2pump2</property>
<property>controls/fuel/switches/pump-right-2</property>
</binding>
<binding>
<command>nasal</command>
@ -2803,7 +2803,7 @@
<value>1</value>
</equals>
<equals>
<property>controls/fuel/tank2pump2</property>
<property>controls/fuel/switches/pump-right-2</property>
<value>1</value>
</equals>
</and>
@ -2820,7 +2820,7 @@
<condition>
<or>
<equals>
<property>controls/fuel/tank2pump2</property>
<property>controls/fuel/switches/pump-right-2</property>
<value>0</value>
</equals>
<equals>

View file

@ -1542,7 +1542,7 @@ var messages_right_memo = func {
auto_brk_max.active = 0;
}
if (getprop("/systems/fuel/x-feed") == 1 and getprop("controls/fuel/x-feed") == 1) {
if (getprop("/systems/fuel/valves/crossfeed-valve") == 1 and getprop("/controls/fuel/switches/crossfeed") == 1) {
fuelx.active = 1;
} else {
fuelx.active = 0;

View file

@ -3,35 +3,64 @@
# Copyright (c) 2019 Joshua Davidson (Octal450)
var xfeed_sw = getprop("/controls/fuel/x-feed");
var tank0pump1_sw = 0;
var tank0pump2_sw = 0;
var tank1pump1_sw = 0;
var tank1pump2_sw = 0;
var tank2pump1_sw = 0;
var tank2pump2_sw = 0;
var mode_sw = 0;
var xfeed = 0;
var ac1 = 0;
var ac2 = 0;
var gravityfeedL = 0;
var gravityfeedR = 0;
var gload = 0;
var gravityfeedL_output = 0;
var gravityfeedR_output = 0;
var tank0 = 0;
var tank1 = 0;
var tank2 = 0;
var gravityfeedL = 0;
var gravityfeedR = 0;
var tank0pump1_fail = 0;
var tank0pump2_fail = 0;
var tank1pump1_fail = 0;
var tank1pump2_fail = 0;
var tank2pump1_fail = 0;
var tank2pump2_fail = 0;
var FUEL = {
timeEngStart: 0,
cmdCtrOn: props.globals.getNode("/systems/fuel/ctr-pump-cmd-on-eng-start"),
Fail: {
},
Switches: {
centerTkMode: props.globals.getNode("/controls/fuel/switches/center-mode"),
crossfeed: props.globals.getNode("/controls/fuel/switches/crossfeed"),
pumpLeft1: props.globals.getNode("/controls/fuel/switches/pump-left-1"),
pumpLeft2: props.globals.getNode("/controls/fuel/switches/pump-left-2"),
pumpCenter1: props.globals.getNode("/controls/fuel/switches/pump-center-1"),
pumpCenter2: props.globals.getNode("/controls/fuel/switches/pump-center-2"),
pumpRight1: props.globals.getNode("/controls/fuel/switches/pump-right-1"),
pumpRight2: props.globals.getNode("/controls/fuel/switches/pump-right-2"),
},
Valves: {
crossfeed: props.globals.getNode("/systems/fuel/valves/crossfeed-valve"),
lpValve1: props.globals.getNode("/systems/fuel/valves/engine-1-lp-valve"),
lpValve2: props.globals.getNode("/systems/fuel/valves/engine-2-lp-valve"),
transfer1: props.globals.getNode("/systems/fuel/valves/outer-inner-transfer-valve-1"),
transfer2: props.globals.getNode("/systems/fuel/valves/outer-inner-transfer-valve-2"),
},
Quantity: {
leftOuter: props.globals.getNode("/consumables/fuel/tank[0]/level-lbs"),
leftInner: props.globals.getNode("/consumables/fuel/tank[1]/level-lbs"),
center: props.globals.getNode("/consumables/fuel/tank[2]/level-lbs"),
rightInner: props.globals.getNode("/consumables/fuel/tank[3]/level-lbs"),
rightOuter: props.globals.getNode("/consumables/fuel/tank[4]/level-lbs"),
},
resetFail: func() {
},
init: func() {
},
loop: func() {
},
};
setlistener("/engines/engine[0]/state", func() {
if (pts.Engines.Engine1.state.getValue() == 3) {
FUEL.timeEngStart = pts.Sim.Time.elapsedSec.getValue();
FUEL.cmdCtrOn.setValue(1);
ctrTkTimer.start();
}
}, 0, 0);
setlistener("/engines/engine[1]/state", func() {
if (pts.Engines.Engine2.state.getValue() == 3) {
FUEL.timeEngStart = pts.Sim.Time.elapsedSec.getValue();
FUEL.cmdCtrOn.setValue(1);
ctrTkTimer.start();
}
}, 0, 0);
var FUELx = {
init: func() {
setprop("/systems/fuel/gravityfeedL", 0);
setprop("/systems/fuel/gravityfeedR", 0);
@ -45,7 +74,7 @@ var FUEL = {
setprop("/controls/fuel/tank2pump1", 0);
setprop("/controls/fuel/tank2pump2", 0);
setprop("/controls/fuel/mode", 1);
setprop("/systems/fuel/x-feed", 0);
setprop("/systems/fuel/valves/crossfeed-valve", 0);
setprop("/systems/fuel/tank[0]/feed", 0);
setprop("/systems/fuel/tank[1]/feed", 0);
setprop("/systems/fuel/tank[2]/feed", 0);
@ -67,7 +96,7 @@ var FUEL = {
tank2pump1_sw = getprop("/controls/fuel/tank2pump1");
tank2pump2_sw = getprop("/controls/fuel/tank2pump2");
mode_sw = getprop("/controls/fuel/mode");
xfeed = getprop("/systems/fuel/x-feed");
xfeed = getprop("/systems/fuel/valves/crossfeed-valve");
ac1 = getprop("/systems/electrical/bus/ac-1");
ac2 = getprop("/systems/electrical/bus/ac-2");
gravityfeedL = getprop("/systems/fuel/gravityfeedL");
@ -124,9 +153,9 @@ var FUEL = {
}
if ((ac1 >= 110 or ac2 >= 110) and xfeed_sw) {
setprop("/systems/fuel/x-feed", 1);
setprop("/systems/fuel/valves/crossfeed-valve", 1);
} else {
setprop("/systems/fuel/x-feed", 0);
setprop("/systems/fuel/valves/crossfeed-valve", 0);
}
tank0 = getprop("/systems/fuel/tank[0]/feed");
@ -192,3 +221,10 @@ var FUEL = {
}
},
};
var ctrTkTimer = maketimer(0.5, func() {
if (pts.Sim.Time.elapsedSec.getValue() > (FUEL.timeEngStart + 120)) {
FUEL.cmdCtrOn.setValue(0);
ctrTkTimer.stop()
}
});

View file

@ -29,11 +29,13 @@ var Engines = {
epractual: props.globals.getNode("/engines/engine[0]/epr-actual"),
n1actual: props.globals.getNode("/engines/engine[0]/n1-actual"),
n2actual: props.globals.getNode("/engines/engine[0]/n2-actual"),
state: props.globals.getNode("/engines/engine[0]/state"),
},
Engine2: {
epractual: props.globals.getNode("/engines/engine[1]/epr-actual"),
n1actual: props.globals.getNode("/engines/engine[1]/n1-actual"),
n2actual: props.globals.getNode("/engines/engine[1]/n2-actual"),
state: props.globals.getNode("/engines/engine[1]/state"),
},
};

File diff suppressed because it is too large Load diff

View file

@ -6,10 +6,22 @@
<channel name="Fuel Pumps and Valves">
<!-- Pumps -->
<switch name="/systems/fuel/pumps/apu-operate">
<default value="0"/>
<test logic="AND" value="1">
/systems/fuel/pumps/all-eng-pump-off eq 1
<test logic="OR">
/systems/electrical/bus/ac-ess-shed ge 110
/systems/electrical/bus/ac-si-bus ge 110
</test>
</test>
</switch>
<switch name="/systems/fuel/pumps/wing-pump-left-1-operate">
<default value="0"/>
<test logic="AND" value="1">
/controls/switches/fuel/pump-left-1 eq 1
/controls/fuel/switches/pump-left-1 eq 1
<test logic="OR">
<test logic="AND">
/systems/electrical/sources/idg-1/pmg-volt ge 110
@ -23,7 +35,7 @@
<switch name="/systems/fuel/pumps/wing-pump-left-2-operate">
<default value="0"/>
<test logic="AND" value="1">
/controls/switches/fuel/pump-left-2 eq 1
/controls/fuel/switches/pump-left-2 eq 1
/systems/electrical/bus/ac-2 ge 110
</test>
</switch>
@ -31,7 +43,7 @@
<switch name="/systems/fuel/pumps/wing-pump-right-1-operate">
<default value="0"/>
<test logic="AND" value="1">
/controls/switches/fuel/pump-right-1 eq 1
/controls/fuel/switches/pump-right-1 eq 1
<test logic="OR">
<test logic="AND">
/systems/electrical/sources/idg-1/pmg-volt ge 110
@ -45,21 +57,48 @@
<switch name="/systems/fuel/pumps/wing-pump-right-2-operate">
<default value="0"/>
<test logic="AND" value="1">
/controls/switches/fuel/pump-right-2 eq 1
/controls/fuel/switches/pump-right-2 eq 1
/systems/electrical/bus/ac-2 ge 110
</test>
</switch>
<switch name="/systems/fuel/left-inner-full">
<default value="0"/>
<test logic="AND" value="1">
/systems/fuel/left-inner-full eq 1
propulsion/tank[1]/contents-lbs lt 11420
propulsion/tank[1]/contents-lbs ge 10300
</test>
<test value="1">
propulsion/tank[1]/contents-lbs eq 11420
</test>
</switch>
<switch name="/systems/fuel/right-inner-full">
<default value="0"/>
<test logic="AND" value="1">
/systems/fuel/right-inner-full eq 1
propulsion/tank[3]/contents-lbs lt 11420
propulsion/tank[3]/contents-lbs ge 10300
</test>
<test value="1">
propulsion/tank[3]/contents-lbs eq 11420
</test>
</switch>
<switch name="/systems/fuel/pumps/center-pump-1-operate">
<default value="0"/>
<test logic="AND" value="1">
/controls/switches/fuel/pump-center-1 eq 1
/controls/fuel/switches/pump-center-1 eq 1
<test logic="OR">
/controls/switches/fuel/center-mode eq 0
<test logic="AND">
fcs/slat-pos-deg lt 16
/systems/fuel/pumps/center-control-low-level ne 1
propulsion/tank[1]/contents-lbs lt 11420
/controls/fuel/switches/center-mode eq 0
<test logic="OR">
/systems/fuel/ctr-pump-cmd-on-eng-start eq 1
<test logic="AND">
fcs/slat-pos-deg lt 16
/systems/fuel/pumps/center-control-low-level ne 1
/systems/fuel/left-inner-full ne 1
</test>
</test>
</test>
/systems/electrical/bus/ac-1 ge 110
@ -69,19 +108,55 @@
<switch name="/systems/fuel/pumps/center-pump-2-operate">
<default value="0"/>
<test logic="AND" value="1">
/controls/switches/fuel/pump-center-3 eq 1
/controls/fuel/switches/pump-center-2 eq 1
<test logic="OR">
/controls/switches/fuel/center-mode eq 0
<test logic="AND">
fcs/slat-pos-deg lt 16
/systems/fuel/pumps/center-control-low-level ne 1
propulsion/tank[3]/contents-lbs lt 11420
/controls/fuel/switches/center-mode eq 0
<test logic="OR">
/systems/fuel/ctr-pump-cmd-on-eng-start eq 1
<test logic="AND">
fcs/slat-pos-deg lt 16
/systems/fuel/pumps/center-control-low-level ne 1
/systems/fuel/right-inner-full ne 1
</test>
</test>
</test>
/systems/electrical/bus/ac-2 ge 110
</test>
</switch>
<switch name="/systems/fuel/pumps/all-eng-pump-off">
<default value="0"/>
<test logic="AND" value="1">
/systems/fuel/pumps/wing-pump-left-1-operate eq 0
/systems/fuel/pumps/wing-pump-left-2-operate eq 0
/systems/fuel/pumps/wing-pump-right-1-operate eq 0
/systems/fuel/pumps/wing-pump-right-2-operate eq 0
/systems/fuel/pumps/center-pump-1-operate eq 0
/systems/fuel/pumps/center-pump-2-operate eq 0
</test>
</switch>
<switch name="/systems/fuel/quantity/left-wing-inner-low">
<default value="0"/>
<test value="1">
propulsion/tank[1]/contents-lbs le 1650
</test>
</switch>
<switch name="/systems/fuel/quantity/center-low">
<default value="0"/>
<test value="1">
propulsion/tank[2]/contents-lbs le 220
</test>
</switch>
<switch name="/systems/fuel/quantity/right-wing-inner-low">
<default value="0"/>
<test value="1">
propulsion/tank[3]/contents-lbs le 1650
</test>
</switch>
<actuator name="/systems/fuel/pumps/center-control-low-level">
<description>Timer for the Fuel Center pumps</description>
<input>/systems/fuel/quantity/center-low</input>
@ -93,7 +168,7 @@
<switch name="/systems/fuel/valves/outer-inner-transfer-valve-1-cmd">
<default value="0"/>
<test logic="AND" value="1">
/systems/fuel/valves/intercell-transfer-valve-1-cmd eq 1
/systems/fuel/valves/outer-inner-transfer-valve-1-cmd eq 1
/systems/fuel/refuel/refuelling eq 0
</test>
<test value="1">
@ -110,13 +185,13 @@
<actuator name="/systems/fuel/valves/outer-inner-transfer-valve-1">
<input>/systems/fuel/valves/outer-inner-transfer-valve-1-cmd</input>
<rate_limit><property>/systems/fuel/valves/outer-inner-transfer-valve-1-power</property></rate_limit>
<rate_limit>/systems/fuel/valves/outer-inner-transfer-valve-1-power</rate_limit>
</actuator>
<switch name="/systems/fuel/valves/outer-inner-transfer-valve-2-cmd">
<default value="0"/>
<test logic="AND" value="1">
/systems/fuel/valves/intercell-transfer-valve-2-cmd eq 1
/systems/fuel/valves/outer-inner-transfer-valve-2-cmd eq 1
/systems/fuel/refuel/refuelling eq 0
</test>
<test value="1">
@ -133,7 +208,28 @@
<actuator name="/systems/fuel/valves/outer-inner-transfer-valve-2">
<input>/systems/fuel/valves/outer-inner-transfer-valve-2-cmd</input>
<rate_limit><property>/systems/fuel/valves/outer-inner-transfer-valve-2-power</property></rate_limit>
<rate_limit>/systems/fuel/valves/outer-inner-transfer-valve-2-power</rate_limit>
</actuator>
<!-- XFeed Valve -->
<switch name="/systems/fuel/valves/crossfeed-valve-cmd">
<default value="0"/>
<test value="1">
/controls/fuel/switches/crossfeed eq 1
</test>
</switch>
<switch name="/systems/fuel/valves/crossfeed-valve-power">
<default value="0"/>
<test logic="OR" value="0.5">
/systems/electrical/bus/dc-2 ge 25
/systems/electrical/bus/dc-ess-shed ge 25
</test>
</switch>
<actuator name="/systems/fuel/valves/crossfeed-valve">
<input>/systems/fuel/valves/crossfeed-valve-cmd</input>
<rate_limit>/systems/fuel/valves/crossfeed-valve-power</rate_limit>
</actuator>
<!-- Engine LP Valves -->
@ -155,7 +251,7 @@
<actuator name="/systems/fuel/valves/engine-1-lp-valve">
<input>/systems/fuel/valves/engine-1-lp-valve-cmd</input>
<rate_limit><property>/systems/fuel/valves/engine-1-lp-valve-power</property></rate_limit>
<rate_limit>/systems/fuel/valves/engine-1-lp-valve-power</rate_limit>
</actuator>
<switch name="/systems/fuel/valves/engine-2-lp-valve-cmd">
@ -176,12 +272,291 @@
<actuator name="/systems/fuel/valves/engine-2-lp-valve">
<input>/systems/fuel/valves/engine-2-lp-valve-cmd</input>
<rate_limit><property>/systems/fuel/valves/engine-2-lp-valve-power</property></rate_limit>
<rate_limit>/systems/fuel/valves/engine-2-lp-valve-power</rate_limit>
</actuator>
<switch name="/systems/fuel/valves/apu-lp-valve-cmd">
<default value="0"/>
<test logic="AND" value="1">
/controls/APU/master eq 1
/controls/APU/fire-btn eq 0
</test>
</switch>
<switch name="/systems/fuel/valves/apu-lp-valve-power">
<default value="0"/>
<test logic="OR" value="1.0">
/systems/electrical/bus/dc-bat ge 25
/systems/electrical/bus/dc-hot-1 ge 25
</test>
</switch>
<actuator name="/systems/fuel/valves/apu-lp-valve">
<input>/systems/fuel/valves/apu-lp-valve-cmd</input>
<rate_limit>/systems/fuel/valves/apu-lp-valve-power</rate_limit>
</actuator>
<!-- Pump PSI -->
<pure_gain name="/systems/fuel/pumps/apu-psi-cmd">
<input>/systems/fuel/pumps/apu-operate</input>
<gain>25.3</gain> <!-- 9600 lb/h (guess) -->
</pure_gain>
<actuator name="/systems/fuel/pumps/apu-psi">
<input>/systems/fuel/pumps/apu-psi-cmd</input>
<rate_limit sense="incr">5</rate_limit>
<rate_limit sense="decr">10</rate_limit>
</actuator>
<pure_gain name="/systems/fuel/pumps/wing-pump-left-1-psi-cmd">
<input>/systems/fuel/pumps/wing-pump-left-1-operate</input>
<gain>25.3</gain> <!-- 9600 lb/h (guess) -->
</pure_gain>
<actuator name="/systems/fuel/pumps/wing-pump-left-1-psi">
<input>/systems/fuel/pumps/wing-pump-left-1-psi-cmd</input>
<rate_limit sense="incr">5</rate_limit>
<rate_limit sense="decr">10</rate_limit>
</actuator>
<pure_gain name="/systems/fuel/pumps/wing-pump-left-2-psi-cmd">
<input>/systems/fuel/pumps/wing-pump-left-2-operate</input>
<gain>25.3</gain> <!-- 9600 lb/h (guess) -->
</pure_gain>
<actuator name="/systems/fuel/pumps/wing-pump-left-2-psi">
<input>/systems/fuel/pumps/wing-pump-left-2-psi-cmd</input>
<rate_limit sense="incr">5</rate_limit>
<rate_limit sense="decr">10</rate_limit>
</actuator>
<pure_gain name="/systems/fuel/pumps/center-pump-1-psi-cmd">
<input>/systems/fuel/pumps/center-pump-1-operate</input>
<gain>30</gain> <!-- 11000 lb/h -->
</pure_gain>
<actuator name="/systems/fuel/pumps/center-pump-1-psi">
<input>/systems/fuel/pumps/center-pump-1-psi-cmd</input>
<rate_limit sense="incr">5</rate_limit>
<rate_limit sense="decr">10</rate_limit>
</actuator>
<pure_gain name="/systems/fuel/pumps/center-pump-2-psi-cmd">
<input>/systems/fuel/pumps/center-pump-2-operate</input>
<gain>30</gain> <!-- 11000 lb/h -->
</pure_gain>
<actuator name="/systems/fuel/pumps/center-pump-2-psi">
<input>/systems/fuel/pumps/center-pump-2-psi-cmd</input>
<rate_limit sense="incr">5</rate_limit>
<rate_limit sense="decr">10</rate_limit>
</actuator>
<pure_gain name="/systems/fuel/pumps/wing-pump-right-1-psi-cmd">
<input>/systems/fuel/pumps/wing-pump-right-1-operate</input>
<gain>25.3</gain> <!-- 9600 lb/h (guess) -->
</pure_gain>
<actuator name="/systems/fuel/pumps/wing-pump-right-1-psi">
<input>/systems/fuel/pumps/wing-pump-right-1-psi-cmd</input>
<rate_limit sense="incr">5</rate_limit>
<rate_limit sense="decr">10</rate_limit>
</actuator>
<pure_gain name="/systems/fuel/pumps/wing-pump-right-2-psi-cmd">
<input>/systems/fuel/pumps/wing-pump-right-2-operate</input>
<gain>25.3</gain> <!-- 9600 lb/h (guess) -->
</pure_gain>
<actuator name="/systems/fuel/pumps/wing-pump-right-2-psi">
<input>/systems/fuel/pumps/wing-pump-right-2-psi-cmd</input>
<rate_limit sense="incr">5</rate_limit>
<rate_limit sense="decr">10</rate_limit>
</actuator>
</channel>
<channel name="Flow Rates">
<switch name="/systems/fuel/feed-left-inner">
<default value="0"/>
<test logic="OR" value="1">
/systems/fuel/pumps/wing-pump-left-1-operate eq 1
/systems/fuel/pumps/wing-pump-left-2-operate eq 1
</test>
<test logic="AND" value="1"> <!-- Suction/Gravity feed if G is not to far below 1 -->
/accelerations/pilot-gdamped ge 0.5
</test>
</switch>
<switch name="/systems/fuel/feed-right-inner">
<default value="0"/>
<test logic="OR" value="1">
/systems/fuel/pumps/wing-pump-right-1-operate eq 1
/systems/fuel/pumps/wing-pump-right-2-operate eq 1
</test>
<test logic="AND" value="1"> <!-- Suction/Gravity feed if G is not to far below 1 -->
/accelerations/pilot-gdamped ge 0.5
</test>
</switch>
<switch name="/systems/fuel/feed-center-1">
<default value="0"/>
<test logic="OR" value="1">
/systems/fuel/pumps/center-pump-1-operate eq 1
</test>
</switch>
<switch name="/systems/fuel/feed-center-2">
<default value="0"/>
<test logic="OR" value="1">
/systems/fuel/pumps/center-pump-2-operate eq 1
</test>
</switch>
<switch name="/systems/fuel/internal/left-wing-tank-eng-1">
<default value="0"/>
<test logic="AND" value="9">
<test logic="OR">
/systems/fuel/quantity/center-low eq 1
/systems/fuel/feed-center-1 eq 0
</test>
/systems/fuel/feed-left-inner eq 1
propulsion/tank[1]/contents-lbs gt 31.24
propulsion/tank[5]/contents-lbs lt 9
</test>
</switch>
<switch name="/systems/fuel/internal/center-tank-eng-1">
<default value="0"/>
<test logic="AND" value="9">
<test logic="OR">
/systems/fuel/feed-center-1 eq 1
<test logic="AND">
/systems/fuel/feed-center-2 eq 1
/systems/fuel/valves/crossfeed-valve eq 1
</test>
</test>
propulsion/tank[3]/contents-lbs gt 31.24
propulsion/tank[5]/contents-lbs lt 9
</test>
</switch>
<switch name="/systems/fuel/internal/right-wing-tank-eng-1">
<default value="0"/>
<test logic="AND" value="9">
/systems/fuel/feed-right-inner eq 1
<test logic="OR">
/systems/fuel/quantity/center-low eq 1
/systems/fuel/feed-center-2 eq 0
</test>
/systems/fuel/valves/crossfeed-valve eq 1
propulsion/tank[3]/contents-lbs gt 31.24
propulsion/tank[5]/contents-lbs lt 9
</test>
</switch>
<switch name="/systems/fuel/internal/left-wing-tank-eng-2">
<default value="0"/>
<test logic="AND" value="9">
/systems/fuel/valves/crossfeed-valve eq 1
<test logic="OR">
/systems/fuel/quantity/center-low eq 1
/systems/fuel/feed-center-1 eq 0
</test>
/systems/fuel/feed-left-inner eq 1
propulsion/tank[1]/contents-lbs gt 31.24
propulsion/tank[6]/contents-lbs lt 9
</test>
</switch>
<switch name="/systems/fuel/internal/center-tank-eng-2">
<default value="0"/>
<test logic="AND" value="9">
<test logic="OR">
/systems/fuel/feed-center-2 eq 1
<test logic="AND">
/systems/fuel/feed-center-1 eq 1
/systems/fuel/valves/crossfeed-valve eq 1
</test>
</test>
propulsion/tank[3]/contents-lbs gt 31.24
propulsion/tank[6]/contents-lbs lt 9
</test>
</switch>
<switch name="/systems/fuel/internal/right-wing-tank-eng-2">
<default value="0"/>
<test logic="AND" value="9">
<test logic="OR">
/systems/fuel/quantity/center-low eq 1
/systems/fuel/feed-center-2 eq 0
</test>
/systems/fuel/feed-right-inner eq 1
propulsion/tank[3]/contents-lbs gt 31.24
propulsion/tank[6]/contents-lbs lt 9
</test>
</switch>
<switch name="/systems/fuel/internal/left-wing-outer-to-inner-tank">
<default value="0"/>
<test logic="AND" value="9">
/systems/fuel/valves/outer-inner-transfer-valve-1 eq 1
/accelerations/pilot-gdamped ge 0.5
</test>
</switch>
<switch name="/systems/fuel/internal/right-wing-outer-to-inner-tank">
<default value="0"/>
<test logic="AND" value="9">
/systems/fuel/valves/outer-inner-transfer-valve-2 eq 1
/accelerations/pilot-gdamped ge 0.5
</test>
</switch>
<summer name="/systems/fuel/internal/left-outer-flow-rate">
<input>-/systems/fuel/internal/left-wing-outer-to-inner-tank</input>
<output>propulsion/tank[0]/external-flow-rate-pps</output>
</summer>
<summer name="/systems/fuel/internal/left-inner-flow-rate">
<input>/systems/fuel/internal/left-wing-outer-to-inner-tank</input>
<input>-/systems/fuel/internal/left-wing-tank-eng-1</input>
<input>-/systems/fuel/internal/left-wing-tank-eng-2</input>
<output>propulsion/tank[1]/external-flow-rate-pps</output>
</summer>
<summer name="/systems/fuel/internal/center-flow-rate">
<input>-/systems/fuel/internal/center-tank-eng-1</input>
<input>-/systems/fuel/internal/center-tank-eng-2</input>
<output>propulsion/tank[2]/external-flow-rate-pps</output>
</summer>
<summer name="/systems/fuel/internal/right-inner-flow-rate">
<input>/systems/fuel/internal/right-wing-outer-to-inner-tank</input>
<input>-/systems/fuel/internal/right-wing-tank-eng-1</input>
<input>-/systems/fuel/internal/right-wing-tank-eng-2</input>
<output>propulsion/tank[3]/external-flow-rate-pps</output>
</summer>
<summer name="/systems/fuel/internal/right-outer-flow-rate">
<input>-/systems/fuel/internal/right-wing-outer-to-inner-tank</input>
<output>propulsion/tank[4]/external-flow-rate-pps</output>
</summer>
<summer name="/systems/fuel/internal/eng-1-flow-rate">
<input>/systems/fuel/internal/left-wing-tank-eng-1</input>
<input>/systems/fuel/internal/center-tank-eng-1</input>
<input>/systems/fuel/internal/right-wing-tank-eng-1</input>
<output>propulsion/tank[5]/external-flow-rate-pps</output>
</summer>
<summer name="/systems/fuel/internal/eng-2-flow-rate">
<input>/systems/fuel/internal/left-wing-tank-eng-2</input>
<input>/systems/fuel/internal/center-tank-eng-2</input>
<input>/systems/fuel/internal/right-wing-tank-eng-2</input>
<output>propulsion/tank[6]/external-flow-rate-pps</output>
</summer>
</channel>
</system>

View file

@ -29,7 +29,7 @@
<switch name="fuel/from-tank2-to-tank3">
<default value="0"/>
<test logic="AND" value="9">
/systems/fuel/x-feed == 1
/systems/fuel/valves/crossfeed-valve == 1
/systems/fuel/only-use-ctr-tank == 0
/systems/fuel/tank[2]/feed == 1
propulsion/tank[0]/contents-lbs eq 0
@ -62,7 +62,7 @@
<switch name="fuel/from-tank0-to-tank4">
<default value="0"/>
<test logic="AND" value="9">
/systems/fuel/x-feed == 1
/systems/fuel/valves/crossfeed-valve == 1
/systems/fuel/only-use-ctr-tank == 0
/systems/fuel/tank[0]/feed == 1
propulsion/tank[2]/contents-lbs eq 0