1
0
Fork 0
A320-family/Nasal/Systems/fuel.nas

104 lines
No EOL
4.5 KiB
Text

# A3XX Fuel System
# Joshua Davidson (Octal450)
# Copyright (c) 2020 Josh Davidson (Octal450)
var FUEL = {
offset1: 0,
offset2: 0,
timeEngStart: 0,
cmdCtrOn: props.globals.getNode("/systems/fuel/ctr-pump-cmd-on-eng-start"),
refuelling: props.globals.getNode("/systems/fuel/refuel/refuelling"),
Fail: {
pumpLeft1: props.globals.getNode("/systems/failures/fuel/left-tank-pump-1"),
pumpLeft2: props.globals.getNode("/systems/failures/fuel/left-tank-pump-2"),
pumpCenter1: props.globals.getNode("/systems/failures/fuel/center-tank-pump-1"),
pumpCenter2: props.globals.getNode("/systems/failures/fuel/center-tank-pump-2"),
pumpRight1: props.globals.getNode("/systems/failures/fuel/right-tank-pump-1"),
pumpRight2: props.globals.getNode("/systems/failures/fuel/right-tank-pump-2"),
},
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"),
},
Pumps: {
apu: props.globals.getNode("/systems/fuel/pumps/apu-operate"),
allOff: props.globals.getNode("/systems/fuel/pumps/all-eng-pump-off"),
},
Valves: {
apu: props.globals.getNode("/systems/fuel/valves/apu-lp-valve"),
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"),
refuelLeft: props.globals.getNode("/systems/fuel/refuel/left-valve"),
refuelCenter: props.globals.getNode("/systems/fuel/refuel/center-valve"),
refuelRight: props.globals.getNode("/systems/fuel/refuel/right-valve"),
},
Quantity: {
leftOuter: props.globals.getNode("/consumables/fuel/tank[0]/level-lbs"),
leftOuterPct: props.globals.getNode("/consumables/fuel/tank[0]/level-norm"),
leftInner: props.globals.getNode("/consumables/fuel/tank[1]/level-lbs"),
leftInnerPct: props.globals.getNode("/consumables/fuel/tank[1]/level-norm"),
center: props.globals.getNode("/consumables/fuel/tank[2]/level-lbs"),
centerPct: props.globals.getNode("/consumables/fuel/tank[2]/level-norm"),
rightInner: props.globals.getNode("/consumables/fuel/tank[3]/level-lbs"),
rightInnerPct: props.globals.getNode("/consumables/fuel/tank[3]/level-norm"),
rightOuter: props.globals.getNode("/consumables/fuel/tank[4]/level-lbs"),
rightOuterPct: props.globals.getNode("/consumables/fuel/tank[4]/level-norm"),
offsetLeft: props.globals.getNode("/systems/fuel/offset-left"),
offsetRight: props.globals.getNode("/systems/fuel/offset-right"),
},
resetFail: func() {
me.Fail.pumpLeft1.setValue(0);
me.Fail.pumpLeft2.setValue(0);
me.Fail.pumpCenter1.setValue(0);
me.Fail.pumpCenter1.setValue(0);
me.Fail.pumpRight1.setValue(0);
me.Fail.pumpRight2.setValue(0);
},
init: func() {
me.resetFail();
},
setOffsetLeft: func() {
me.Quantity.offsetLeft.setValue(me.Quantity.offsetLeft.getValue() - pts.Fdm.JSBsim.Propulsion.Engine.fuelUsed[0].getValue());
},
setOffsetRight: func() {
me.Quantity.offsetRight.setValue(me.Quantity.offsetRight.getValue() - pts.Fdm.JSBsim.Propulsion.Engine.fuelUsed[1].getValue());
}
};
setlistener("/engines/engine[0]/state", func() {
if (pts.Engines.Engine.state[0].getValue() == 3) {
FUEL.timeEngStart = pts.Sim.Time.elapsedSec.getValue();
FUEL.cmdCtrOn.setValue(1);
ctrTkTimer.start();
} elsif (pts.Engines.Engine.state[0].getValue() == 2) {
FUEL.setOffsetLeft();
}
}, 0, 0);
setlistener("/engines/engine[1]/state", func() {
if (pts.Engines.Engine.state[1].getValue() == 3) {
FUEL.timeEngStart = pts.Sim.Time.elapsedSec.getValue();
FUEL.cmdCtrOn.setValue(1);
ctrTkTimer.start();
} elsif (pts.Engines.Engine.state[1].getValue() == 2) {
FUEL.setOffsetRight();
}
}, 0, 0);
var ctrTkTimer = maketimer(0.5, func() {
if (pts.Sim.Time.elapsedSec.getValue() > (FUEL.timeEngStart + 120)) {
FUEL.cmdCtrOn.setValue(0);
ctrTkTimer.stop()
}
});