Merge branch 'dev' into 3D
This commit is contained in:
commit
6bf96d5407
10 changed files with 293 additions and 85 deletions
|
@ -238,13 +238,7 @@ var canvas_pfd = {
|
||||||
} else {
|
} else {
|
||||||
obj["AI_agl"].setText(sprintf("%s", math.round(math.clamp(val, 0, 2500))));
|
obj["AI_agl"].setText(sprintf("%s", math.round(math.clamp(val, 0, 2500))));
|
||||||
}
|
}
|
||||||
|
obj["ground_ref"].setTranslation(0, (-val / 100) * -48.66856);
|
||||||
if (-val >= -565 and -val <= 565) {
|
|
||||||
obj["ground_ref"].setTranslation(0, (-val / 100) * -48.66856);
|
|
||||||
obj["ground_ref"].show();
|
|
||||||
} else {
|
|
||||||
obj["ground_ref"].hide();
|
|
||||||
}
|
|
||||||
}),
|
}),
|
||||||
props.UpdateManager.FromHashList(["agl","gear1Wow", "gear2Wow","fmgcPhase"], nil, func(val) {
|
props.UpdateManager.FromHashList(["agl","gear1Wow", "gear2Wow","fmgcPhase"], nil, func(val) {
|
||||||
if (-val.agl >= -565 and -val.agl <= 565) {
|
if (-val.agl >= -565 and -val.agl <= 565) {
|
||||||
|
@ -1188,6 +1182,13 @@ var canvas_pfd = {
|
||||||
me["ASI_trend_up"].hide();
|
me["ASI_trend_up"].hide();
|
||||||
me["ASI_trend_down"].hide();
|
me["ASI_trend_down"].hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (-notification.agl >= -565 and -notification.agl <= 565) {
|
||||||
|
me["ground_ref"].show();
|
||||||
|
} else {
|
||||||
|
me["ground_ref"].hide();
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
me["ASI_group"].hide();
|
me["ASI_group"].hide();
|
||||||
me["ASI_error"].show();
|
me["ASI_error"].show();
|
||||||
|
|
|
@ -37,6 +37,7 @@ var alt200 = nil;
|
||||||
var alt750 = nil;
|
var alt750 = nil;
|
||||||
var bigThree = nil;
|
var bigThree = nil;
|
||||||
var fltCtlLandAsap = 0;
|
var fltCtlLandAsap = 0;
|
||||||
|
var gearPosition = nil;
|
||||||
|
|
||||||
var altAlertSteady = 0;
|
var altAlertSteady = 0;
|
||||||
var altAlertFlash = 0;
|
var altAlertFlash = 0;
|
||||||
|
@ -2057,10 +2058,11 @@ var messages_priority_2 = func {
|
||||||
ECAM_controller.warningReset(fctlSpdBrkStillOut);
|
ECAM_controller.warningReset(fctlSpdBrkStillOut);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gearPosition = pts.Gear.position[1].getValue();
|
||||||
if (directLaw.clearFlag == 0 and warningNodes.Timers.directLaw.getValue() and phaseVar2 != 4 and phaseVar2 != 5 and phaseVar2 != 7 and phaseVar2 != 8) {
|
if (directLaw.clearFlag == 0 and warningNodes.Timers.directLaw.getValue() and phaseVar2 != 4 and phaseVar2 != 5 and phaseVar2 != 7 and phaseVar2 != 8) {
|
||||||
directLaw.active = 1;
|
directLaw.active = 1;
|
||||||
directLawProt.active = 1;
|
directLawProt.active = 1;
|
||||||
if (directLawMaxSpeed.clearFlag == 0 and !fbw.tripleADRFail and pts.Gear.position[1].getValue() == 1) {
|
if (directLawMaxSpeed.clearFlag == 0 and !fbw.tripleADRFail and gearPosition != 1) {
|
||||||
directLawMaxSpeed.active = 1;
|
directLawMaxSpeed.active = 1;
|
||||||
} else {
|
} else {
|
||||||
ECAM_controller.warningReset(directLawMaxSpeed);
|
ECAM_controller.warningReset(directLawMaxSpeed);
|
||||||
|
@ -2070,12 +2072,12 @@ var messages_priority_2 = func {
|
||||||
} else {
|
} else {
|
||||||
ECAM_controller.warningReset(directLawTrim);
|
ECAM_controller.warningReset(directLawTrim);
|
||||||
}
|
}
|
||||||
if (directLawCare.clearFlag == 0 and (fbw.tripleADRFail or pts.Gear.position[1].getValue() == 1)) {
|
if (directLawCare.clearFlag == 0 and (fbw.tripleADRFail or gearPosition != 1)) {
|
||||||
directLawCare.active = 1;
|
directLawCare.active = 1;
|
||||||
} else {
|
} else {
|
||||||
ECAM_controller.warningReset(directLawCare);
|
ECAM_controller.warningReset(directLawCare);
|
||||||
}
|
}
|
||||||
if (directLawSpdBrk.clearFlag == 0 and !fbw.tripleADRFail and pts.Gear.position[1].getValue() == 1) {
|
if (directLawSpdBrk.clearFlag == 0 and !fbw.tripleADRFail and gearPosition != 1) {
|
||||||
directLawSpdBrk.active = 1;
|
directLawSpdBrk.active = 1;
|
||||||
} else {
|
} else {
|
||||||
ECAM_controller.warningReset(directLawSpdBrk);
|
ECAM_controller.warningReset(directLawSpdBrk);
|
||||||
|
@ -2111,7 +2113,13 @@ var messages_priority_2 = func {
|
||||||
ECAM_controller.warningReset(altnLawMaxSpeed2);
|
ECAM_controller.warningReset(altnLawMaxSpeed2);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (altnLawMaxSpdBrk.clearFlag == 0 and (fbw.tripleADRFail or warningNodes.Logic.leftElevFail.getValue() or warningNodes.Logic.rightElevFail.getValue())) {
|
if (altnLawCare.clearFlag == 0 and (fbw.tripleADRFail or gearPosition != 1)) {
|
||||||
|
altnLawCare.active = 1;
|
||||||
|
} else {
|
||||||
|
ECAM_controller.warningReset(altnLawCare);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (altnLawMaxSpdBrk.clearFlag == 0 and (fbw.tripleADRFail or warningNodes.Logic.leftElevFail.getValue() or warningNodes.Logic.rightElevFail.getValue() or warningNodes.Logic.leftElevNotAvail.getValue())) {
|
||||||
altnLawMaxSpdBrk.active = 1;
|
altnLawMaxSpdBrk.active = 1;
|
||||||
} else {
|
} else {
|
||||||
ECAM_controller.warningReset(altnLawMaxSpdBrk);
|
ECAM_controller.warningReset(altnLawMaxSpdBrk);
|
||||||
|
@ -2121,6 +2129,7 @@ var messages_priority_2 = func {
|
||||||
ECAM_controller.warningReset(altnLawProt);
|
ECAM_controller.warningReset(altnLawProt);
|
||||||
ECAM_controller.warningReset(altnLawMaxSpeed);
|
ECAM_controller.warningReset(altnLawMaxSpeed);
|
||||||
ECAM_controller.warningReset(altnLawMaxSpeed2);
|
ECAM_controller.warningReset(altnLawMaxSpeed2);
|
||||||
|
ECAM_controller.warningReset(altnLawCare);
|
||||||
ECAM_controller.warningReset(altnLawMaxSpdBrk);
|
ECAM_controller.warningReset(altnLawMaxSpdBrk);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2237,31 +2246,7 @@ var messages_priority_2 = func {
|
||||||
ECAM_controller.warningReset(fac2FaultFacOff);
|
ECAM_controller.warningReset(fac2FaultFacOff);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (yawDamper1Fault.clearFlag == 0 and (phaseVar2 <= 2 or phaseVar2 == 9 or phaseVar2 == 6) and warningNodes.Timers.yawDamper1Fault.getValue() == 1 and !warningNodes.Logic.yawDamper12Fault.getBoolValue()) {
|
if (fcu.FCUController.FCU1.failed and fcu.FCUController.FCU2.failed and systems.ELEC.Bus.dcEss.getValue() >= 25 and systems.ELEC.Bus.dc2.getValue() >= 25 and fcuFault.clearFlag == 0) {
|
||||||
yawDamper1Fault.active = 1;
|
|
||||||
} else {
|
|
||||||
ECAM_controller.warningReset(yawDamper1Fault);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (yawDamper2Fault.clearFlag == 0 and (phaseVar2 <= 2 or phaseVar2 == 9 or phaseVar2 == 6) and warningNodes.Timers.yawDamper2Fault.getValue() == 1 and !warningNodes.Logic.yawDamper12Fault.getBoolValue()) {
|
|
||||||
yawDamper2Fault.active = 1;
|
|
||||||
} else {
|
|
||||||
ECAM_controller.warningReset(yawDamper2Fault);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (rudTravLimSys1Fault.clearFlag == 0 and (phaseVar2 <= 2 or phaseVar2 >= 9 or phaseVar2 == 6) and warningNodes.Logic.rtlu1Fault.getBoolValue()) {
|
|
||||||
rudTravLimSys1Fault.active = 1;
|
|
||||||
} else {
|
|
||||||
ECAM_controller.warningReset(rudTravLimSys1Fault);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (rudTravLimSys2Fault.clearFlag == 0 and (phaseVar2 <= 2 or phaseVar2 >= 9 or phaseVar2 == 6) and warningNodes.Logic.rtlu2Fault.getBoolValue()) {
|
|
||||||
rudTravLimSys2Fault.active = 1;
|
|
||||||
} else {
|
|
||||||
ECAM_controller.warningReset(rudTravLimSys2Fault);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (fcu.FCUController.FCU1.failed and fcu.FCUController.FCU2.failed and systems.ELEC.Bus.dcEss.getValue() >= 25 and systems.ELEC.Bus.dcEss.getValue() >= 25 and fcuFault.clearFlag == 0) {
|
|
||||||
fcuFault.active = 1;
|
fcuFault.active = 1;
|
||||||
fcuFaultBaro.active = 1;
|
fcuFaultBaro.active = 1;
|
||||||
} else {
|
} else {
|
||||||
|
@ -2269,22 +2254,6 @@ var messages_priority_2 = func {
|
||||||
ECAM_controller.warningReset(fcuFaultBaro);
|
ECAM_controller.warningReset(fcuFaultBaro);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fcu.FCUController.FCU1.failed and !fcu.FCUController.FCU2.failed and systems.ELEC.Bus.dcEss.getValue() >= 25 and fcuFault1.clearFlag == 0) {
|
|
||||||
fcuFault1.active = 1;
|
|
||||||
fcuFault1Baro.active = 1;
|
|
||||||
} else {
|
|
||||||
ECAM_controller.warningReset(fcuFault1);
|
|
||||||
ECAM_controller.warningReset(fcuFault1Baro);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (fcu.FCUController.FCU2.failed and !fcu.FCUController.FCU1.failed and systems.ELEC.Bus.dc2.getValue() >= 25 and fcuFault2.clearFlag == 0) {
|
|
||||||
fcuFault2.active = 1;
|
|
||||||
fcuFault2Baro.active = 1;
|
|
||||||
} else {
|
|
||||||
ECAM_controller.warningReset(fcuFault2);
|
|
||||||
ECAM_controller.warningReset(fcuFault2Baro);
|
|
||||||
}
|
|
||||||
|
|
||||||
# FUEL
|
# FUEL
|
||||||
if (wingLoLvl.clearFlag == 0 and warningNodes.Timers.lowLevelBoth.getValue() == 1 and (phaseVar2 <= 2 or phaseVar2 == 6 or phaseVar2 >= 9)) {
|
if (wingLoLvl.clearFlag == 0 and warningNodes.Timers.lowLevelBoth.getValue() == 1 and (phaseVar2 <= 2 or phaseVar2 == 6 or phaseVar2 >= 9)) {
|
||||||
wingLoLvl.active = 1;
|
wingLoLvl.active = 1;
|
||||||
|
@ -3018,6 +2987,46 @@ var messages_priority_2 = func {
|
||||||
ECAM_controller.warningReset(wingIceOpenGndShut);
|
ECAM_controller.warningReset(wingIceOpenGndShut);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (yawDamper1Fault.clearFlag == 0 and (phaseVar2 <= 2 or phaseVar2 == 9 or phaseVar2 == 6) and warningNodes.Timers.yawDamper1Fault.getValue() == 1 and !warningNodes.Logic.yawDamper12Fault.getBoolValue()) {
|
||||||
|
yawDamper1Fault.active = 1;
|
||||||
|
} else {
|
||||||
|
ECAM_controller.warningReset(yawDamper1Fault);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (yawDamper2Fault.clearFlag == 0 and (phaseVar2 <= 2 or phaseVar2 == 9 or phaseVar2 == 6) and warningNodes.Timers.yawDamper2Fault.getValue() == 1 and !warningNodes.Logic.yawDamper12Fault.getBoolValue()) {
|
||||||
|
yawDamper2Fault.active = 1;
|
||||||
|
} else {
|
||||||
|
ECAM_controller.warningReset(yawDamper2Fault);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (rudTravLimSys1Fault.clearFlag == 0 and (phaseVar2 <= 2 or phaseVar2 >= 9 or phaseVar2 == 6) and warningNodes.Logic.rtlu1Fault.getBoolValue()) {
|
||||||
|
rudTravLimSys1Fault.active = 1;
|
||||||
|
} else {
|
||||||
|
ECAM_controller.warningReset(rudTravLimSys1Fault);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (rudTravLimSys2Fault.clearFlag == 0 and (phaseVar2 <= 2 or phaseVar2 >= 9 or phaseVar2 == 6) and warningNodes.Logic.rtlu2Fault.getBoolValue()) {
|
||||||
|
rudTravLimSys2Fault.active = 1;
|
||||||
|
} else {
|
||||||
|
ECAM_controller.warningReset(rudTravLimSys2Fault);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fcu.FCUController.FCU1.failed and !fcu.FCUController.FCU2.failed and systems.ELEC.Bus.dcEss.getValue() >= 25 and fcuFault1.clearFlag == 0) {
|
||||||
|
fcuFault1.active = 1;
|
||||||
|
fcuFault1Baro.active = 1;
|
||||||
|
} else {
|
||||||
|
ECAM_controller.warningReset(fcuFault1);
|
||||||
|
ECAM_controller.warningReset(fcuFault1Baro);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fcu.FCUController.FCU2.failed and !fcu.FCUController.FCU1.failed and systems.ELEC.Bus.dc2.getValue() >= 25 and fcuFault2.clearFlag == 0) {
|
||||||
|
fcuFault2.active = 1;
|
||||||
|
fcuFault2Baro.active = 1;
|
||||||
|
} else {
|
||||||
|
ECAM_controller.warningReset(fcuFault2);
|
||||||
|
ECAM_controller.warningReset(fcuFault2Baro);
|
||||||
|
}
|
||||||
|
|
||||||
if (wingIceLHiPr.clearFlag == 0 and warningNodes.Timers.waiLhiPr.getValue() == 1 and (phaseVar2 <= 2 or phaseVar2 >= 9 or phaseVar2 == 6)) {
|
if (wingIceLHiPr.clearFlag == 0 and warningNodes.Timers.waiLhiPr.getValue() == 1 and (phaseVar2 <= 2 or phaseVar2 >= 9 or phaseVar2 == 6)) {
|
||||||
wingIceLHiPr.active = 1;
|
wingIceLHiPr.active = 1;
|
||||||
wingIceLHiPrThrust.active = 1;
|
wingIceLHiPrThrust.active = 1;
|
||||||
|
|
|
@ -233,7 +233,7 @@ var ECAMRecipient =
|
||||||
if (math.mod(notifications.frameNotification.FrameCount,10) == 0) {
|
if (math.mod(notifications.frameNotification.FrameCount,10) == 0) {
|
||||||
phaseLoop();
|
phaseLoop();
|
||||||
}
|
}
|
||||||
if (math.mod(notifications.frameNotification.FrameCount,10) == 5) {
|
if (isint(notifications.frameNotification.FrameCount / 5)) {
|
||||||
ECAM_controller.loop(notification);
|
ECAM_controller.loop(notification);
|
||||||
}
|
}
|
||||||
return emesary.Transmitter.ReceiptStatus_OK;
|
return emesary.Transmitter.ReceiptStatus_OK;
|
||||||
|
|
|
@ -501,6 +501,7 @@ var warnings = std.Vector.new([
|
||||||
var altnLawProt = warning.new(msg: " (PROT LOST)", colour: "a"),
|
var altnLawProt = warning.new(msg: " (PROT LOST)", colour: "a"),
|
||||||
var altnLawMaxSpeed = warning.new(msg: " MAX SPEED........320 KT", colour: "c"),
|
var altnLawMaxSpeed = warning.new(msg: " MAX SPEED........320 KT", colour: "c"),
|
||||||
var altnLawMaxSpeed2 = warning.new(msg: " MAX SPEED........320/.77", colour: "c"),
|
var altnLawMaxSpeed2 = warning.new(msg: " MAX SPEED........320/.77", colour: "c"),
|
||||||
|
var altnLawCare = warning.new(msg: " MANEUVER WITH CARE", colour: "c"),
|
||||||
var altnLawMaxSpdBrk = warning.new(msg: " SPD BRK.......DO NOT USE", colour: "c"),
|
var altnLawMaxSpdBrk = warning.new(msg: " SPD BRK.......DO NOT USE", colour: "c"),
|
||||||
|
|
||||||
# Autothrust
|
# Autothrust
|
||||||
|
|
|
@ -117,7 +117,9 @@ var warningNodes = {
|
||||||
greenYellow: props.globals.initNode("/ECAM/warnings/hyd/green-yellow-failure"),
|
greenYellow: props.globals.initNode("/ECAM/warnings/hyd/green-yellow-failure"),
|
||||||
greenYellowFuel: props.globals.initNode("/ECAM/warnings/hyd/green-yellow-fuel-consumpt"),
|
greenYellowFuel: props.globals.initNode("/ECAM/warnings/hyd/green-yellow-fuel-consumpt"),
|
||||||
leftElevFail: props.globals.initNode("/ECAM/warnings/fctl/leftElevFault"),
|
leftElevFail: props.globals.initNode("/ECAM/warnings/fctl/leftElevFault"),
|
||||||
|
leftElevNotAvail: props.globals.initNode("ECAM/warnings/fctl/leftElevFault-cond"),
|
||||||
rightElevFail: props.globals.initNode("/ECAM/warnings/fctl/rightElevFault"),
|
rightElevFail: props.globals.initNode("/ECAM/warnings/fctl/rightElevFault"),
|
||||||
|
rightElevNotAvail: props.globals.initNode("ECAM/warnings/fctl/rightElevFault-cond"),
|
||||||
flapNotZero: props.globals.initNode("/ECAM/warnings/fctl/flaps-not-zero"),
|
flapNotZero: props.globals.initNode("/ECAM/warnings/fctl/flaps-not-zero"),
|
||||||
slatsConfig: props.globals.initNode("/ECAM/warnings/fctl/slats-config-output"),
|
slatsConfig: props.globals.initNode("/ECAM/warnings/fctl/slats-config-output"),
|
||||||
flapsConfig: props.globals.initNode("/ECAM/warnings/fctl/flaps-config-output"),
|
flapsConfig: props.globals.initNode("/ECAM/warnings/fctl/flaps-config-output"),
|
||||||
|
|
|
@ -20,8 +20,18 @@ var FCU = {
|
||||||
f.elecSupply = elecNode;
|
f.elecSupply = elecNode;
|
||||||
return f;
|
return f;
|
||||||
},
|
},
|
||||||
loop: func() {
|
elec: nil,
|
||||||
me.failed = (me.elecSupply.getValue() < 25 or me.condition == 0) ? 1 : 0;
|
powerOffTime: -99,
|
||||||
|
loop: func(notification) {
|
||||||
|
me.elec = me.elecSupply.getValue();
|
||||||
|
if (me.elec < 25) {
|
||||||
|
if (me.powerOffTime == -99) {
|
||||||
|
me.powerOffTime = notification.elapsedTime;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
me.powerOffTime = -99;
|
||||||
|
}
|
||||||
|
me.failed = ((notification.elapsedTime > (me.powerOffTime + 0.25) and me.elec < 25) or me.condition == 0) ? 1 : 0;
|
||||||
},
|
},
|
||||||
setFail: func() {
|
setFail: func() {
|
||||||
me.condition = 0;
|
me.condition = 0;
|
||||||
|
@ -46,8 +56,8 @@ var FCUController = {
|
||||||
if (me._init == 0) { return; }
|
if (me._init == 0) { return; }
|
||||||
|
|
||||||
# Update FCU Power
|
# Update FCU Power
|
||||||
me.FCU1.loop();
|
me.FCU1.loop(notification);
|
||||||
me.FCU2.loop();
|
me.FCU2.loop(notification);
|
||||||
|
|
||||||
if (!me.FCU1.failed or !me.FCU2.failed) {
|
if (!me.FCU1.failed or !me.FCU2.failed) {
|
||||||
me.FCUworking = 1;
|
me.FCUworking = 1;
|
||||||
|
|
|
@ -134,6 +134,11 @@ var duplicateNamesPage = {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
pushButtonLeft: func(indexSelect) {
|
pushButtonLeft: func(indexSelect) {
|
||||||
|
if (indexSelect > size(me.vector)) {
|
||||||
|
mcdu_message(me.computer, "NOT ALLOWED");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (!dirToFlag) {
|
if (!dirToFlag) {
|
||||||
if (!me.flagPBD and !me.flagPROG) {
|
if (!me.flagPBD and !me.flagPROG) {
|
||||||
if (size(me.vector[0].id) == 5) {
|
if (size(me.vector[0].id) == 5) {
|
||||||
|
|
|
@ -368,6 +368,123 @@
|
||||||
|
|
||||||
</channel>
|
</channel>
|
||||||
|
|
||||||
|
<channel name="ELAC Power Supply">
|
||||||
|
|
||||||
|
<switch name="/systems/fctl/power-supply/elac1/relay-condition">
|
||||||
|
<default value="0"/>
|
||||||
|
<test logic="OR" value="1">
|
||||||
|
/systems/hydraulic/blue-psi ge 1500
|
||||||
|
/systems/hydraulic/green-psi ge 1500
|
||||||
|
/systems/hydraulic/yellow-psi ge 1500
|
||||||
|
</test>
|
||||||
|
</switch>
|
||||||
|
|
||||||
|
<!-- if ELAC1 is not powered, then the timer does not run - this makes behaviour with cold + dark OK -->
|
||||||
|
<switch name="/systems/fctl/power-supply/elac1/relay-rate">
|
||||||
|
<default value="100"/>
|
||||||
|
<test logic="OR" value="0.03333333333">
|
||||||
|
/systems/fctl/elac1 eq 1
|
||||||
|
</test>
|
||||||
|
</switch>
|
||||||
|
|
||||||
|
<actuator name="/systems/fctl/power-supply/elac1/relay-timer">
|
||||||
|
<input>/systems/fctl/power-supply/elac1/relay-condition</input>
|
||||||
|
<rate_limit sense="incr">100</rate_limit>
|
||||||
|
<rate_limit sense="decr">0.03333333333</rate_limit> <!-- 30s -->
|
||||||
|
</actuator>
|
||||||
|
|
||||||
|
<switch name="/systems/fctl/power-supply/elac1/relay">
|
||||||
|
<default value="0"/>
|
||||||
|
<test logic="AND" value="/systems/electrical/bus/sub-bus/dc-hot-1-703">
|
||||||
|
/systems/electrical/bus/sub-bus/dc-hot-1-703 ge 25
|
||||||
|
/systems/fctl/power-supply/elac1/relay-timer ne 0
|
||||||
|
</test>
|
||||||
|
</switch>
|
||||||
|
|
||||||
|
<switch name="/systems/fctl/power-supply/elac2/relay-power">
|
||||||
|
<default value="0"/>
|
||||||
|
<test logic="AND" value="1"> <!-- latch as long as power is lost -->
|
||||||
|
/systems/fctl/power-supply/elac2/relay-power eq 1
|
||||||
|
/systems/electrical/bus/sub-bus/dc-2-202 lt 25
|
||||||
|
</test>
|
||||||
|
<test logic="AND" value="1"> <!-- only trigger if the ELAC is on -->
|
||||||
|
/systems/fctl/elac2 eq 1
|
||||||
|
/systems/electrical/bus/sub-bus/dc-2-202 lt 25
|
||||||
|
</test>
|
||||||
|
</switch>
|
||||||
|
|
||||||
|
<!-- Only if the relay has already gone on -
|
||||||
|
if blue is low or gear is not extended, it will go permanently rather than for just 30 seconds
|
||||||
|
in addition this will happen even if the timer has already reached 30 seconds
|
||||||
|
however, it will not trigger if the relay is not yet triggered
|
||||||
|
and it should not trigger unless the ELAC has already gained and then lost power -->
|
||||||
|
<switch name="/systems/fctl/power-supply/elac2/relay-power-override">
|
||||||
|
<default value="0"/>
|
||||||
|
<test logic="AND" value="1">
|
||||||
|
<test logic="OR">
|
||||||
|
/systems/hydraulic/blue-psi lt 1500
|
||||||
|
/gear/gear[1]/position-norm ne 0
|
||||||
|
</test>
|
||||||
|
/systems/electrical/some-electric-thingie/speed-abv-100 eq 1
|
||||||
|
/systems/fctl/power-supply/elac2/relay-power eq 1
|
||||||
|
</test>
|
||||||
|
</switch>
|
||||||
|
|
||||||
|
<actuator name="/systems/fctl/power-supply/elac2/relay-timer">
|
||||||
|
<input>/systems/fctl/power-supply/elac2/relay-power</input>
|
||||||
|
<rate_limit sense="incr">0.03333333333</rate_limit>
|
||||||
|
<rate_limit sense="decr">100</rate_limit>
|
||||||
|
</actuator>
|
||||||
|
|
||||||
|
<switch name="/systems/fctl/power-supply/elac2/relay">
|
||||||
|
<default value="0"/>
|
||||||
|
<test logic="AND" value="/systems/electrical/bus/sub-bus/dc-hot-2-704">
|
||||||
|
/systems/electrical/bus/sub-bus/dc-hot-2-704 ge 25
|
||||||
|
/systems/fctl/power-supply/elac2/relay-power eq 1
|
||||||
|
<test logic="OR">
|
||||||
|
/systems/fctl/power-supply/elac2/relay-power-override eq 1
|
||||||
|
/systems/fctl/power-supply/elac2/relay-timer ne 1
|
||||||
|
</test>
|
||||||
|
</test>
|
||||||
|
</switch>
|
||||||
|
|
||||||
|
</channel>
|
||||||
|
|
||||||
|
<channel name="SEC Power Supply">
|
||||||
|
|
||||||
|
<switch name="/systems/fctl/power-supply/sec1/relay-condition">
|
||||||
|
<default value="0"/>
|
||||||
|
<test logic="OR" value="1">
|
||||||
|
/systems/hydraulic/blue-psi ge 1500
|
||||||
|
/systems/hydraulic/green-psi ge 1500
|
||||||
|
/systems/hydraulic/yellow-psi ge 1500
|
||||||
|
</test>
|
||||||
|
</switch>
|
||||||
|
|
||||||
|
<!-- if SEC1 is not powered, then the timer does not run - this makes behaviour with cold + dark OK -->
|
||||||
|
<switch name="/systems/fctl/power-supply/sec1/relay-rate">
|
||||||
|
<default value="100"/>
|
||||||
|
<test logic="OR" value="0.03333333333">
|
||||||
|
/systems/fctl/sec1 eq 1
|
||||||
|
</test>
|
||||||
|
</switch>
|
||||||
|
|
||||||
|
<actuator name="/systems/fctl/power-supply/sec1/relay-timer">
|
||||||
|
<input>/systems/fctl/power-supply/sec1/relay-condition</input>
|
||||||
|
<rate_limit sense="incr">100</rate_limit>
|
||||||
|
<rate_limit sense="decr">0.03333333333</rate_limit> <!-- 30s -->
|
||||||
|
</actuator>
|
||||||
|
|
||||||
|
<switch name="/systems/fctl/power-supply/sec1/relay">
|
||||||
|
<default value="0"/>
|
||||||
|
<test logic="AND" value="/systems/electrical/bus/sub-bus/dc-hot-1-703">
|
||||||
|
/systems/electrical/bus/sub-bus/dc-hot-1-703 ge 25
|
||||||
|
/systems/fctl/power-supply/sec1/relay-timer ne 0
|
||||||
|
</test>
|
||||||
|
</switch>
|
||||||
|
|
||||||
|
</channel>
|
||||||
|
|
||||||
<channel name="Computers">
|
<channel name="Computers">
|
||||||
|
|
||||||
<switch name="/systems/fctl/lights/elac1-fault">
|
<switch name="/systems/fctl/lights/elac1-fault">
|
||||||
|
@ -377,19 +494,27 @@
|
||||||
/systems/fctl/elac1 eq 0
|
/systems/fctl/elac1 eq 0
|
||||||
</test>
|
</test>
|
||||||
</switch>
|
</switch>
|
||||||
|
|
||||||
|
<switch name="/systems/fctl/power-supply/elac1/has-power">
|
||||||
|
<default value="0"/>
|
||||||
|
<test logic="OR" value="1">
|
||||||
|
/systems/electrical/bus/dc-ess ge 25
|
||||||
|
/systems/fctl/power-supply/elac1/relay ge 25
|
||||||
|
</test>
|
||||||
|
</switch>
|
||||||
|
|
||||||
|
<actuator name="/systems/fctl/power-supply/elac1/has-power-output">
|
||||||
|
<input>/systems/fctl/power-supply/elac1/has-power</input>
|
||||||
|
<rate_limit sense="incr">100</rate_limit>
|
||||||
|
<rate_limit sense="decr">10</rate_limit> <!-- 100ms -->
|
||||||
|
</actuator>
|
||||||
|
|
||||||
<switch name="/systems/fctl/elac1">
|
<switch name="/systems/fctl/elac1">
|
||||||
<default value="0"/>
|
<default value="0"/>
|
||||||
<test logic="AND" value="1">
|
<test logic="AND" value="1">
|
||||||
/controls/fctl/switches/elac1 eq 1
|
/controls/fctl/switches/elac1 eq 1
|
||||||
/systems/failures/fctl/elac1 eq 0
|
/systems/failures/fctl/elac1 eq 0
|
||||||
<test logic="OR">
|
/systems/fctl/power-supply/elac1/has-power-output ne 0
|
||||||
/systems/electrical/bus/dc-ess ge 25
|
|
||||||
<test logic="AND"> <!-- in flight: DC HOT backup -->
|
|
||||||
/systems/electrical/bus/sub-bus/dc-hot-1-703 ge 25
|
|
||||||
/gear/gear[1]/wow eq 0
|
|
||||||
</test>
|
|
||||||
</test>
|
|
||||||
</test>
|
</test>
|
||||||
</switch>
|
</switch>
|
||||||
|
|
||||||
|
@ -401,18 +526,26 @@
|
||||||
</test>
|
</test>
|
||||||
</switch>
|
</switch>
|
||||||
|
|
||||||
|
<switch name="/systems/fctl/power-supply/elac2/has-power">
|
||||||
|
<default value="0"/>
|
||||||
|
<test logic="OR" value="1">
|
||||||
|
/systems/electrical/bus/sub-bus/dc-2-202 ge 25
|
||||||
|
/systems/fctl/power-supply/elac2/relay ge 25
|
||||||
|
</test>
|
||||||
|
</switch>
|
||||||
|
|
||||||
|
<actuator name="/systems/fctl/power-supply/elac2/has-power-output">
|
||||||
|
<input>/systems/fctl/power-supply/elac2/has-power</input>
|
||||||
|
<rate_limit sense="incr">100</rate_limit>
|
||||||
|
<rate_limit sense="decr">10</rate_limit> <!-- 100ms -->
|
||||||
|
</actuator>
|
||||||
|
|
||||||
<switch name="/systems/fctl/elac2">
|
<switch name="/systems/fctl/elac2">
|
||||||
<default value="0"/>
|
<default value="0"/>
|
||||||
<test logic="AND" value="1">
|
<test logic="AND" value="1">
|
||||||
/controls/fctl/switches/elac2 eq 1
|
/controls/fctl/switches/elac2 eq 1
|
||||||
/systems/failures/fctl/elac2 eq 0
|
/systems/failures/fctl/elac2 eq 0
|
||||||
<test logic="OR">
|
/systems/fctl/power-supply/elac2/has-power-output ne 0
|
||||||
/systems/electrical/bus/sub-bus/dc-2-202 ge 25
|
|
||||||
<test logic="AND"> <!-- in flight: DC HOT backup -->
|
|
||||||
/systems/electrical/bus/sub-bus/dc-hot-2-704 ge 25
|
|
||||||
/gear/gear[1]/wow eq 0
|
|
||||||
</test>
|
|
||||||
</test>
|
|
||||||
</test>
|
</test>
|
||||||
</switch>
|
</switch>
|
||||||
|
|
||||||
|
@ -424,18 +557,26 @@
|
||||||
</test>
|
</test>
|
||||||
</switch>
|
</switch>
|
||||||
|
|
||||||
|
<switch name="/systems/fctl/power-supply/sec1/has-power">
|
||||||
|
<default value="0"/>
|
||||||
|
<test logic="OR" value="1">
|
||||||
|
/systems/electrical/bus/dc-ess ge 25
|
||||||
|
/systems/fctl/power-supply/sec1/relay ge 25
|
||||||
|
</test>
|
||||||
|
</switch>
|
||||||
|
|
||||||
|
<actuator name="/systems/fctl/power-supply/sec1/has-power-output">
|
||||||
|
<input>/systems/fctl/power-supply/sec1/has-power</input>
|
||||||
|
<rate_limit sense="incr">100</rate_limit>
|
||||||
|
<rate_limit sense="decr">10</rate_limit> <!-- 100ms -->
|
||||||
|
</actuator>
|
||||||
|
|
||||||
<switch name="/systems/fctl/sec1">
|
<switch name="/systems/fctl/sec1">
|
||||||
<default value="0"/>
|
<default value="0"/>
|
||||||
<test logic="AND" value="1">
|
<test logic="AND" value="1">
|
||||||
/controls/fctl/switches/sec1 eq 1
|
/controls/fctl/switches/sec1 eq 1
|
||||||
/systems/failures/fctl/sec1 eq 0
|
/systems/failures/fctl/sec1 eq 0
|
||||||
<test logic="OR">
|
/systems/fctl/power-supply/sec1/has-power-output ne 0
|
||||||
/systems/electrical/bus/dc-ess ge 25
|
|
||||||
<test logic="AND"> <!-- in flight: DC HOT backup -->
|
|
||||||
/systems/electrical/bus/sub-bus/dc-hot-1-703 ge 25
|
|
||||||
/gear/gear[1]/wow eq 0
|
|
||||||
</test>
|
|
||||||
</test>
|
|
||||||
</test>
|
</test>
|
||||||
</switch>
|
</switch>
|
||||||
|
|
||||||
|
@ -447,12 +588,25 @@
|
||||||
</test>
|
</test>
|
||||||
</switch>
|
</switch>
|
||||||
|
|
||||||
|
<switch name="/systems/fctl/power-supply/sec2/has-power">
|
||||||
|
<default value="0"/>
|
||||||
|
<test logic="OR" value="1">
|
||||||
|
/systems/electrical/bus/sub-bus/dc-2-204 ge 25
|
||||||
|
</test>
|
||||||
|
</switch>
|
||||||
|
|
||||||
|
<actuator name="/systems/fctl/power-supply/sec2/has-power-output">
|
||||||
|
<input>/systems/fctl/power-supply/sec2/has-power</input>
|
||||||
|
<rate_limit sense="incr">100</rate_limit>
|
||||||
|
<rate_limit sense="decr">10</rate_limit> <!-- 100ms -->
|
||||||
|
</actuator>
|
||||||
|
|
||||||
<switch name="/systems/fctl/sec2">
|
<switch name="/systems/fctl/sec2">
|
||||||
<default value="0"/>
|
<default value="0"/>
|
||||||
<test logic="AND" value="1">
|
<test logic="AND" value="1">
|
||||||
/controls/fctl/switches/sec2 eq 1
|
/controls/fctl/switches/sec2 eq 1
|
||||||
/systems/failures/fctl/sec2 eq 0
|
/systems/failures/fctl/sec2 eq 0
|
||||||
/systems/electrical/bus/sub-bus/dc-2-204 ge 25
|
/systems/fctl/power-supply/sec2/has-power-output ne 0
|
||||||
</test>
|
</test>
|
||||||
</switch>
|
</switch>
|
||||||
|
|
||||||
|
@ -464,12 +618,26 @@
|
||||||
</test>
|
</test>
|
||||||
</switch>
|
</switch>
|
||||||
|
|
||||||
|
<switch name="/systems/fctl/power-supply/sec3/has-power">
|
||||||
|
<default value="0"/>
|
||||||
|
<test logic="OR" value="1">
|
||||||
|
/systems/electrical/bus/sub-bus/dc-2-204 ge 25
|
||||||
|
</test>
|
||||||
|
</switch>
|
||||||
|
|
||||||
|
<actuator name="/systems/fctl/power-supply/sec3/has-power-output">
|
||||||
|
<input>/systems/fctl/power-supply/sec3/has-power</input>
|
||||||
|
<rate_limit sense="incr">100</rate_limit>
|
||||||
|
<rate_limit sense="decr">10</rate_limit> <!-- 100ms -->
|
||||||
|
</actuator>
|
||||||
|
|
||||||
|
|
||||||
<switch name="/systems/fctl/sec3">
|
<switch name="/systems/fctl/sec3">
|
||||||
<default value="0"/>
|
<default value="0"/>
|
||||||
<test logic="AND" value="1">
|
<test logic="AND" value="1">
|
||||||
/controls/fctl/switches/sec3 eq 1
|
/controls/fctl/switches/sec3 eq 1
|
||||||
/systems/failures/fctl/sec3 eq 0
|
/systems/failures/fctl/sec3 eq 0
|
||||||
/systems/electrical/bus/sub-bus/dc-2-204 ge 25
|
/systems/fctl/power-supply/sec3/has-power-output ne 0
|
||||||
</test>
|
</test>
|
||||||
</switch>
|
</switch>
|
||||||
|
|
||||||
|
|
|
@ -305,7 +305,7 @@
|
||||||
/controls/hydraulic/switches/yellow-elec eq 1
|
/controls/hydraulic/switches/yellow-elec eq 1
|
||||||
/systems/failures/hydraulic/yellow-elec ne 1
|
/systems/failures/hydraulic/yellow-elec ne 1
|
||||||
<test logic="OR"> <!-- TODO: via 3XX CB 122VU -->
|
<test logic="OR"> <!-- TODO: via 3XX CB 122VU -->
|
||||||
/systems/electrical/sources/ext/output-volt ge 110
|
/systems/electrical/relay/ext-epc/output ge 110
|
||||||
/systems/electrical/bus/ac-2 ge 110
|
/systems/electrical/bus/ac-2 ge 110
|
||||||
</test>
|
</test>
|
||||||
</test>
|
</test>
|
||||||
|
|
|
@ -14,8 +14,8 @@
|
||||||
let blank_src;
|
let blank_src;
|
||||||
let loading = 0;
|
let loading = 0;
|
||||||
let scheduled_load = 0;
|
let scheduled_load = 0;
|
||||||
function refresh_screen() {
|
function refresh_screen(force) {
|
||||||
if (loading) {
|
if (loading && !force) {
|
||||||
scheduled_load = 1;
|
scheduled_load = 1;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -100,7 +100,19 @@
|
||||||
});
|
});
|
||||||
blank_src = screen_src;
|
blank_src = screen_src;
|
||||||
screen_src = "/screenshot?canvasindex=10&type=png";
|
screen_src = "/screenshot?canvasindex=10&type=png";
|
||||||
setInterval(refresh_screen, 1000);
|
screen.addEventListener('error', function () {
|
||||||
|
loading = 0;
|
||||||
|
if (scheduled_load) {
|
||||||
|
refresh_screen();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
screen.addEventListener('abort', function () {
|
||||||
|
loading = 0;
|
||||||
|
if (scheduled_load) {
|
||||||
|
refresh_screen();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
setInterval(function () { refresh_screen(true); }, 1000);
|
||||||
}, true);
|
}, true);
|
||||||
</script>
|
</script>
|
||||||
<style>
|
<style>
|
||||||
|
|
Loading…
Reference in a new issue