1
0
Fork 0

ELEV fault messages + separate ALTN and direct law warning

This commit is contained in:
legoboyvdlp R 2020-11-26 18:43:22 +00:00
parent 2bb5ec6578
commit d803796f6b
5 changed files with 254 additions and 31 deletions

View file

@ -513,7 +513,7 @@ var canvas_PFD_base = {
me["FMA_Middle1"].hide();
me["FMA_Middle2"].hide();
if (fbw_curlaw == 2 and wow1.getValue() == 0) {
if (ecam.directLaw.active) {
me["FMA_ctr_msg"].setText("USE MAN PITCH TRIM");
me["FMA_ctr_msg"].setColor(0.7333,0.3803,0);
me["FMA_ctr_msg"].show();
@ -534,7 +534,7 @@ var canvas_PFD_base = {
} else {
me["FMA_combined"].hide();
me["FMA_combined_box"].hide();
if (fbw_curlaw == 2 and wow1.getValue() == 0) {
if (ecam.directLaw.active) {
me["FMA_ctr_msg"].setText("USE MAN PITCH TRIM");
me["FMA_ctr_msg"].setColor(0.7333,0.3803,0);
me["FMA_Middle1"].hide();

View file

@ -74,6 +74,8 @@ var warningNodes = {
blueYellowFuel: props.globals.initNode("/ECAM/warnings/hyd/blue-yellow-fuel-consumpt"),
greenYellow: props.globals.initNode("/ECAM/warnings/hyd/green-yellow-failure"),
greenYellowFuel: props.globals.initNode("/ECAM/warnings/hyd/green-yellow-fuel-consumpt"),
leftElevFail: props.globals.initNode("/ECAM/warnings/fctl/leftElevFault"),
rightElevFail: props.globals.initNode("/ECAM/warnings/fctl/rightElevFault"),
},
Timers: {
apuFaultOutput: props.globals.initNode("/ECAM/warnings/timer/apu-fault-output"),
@ -94,6 +96,8 @@ var warningNodes = {
eng1AiceNotOpen: props.globals.initNode("/ECAM/warnings/timer/eng-aice-1-closed-output"),
eng2AiceNotOpen: props.globals.initNode("/ECAM/warnings/timer/eng-aice-2-closed-output"),
LRElevFault: props.globals.initNode("/ECAM/warnings/fctl/lrElevFault-output"),
altnLaw: props.globals.initNode("/ECAM/warnings/fctl/altn-law-output"),
directLaw: props.globals.initNode("/ECAM/warnings/fctl/direct-law-output"),
waiLhiPr: props.globals.initNode("/ECAM/warnings/timer/wing-hi-pr-left"),
waiRhiPr: props.globals.initNode("/ECAM/warnings/timer/wing-hi-pr-right"),
pack1Fault: props.globals.initNode("/ECAM/warnings/timer/pack-1-fault-2"),
@ -104,6 +108,8 @@ var warningNodes = {
yawDamper1Fault: props.globals.initNode("/ECAM/warnings/timer/yaw-damper-1-fault"),
yawDamper2Fault: props.globals.initNode("/ECAM/warnings/timer/yaw-damper-2-fault"),
navTerrFault: props.globals.initNode("/ECAM/warnings/timer/nav-gpws-terr-fault"),
leftElevFail: props.globals.initNode("/ECAM/warnings/fctl/leftElevFault-output"),
rightElevFail: props.globals.initNode("/ECAM/warnings/fctl/rightElevFault-output"),
},
Flipflops: {
apuGenFault: props.globals.initNode("/ECAM/warnings/flipflop/apu-gen-fault"),

View file

@ -875,23 +875,6 @@ var messages_priority_3 = func {
ECAM_controller.warningReset(emerconfigVent);
}
if (emerconfigAltn.clearFlag == 0) {
emerconfigAltn.active = 1;
} else {
ECAM_controller.warningReset(emerconfigAltn);
}
if (emerconfigProt.clearFlag == 0) {
emerconfigProt.active = 1;
} else {
ECAM_controller.warningReset(emerconfigProt);
}
if (emerconfigMaxSpeed.clearFlag == 0) {
emerconfigMaxSpeed.active = 1;
} else {
ECAM_controller.warningReset(emerconfigMaxSpeed);
}
} else {
ECAM_controller.warningReset(emerconfig);
ECAM_controller.warningReset(emerconfigMinRat);
@ -909,9 +892,6 @@ var messages_priority_3 = func {
ECAM_controller.warningReset(emerconfigBusTie2);
ECAM_controller.warningReset(emerconfigAPU);
ECAM_controller.warningReset(emerconfigVent);
ECAM_controller.warningReset(emerconfigAltn);
ECAM_controller.warningReset(emerconfigProt);
ECAM_controller.warningReset(emerconfigMaxSpeed);
}
if (hydBYloPr.clearFlag == 0 and phaseVar3 != 4 and phaseVar3 != 5 and warningNodes.Logic.blueYellow.getValue()) {
@ -1290,6 +1270,109 @@ var messages_priority_2 = func {
ECAM_controller.warningReset(apuGenfaultGen3);
}
if (lElevFault.clearFlag == 0 and warningNodes.Timers.leftElevFail.getValue() and phaseVar2 != 4 and phaseVar2 != 5) {
lElevFault.active = 1;
if (lElevFaultCare.clearFlag == 0) {
lElevFaultCare.active = 1;
} else {
ECAM_controller.warningReset(lElevFaultCare);
}
if (lElevFaultPitch.clearFlag == 0) {
lElevFaultPitch.active = 1;
} else {
ECAM_controller.warningReset(lElevFaultPitch);
}
} else {
ECAM_controller.warningReset(lElevFault);
ECAM_controller.warningReset(lElevFaultCare);
ECAM_controller.warningReset(lElevFaultPitch);
}
if (rElevFault.clearFlag == 0 and warningNodes.Timers.rightElevFail.getValue() and phaseVar2 != 4 and phaseVar2 != 5) {
rElevFault.active = 1;
if (rElevFaultCare.clearFlag == 0) {
rElevFaultCare.active = 1;
} else {
ECAM_controller.warningReset(rElevFaultCare);
}
if (rElevFaultPitch.clearFlag == 0) {
rElevFaultPitch.active = 1;
} else {
ECAM_controller.warningReset(rElevFaultPitch);
}
} else {
ECAM_controller.warningReset(rElevFault);
ECAM_controller.warningReset(rElevFaultCare);
ECAM_controller.warningReset(rElevFaultPitch);
}
if (directLaw.clearFlag == 0 and warningNodes.Timers.directLaw.getValue() and phaseVar2 != 4 and phaseVar2 != 5 and phaseVar2 != 7 and phaseVar2 != 8) {
directLaw.active = 1;
directLawProt.active = 1;
if (directLawMaxSpeed.clearFlag == 0 and !fbw.tripleADRFail and pts.Gear.position[1].getValue() == 1) {
directLawMaxSpeed.active = 1;
} else {
ECAM_controller.warningReset(directLawMaxSpeed);
}
if (directLawTrim.clearFlag == 0 and (systems.HYD.Psi.green.getValue() >= 1500 or systems.HYD.Psi.yellow.getValue() >= 1500) and !fbw.FBW.Failures.ths.getValue()) {
directLawTrim.active = 1;
} else {
ECAM_controller.warningReset(directLawTrim);
}
if (directLawCare.clearFlag == 0 and (fbw.tripleADRFail or pts.Gear.position[1].getValue() == 1)) {
directLawCare.active = 1;
} else {
ECAM_controller.warningReset(directLawCare);
}
if (directLawSpdBrk.clearFlag == 0 and !fbw.tripleADRFail and pts.Gear.position[1].getValue() == 1) {
directLawSpdBrk.active = 1;
} else {
ECAM_controller.warningReset(directLawSpdBrk);
}
if (directLawSpdBrk2.clearFlag == 0 and fbw.tripleADRFail) {
directLawSpdBrk2.active = 1;
} else {
ECAM_controller.warningReset(directLawSpdBrk2);
}
} else {
ECAM_controller.warningReset(directLaw);
ECAM_controller.warningReset(directLawProt);
ECAM_controller.warningReset(directLawMaxSpeed);
ECAM_controller.warningReset(directLawTrim);
ECAM_controller.warningReset(directLawCare);
ECAM_controller.warningReset(directLawSpdBrk);
ECAM_controller.warningReset(directLawSpdBrk2);
}
if (altnLaw.clearFlag == 0 and warningNodes.Timers.altnLaw.getValue() and phaseVar2 != 4 and phaseVar2 != 5 and phaseVar2 != 7 and phaseVar2 != 8) {
altnLaw.active = 1;
altnLawProt.active = 1;
if (altnLawMaxSpeed.clearFlag == 0 and altnLawMaxSpeed2.clearFlag == 0 and !fbw.tripleADRFail) {
if (!(getprop("/ECAM/warnings/hyd/green-abnorm-lo-pr") and (getprop("/ECAM/warnings/hyd/blue-abnorm-lo-pr") or getprop("/ECAM/warnings/hyd/yellow-abnorm-lo-pr")))) {
altnLawMaxSpeed.active = 1;
ECAM_controller.warningReset(altnLawMaxSpeed2);
} else {
altnLawMaxSpeed2.active = 1;
ECAM_controller.warningReset(altnLawMaxSpeed);
}
} else {
ECAM_controller.warningReset(altnLawMaxSpeed);
ECAM_controller.warningReset(altnLawMaxSpeed2);
}
if (altnLawMaxSpdBrk.clearFlag == 0 and (fbw.tripleADRFail or warningNodes.Logic.leftElevFail.getValue() or warningNodes.Logic.rightElevFail.getValue())) {
altnLawMaxSpdBrk.active = 1;
} else {
ECAM_controller.warningReset(altnLawMaxSpdBrk);
}
} else {
ECAM_controller.warningReset(altnLaw);
ECAM_controller.warningReset(altnLawProt);
ECAM_controller.warningReset(altnLawMaxSpeed);
ECAM_controller.warningReset(altnLawMaxSpeed2);
ECAM_controller.warningReset(altnLawMaxSpdBrk);
}
if ((athr_offw.clearFlag == 0) and athrWarn.getValue() == 2 and phaseVar2 != 4 and phaseVar2 != 8 and phaseVar2 != 10) {
athr_offw.active = 1;
athr_offw_1.active = 1;

View file

@ -155,9 +155,6 @@ var warnings = std.Vector.new([
var emerconfigBusTie2 = warning.new(msg: " -BUS TIE...........AUTO", colour: "c"),
var emerconfigAPU = warning.new(msg: " -APU (IF AVAIL)...START", colour: "c"),
var emerconfigVent = warning.new(msg: " -BLOWER + EXTRACT..OVRD", colour: "c"),
var emerconfigAltn = warning.new(msg: "F/CTL ALTN LAW", colour: "a"),
var emerconfigProt = warning.new(msg: " (PROT LOST)", colour: "a"),
var emerconfigMaxSpeed = warning.new(msg: " MAX SPEED........320 KT", colour: "c"),
# B + Y LO PR
var hydBYloPr = warning.new(msg: "HYD B+Y SYS LO PR", colour: "r", aural: 0, light: 0, isMainMsg: 1),
@ -260,10 +257,36 @@ var warnings = std.Vector.new([
var gen2faultGen3 = warning.new(msg: "-GEN 2..............OFF", colour: "c"),
# APU GEN FAULT
var apuGenfault = warning.new(msg: "ELEC APU GEN FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var apuGenfaultGen = warning.new(msg: "-APU GEN....OFF THEN ON", colour: "c"),
var apuGenfaultGen2 = warning.new(msg: " •IF UNSUCCESSFUL :", colour: "w"),
var apuGenfaultGen3 = warning.new(msg: "-APU GEN............OFF", colour: "c"),
var apuGenfault = warning.new(msg: "ELEC APU GEN FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var apuGenfaultGen = warning.new(msg: "-APU GEN....OFF THEN ON", colour: "c"),
var apuGenfaultGen2 = warning.new(msg: " •IF UNSUCCESSFUL :", colour: "w"),
var apuGenfaultGen3 = warning.new(msg: "-APU GEN............OFF", colour: "c"),
# L ELEV FAULT
var lElevFault = warning.new(msg: "F/CTL L ELEV FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var lElevFaultCare = warning.new(msg: " MANEUVER WITH CARE", colour: "c"),
var lElevFaultPitch = warning.new(msg: " FOR GA:MAX PITCH 15 DEG", colour: "c"),
# R ELEV FAULT
var rElevFault = warning.new(msg: "F/CTL R ELEV FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var rElevFaultCare = warning.new(msg: " MANEUVER WITH CARE", colour: "c"),
var rElevFaultPitch = warning.new(msg: " FOR GA:MAX PITCH 15 DEG", colour: "c"),
# DIRECT LAW
var directLaw = warning.new(msg: "F/CTL DIRECT LAW", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var directLawProt = warning.new(msg: " (PROT LOST)", colour: "a"),
var directLawMaxSpeed = warning.new(msg: " MAX SPEED........320/.77", colour: "c"),
var directLawTrim = warning.new(msg: " -MAN PITCH TRIM.....USE", colour: "c"),
var directLawCare = warning.new(msg: " MANEUVER WITH CARE", colour: "c"),
var directLawSpdBrk = warning.new(msg: " USE SPD BRK WITH CARE", colour: "c"),
var directLawSpdBrk2 = warning.new(msg: " SPD BRK.......DO NOT USE", colour: "c"),
# ALTN LAW
var altnLaw = warning.new(msg: "F/CTL ALTN LAW", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var altnLawProt = warning.new(msg: " (PROT LOST)", colour: "a"),
var altnLawMaxSpeed = warning.new(msg: " MAX SPEED........320 KT", colour: "c"),
var altnLawMaxSpeed2 = warning.new(msg: " MAX SPEED........320/.77", colour: "c"),
var altnLawMaxSpdBrk = warning.new(msg: " SPD BRK.......DO NOT USE", colour: "c"),
# Autothrust
var athr_offw = warning.new(msg: "AUTO FLT A/THR OFF", colour: "a", aural: 1, light: 1, isMainMsg: 1),
@ -275,7 +298,7 @@ var warnings = std.Vector.new([
# TCAS FAULT
var tcasFault = warning.new(msg: "NAV TCAS FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var tcasStby = warning.new(msg: "NAV TCAS STBY", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var tcasStby = warning.new(msg: "NAV TCAS STBY", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var gpwsFault = warning.new(msg: "NAV GPWS FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var gpwsFaultOff = warning.new(msg: "-GPWS...............OFF", colour: "c"),
var gpwsTerrFault = warning.new(msg: "NAV GPWS TERR DET FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),

View file

@ -2025,7 +2025,7 @@
</channel>
<channel name="FCTL" execrate="8">
<switch name="/ECAM/warnings/fctl/lrElevFault">
<default value="0"/>
<test logic="AND" value="1">
@ -2048,6 +2048,117 @@
<rate_limit sense="incr">3.33333333333</rate_limit> <!-- 0.3 seconds -->
</actuator>
<switch name="/ECAM/warnings/fctl/leftElevFault-cond">
<default value="0"/>
<test logic="AND" value="1">
<test logic="OR">
<test logic="AND">
/systems/fctl/elac1 eq 0
/systems/fctl/sec1 eq 0
</test>
/systems/hydraulic/blue-psi lt 1500
</test>
<test logic="OR">
<test logic="AND">
/systems/fctl/elac2 eq 0
/systems/fctl/sec2 eq 0
</test>
/systems/hydraulic/green-psi lt 1500
</test>
</test>
</switch>
<switch name="/ECAM/warnings/fctl/leftElevFault">
<default value="0"/>
<test logic="AND" value="1">
/systems/hydraulic/blue-psi ge 1500
/systems/hydraulic/green-psi ge 1500
/systems/electrical/bus/dc-2 ge 25
/ECAM/warnings/fctl/lrElevFault ne 1
<test logic="OR">
/controls/fctl/switches/elac1 eq 1
/controls/fctl/switches/elac2 eq 1
/controls/fctl/switches/sec1 eq 1
/controls/fctl/switches/sec2 eq 1
</test>
/ECAM/warnings/fctl/leftElevFault-cond eq 1
</test>
</switch>
<actuator name="/ECAM/warnings/fctl/leftElevFault-output">
<input>/ECAM/warnings/fctl/leftElevFault</input>
<rate_limit sense="decr">120</rate_limit> <!-- Instant -->
<rate_limit sense="incr">3.33333333333</rate_limit> <!-- 0.3 seconds -->
</actuator>
<switch name="/ECAM/warnings/fctl/rightElevFault-cond">
<default value="0"/>
<test logic="AND" value="1">
<test logic="OR">
<test logic="AND">
/systems/fctl/elac1 eq 0
/systems/fctl/sec1 eq 0
</test>
/systems/hydraulic/blue-psi lt 1500
</test>
<test logic="OR">
<test logic="AND">
/systems/fctl/elac2 eq 0
/systems/fctl/sec2 eq 0
</test>
/systems/hydraulic/yellow-psi lt 1500
</test>
</test>
</switch>
<switch name="/ECAM/warnings/fctl/rightElevFault">
<default value="0"/>
<test logic="AND" value="1">
/systems/hydraulic/blue-psi ge 1500
/systems/hydraulic/yellow-psi ge 1500
/systems/electrical/bus/dc-2 ge 25
/ECAM/warnings/fctl/lrElevFault ne 1
<test logic="OR">
/controls/fctl/switches/elac1 eq 1
/controls/fctl/switches/elac2 eq 1
/controls/fctl/switches/sec1 eq 1
/controls/fctl/switches/sec2 eq 1
</test>
/ECAM/warnings/fctl/rightElevFault-cond eq 1
</test>
</switch>
<actuator name="/ECAM/warnings/fctl/rightElevFault-output">
<input>/ECAM/warnings/fctl/rightElevFault</input>
<rate_limit sense="decr">120</rate_limit> <!-- Instant -->
<rate_limit sense="incr">3.33333333333</rate_limit> <!-- 0.3 seconds -->
</actuator>
<switch name="/ECAM/warnings/fctl/altn-law">
<default value="0"/>
<test logic="AND" value="1">
/ECAM/warning-phase ne 1
/ECAM/warning-phase ne 10
/it-fbw/law eq 1
</test>
</switch>
<actuator name="/ECAM/warnings/fctl/altn-law-output">
<input>/ECAM/warnings/fctl/altn-law</input>
<rate_limit sense="decr">120</rate_limit> <!-- Instant -->
<rate_limit sense="incr">3.33333333333</rate_limit> <!-- 0.3 seconds -->
</actuator>
<switch name="/ECAM/warnings/fctl/direct-law-output">
<default value="0"/>
<test logic="AND" value="1">
/ECAM/warning-phase ne 1
/ECAM/warning-phase ne 10
/it-fbw/law eq 2
</test>
</switch>
<switch name="/ECAM/warnings/fctl/gear-not-down-not-cancellable">
<default value="0"/>
<test logic="AND" value="1">