APU: correct un-init property, and ensure start signal is ended when master switch is turned off in pre-init phase
This commit is contained in:
parent
e3266e5325
commit
5fe512a913
2 changed files with 40 additions and 40 deletions
|
@ -19,7 +19,7 @@ var APUNodes = {
|
|||
|
||||
var APU = {
|
||||
state: 0, # off, power up, watch, starting preparation, starting, run, cooldown, shutdown
|
||||
inletFlap: aircraft.door.new("controls/apu/inlet-flap", 12),
|
||||
inletFlap: aircraft.door.new("/controls/apu/inlet-flap", 12),
|
||||
fuelValveCmd: props.globals.getNode("/systems/fuel/valves/apu-lp-valve-cmd"),
|
||||
fuelValvePos: props.globals.getNode("/systems/fuel/valves/apu-lp-valve"),
|
||||
inletFlapPos: props.globals.getNode("/controls/apu/inlet-flap/position-norm"),
|
||||
|
@ -95,7 +95,7 @@ var APU = {
|
|||
me.checkOil();
|
||||
me.listenSignals = 1;
|
||||
settimer(func() {
|
||||
if (APUNodes.Controls.master.getValue() and !getprop("systems/acconfig/autoconfig-running")) {
|
||||
if (APUNodes.Controls.master.getValue() and !getprop("/systems/acconfig/autoconfig-running")) {
|
||||
me.setState(2);
|
||||
}
|
||||
}, 3);
|
||||
|
@ -103,7 +103,7 @@ var APU = {
|
|||
},
|
||||
startCommand: func(fast = 0) {
|
||||
if (me.listenSignals and (me.state == 1 or me.state == 2)) {
|
||||
me.signals.startInProgress.setValue(1);
|
||||
me.signals.startInProgress.setBoolValue(1);
|
||||
me.setState(3);
|
||||
checkApuStartTimer.start();
|
||||
me.fastStart = fast;
|
||||
|
@ -137,7 +137,7 @@ var APU = {
|
|||
waitStart2: func() {
|
||||
if (pts.APU.rpm.getValue() >= 99.9) {
|
||||
me.GenericControls.starter.setValue(0);
|
||||
me.signals.startInProgress.setValue(0);
|
||||
me.signals.startInProgress.setBoolValue(0);
|
||||
me.signals.available.setValue(1);
|
||||
me.setState(5);
|
||||
apuStartTimer2.stop();
|
||||
|
@ -187,11 +187,14 @@ var APU = {
|
|||
# Signal generators / receivers
|
||||
stop: func() {
|
||||
if (me.listenStopSignal and me.state == 4) {
|
||||
me.signals.startInProgress.setValue(0);
|
||||
me.signals.startInProgress.setBoolValue(0);
|
||||
me.stopAPU();
|
||||
me.setState(7);
|
||||
shutdownTimer.start();
|
||||
} else {
|
||||
if (me.signals.startInProgress.getBoolValue()) {
|
||||
me.signals.startInProgress.setBoolValue(0);
|
||||
}
|
||||
if (me.signals.bleedWasUsed) {
|
||||
if (me.bleedTime == 0) { me.shutBleed(); }
|
||||
if (120 - (pts.Sim.Time.elapsedSec.getValue() - me.bleedTime) > 0) {
|
||||
|
@ -290,7 +293,7 @@ var APUController = {
|
|||
};
|
||||
|
||||
var _masterTime = 0;
|
||||
setlistener("controls/apu/master", func() {
|
||||
setlistener("/controls/apu/master", func() {
|
||||
if (APUController.APU != nil) {
|
||||
if (APUNodes.Controls.master.getValue() and APUController.APU.state == 0) {
|
||||
shutdownTimer.stop();
|
||||
|
@ -304,7 +307,7 @@ setlistener("controls/apu/master", func() {
|
|||
}
|
||||
}, 0, 0);
|
||||
|
||||
setlistener("controls/pneumatics/switches/apu", func() {
|
||||
setlistener("/controls/pneumatics/switches/apu", func() {
|
||||
if (APUController.APU != nil) {
|
||||
if (APUNodes.Controls.bleed.getValue()) {
|
||||
APUController.APU.signals.bleedWasUsed = 1;
|
||||
|
|
|
@ -3,10 +3,10 @@
|
|||
|
||||
# Copyright (c) 2020 Josh Davidson (Octal450)
|
||||
|
||||
var elapsedTime = props.globals.getNode("sim/time/elapsed-sec");
|
||||
var apuTestBtn = props.globals.getNode("controls/fire/apu-test-btn", 1);
|
||||
var testBtn = props.globals.getNode("controls/fire/test-btn-1", 1);
|
||||
var testBtn2 = props.globals.getNode("controls/fire/test-btn-2", 1);
|
||||
var elapsedTime = props.globals.getNode("/sim/time/elapsed-sec");
|
||||
var apuTestBtn = props.globals.getNode("/controls/fire/apu-test-btn", 1);
|
||||
var testBtn = props.globals.getNode("/controls/fire/test-btn-1", 1);
|
||||
var testBtn2 = props.globals.getNode("/controls/fire/test-btn-2", 1);
|
||||
var dischTest = props.globals.initNode("/systems/fire/cargo/disch-test", 0, "BOOL");
|
||||
var cargoTestBtn = props.globals.initNode("/controls/fire/cargo/test", 0, "BOOL");
|
||||
var cargoTestTime = props.globals.initNode("/controls/fire/cargo/test-time", 0, "DOUBLE");
|
||||
|
@ -32,20 +32,19 @@ var eng2AgentTimerTime = props.globals.initNode("/systems/fire/engine2/agent1-ti
|
|||
var eng1Agent2TimerTime = props.globals.initNode("/systems/fire/engine1/agent2-timer-time", 0, "INT");
|
||||
var eng2Agent2TimerTime = props.globals.initNode("/systems/fire/engine2/agent2-timer-time", 0, "INT");
|
||||
var apuAgentTimerTime = props.globals.initNode("/systems/fire/apu/agent-timer-time", 0, "INT");
|
||||
var wow = props.globals.getNode("fdm/jsbsim/position/wow", 1);
|
||||
var dcbatNode = props.globals.getNode("systems/electrical/bus/dc-bat", 1);
|
||||
var dcessNode = props.globals.getNode("systems/electrical/bus/dc-ess", 1);
|
||||
var apuBleedNode = props.globals.getNode("systems/apu/bleed-used", 1);
|
||||
var apuMaster = props.globals.getNode("controls/apu/master", 1);
|
||||
var wow = props.globals.getNode("/fdm/jsbsim/position/wow", 1);
|
||||
var dcbatNode = props.globals.getNode("/systems/electrical/bus/dc-bat", 1);
|
||||
var dcessNode = props.globals.getNode("/systems/electrical/bus/dc-ess", 1);
|
||||
var apuMaster = props.globals.getNode("/controls/apu/master", 1);
|
||||
|
||||
var fire_init = func {
|
||||
setprop("controls/OH/protectors/fwddisch", 0);
|
||||
setprop("controls/OH/protectors/aftdisch", 0);
|
||||
setprop("controls/fire/cargo/fwddisch", 0);
|
||||
setprop("controls/fire/cargo/aftdisch", 0);
|
||||
setprop("systems/failures/cargo-fwd-fire", 0);
|
||||
setprop("systems/failures/cargo-aft-fire", 0);
|
||||
setprop("controls/fire/cargo/test", 0);
|
||||
setprop("/controls/OH/protectors/fwddisch", 0);
|
||||
setprop("/controls/OH/protectors/aftdisch", 0);
|
||||
setprop("/controls/fire/cargo/fwddisch", 0);
|
||||
setprop("/controls/fire/cargo/aftdisch", 0);
|
||||
setprop("/systems/failures/cargo-fwd-fire", 0);
|
||||
setprop("/systems/failures/cargo-aft-fire", 0);
|
||||
setprop("/controls/fire/cargo/test", 0);
|
||||
fire_timer.start();
|
||||
}
|
||||
|
||||
|
@ -68,7 +67,7 @@ var engFireDetectorUnit = {
|
|||
eF.loopTwo = 0;
|
||||
eF.fireProp = props.globals.getNode(fireProp, 1);
|
||||
eF.testProp = props.globals.getNode(testProp, 1);
|
||||
eF.wow = props.globals.getNode("fdm/jsbsim/position/wow", 1);
|
||||
eF.wow = props.globals.getNode("/fdm/jsbsim/position/wow", 1);
|
||||
eF.condition = 100;
|
||||
return eF;
|
||||
},
|
||||
|
@ -179,7 +178,6 @@ var engFireDetectorUnit = {
|
|||
} elsif (system == 2) {
|
||||
apuFireWarn.setBoolValue(1);
|
||||
if (me.wow.getValue() == 1) {
|
||||
apuBleedNode.setValue(0);
|
||||
systems.APUController.APU.emergencyStop();
|
||||
settimer(func() { # 3 sec delay - source TTM ATA 26 FIRE PROTECTION p102
|
||||
extinguisherBottles.vector[4].discharge();
|
||||
|
@ -284,9 +282,9 @@ var detectorLoop = {
|
|||
}
|
||||
},
|
||||
sendSignal: func(system, typeLoop) {
|
||||
if (system == 0 and !getprop("systems/failures/engine-left-fire")) { return; }
|
||||
elsif (system == 1 and !getprop("systems/failures/engine-right-fire")) { return; }
|
||||
elsif (system == 2 and !getprop("systems/failures/apu-fire")) { return; }
|
||||
if (system == 0 and !getprop("/systems/failures/engine-left-fire")) { return; }
|
||||
elsif (system == 1 and !getprop("/systems/failures/engine-right-fire")) { return; }
|
||||
elsif (system == 2 and !getprop("/systems/failures/apu-fire")) { return; }
|
||||
engFireDetectorUnits.vector[system].receiveSignal(typeLoop);
|
||||
}
|
||||
};
|
||||
|
@ -311,8 +309,8 @@ var cargoDetectorLoop = {
|
|||
}
|
||||
},
|
||||
sendSignal: func(system, typeLoop) {
|
||||
if ((system == 0 or system == 1) and !getprop("systems/failures/cargo-aft-fire")) { return; }
|
||||
elsif (system == 2 and !getprop("systems/failures/cargo-fwd-fire")) { return; }
|
||||
if ((system == 0 or system == 1) and !getprop("/systems/failures/cargo-aft-fire")) { return; }
|
||||
elsif (system == 2 and !getprop("/systems/failures/cargo-fwd-fire")) { return; }
|
||||
|
||||
cargoSmokeDetectorUnits.vector[system].receiveSignal(typeLoop);
|
||||
}
|
||||
|
@ -552,7 +550,7 @@ var createCargoFireBottleListener = func(prop, index) {
|
|||
|
||||
# Listeners
|
||||
setlistener("/controls/engines/engine[0]/fire-btn", func() {
|
||||
if (getprop("controls/engines/engine[0]/fire-btn") == 1) {
|
||||
if (getprop("/controls/engines/engine[0]/fire-btn") == 1) {
|
||||
ecam.shutUpYou();
|
||||
eng1AgentTimerMakeTimer.stop();
|
||||
eng1AgentTimer.setValue(10);
|
||||
|
@ -562,7 +560,7 @@ setlistener("/controls/engines/engine[0]/fire-btn", func() {
|
|||
}, 0, 0);
|
||||
|
||||
setlistener("/systems/fire/engine1/disch1", func() {
|
||||
if (getprop("systems/fire/engine1/disch1") == 1) {
|
||||
if (getprop("/systems/fire/engine1/disch1") == 1) {
|
||||
eng1Agent2TimerMakeTimer.stop();
|
||||
eng1Agent2Timer.setValue(30);
|
||||
eng1Agent2TimerTime.setValue(elapsedTime.getValue() + 31);
|
||||
|
@ -595,7 +593,7 @@ eng1Agent2TimerMakeTimerFunc = func() {
|
|||
}
|
||||
|
||||
setlistener("/controls/engines/engine[1]/fire-btn", func() {
|
||||
if (getprop("controls/engines/engine[1]/fire-btn") == 1) {
|
||||
if (getprop("/controls/engines/engine[1]/fire-btn") == 1) {
|
||||
ecam.shutUpYou();
|
||||
eng2AgentTimerMakeTimer.stop();
|
||||
eng2AgentTimer.setValue(10);
|
||||
|
@ -605,7 +603,7 @@ setlistener("/controls/engines/engine[1]/fire-btn", func() {
|
|||
}, 0, 0);
|
||||
|
||||
setlistener("/systems/fire/engine2/disch1", func() {
|
||||
if (getprop("systems/fire/engine2/disch1") == 1) {
|
||||
if (getprop("/systems/fire/engine2/disch1") == 1) {
|
||||
eng2Agent2TimerMakeTimer.stop();
|
||||
eng2Agent2Timer.setValue(30);
|
||||
eng2Agent2TimerTime.setValue(elapsedTime.getValue() + 31);
|
||||
|
@ -638,9 +636,8 @@ eng2Agent2TimerMakeTimerFunc = func() {
|
|||
}
|
||||
|
||||
setlistener("/controls/apu/fire-btn", func() {
|
||||
if (getprop("controls/apu/fire-btn") == 1) {
|
||||
if (getprop("/controls/apu/fire-btn") == 1) {
|
||||
ecam.shutUpYou();
|
||||
apuBleedNode.setValue(0);
|
||||
systems.APUController.APU.emergencyStop();
|
||||
apuAgentTimerMakeTimer.stop();
|
||||
apuAgentTimer.setValue(10);
|
||||
|
@ -661,7 +658,7 @@ apuAgentTimerMakeTimerFunc = func() {
|
|||
}
|
||||
|
||||
setlistener("/controls/fire/test-btn-1", func() {
|
||||
if (getprop("systems/failures/engine-left-fire")) { return; }
|
||||
if (getprop("/systems/failures/engine-left-fire")) { return; }
|
||||
|
||||
if (testBtn.getValue() == 1) {
|
||||
if (dcbatNode.getValue() > 25 or dcessNode.getValue() > 25) {
|
||||
|
@ -674,7 +671,7 @@ setlistener("/controls/fire/test-btn-1", func() {
|
|||
}, 0, 0);
|
||||
|
||||
setlistener("/controls/fire/test-btn-2", func() {
|
||||
if (getprop("systems/failures/engine-right-fire")) { return; }
|
||||
if (getprop("/systems/failures/engine-right-fire")) { return; }
|
||||
if (testBtn2.getValue() == 1) {
|
||||
if (dcbatNode.getValue() > 25 or dcessNode.getValue() > 25) {
|
||||
eng2FireWarn.setBoolValue(1);
|
||||
|
@ -686,7 +683,7 @@ setlistener("/controls/fire/test-btn-2", func() {
|
|||
}, 0, 0);
|
||||
|
||||
setlistener("/controls/fire/apu-test-btn", func() {
|
||||
if (getprop("systems/failures/apu-fire")) { return; }
|
||||
if (getprop("/systems/failures/apu-fire")) { return; }
|
||||
if (apuTestBtn.getValue() == 1) {
|
||||
if (dcbatNode.getValue() > 25 or dcessNode.getValue() > 25) {
|
||||
apuFireWarn.setBoolValue(1);
|
||||
|
@ -698,7 +695,7 @@ setlistener("/controls/fire/apu-test-btn", func() {
|
|||
}, 0, 0);
|
||||
|
||||
setlistener("/controls/fire/cargo/test", func() {
|
||||
if (getprop("systems/failures/aft-cargo-fire") or getprop("systems/failures/fwd-cargo-fire") or dcbatNode.getValue() < 25 or dcessNode.getValue() < 25) { return; }
|
||||
if (getprop("/systems/failures/aft-cargo-fire") or getprop("/systems/failures/fwd-cargo-fire") or dcbatNode.getValue() < 25 or dcessNode.getValue() < 25) { return; }
|
||||
if (cargoTestBtn.getBoolValue()) {
|
||||
cargoTestTime.setValue(elapsedTime.getValue());
|
||||
cargoTestChecker.start();
|
||||
|
|
Loading…
Reference in a new issue