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 + + @@ -30,7 +36,13 @@ - /options/EIS2 + + /options/EIS2 + + options/eng + IAE + +
@@ -53,7 +65,13 @@ 1 - /options/EIS2 + + /options/EIS2 + + options/eng + IAE + +
@@ -69,7 +87,13 @@ - /options/EIS2 + + /options/EIS2 + + options/eng + IAE + +
@@ -87,16 +111,22 @@ - EPR THR 1 + EPR 2 gain 1 - /options/EIS2 + + /options/EIS2 + + options/eng + IAE + +
- /engines/engine[0]/epr-cmd + /engines/engine[1]/epr-actual0.990-1351.000-1251.200 -50 @@ -108,11 +138,17 @@ - /options/EIS2 + + /options/EIS2 + + options/eng + IAE + +
- /engines/engine[0]/epr-cmd + /engines/engine[1]/epr-actual0.990-1351.000-1251.200 -50 @@ -122,7 +158,109 @@
- /ECAM/Upper/EPRylim[0] + /ECAM/Upper/EPR[1] + + + + EPR THR 2 + gain + 1 + + + + /options/EIS2 + + options/eng + IAE + + + + + + /engines/engine[1]/epr-cmd + 0.990-135 + 1.000-125 + 1.200 -50 + 1.400 16 + 1.600 82 + 1.650 98 +
+
+ + + + + /options/EIS2 + + options/eng + IAE + + + + + + /engines/engine[1]/epr-cmd + 0.990-135 + 1.000-125 + 1.200 -50 + 1.400 16 + 1.600 82 + 1.650 98 +
+
+ + /ECAM/Upper/EPRthr[1] +
+ + + EPR LIMIT + gain + 1 + + + + /options/EIS2 + + options/eng + IAE + + + + + + /systems/thrust/epr/toga-lim + 0.990-135 + 1.000-125 + 1.200 -50 + 1.400 16 + 1.600 82 + 1.650 98 +
+
+ + + + + /options/EIS2 + + options/eng + IAE + + + + + + /systems/thrust/epr/toga-lim + 0.990-135 + 1.000-125 + 1.200 -50 + 1.400 16 + 1.600 82 + 1.650 98 +
+
+ + /ECAM/Upper/EPRylim
@@ -131,7 +269,13 @@ 1 - /options/EIS2 + + /options/EIS2 + + options/eng + IAE + + @@ -144,7 +288,13 @@ - /options/EIS2 + + /options/EIS2 + + options/eng + IAE + +
@@ -158,13 +308,64 @@ /ECAM/Upper/EGT[0] + + EGT 2 + gain + 1 + + + + /options/EIS2 + + options/eng + IAE + + + + +
+ /engines/engine[1]/egt-actual + 0-90 + 400 0 + 800 90 +
+
+ + + + + /options/EIS2 + + options/eng + IAE + + + + + + /engines/engine[1]/egt-actual + 0-90 + 400 0 + 800 90 +
+
+ + /ECAM/Upper/EGT[1] +
+ N1 1 gain 1 - /options/EIS2 + + /options/EIS2 + + options/eng + IAE + + @@ -178,7 +379,13 @@ - /options/EIS2 + + /options/EIS2 + + options/eng + IAE + +
@@ -192,5 +399,146 @@ /ECAM/Upper/N1[0] + + + N1 THR 1 + gain + 1 + + + + /options/EIS2 + + options/eng + IAE + + + + +
+ /engines/engine[0]/n1-cmd + 22.4-107 + 40.0 -61 + 100.0 65 + 110.0 90 +
+
+ + + + + /options/EIS2 + + options/eng + IAE + + + + + + /engines/engine[0]/n1-cmd + 22.4-107 + 40.0 -61 + 100.0 65 + 110.0 90 +
+
+ + /ECAM/Upper/N1thr[0] +
+ + + N1 2 + gain + 1 + + + + /options/EIS2 + + options/eng + IAE + + + + + + /engines/engine[1]/n1 + 22.4-107 + 40.0 -61 + 100.0 65 + 110.0 90 +
+
+ + + + + /options/EIS2 + + options/eng + IAE + + + + + + /engines/engine[1]/n1 + 22.4-107 + 40.0 -61 + 100.0 65 + 110.0 90 +
+
+ + /ECAM/Upper/N1[1] +
+ + + N1 THR 2 + gain + 1 + + + + /options/EIS2 + + options/eng + IAE + + + + + + /engines/engine[1]/n1-cmd + 22.4-107 + 40.0 -61 + 100.0 65 + 110.0 90 +
+
+ + + + + /options/EIS2 + + options/eng + IAE + + + + + + /engines/engine[1]/n1-cmd + 22.4-107 + 40.0 -61 + 100.0 65 + 110.0 90 +
+
+ + /ECAM/Upper/N1thr[1] +