diff --git a/Models/Instruments/Upper-ECAM-EIS2/resIAE/flaplkfpl.png b/Models/Instruments/Upper-ECAM-EIS2/resIAE/flaplkfpl.png
new file mode 100644
index 00000000..3890786d
Binary files /dev/null and b/Models/Instruments/Upper-ECAM-EIS2/resIAE/flaplkfpl.png differ
diff --git a/Models/Instruments/Upper-ECAM/Upper-ECAM.nas b/Models/Instruments/Upper-ECAM/Upper-ECAM.nas
index e4ca8c7d..e75c0198 100644
--- a/Models/Instruments/Upper-ECAM/Upper-ECAM.nas
+++ b/Models/Instruments/Upper-ECAM/Upper-ECAM.nas
@@ -11,18 +11,20 @@ setprop("/engines/engine[0]/epr-actual", 1);
setprop("/engines/engine[1]/epr-actual", 1);
setprop("/engines/engine[0]/egt-actual", 1);
setprop("/engines/engine[1]/egt-actual", 1);
-setprop("/engines/engine[0]/ff-actual", 0);
-setprop("/engines/engine[1]/ff-actual", 0);
+setprop("/engines/engine[0]/fuel-flow_actual", 0);
+setprop("/engines/engine[1]/fuel-flow_actual", 0);
setprop("/ECAM/Upper/EPR[0]", 0);
setprop("/ECAM/Upper/EPR[1]", 0);
setprop("/ECAM/Upper/EPRthr[0]", 0);
-setprop("/ECAM/Upper/ERPthr[1]", 0);
-setprop("/ECAM/Upper/EPRylim[0]", 0);
-setprop("/ECAM/Upper/EPRylim[1]", 0);
+setprop("/ECAM/Upper/EPRthr[1]", 0);
+setprop("/ECAM/Upper/EPRylim", 0);
setprop("/ECAM/Upper/EGT[0]", 0);
setprop("/ECAM/Upper/EGT[1]", 0);
setprop("/ECAM/Upper/N1[0]", 0);
setprop("/ECAM/Upper/N1[1]", 0);
+setprop("/ECAM/Upper/N1thr[0]", 0);
+setprop("/ECAM/Upper/N1thr[1]", 0);
+setprop("/ECAM/Upper/N1ylim", 0);
var canvas_upperECAM_base = {
init: func(canvas_group, file) {
@@ -78,21 +80,29 @@ var canvas_upperECAM_iae_eis2 = {
return m;
},
getKeys: func() {
- return ["EPR1-needle","EPR1-thr","EPR1","EPR1-box","EPR1-scale","EPR1-scalenum","EPR1-XX","EPR1-XX2","EGT1-needle","EGT1","EGT1-scale","EGT1-box","EGT1-scale2","EGT1-scaletick","EGT1-XX","N11-needle","N11","N11-decpnt","N11-decimal","N11-scale",
- "N11-scale2","N11-scalenum","N11-XX","N21","N21-decpnt","N21-decimal","N21-XX","FF1","FF1-XX","FOB-LBS","ECAML1","ECAML2","ECAML3","ECAML4","ECAML5","ECAML6","ECAML7","ECAML8"];
+ return ["EPR1-needle","EPR1-thr","EPR1-ylim","EPR1","EPR1-box","EPR1-scale","EPR1-scalenum","EPR1-XX","EPR1-XX2","EGT1-needle","EGT1","EGT1-scale","EGT1-box","EGT1-scale2","EGT1-scaletick","EGT1-XX","N11-needle","N11-thr","N11-ylim","N11","N11-decpnt",
+ "N11-decimal","N11-scale","N11-scale2","N11-scalenum","N11-XX","EPR2-needle","EPR2-thr","EPR2-ylim","EPR2","EPR2-box","EPR2-scale","EPR2-scalenum","EPR2-XX","EPR2-XX2","EGT2-needle","EGT2","EGT2-scale","EGT2-box","EGT2-scale2","EGT2-scaletick","EGT2-XX",
+ "N12-needle","N12-thr","N12-ylim","N12","N12-decpnt","N12-decimal","N12-scale","N12-scale2","N12-scalenum","N12-XX","N21","N21-decpnt","N21-decimal","N21-XX","FF1","FF1-XX","N22","N22-decpnt","N22-decimal","N22-XX","FF2","FF2-XX",
+ "FOB-LBS","ECAML1","ECAML2","ECAML3","ECAML4","ECAML5","ECAML6","ECAML7","ECAML8","FlapTxt","FlapDots","EPRLim-mode","EPRLim","EPRLim-XX","EPRLim-XX2"];
},
update: func() {
- # EPR 1
+ # EPR
me["EPR1"].setText(sprintf("%1.3f", getprop("/engines/engine[0]/epr-actual")));
+ me["EPR2"].setText(sprintf("%1.3f", getprop("/engines/engine[1]/epr-actual")));
me["EPR1-needle"].setRotation((getprop("/ECAM/Upper/EPR[0]") + 90)*D2R);
me["EPR1-thr"].setRotation((getprop("/ECAM/Upper/EPRthr[0]") + 90)*D2R);
+ me["EPR1-ylim"].setRotation((getprop("/ECAM/Upper/EPRylim") + 90)*D2R);
+ me["EPR2-needle"].setRotation((getprop("/ECAM/Upper/EPR[1]") + 90)*D2R);
+ me["EPR2-thr"].setRotation((getprop("/ECAM/Upper/EPRthr[1]") + 90)*D2R);
+ me["EPR2-ylim"].setRotation((getprop("/ECAM/Upper/EPRylim") + 90)*D2R);
if (getprop("/systems/fadec/eng1/epr") == 1) {
me["EPR1-scale"].setColor(1,1,1);
me["EPR1"].show();
me["EPR1-needle"].show();
me["EPR1-thr"].show();
+ me["EPR1-ylim"].show();
me["EPR1-scalenum"].show();
me["EPR1-box"].show();
me["EPR1-XX"].hide();
@@ -102,16 +112,41 @@ var canvas_upperECAM_iae_eis2 = {
me["EPR1"].hide();
me["EPR1-needle"].hide();
me["EPR1-thr"].hide();
+ me["EPR1-ylim"].hide();
me["EPR1-scalenum"].hide();
me["EPR1-box"].hide();
me["EPR1-XX"].show();
me["EPR1-XX2"].show();
}
- # EGT 1
+ if (getprop("/systems/fadec/eng2/epr") == 1) {
+ me["EPR2-scale"].setColor(1,1,1);
+ me["EPR2"].show();
+ me["EPR2-needle"].show();
+ me["EPR2-thr"].show();
+ me["EPR2-ylim"].show();
+ me["EPR2-scalenum"].show();
+ me["EPR2-box"].show();
+ me["EPR2-XX"].hide();
+ me["EPR2-XX2"].hide();
+ } else {
+ me["EPR2-scale"].setColor(1,0.6,0);
+ me["EPR2"].hide();
+ me["EPR2-needle"].hide();
+ me["EPR2-thr"].hide();
+ me["EPR2-ylim"].hide();
+ me["EPR2-scalenum"].hide();
+ me["EPR2-box"].hide();
+ me["EPR2-XX"].show();
+ me["EPR2-XX2"].show();
+ }
+
+ # EGT
me["EGT1"].setText(sprintf("%s", math.round(getprop("/engines/engine[0]/egt-actual"))));
+ me["EGT2"].setText(sprintf("%s", math.round(getprop("/engines/engine[1]/egt-actual"))));
me["EGT1-needle"].setRotation((getprop("/ECAM/Upper/EGT[0]") + 90)*D2R);
+ me["EGT2-needle"].setRotation((getprop("/ECAM/Upper/EGT[1]") + 90)*D2R);
if (getprop("/systems/fadec/eng1/egt") == 1) {
me["EGT1-scale"].setColor(1,1,1);
@@ -131,11 +166,38 @@ var canvas_upperECAM_iae_eis2 = {
me["EGT1-XX"].show();
}
- # N1 1
+ if (getprop("/systems/fadec/eng2/egt") == 1) {
+ me["EGT2-scale"].setColor(1,1,1);
+ me["EGT2-scale2"].setColor(1,0,0);
+ me["EGT2"].show();
+ me["EGT2-needle"].show();
+ me["EGT2-scaletick"].show();
+ me["EGT2-box"].show();
+ me["EGT2-XX"].hide();
+ } else {
+ me["EGT2-scale"].setColor(1,0.6,0);
+ me["EGT2-scale2"].setColor(1,0.6,0);
+ me["EGT2"].hide();
+ me["EGT2-needle"].hide();
+ me["EGT2-scaletick"].hide();
+ me["EGT2-box"].hide();
+ me["EGT2-XX"].show();
+ }
+
+ # N1
me["N11"].setText(sprintf("%s", math.floor(getprop("/engines/engine[0]/n1") + 0.05)));
me["N11-decimal"].setText(sprintf("%s", int(10*math.mod(getprop("/engines/engine[0]/n1") + 0.05,1))));
+ me["N12"].setText(sprintf("%s", math.floor(getprop("/engines/engine[1]/n1") + 0.05)));
+ me["N12-decimal"].setText(sprintf("%s", int(10*math.mod(getprop("/engines/engine[1]/n1") + 0.05,1))));
+
me["N11-needle"].setRotation((getprop("/ECAM/Upper/N1[0]") + 90)*D2R);
+ me["N11-thr"].setRotation((getprop("/ECAM/Upper/N1thr[0]") + 90)*D2R);
+ me["N11-ylim"].setRotation((getprop("/ECAM/Upper/N1ylim") + 90)*D2R);
+
+ me["N12-needle"].setRotation((getprop("/ECAM/Upper/N1[1]") + 90)*D2R);
+ me["N12-thr"].setRotation((getprop("/ECAM/Upper/N1thr[1]") + 90)*D2R);
+ me["N12-ylim"].setRotation((getprop("/ECAM/Upper/N1ylim") + 90)*D2R);
if (getprop("/systems/fadec/eng1/n1") == 1) {
me["N11-scale"].setColor(1,1,1);
@@ -157,9 +219,47 @@ var canvas_upperECAM_iae_eis2 = {
me["N11-XX"].show();
}
- # N2 1
+ if (getprop("/systems/fadec/eng2/n1") == 1) {
+ me["N12-scale"].setColor(1,1,1);
+ me["N12-scale2"].setColor(1,0,0);
+ me["N12"].show();
+ me["N12-decimal"].show();
+ me["N12-decpnt"].show();
+ me["N12-needle"].show();
+ me["N12-scalenum"].show();
+ me["N12-XX"].hide();
+ } else {
+ me["N12-scale"].setColor(1,0.6,0);
+ me["N12-scale2"].setColor(1,0.6,0);
+ me["N12"].hide();
+ me["N12-decimal"].hide();
+ me["N12-decpnt"].hide();
+ me["N12-needle"].hide();
+ me["N12-scalenum"].hide();
+ me["N12-XX"].show();
+ }
+
+ if (getprop("/systems/fadec/eng1/n1") == 1 and getprop("/systems/fadec/n1mode1") == 1) {
+ me["N11-thr"].show();
+ me["N11-ylim"].hide(); # Keep it hidden, since N1 mode limit calculation is not done yet
+ } else {
+ me["N11-thr"].hide();
+ me["N11-ylim"].hide();
+ }
+
+ if (getprop("/systems/fadec/eng1/n2") == 1 and getprop("/systems/fadec/n1mode2") == 1) {
+ me["N12-thr"].show();
+ me["N12-ylim"].hide(); # Keep it hidden, since N1 mode limit calculation is not done yet
+ } else {
+ me["N12-thr"].hide();
+ me["N12-ylim"].hide();
+ }
+
+ # N2
me["N21"].setText(sprintf("%s", math.floor(getprop("/engines/engine[0]/n2") + 0.05)));
me["N21-decimal"].setText(sprintf("%s", int(10*math.mod(getprop("/engines/engine[0]/n2") + 0.05,1))));
+ me["N22"].setText(sprintf("%s", math.floor(getprop("/engines/engine[1]/n2") + 0.05)));
+ me["N22-decimal"].setText(sprintf("%s", int(10*math.mod(getprop("/engines/engine[1]/n2") + 0.05,1))));
if (getprop("/systems/fadec/eng1/n2") == 1) {
me["N21"].show();
@@ -173,8 +273,21 @@ var canvas_upperECAM_iae_eis2 = {
me["N21-XX"].show();
}
- # FF1
- me["FF1"].setText(sprintf("%s", math.round(getprop("/engines/engine[0]/ff-actual"))));
+ if (getprop("/systems/fadec/eng2/n2") == 1) {
+ me["N22"].show();
+ me["N22-decimal"].show();
+ me["N22-decpnt"].show();
+ me["N22-XX"].hide();
+ } else {
+ me["N22"].hide();
+ me["N22-decimal"].hide();
+ me["N22-decpnt"].hide();
+ me["N22-XX"].show();
+ }
+
+ # FF
+ me["FF1"].setText(sprintf("%s", math.round(getprop("/engines/engine[0]/fuel-flow_actual"))));
+ me["FF2"].setText(sprintf("%s", math.round(getprop("/engines/engine[1]/fuel-flow_actual"))));
if (getprop("/systems/fadec/eng1/ff") == 1) {
me["FF1"].show();
@@ -184,6 +297,39 @@ var canvas_upperECAM_iae_eis2 = {
me["FF1-XX"].show();
}
+ if (getprop("/systems/fadec/eng2/ff") == 1) {
+ me["FF2"].show();
+ me["FF2-XX"].hide();
+ } else {
+ me["FF2"].hide();
+ me["FF2-XX"].show();
+ }
+
+ # EPR Limit
+ me["EPRLim-mode"].setText(sprintf("%s", getprop("/controls/engines/thrust-limit")));
+ me["EPRLim"].setText(sprintf("%1.3f", getprop("/controls/engines/epr-limit")));
+
+ if (getprop("/systems/fadec/powered1") == 1 or getprop("/systems/fadec/powered2") == 1) {
+ me["EPRLim-mode"].show();
+ me["EPRLim"].show();
+ me["EPRLim-XX"].hide();
+ me["EPRLim-XX2"].hide();
+ } else {
+ me["EPRLim-mode"].hide();
+ me["EPRLim"].hide();
+ me["EPRLim-XX"].show();
+ me["EPRLim-XX2"].show();
+ }
+
+ # Flap Indicator
+ me["FlapTxt"].setText(sprintf("%s", getprop("/controls/flight/flap-txt")));
+
+ if (getprop("/controls/flight/flap-pos") > 0) {
+ me["FlapDots"].show();
+ } else {
+ me["FlapDots"].hide();
+ }
+
me.updateBase();
settimer(func me.update(), 0.02);
diff --git a/Models/Instruments/Upper-ECAM/res/iae-eis2.svg b/Models/Instruments/Upper-ECAM/res/iae-eis2.svg
index 0d3eb63f..408f2087 100644
--- a/Models/Instruments/Upper-ECAM/res/iae-eis2.svg
+++ b/Models/Instruments/Upper-ECAM/res/iae-eis2.svg
@@ -5,7 +5,6 @@
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="1024pt"
@@ -42,9 +41,9 @@
inkscape:window-height="1030"
id="namedview371"
showgrid="true"
- inkscape:zoom="4"
- inkscape:cx="214.7421"
- inkscape:cy="1126.9127"
+ inkscape:zoom="0.5"
+ inkscape:cx="790.22494"
+ inkscape:cy="917.6648"
inkscape:window-x="1592"
inkscape:window-y="-8"
inkscape:window-maximized="1"
@@ -54,18 +53,9 @@
type="xygrid"
id="grid5153" />
-
+ d="m 732.47029,576.20711 11.40472,16.81213 m -36.44247,-17.34853 -10.57972,15.51213 m 11.10472,-15.46213 24.47028,0.46213 m -35.57028,14.98787 47.05815,1.94289"
+ inkscape:connector-curvature="0" />
@@ -293,22 +284,21 @@
style="fill:none;fill-rule:evenodd;stroke:#4d4d4d;stroke-width:3.15244651;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:connector-curvature="0" />
-
+
@@ -445,16 +435,6 @@
id="N11-scale"
inkscape:connector-curvature="0"
sodipodi:nodetypes="czzc" />
-
@@ -779,8 +759,582 @@
id="tspan4348"
sodipodi:role="line">LINE 8
+ style="fill:#000000;stroke:#00a0d2;stroke-width:2.88800001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ inkscape:transform-center-x="106.64661"
+ d="m 191.56347,129.883 c 0,2.9783 -2.41437,5.39267 -5.39267,5.39267 -2.9783,0 -5.39268,-2.41437 -5.39268,-5.39267 0,-2.9783 2.41438,-5.39268 5.39268,-5.39268 2.9783,0 5.39267,2.41438 5.39267,5.39268 z"
+ id="EPR1-thr"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="sssss" />
+
+ TOGA
+ 1.000
+ XX
+ XX
+
+
+
+ 1+F
+
+
+
+
+
+
+
+
+
+ 00000
+ XX
+ 00
+
+ 0
+ XX
+
+
+
+
+
+
+
+
+
+ 1
+ 1.2
+ 1.4
+ 1.6
+
+ 1.000
+
+
+
+
+
+
+
+
+
+
+
+
+ 4
+ 10
+
+
+ 000
+ 00
+
+ 0
+ XX
+ XX
+ XX
+ XX
+
+
+
+
+
diff --git a/Nasal/fadec-common.nas b/Nasal/fadec-common.nas
index 549188d9..dc9e2893 100644
--- a/Nasal/fadec-common.nas
+++ b/Nasal/fadec-common.nas
@@ -15,20 +15,20 @@ setprop("/systems/thrust/epr/clb-lim", 0.0);
setprop("/systems/thrust/n1/toga-lim", 95.9);
setprop("/systems/thrust/n1/flx-lim", 0.0);
setprop("/engines/flx-thr", 0.0);
+setprop("/controls/engines/thrust-limit", "TOGA");
+setprop("/controls/engines/epr-limit", 1.308);
+setprop("/controls/engines/n1-limit", 95.9);
+setprop("/systems/thrust/state1", "IDLE");
+setprop("/systems/thrust/state2", "IDLE");
+setprop("/systems/thrust/lvrclb", "0");
+setprop("/systems/thrust/clbreduc-ft", "1500");
+setprop("/systems/thrust/toga-lim", 0.0);
+setprop("/systems/thrust/mct-lim", 0.0);
+setprop("/systems/thrust/clb-lim", 0.0);
+setprop("/systems/thrust/lim-flex", 0);
+setprop("/engines/flex-derate", 0);
setlistener("/sim/signals/fdm-initialized", func {
- setprop("/controls/engines/thrust-limit", "TOGA");
- setprop("/controls/engines/epr-limit", 1.308);
- setprop("/controls/engines/n1-limit", 95.9);
- setprop("/systems/thrust/state1", "IDLE");
- setprop("/systems/thrust/state2", "IDLE");
- setprop("/systems/thrust/lvrclb", "0");
- setprop("/systems/thrust/clbreduc-ft", "1500");
- setprop("/systems/thrust/toga-lim", 0.0);
- setprop("/systems/thrust/mct-lim", 0.0);
- setprop("/systems/thrust/clb-lim", 0.0);
- setprop("/systems/thrust/lim-flex", 0);
- setprop("/engines/flex-derate", 0);
thrustt.start();
});
diff --git a/Systems/upper-ecam.xml b/Systems/upper-ecam.xml
index cbe16585..baf654ba 100644
--- a/Systems/upper-ecam.xml
+++ b/Systems/upper-ecam.xml
@@ -14,7 +14,13 @@
1
- /options/EIS2
+
+ /options/EIS2
+
+ options/eng
+ IAE
+
+