ELEV fault messages + separate ALTN and direct law warning
This commit is contained in:
parent
2bb5ec6578
commit
d803796f6b
5 changed files with 254 additions and 31 deletions
|
@ -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();
|
||||
|
|
|
@ -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"),
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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),
|
||||
|
|
|
@ -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">
|
||||
|
|
Loading…
Reference in a new issue