Improve autopilot, new AP dialog, smooth autothrust

This commit is contained in:
Joshua Davidson 2017-06-03 13:05:25 -04:00
parent 656cee3f48
commit dcbfee4283
5 changed files with 354 additions and 855 deletions

View file

@ -311,16 +311,13 @@
</autoland>
</config>
<settings>
<default-bank-limit>25</default-bank-limit> <!-- Set the Default Bank Limit -->
<enable-cws>0</enable-cws> <!-- Enable/Disable CWS -->
<land-enable>1</land-enable> <!-- Enable/Disable Autoland -->
<land-flap>0.645</land-flap> <!-- Minimum Flap used for Landing -->
<retard-ft>40</retard-ft> <!-- Enable Thrust Retard -->
<retard-enable>0</retard-enable> <!-- AGL to Thrust Retard -->
<togaspd>157</togaspd> <!-- V2 + 10kts -->
<lat-agl-ft>30</lat-agl-ft> <!-- Set to 999999 if you do not want T/O to change automatically to HDG, or LNAV -->
<lat-agl-ft>20</lat-agl-ft> <!-- Set to 999999 if you do not want T/O to change automatically to HDG, or LNAV -->
<reduc-agl-ft>3000</reduc-agl-ft> <!-- Set to 999999 if you do not want TOGA to change automatically to FLCH -->
<autoland-without-ap>1</autoland-without-ap> <!-- Engage LAND and FLARE Modes even if the AP is off -->
</settings>
<output>
<ap1>0</ap1>

View file

@ -151,8 +151,7 @@ var APinit = func {
setprop("/it-autoflight/input/lat", 5);
setprop("/it-autoflight/input/lat-arm", 0);
setprop("/it-autoflight/input/vert", 7);
setprop("/it-autoflight/input/prof-arm", 0);
setprop("/it-autoflight/input/bank-limit", getprop("/it-autoflight/settings/default-bank-limit"));
setprop("/it-autoflight/input/bank-limit", 25);
setprop("/it-autoflight/input/trk", 0);
setprop("/it-autoflight/input/toga", 0);
setprop("/it-autoflight/output/ap1", 0);
@ -166,23 +165,18 @@ var APinit = func {
setprop("/it-autoflight/output/retard", 0);
setprop("/it-autoflight/output/lat", 5);
setprop("/it-autoflight/output/vert", 7);
setprop("/it-autoflight/output/prof-vert", 4);
setprop("/it-autoflight/settings/use-nav2-radio", 0);
setprop("/it-autoflight/settings/use-backcourse", 0);
setprop("/it-autoflight/internal/min-vs", -500);
setprop("/it-autoflight/internal/max-vs", 500);
setprop("/it-autoflight/internal/alt", 10000);
setprop("/it-autoflight/internal/prof-alt", 10000);
setprop("/it-autoflight/internal/prof-wp-alt", 10000);
setprop("/it-autoflight/internal/prof-mode", "XX");
setprop("/it-autoflight/internal/alt", 10000);
setprop("/it-autoflight/internal/fpa", 0);
setprop("/it-autoflight/internal/prof-fpm", 0);
setprop("/it-autoflight/internal/top-of-des-nm", 0);
setprop("/it-autoflight/mode/thr", "PITCH");
setprop("/it-autoflight/mode/arm", "HDG");
setprop("/it-autoflight/mode/lat", "T/O");
setprop("/it-autoflight/mode/vert", "T/O CLB");
setprop("/it-autoflight/mode/prof", "NONE");
setprop("/it-autoflight/input/spd-kts", 250);
setprop("/it-autoflight/input/spd-mach", 0.68);
update_armst.start();
@ -354,7 +348,6 @@ var vertical = func {
if (vertset == 0) {
alandt.stop();
alandt1.stop();
prof_sys_stop();
setprop("/it-autoflight/output/appr-armed", 0);
setprop("/it-autoflight/output/vert", 0);
setprop("/it-autoflight/mode/vert", "ALT HLD");
@ -370,7 +363,6 @@ var vertical = func {
} else if (vertset == 1) {
alandt.stop();
alandt1.stop();
prof_sys_stop();
setprop("/it-autoflight/output/appr-armed", 0);
var altinput = getprop("/it-autoflight/input/alt");
setprop("/it-autoflight/internal/alt", altinput);
@ -403,7 +395,6 @@ var vertical = func {
} else if (vertset == 3) {
alandt.stop();
alandt1.stop();
prof_sys_stop();
var calt = getprop("/instrumentation/altimeter/indicated-altitude-ft");
var alt = getprop("/it-autoflight/internal/alt");
var dif = calt - alt;
@ -420,7 +411,6 @@ var vertical = func {
} else if (vertset == 4) {
alandt.stop();
alandt1.stop();
prof_sys_stop();
setprop("/it-autoflight/output/appr-armed", 0);
var altinput = getprop("/it-autoflight/input/alt");
setprop("/it-autoflight/internal/alt", altinput);
@ -440,7 +430,6 @@ var vertical = func {
} else if (vertset == 5) {
alandt.stop();
alandt1.stop();
prof_sys_stop();
fpa_calct.start();
setprop("/it-autoflight/output/appr-armed", 0);
var altinput = getprop("/it-autoflight/input/alt");
@ -462,52 +451,23 @@ var vertical = func {
thrustmode();
alandt.stop();
alandt1.start();
prof_sys_stop();
} else if (vertset == 7) {
alandt.stop();
alandt1.stop();
prof_sys_stop();
setprop("/it-autoflight/output/vert", 7);
setprop("/it-autoflight/mode/arm", " ");
var altinput = getprop("/it-autoflight/input/alt");
setprop("/it-autoflight/internal/alt", altinput);
prof_sys_stop();
thrustmodet.start();
} else if (vertset == 8) {
if (getprop("/autopilot/route-manager/route/num") > 0 and getprop("/autopilot/route-manager/active") == 1 and getprop("/it-autoflight/internal/prof-wp-alt") >= 100) {
alandt.stop();
alandt1.stop();
setprop("/it-autoflight/output/appr-armed", 0);
setprop("/it-autoflight/output/vert", 8);
prof_run();
setprop("/it-autoflight/mode/vert", "VNAV");
setprop("/it-autoflight/mode/arm", " ");
var altinput = getprop("/it-autoflight/input/alt");
setprop("/it-autoflight/internal/alt", altinput);
if (getprop("/it-autoflight/output/loc-armed")) {
setprop("/it-autoflight/mode/arm", "LOC");
} else {
setprop("/it-autoflight/mode/arm", " ");
}
prof_maint.start();
} else {
gui.popupTip("Please make sure you have a route, and waypoints with altitude restrictions set, and that the route is Activated!");
}
}
}
var vert_arm = func {
var vertset = getprop("/it-autoflight/input/vert");
if (vertset == 8) {
if (getprop("/autopilot/route-manager/route/num") > 0 and getprop("/autopilot/route-manager/active") == 1 and getprop("/it-autoflight/internal/prof-wp-alt") >= 100) {
setprop("/it-autoflight/input/prof-arm", 1);
setprop("/it-autoflight/mode/prof", "ARMED");
} else {
gui.popupTip("Please make sure you have a route, and waypoints with altitude restrictions set, and that the route is Activated!");
}
# Do nothing right now
} else {
setprop("/it-autoflight/input/prof-arm", 0);
setprop("/it-autoflight/mode/prof", "NONE");
# Do nothing right now
}
}
@ -550,13 +510,24 @@ var fpa_calc = func {
}
setlistener("/it-autoflight/input/kts-mach", func {
var modez = getprop("/it-autoflight/input/kts-mach");
if (modez == 0) {
var iasnow = int(getprop("/instrumentation/airspeed-indicator/indicated-speed-kt")+0.5);
setprop("/it-autoflight/input/spd-kts", iasnow);
} else if (modez == 1) {
var machnow = (int(1000*getprop("/velocities/mach")))*0.001;
setprop("/it-autoflight/input/spd-mach", machnow);
var ias = getprop("/instrumentation/airspeed-indicator/indicated-speed-kt");
var mach = getprop("/instrumentation/airspeed-indicator/indicated-mach");
if (getprop("/it-autoflight/input/kts-mach") == 0) {
if (ias >= 100 and ias <= 360) {
setprop("/it-autoflight/input/spd-kts", math.round(ias, 1));
} else if (ias < 100) {
setprop("/it-autoflight/input/spd-kts", 100);
} else if (ias > 360) {
setprop("/it-autoflight/input/spd-kts", 360);
}
} else if (getprop("/it-autoflight/input/kts-mach") == 1) {
if (mach >= 0.50 and mach <= 0.95) {
setprop("/it-autoflight/input/spd-kts", math.round(mach, 0.001));
} else if (mach < 0.50) {
setprop("/it-autoflight/input/spd-kts", 0.50);
} else if (mach > 0.95) {
setprop("/it-autoflight/input/spd-kts", 0.95);
}
}
});
@ -615,11 +586,7 @@ setlistener("/it-autoflight/mode/lat", func {
var toga_reduc = func {
if (getprop("/position/gear-agl-ft") >= getprop("/it-autoflight/settings/reduc-agl-ft")) {
if (getprop("/it-autoflight/input/prof-arm") == 1) {
setprop("/it-autoflight/input/vert", 8);
} else {
setprop("/it-autoflight/input/vert", 4);
}
setprop("/it-autoflight/input/vert", 4);
}
}
@ -629,25 +596,20 @@ setlistener("/it-autoflight/output/vert", func {
if (vertm == 1) {
altcaptt.start();
fpa_calct.stop();
setprop("/it-autoflight/mode/prof", "NONE");
} else if (vertm == 4) {
altcaptt.start();
fpa_calct.stop();
setprop("/it-autoflight/mode/prof", "NONE");
} else if (vertm == 5) {
altcaptt.start();
setprop("/it-autoflight/mode/prof", "NONE");
} else if (vertm == 7) {
altcaptt.start();
fpa_calct.stop();
setprop("/it-autoflight/mode/prof", "NONE");
} else if (vertm == 8) {
altcaptt.stop();
fpa_calct.stop();
} else {
altcaptt.stop();
fpa_calct.stop();
setprop("/it-autoflight/mode/prof", "NONE");
}
});
@ -735,9 +697,7 @@ var thrustmode = func {
} else if (vertm == 7) {
setprop("/it-autoflight/output/thr-mode", 2);
setprop("/it-autoflight/mode/thr", " PITCH");
} else if (vertm == 8) {
thrustmodet.stop();
} else {
} else {
setprop("/it-autoflight/output/thr-mode", 0);
setprop("/it-autoflight/mode/thr", "THRUST");
thrustmodet.stop();
@ -851,7 +811,6 @@ var apparmcheck = func {
}
var make_appr_active = func {
prof_sys_stop();
setprop("/it-autoflight/output/appr-armed", 0);
setprop("/it-autoflight/output/vert", 2);
setprop("/it-autoflight/mode/vert", "G/S");
@ -866,18 +825,9 @@ var make_appr_active = func {
var aland = func {
var ap1 = getprop("/it-autoflight/output/ap1");
var ap2 = getprop("/it-autoflight/output/ap2");
var landoption = getprop("/it-autoflight/settings/autoland-without-ap");
if (getprop("/position/gear-agl-ft") <= 100) {
if (ap1 == 1 or ap2 == 1) {
setprop("/it-autoflight/input/lat", 4);
setprop("/it-autoflight/input/vert", 6);
} else if (ap1 == 0 and ap2 == 0 and landoption) {
setprop("/it-autoflight/input/lat", 4);
setprop("/it-autoflight/input/vert", 6);
} else {
alandt.stop();
alandt1.stop();
}
setprop("/it-autoflight/input/lat", 4);
setprop("/it-autoflight/input/vert", 6);
}
}
@ -886,17 +836,6 @@ var aland1 = func {
if (aglal <= 50 and aglal > 5) {
setprop("/it-autoflight/mode/vert", "FLARE");
}
if ((getprop("/it-autoflight/output/ap1") == 0) and (getprop("/it-autoflight/output/ap2") == 0) and (getprop("/it-autoflight/settings/autoland-without-ap") == 0)) {
alandt.stop();
alandt1.stop();
setprop("/it-autoflight/output/loc-armed", 0);
setprop("/it-autoflight/output/lat", 2);
setprop("/it-autoflight/mode/lat", "LOC");
setprop("/it-autoflight/output/appr-armed", 0);
setprop("/it-autoflight/output/vert", 2);
setprop("/it-autoflight/mode/vert", "G/S");
setprop("/it-autoflight/mode/arm", " ");
}
var gear1 = getprop("/gear/gear[1]/wow");
var gear2 = getprop("/gear/gear[2]/wow");
if (gear1 == 1 or gear2 == 1) {
@ -909,302 +848,7 @@ var aland1 = func {
# Autoland Stage 2 Logic (Rollout)
# Not yet working, planned.
# VNAV Profile Mode
var prof_main = func {
if (getprop("/autopilot/route-manager/route/num") > 0 and getprop("/autopilot/route-manager/active") == 1) {
var altinput = getprop("/it-autoflight/input/alt");
setprop("/it-autoflight/internal/alt", altinput);
var wp_curr = getprop("/autopilot/route-manager/current-wp");
var vnav_alt_wp = getprop("/autopilot/route-manager/route/wp",wp_curr,"altitude-ft");
if (getprop("/it-autoflight/internal/prof-wp-alt") == vnav_alt_wp) {
# Do nothing
} else {
setprop("/it-autoflight/internal/prof-wp-alt", vnav_alt_wp);
}
vnav_alt_selector();
if (getprop("/it-autoflight/internal/prof-wp-alt") < 100) {
setprop("/it-autoflight/input/vert", 4);
}
} else {
setprop("/it-autoflight/input/vert", 4);
}
}
var prof_sys_stop = func {
prof_maint.stop();
vnav_altcaptt.stop();
vnav_minmaxt.stop();
vnav_des_fpmt.stop();
vnav_des_todt.stop();
setprop("/it-autoflight/mode/prof", "NONE");
}
setlistener("/it-autoflight/input/alt", func {
if (getprop("/it-autoflight/output/vert") == 8) {
vnav_alt_selector();
prof_run();
}
});
setlistener("/it-autoflight/internal/prof-wp-alt", func {
if (getprop("/it-autoflight/output/vert") == 8) {
vnav_alt_selector();
prof_run();
}
});
setlistener("/autopilot/route-manager/current-wp", func {
if (getprop("/it-autoflight/output/vert") == 8) {
vnav_alt_selector();
prof_run();
}
});
var prof_run = func {
if (getprop("/autopilot/route-manager/route/num") > 0 and getprop("/autopilot/route-manager/active") == 1) {
var wp_curr = getprop("/autopilot/route-manager/current-wp");
var wptnum = getprop("/autopilot/route-manager/current-wp");
var vnav_alt_wp = getprop("/autopilot/route-manager/route/wp",wp_curr,"altitude-ft");
if ((wptnum - 1) < getprop("/autopilot/route-manager/route/num")) {
var vnav_alt_wp_prev = getprop("/autopilot/route-manager/route/wp",wp_curr - 1,"altitude-ft");
var altcurr = getprop("/instrumentation/altimeter/indicated-altitude-ft");
if (vnav_alt_wp_prev >= 100) {
if (vnav_alt_wp_prev > vnav_alt_wp) {
vnav_des_todt.start();
setprop("/it-autoflight/internal/prof-mode", "DES");
} else if (vnav_alt_wp_prev == vnav_alt_wp) {
vnav_des_todt.stop();
setprop("/it-autoflight/internal/top-of-des-nm", 0);
setprop("/it-autoflight/internal/prof-mode", "XX");
} else if (vnav_alt_wp_prev <= vnav_alt_wp) {
vnav_des_todt.stop();
setprop("/it-autoflight/internal/top-of-des-nm", 0);
setprop("/it-autoflight/internal/prof-mode", "CLB");
}
} else if (vnav_alt_wp_prev < 100) {
if (altcurr > vnav_alt_wp) {
vnav_des_todt.start();
setprop("/it-autoflight/internal/prof-mode", "DES");
} else if (altcurr == vnav_alt_wp) {
vnav_des_todt.stop();
setprop("/it-autoflight/internal/top-of-des-nm", 0);
setprop("/it-autoflight/internal/prof-mode", "XX");
} else if (altcurr <= vnav_alt_wp) {
vnav_des_todt.stop();
setprop("/it-autoflight/internal/top-of-des-nm", 0);
setprop("/it-autoflight/internal/prof-mode", "CLB");
}
}
} else {
vnav_des_todt.stop();
setprop("/it-autoflight/internal/top-of-des-nm", 0);
}
if (vnav_alt_wp >= 100) {
if (getprop("/it-autoflight/internal/prof-mode") == "CLB") {
var calt = getprop("/instrumentation/altimeter/indicated-altitude-ft");
var valt = getprop("/it-autoflight/internal/prof-alt");
var vdif = calt - valt;
if (vdif > 250 or vdif < -250) {
prof_clb();
} else {
vnav_alt_sel();
}
} else if (getprop("/it-autoflight/internal/prof-mode") == "DES") {
var calt = getprop("/instrumentation/altimeter/indicated-altitude-ft");
var valt = getprop("/it-autoflight/internal/prof-alt");
var vdif = calt - valt;
if (vdif > 250 or vdif < -250) {
prof_des_spd();
} else {
vnav_alt_sel();
}
} else if (getprop("/it-autoflight/internal/prof-mode") == "XX") {
# Do nothing for now
}
} else {
setprop("/it-autoflight/input/vert", 4);
}
} else {
setprop("/it-autoflight/input/vert", 4);
}
}
# VNAV Top of Descent
var vnav_des_tod = func {
if (getprop("/autopilot/route-manager/route/num") > 0 and getprop("/autopilot/route-manager/active") == 1) {
var wp_curr = getprop("/autopilot/route-manager/current-wp");
var vnav_alt_wp = getprop("/autopilot/route-manager/route/wp",wp_curr,"altitude-ft");
var alt_curr = getprop("/instrumentation/altimeter/indicated-altitude-ft");
var dist = getprop("/autopilot/route-manager/wp/dist");
var vdist = dist + 1;
var alttl = abs(alt_curr - vnav_alt_wp);
setprop("/it-autoflight/internal/top-of-des-nm", (alttl / 1000) * 3);
if (vdist < getprop("/it-autoflight/internal/top-of-des-nm")) {
vnav_des_todt.stop();
var salt = getprop("/it-autoflight/internal/alt");
var valt = getprop("/it-autoflight/internal/prof-wp-alt");
var calt = getprop("/instrumentation/altimeter/indicated-altitude-ft");
var sdif = abs(calt - salt);
var vdif = abs(calt - valt);
if (sdif <= vdif) {
setprop("/it-autoflight/internal/prof-alt", getprop("/it-autoflight/internal/alt"));
} else if (sdif > vdif) {
setprop("/it-autoflight/internal/prof-alt", getprop("/it-autoflight/internal/prof-wp-alt"));
}
var calt = getprop("/instrumentation/altimeter/indicated-altitude-ft");
var valt = getprop("/it-autoflight/internal/prof-alt");
var vdif = calt - valt;
if (vdif > 550 or vdif < -550) {
prof_des_spd();
} else {
vnav_alt_sel();
}
}
}
}
# VNAV Altitude Selector
var vnav_alt_selector = func {
var salt = getprop("/it-autoflight/internal/alt");
var valt = getprop("/it-autoflight/internal/prof-wp-alt");
var calt = getprop("/instrumentation/altimeter/indicated-altitude-ft");
var sdif = abs(calt - salt);
var vdif = abs(calt - valt);
if (getprop("/it-autoflight/internal/prof-mode") == "CLB") {
if (sdif <= vdif) {
setprop("/it-autoflight/internal/prof-alt", getprop("/it-autoflight/internal/alt"));
} else if (sdif > vdif) {
setprop("/it-autoflight/internal/prof-alt", getprop("/it-autoflight/internal/prof-wp-alt"));
}
} else if (getprop("/it-autoflight/internal/prof-mode") == "DES") {
var dist = getprop("/autopilot/route-manager/wp/dist");
var vdist = dist - 1;
if (vdist < getprop("/it-autoflight/internal/top-of-des-nm")) {
if (sdif <= vdif) {
setprop("/it-autoflight/internal/prof-alt", getprop("/it-autoflight/internal/alt"));
} else if (sdif > vdif) {
setprop("/it-autoflight/internal/prof-alt", getprop("/it-autoflight/internal/prof-wp-alt"));
}
}
}
}
# VNAV Selector
var vnav_alt_sel = func {
setprop("/it-autoflight/internal/max-vs", 500);
setprop("/it-autoflight/internal/min-vs", -500);
setprop("/it-autoflight/output/thr-mode", 0);
setprop("/it-autoflight/output/prof-vert", 0);
setprop("/it-autoflight/mode/thr", "THRUST");
setprop("/it-autoflight/mode/prof", "VNAV CAP");
vnav_minmaxt.start();
}
# VNAV Climb
var prof_clb = func {
vnav_des_fpmt.stop();
setprop("/it-autoflight/output/thr-mode", 2);
setprop("/it-autoflight/mode/thr", " PITCH");
setprop("/it-autoflight/output/prof-vert", 4);
setprop("/it-autoflight/mode/prof", "VNAV SPD");
vnav_altcaptt.start();
}
# VNAV Descent
var prof_des_spd = func {
vnav_des_fpmt.stop();
setprop("/it-autoflight/output/thr-mode", 1);
setprop("/it-autoflight/mode/thr", " PITCH");
setprop("/it-autoflight/output/prof-vert", 4);
setprop("/it-autoflight/mode/prof", "VNAV SPD");
vnav_altcaptt.start();
}
var prof_des_pth = func {
vnav_des_fpmt.start();
setprop("/it-autoflight/output/thr-mode", 0);
setprop("/it-autoflight/mode/thr", "THRUST");
setprop("/it-autoflight/output/prof-vert", 1);
setprop("/it-autoflight/mode/prof", "VNAV PTH");
vnav_altcaptt.start();
}
var vnav_des_fpm = func {
if (getprop("/autopilot/route-manager/route/num") > 0 and getprop("/autopilot/route-manager/active") == 1) {
var gndspd = getprop("/velocities/groundspeed-kt");
var desfpm = ((gndspd * 0.5) * 10);
setprop("/it-autoflight/internal/prof-fpm", desfpm);
}
}
# VNAV Capture
var vnav_altcapt = func {
var vsnow = getprop("/it-autoflight/internal/vert-speed-fpm");
if ((vsnow >= 0 and vsnow < 500) or (vsnow < 0 and vsnow > -500)) {
setprop("/it-autoflight/internal/captvs", 100);
setprop("/it-autoflight/internal/captvsneg", -100);
} else if ((vsnow >= 500 and vsnow < 1000) or (vsnow < -500 and vsnow > -1000)) {
setprop("/it-autoflight/internal/captvs", 200);
setprop("/it-autoflight/internal/captvsneg", -200);
} else if ((vsnow >= 1000 and vsnow < 1500) or (vsnow < -1000 and vsnow > -1500)) {
setprop("/it-autoflight/internal/captvs", 300);
setprop("/it-autoflight/internal/captvsneg", -300);
} else if ((vsnow >= 1500 and vsnow < 2000) or (vsnow < -1500 and vsnow > -2000)) {
setprop("/it-autoflight/internal/captvs", 400);
setprop("/it-autoflight/internal/captvsneg", -400);
} else if ((vsnow >= 2000 and vsnow < 3000) or (vsnow < -2000 and vsnow > -3000)) {
setprop("/it-autoflight/internal/captvs", 600);
setprop("/it-autoflight/internal/captvsneg", -600);
} else if ((vsnow >= 3000 and vsnow < 4000) or (vsnow < -3000 and vsnow > -4000)) {
setprop("/it-autoflight/internal/captvs", 900);
setprop("/it-autoflight/internal/captvsneg", -900);
} else if ((vsnow >= 4000 and vsnow < 5000) or (vsnow < -4000 and vsnow > -5000)) {
setprop("/it-autoflight/internal/captvs", 1200);
setprop("/it-autoflight/internal/captvsneg", -1200);
} else if ((vsnow >= 5000) or (vsnow < -5000)) {
setprop("/it-autoflight/internal/captvs", 1500);
setprop("/it-autoflight/internal/captvsneg", -1500);
}
var calt = getprop("/instrumentation/altimeter/indicated-altitude-ft");
var valt = getprop("/it-autoflight/internal/prof-alt");
var vdif = calt - valt;
if (vdif < getprop("/it-autoflight/internal/captvs") and vdif > getprop("/it-autoflight/internal/captvsneg")) {
vnav_capture_alt();
}
}
var vnav_capture_alt = func {
vnav_altcaptt.stop();
vnav_des_fpmt.stop();
var calt = getprop("/instrumentation/altimeter/indicated-altitude-ft");
var alt = getprop("/it-autoflight/internal/alt");
var valt = getprop("/it-autoflight/internal/prof-alt");
var vsnow = getprop("/it-autoflight/internal/vert-speed-fpm");
if (calt < valt) {
setprop("/it-autoflight/internal/max-vs", vsnow);
} else if (calt > valt) {
setprop("/it-autoflight/internal/min-vs", vsnow);
}
vnav_minmaxt.start();
setprop("/it-autoflight/output/thr-mode", 0);
setprop("/it-autoflight/output/prof-vert", 0);
setprop("/it-autoflight/mode/thr", "THRUST");
setprop("/it-autoflight/mode/prof", "VNAV CAP");
}
# VNAV Min and Max Pitch Reset
var vnav_minmax = func {
var calt = getprop("/instrumentation/altimeter/indicated-altitude-ft");
var valt = getprop("/it-autoflight/internal/prof-alt");
var vdif = calt - valt;
if (vdif < 50 and vdif > -50) {
setprop("/it-autoflight/internal/max-vs", 500);
setprop("/it-autoflight/internal/min-vs", -500);
var vertmode = getprop("/it-autoflight/output/prof-vert");
if (vertmode == 0) {
setprop("/it-autoflight/mode/prof", "VNAV HLD");
}
vnav_minmaxt.stop();
}
}
# VNAV
# For Canvas Nav Display.
setlistener("/it-autoflight/input/hdg", func {
@ -1228,9 +872,4 @@ var reduct = maketimer(0.5, toga_reduc);
var latarmt = maketimer(0.5, latarms);
var fpa_calct = maketimer(0.1, fpa_calc);
var lnavwptt = maketimer(1, lnavwpt);
var prof_maint = maketimer(0.5, prof_main);
var vnav_altcaptt = maketimer(0.5, vnav_altcapt);
var vnav_minmaxt = maketimer(0.5, vnav_minmax);
var vnav_des_fpmt = maketimer(0.5, vnav_des_fpm);
var vnav_des_todt = maketimer(0.5, vnav_des_tod);

View file

@ -13,7 +13,7 @@
<layout>hbox</layout>
<text>
<halign>left</halign>
<label>IT-AUTOFLIGHT System</label>
<label>IT-AUTOFLIGHT System (A3XX)</label>
</text>
<button>
<halign>right</halign>
@ -31,17 +31,9 @@
<group>
<layout>hbox</layout>
<button>
<legend>A/T</legend>
<pref-width>35</pref-width>
<binding>
<command>property-toggle</command>
<property>/it-autoflight/input/athr</property>
</binding>
</button>
<button>
<legend>AP1</legend>
<pref-width>35</pref-width>
<pref-width>55</pref-width>
<binding>
<command>property-toggle</command>
<property>/it-autoflight/input/ap1</property>
@ -49,29 +41,15 @@
</button>
<button>
<legend>AP2</legend>
<pref-width>35</pref-width>
<pref-width>55</pref-width>
<binding>
<command>property-toggle</command>
<property>/it-autoflight/input/ap2</property>
</binding>
</button>
<button>
<enable>
<equals>
<property>/it-autoflight/settings/enable-cws</property>
<value>1</value>
</equals>
</enable>
<legend>CWS</legend>
<pref-width>35</pref-width>
<binding>
<command>property-toggle</command>
<property>/it-autoflight/input/cws</property>
</binding>
</button>
<button>
<legend>FD1</legend>
<pref-width>35</pref-width>
<pref-width>55</pref-width>
<binding>
<command>property-toggle</command>
<property>/it-autoflight/input/fd1</property>
@ -79,71 +57,13 @@
</button>
<button>
<legend>FD2</legend>
<pref-width>35</pref-width>
<pref-width>55</pref-width>
<binding>
<command>property-toggle</command>
<property>/it-autoflight/input/fd2</property>
</binding>
</button>
</group>
<group>
<layout>hbox</layout>
<text>
<label>[A/T]</label>
<visible>
<equals>
<property>/it-autoflight/output/athr</property>
<value>1</value>
</equals>
</visible>
</text>
<text>
<label>[AP1]</label>
<visible>
<equals>
<property>/it-autoflight/output/ap1</property>
<value>1</value>
</equals>
</visible>
</text>
<text>
<label>[AP2]</label>
<visible>
<equals>
<property>/it-autoflight/output/ap2</property>
<value>1</value>
</equals>
</visible>
</text>
<text>
<label>[CWS]</label>
<visible>
<equals>
<property>/it-autoflight/output/cws</property>
<value>1</value>
</equals>
</visible>
</text>
<text>
<label>[FD1]</label>
<visible>
<equals>
<property>/it-autoflight/output/fd1</property>
<value>1</value>
</equals>
</visible>
</text>
<text>
<label>[FD2]</label>
<visible>
<equals>
<property>/it-autoflight/output/fd2</property>
<value>1</value>
</equals>
</visible>
</text>
</group>
<group>
<layout>vbox</layout>
@ -166,9 +86,9 @@
<layout>hbox</layout>
<text>
<border>1</border>
<label>999999</label>
<label>99999</label>
<valign>center</valign>
<property>/it-autoflight/mode/thr</property>
<property>/modes/pfd/fma/ap-mode</property>
<live>1</live>
</text>
<vrule/>
@ -176,15 +96,7 @@
<border>1</border>
<label>99999</label>
<valign>center</valign>
<property>/it-autoflight/mode/arm</property>
<live>1</live>
</text>
<vrule/>
<text>
<border>1</border>
<label>99999</label>
<valign>center</valign>
<property>/it-autoflight/mode/lat</property>
<property>/modes/pfd/fma/roll-mode</property>
<live>1</live>
</text>
<vrule/>
@ -192,7 +104,52 @@
<border>1</border>
<label>99999999</label>
<valign>center</valign>
<property>/it-autoflight/mode/vert</property>
<property>/modes/pfd/fma/pitch-mode</property>
<live>1</live>
</text>
</group>
<group>
<layout>hbox</layout>
<text>
<label> A/THR</label>
<visible>
<equals>
<property>/it-autoflight/output/athr</property>
<value>1</value>
</equals>
</visible>
</text>
<vrule/>
<text>
<border>1</border>
<label>999</label>
<valign>center</valign>
<property>/modes/pfd/fma/roll-mode-armed</property>
<live>1</live>
</text>
<vrule/>
<text>
<border>1</border>
<label>999</label>
<valign>center</valign>
<property>/modes/pfd/fma/pitch-mode2-armed</property>
<live>1</live>
</text>
<vrule/>
<text>
<border>1</border>
<label>999</label>
<valign>center</valign>
<property>/modes/pfd/fma/pitch-mode-armed</property>
<live>1</live>
</text>
<vrule/>
<text>
<border>1</border>
<label>999999</label>
<valign>center</valign>
<property>/modes/pfd/fma/fd-mode</property>
<live>1</live>
</text>
</group>
@ -215,47 +172,39 @@
<layout>hbox</layout>
<button>
<legend>SPD</legend>
<pref-width>55</pref-width>
<binding>
<command>property-assign</command>
<property>/it-autoflight/input/kts-mach</property>
<value>0</value>
</binding>
</button>
<button>
<legend>Mach</legend>
<pref-width>55</pref-width>
<binding>
<command>property-assign</command>
<property>/it-autoflight/input/kts-mach</property>
<value>1</value>
</binding>
</button>
<button>
<legend>FMS</legend>
<pref-width>55</pref-width>
<legend>Push</legend>
<pref-width>65</pref-width>
<enable>
<property>/it-autoflight/input/fms-spd</property>
<property>/systems/unused/unused-button</property>
</enable>
<binding>
<command>property-assign</command>
<property>/it-autoflight/input/fms-spd</property>
<value>1</value>
<command>property-assign</command>
<property>/systems/unused/unused-button</property>
<value>0</value>
</binding>
</button>
<button>
<legend>TOGA</legend>
<pref-width>55</pref-width>
<legend>Pull</legend>
<pref-width>65</pref-width>
<binding>
<command>property-assign</command>
<property>/it-autoflight/input/toga</property>
<value>1</value>
<command>nasal</command>
<script>
libraries.mcpSPDKnbPull();
</script>
</binding>
</button>
<button>
<legend>Speed/Mach</legend>
<binding>
<command>property-cycle</command>
<property>/it-autoflight/input/kts-mach</property>
<value>0</value>
<value>1</value>
</binding>
</button>
</group>
<group>
@ -282,8 +231,8 @@
<binding>
<command>property-adjust</command>
<property>/it-autoflight/input/spd-kts</property>
<min>0</min>
<max>380</max>
<min>100</min>
<max>360</max>
<step>-10</step>
<wrap>false</wrap>
</binding>
@ -303,8 +252,8 @@
<binding>
<command>property-adjust</command>
<property>/it-autoflight/input/spd-kts</property>
<min>0</min>
<max>380</max>
<min>100</min>
<max>360</max>
<step>-1</step>
<wrap>false</wrap>
</binding>
@ -342,8 +291,8 @@
<binding>
<command>property-adjust</command>
<property>/it-autoflight/input/spd-kts</property>
<min>0</min>
<max>380</max>
<min>100</min>
<max>360</max>
<step>1</step>
<wrap>false</wrap>
</binding>
@ -364,8 +313,8 @@
<binding>
<command>property-adjust</command>
<property>/it-autoflight/input/spd-kts</property>
<min>0</min>
<max>380</max>
<min>100</min>
<max>360</max>
<step>10</step>
<wrap>false</wrap>
</binding>
@ -397,8 +346,8 @@
<binding>
<command>property-adjust</command>
<property>/it-autoflight/input/spd-mach</property>
<min>0</min>
<max>0.99</max>
<min>0.50</min>
<max>0.95</max>
<step>-0.01</step>
<wrap>false</wrap>
</binding>
@ -418,8 +367,8 @@
<binding>
<command>property-adjust</command>
<property>/it-autoflight/input/spd-mach</property>
<min>0</min>
<max>0.99</max>
<min>0.50</min>
<max>0.95</max>
<step>-0.001</step>
<wrap>false</wrap>
</binding>
@ -457,8 +406,8 @@
<binding>
<command>property-adjust</command>
<property>/it-autoflight/input/spd-mach</property>
<min>0</min>
<max>0.99</max>
<min>0.50</min>
<max>0.95</max>
<step>0.001</step>
<wrap>false</wrap>
</binding>
@ -479,8 +428,8 @@
<binding>
<command>property-adjust</command>
<property>/it-autoflight/input/spd-mach</property>
<min>0</min>
<max>0.99</max>
<min>0.50</min>
<max>0.95</max>
<step>0.01</step>
<wrap>false</wrap>
</binding>
@ -506,42 +455,32 @@
<layout>hbox</layout>
<button>
<pref-width>50</pref-width>
<legend>HLD</legend>
<legend>Push</legend>
<pref-width>75</pref-width>
<binding>
<command>property-assign</command>
<property>/it-autoflight/input/lat</property>
<value>3</value>
</binding>
</button>
<button>
<pref-width>50</pref-width>
<legend>SEL</legend>
<binding>
<command>property-assign</command>
<property>/it-autoflight/input/lat</property>
<value>0</value>
<command>property-assign</command>
<property>/it-autoflight/input/lat</property>
<value>1</value>
</binding>
</button>
<button>
<pref-width>50</pref-width>
<legend>LNAV</legend>
<legend>Pull</legend>
<pref-width>75</pref-width>
<binding>
<command>property-assign</command>
<property>/it-autoflight/input/lat</property>
<value>1</value>
<command>property-assign</command>
<property>/it-autoflight/input/lat</property>
<value>3</value>
</binding>
</button>
<button>
<pref-width>65</pref-width>
<legend>VOR/LOC</legend>
<legend>LOC</legend>
<pref-width>75</pref-width>
<binding>
<command>property-assign</command>
<property>/it-autoflight/input/lat</property>
<value>2</value>
<command>property-assign</command>
<property>/it-autoflight/input/lat</property>
<value>2</value>
</binding>
</button>
</group>
@ -629,90 +568,6 @@
</binding>
</button>
</group>
<group>
<layout>hbox</layout>
<checkbox>
<label>True HDG</label>
<property>/it-autoflight/input/trk</property>
<binding>
<command>dialog-apply</command>
</binding>
<live>true</live>
</checkbox>
<checkbox>
<label>Use NAV2</label>
<property>/it-autoflight/settings/use-nav2-radio</property>
<enable>
<not-equals>
<property>/it-autoflight/output/vert</property>
<value>2</value>
</not-equals>
</enable>
<binding>
<command>dialog-apply</command>
</binding>
<live>true</live>
</checkbox>
<checkbox>
<label>B/C</label>
<property>/it-autoflight/settings/use-backcourse</property>
<enable>
<property>/it-autoflight/settings/extra/unused-button</property>
</enable>
<binding>
<command>dialog-apply</command>
</binding>
<live>true</live>
</checkbox>
</group>
<group>
<layout>hbox</layout>
<text>
<row>0</row>
<col>0</col>
<label>Bank Limit Select:</label>
</text>
<slider>
<row>0</row>
<col>0</col>
<halign>center</halign>
<pref-width>130</pref-width>
<property>/it-autoflight/input/bank-limit</property>
<step>5</step>
<min>5</min>
<max>30</max>
<live type="bool">true</live>
<binding>
<command>dialog-apply</command>
</binding>
</slider>
</group>
<group>
<layout>hbox</layout>
<button>
<pref-width>70</pref-width>
<legend>AUTO</legend>
<binding>
<command>nasal</command>
<script>
var dbl = getprop("/it-autoflight/settings/default-bank-limit");
setprop("/it-autoflight/input/bank-limit", dbl);
</script>
</binding>
</button>
<text>
<row>0</row>
<col>0</col>
<halign>right</halign>
<label>5 10 15 20 25 30</label>
</text>
</group>
<group>
<layout>hbox</layout>
@ -732,86 +587,80 @@
<layout>hbox</layout>
<button>
<pref-width>40</pref-width>
<legend>HLD</legend>
<legend>ALT Push</legend>
<pref-width>75</pref-width>
<enable>
<property>/systems/unused/unused-button</property>
</enable>
<binding>
<command>property-assign</command>
<property>/it-autoflight/input/vert</property>
<value>0</value>
</binding>
</button>
<button>
<pref-width>40</pref-width>
<legend>FLCH</legend>
<binding>
<command>property-assign</command>
<property>/it-autoflight/input/vert</property>
<value>4</value>
<command>property-assign</command>
<property>/systems/unused/unused-button</property>
<value>0</value>
</binding>
</button>
<button>
<pref-width>40</pref-width>
<legend>V/S</legend>
<legend>ALT Pull</legend>
<pref-width>75</pref-width>
<binding>
<command>property-assign</command>
<property>/it-autoflight/input/vert</property>
<value>1</value>
<command>property-assign</command>
<property>/it-autoflight/input/vert</property>
<value>4</value>
</binding>
</button>
<button>
<pref-width>40</pref-width>
<legend>FPA</legend>
<pref-width>75</pref-width>
<legend>EXPED</legend>
<enable>
<property>/systems/unused/unused-button</property>
</enable>
<binding>
<command>property-assign</command>
<property>/it-autoflight/input/vert</property>
<value>5</value>
<command>property-assign</command>
<property>/systems/unused/unused-button</property>
<value>0</value>
</binding>
</button>
<button>
<pref-width>55</pref-width>
<legend>ILS</legend>
<binding>
<command>property-assign</command>
<property>/it-autoflight/input/vert</property>
<value>2</value>
</binding>
</button>
</group>
<group>
<layout>hbox</layout>
<button>
<pref-width>55</pref-width>
<legend>VNAV</legend>
<enable>
<property>/it-autoflight/settings/vnav-test</property>
</enable>
<legend>V/S Push</legend>
<pref-width>75</pref-width>
<binding>
<command>property-assign</command>
<property>/it-autoflight/input/vert</property>
<value>8</value>
<command>property-assign</command>
<property>/it-autoflight/input/vert</property>
<value>1</value>
</binding>
<binding>
<command>property-assign</command>
<property>/it-autoflight/input/vs</property>
<value>0</value>
</binding>
</button>
<text>
<row>0</row>
<col>0</col>
<label>VNAV Command: </label>
</text>
<text>
<border>1</border>
<label>9999999999999</label>
<valign>center</valign>
<property>/it-autoflight/mode/prof</property>
<live>1</live>
</text>
<button>
<legend>V/S Pull</legend>
<pref-width>75</pref-width>
<binding>
<command>property-assign</command>
<property>/it-autoflight/input/vert</property>
<value>1</value>
</binding>
</button>
<button>
<pref-width>75</pref-width>
<legend>APPR</legend>
<binding>
<command>property-assign</command>
<property>/it-autoflight/input/vert</property>
<value>2</value>
</binding>
</button>
</group>
<group>
@ -913,6 +762,12 @@
<pref-width>25</pref-width>
<pref-height>25</pref-height>
<legend>&lt;&lt;</legend>
<enable>
<equals>
<property>/it-autoflight/output/vert</property>
<value>1</value>
</equals>
</enable>
<binding>
<command>property-adjust</command>
<property>/it-autoflight/input/vs</property>
@ -928,6 +783,12 @@
<pref-width>25</pref-width>
<pref-height>25</pref-height>
<legend>&lt;</legend>
<enable>
<equals>
<property>/it-autoflight/output/vert</property>
<value>1</value>
</equals>
</enable>
<binding>
<command>property-adjust</command>
<property>/it-autoflight/input/vs</property>
@ -944,6 +805,12 @@
<pref-width>55</pref-width>
<property>/it-autoflight/input/vs</property>
<live type="bool">true</live>
<enable>
<equals>
<property>/it-autoflight/output/vert</property>
<value>1</value>
</equals>
</enable>
<binding>
<command>dialog-apply</command>
</binding>
@ -955,6 +822,12 @@
<pref-width>25</pref-width>
<pref-height>25</pref-height>
<legend>&gt;</legend>
<enable>
<equals>
<property>/it-autoflight/output/vert</property>
<value>1</value>
</equals>
</enable>
<binding>
<command>property-adjust</command>
<property>/it-autoflight/input/vs</property>
@ -971,6 +844,12 @@
<pref-width>25</pref-width>
<pref-height>25</pref-height>
<legend>&gt;&gt;</legend>
<enable>
<equals>
<property>/it-autoflight/output/vert</property>
<value>1</value>
</equals>
</enable>
<binding>
<command>property-adjust</command>
<property>/it-autoflight/input/vs</property>
@ -997,6 +876,12 @@
<pref-width>25</pref-width>
<pref-height>25</pref-height>
<legend>&lt;&lt;</legend>
<enable>
<equals>
<property>/it-autoflight/output/vert</property>
<value>5</value>
</equals>
</enable>
<binding>
<command>property-adjust</command>
<property>/it-autoflight/input/fpa</property>
@ -1012,6 +897,12 @@
<pref-width>25</pref-width>
<pref-height>25</pref-height>
<legend>&lt;</legend>
<enable>
<equals>
<property>/it-autoflight/output/vert</property>
<value>5</value>
</equals>
</enable>
<binding>
<command>property-adjust</command>
<property>/it-autoflight/input/fpa</property>
@ -1028,6 +919,12 @@
<pref-width>55</pref-width>
<property>/it-autoflight/input/fpa</property>
<live type="bool">true</live>
<enable>
<equals>
<property>/it-autoflight/output/vert</property>
<value>5</value>
</equals>
</enable>
<binding>
<command>dialog-apply</command>
</binding>
@ -1039,6 +936,12 @@
<pref-width>25</pref-width>
<pref-height>25</pref-height>
<legend>&gt;</legend>
<enable>
<equals>
<property>/it-autoflight/output/vert</property>
<value>5</value>
</equals>
</enable>
<binding>
<command>property-adjust</command>
<property>/it-autoflight/input/fpa</property>
@ -1055,6 +958,12 @@
<pref-width>25</pref-width>
<pref-height>25</pref-height>
<legend>&gt;&gt;</legend>
<enable>
<equals>
<property>/it-autoflight/output/vert</property>
<value>5</value>
</equals>
</enable>
<binding>
<command>property-adjust</command>
<property>/it-autoflight/input/fpa</property>

View file

@ -8,6 +8,106 @@
<!-- =============================================================== -->
<!-- Thrust Modes -->
<!-- =============================================================== -->
<filter>
<name>KTS INPUT FILTER</name>
<debug>false</debug>
<feedback-if-disabled>true</feedback-if-disabled>
<initialize-to>output</initialize-to>
<input>
<property>/it-autoflight/input/spd-kts</property>
</input>
<output>/it-autoflight/internal/kts</output>
<type>noise-spike</type>
<max-rate-of-change>
<condition>
<or>
<equals>
<property>/it-autoflight/output/athr</property>
<value>0</value>
</equals>
<equals>
<property>/gear/gear[1]/wow</property>
<value>1</value>
</equals>
<equals>
<property>/gear/gear[2]/wow</property>
<value>1</value>
</equals>
</or>
</condition>
<value>200</value>
</max-rate-of-change>
<max-rate-of-change>
<condition>
<and>
<equals>
<property>/it-autoflight/output/athr</property>
<value>1</value>
</equals>
<equals>
<property>/gear/gear[1]/wow</property>
<value>0</value>
</equals>
<equals>
<property>/gear/gear[2]/wow</property>
<value>0</value>
</equals>
</and>
</condition>
<value>10</value>
</max-rate-of-change>
</filter>
<filter>
<name>MACH INPUT FILTER</name>
<debug>false</debug>
<feedback-if-disabled>true</feedback-if-disabled>
<initialize-to>output</initialize-to>
<input>
<property>/it-autoflight/input/spd-mach</property>
</input>
<output>/it-autoflight/internal/mach</output>
<type>noise-spike</type>
<max-rate-of-change>
<condition>
<or>
<equals>
<property>/it-autoflight/output/athr</property>
<value>0</value>
</equals>
<equals>
<property>/gear/gear[1]/wow</property>
<value>1</value>
</equals>
<equals>
<property>/gear/gear[2]/wow</property>
<value>1</value>
</equals>
</or>
</condition>
<value>2</value>
</max-rate-of-change>
<max-rate-of-change>
<condition>
<and>
<equals>
<property>/it-autoflight/output/athr</property>
<value>1</value>
</equals>
<equals>
<property>/gear/gear[1]/wow</property>
<value>0</value>
</equals>
<equals>
<property>/gear/gear[2]/wow</property>
<value>0</value>
</equals>
</and>
</condition>
<value>0.1</value>
</max-rate-of-change>
</filter>
<!-- Engine 1 -->
<!-- Auto throttle -->
@ -56,7 +156,7 @@
<property>/velocities/airspeed-kt</property>
</input>
<reference>
<property>/it-autoflight/input/spd-kts</property>
<property>/it-autoflight/internal/kts</property>
</reference>
<output>
<property>/controls/engines/engine[0]/throttle-cmd-pid</property>
@ -123,7 +223,7 @@
<scale>500.0</scale>
</input>
<reference>
<property>/it-autoflight/input/spd-mach</property>
<property>/it-autoflight/internal/mach</property>
<scale>500.0</scale>
</reference>
<output>
@ -329,7 +429,7 @@
<property>/velocities/airspeed-kt</property>
</input>
<reference>
<property>/it-autoflight/input/spd-kts</property>
<property>/it-autoflight/internal/kts</property>
</reference>
<output>
<property>/controls/engines/engine[1]/throttle-cmd-pid</property>
@ -396,7 +496,7 @@
<scale>500.0</scale>
</input>
<reference>
<property>/it-autoflight/input/spd-mach</property>
<property>/it-autoflight/internal/mach</property>
<scale>500.0</scale>
</reference>
<output>

View file

@ -1,5 +1,7 @@
<?xml version="1.0"?>
<!-- IT-AUTOFLIGHT -->
<PropertyList>
<!-- =============================================================== -->
@ -388,10 +390,6 @@
<property>/it-autoflight/output/vert</property>
<value>7</value>
</not-equals>
<not-equals>
<property>/it-autoflight/output/vert</property>
<value>8</value>
</not-equals>
</and>
</condition>
</enable>
@ -676,7 +674,7 @@
</input>
<output>/controls/flight/aileron</output>
<type>noise-spike</type>
<max-rate-of-change>0.9</max-rate-of-change>
<max-rate-of-change>0.8</max-rate-of-change>
</filter>
<!-- =============================================================== -->
@ -691,23 +689,8 @@
<property>/it-autoflight/internal/altitude-5-sec-ahead</property>
</input>
<reference>
<condition>
<not-equals>
<property>/it-autoflight/output/vert</property>
<value>8</value>
</not-equals>
</condition>
<property>/it-autoflight/internal/alt</property>
</reference>
<reference>
<condition>
<equals>
<property>/it-autoflight/output/vert</property>
<value>8</value>
</equals>
</condition>
<property>/it-autoflight/internal/prof-alt</property>
</reference>
<gain>-8</gain>
<output>
<property>/it-autoflight/internal/target-fpm</property>
@ -912,104 +895,6 @@
</config>
</pid-controller>
<pid-controller>
<name>VNAV SPEED BY PITCH</name>
<debug>false</debug>
<enable>
<condition>
<equals>
<property>/it-autoflight/output/vert</property>
<value>8</value>
</equals>
</condition>
</enable>
<input>
<condition>
<equals>
<property>/it-autoflight/input/kts-mach</property>
<value>0</value>
</equals>
</condition>
<property>/it-autoflight/internal/lookahead-15-sec-airspeed-kt</property>
</input>
<input>
<condition>
<equals>
<property>/it-autoflight/input/kts-mach</property>
<value>1</value>
</equals>
</condition>
<property>/it-autoflight/internal/lookahead-15-sec-mach</property>
<scale>500.0</scale>
</input>
<reference>
<condition>
<equals>
<property>/it-autoflight/input/kts-mach</property>
<value>0</value>
</equals>
</condition>
<property>/it-autoflight/internal/flch-kts</property>
</reference>
<reference>
<condition>
<equals>
<property>/it-autoflight/input/kts-mach</property>
<value>1</value>
</equals>
</condition>
<property>/it-autoflight/internal/flch-mach</property>
<scale>500.0</scale>
</reference>
<output>
<property>/it-autoflight/internal/target-fpm-b</property>
</output>
<config>
<Kp>-50</Kp>
<beta>1.0</beta>
<alpha>0.1</alpha>
<gamma>0.0</gamma>
<Ti>2.5</Ti>
<Td>0.001</Td>
<u_min>
<condition>
<greater-than>
<property>/it-autoflight/internal/prof-alt</property>
<property>/instrumentation/altimeter/indicated-altitude-ft</property>
</greater-than>
</condition>
<value>150</value>
</u_min>
<u_min>
<condition>
<less-than>
<property>/it-autoflight/internal/prof-alt</property>
<property>/instrumentation/altimeter/indicated-altitude-ft</property>
</less-than>
</condition>
<value>-6000</value>
</u_min>
<u_max>
<condition>
<greater-than>
<property>/it-autoflight/internal/prof-alt</property>
<property>/instrumentation/altimeter/indicated-altitude-ft</property>
</greater-than>
</condition>
<value>10000</value>
</u_max>
<u_max>
<condition>
<less-than>
<property>/it-autoflight/internal/prof-alt</property>
<property>/instrumentation/altimeter/indicated-altitude-ft</property>
</less-than>
</condition>
<value>-150</value>
</u_max>
</config>
</pid-controller>
<filter>
<name>AUTOLAND FPM</name>
<type>gain</type>
@ -1062,10 +947,6 @@
<property>/it-autoflight/output/vert</property>
<value>7</value>
</equals>
<equals>
<property>/it-autoflight/output/vert</property>
<value>8</value>
</equals>
</or>
</condition>
</enable>
@ -1104,37 +985,11 @@
<property>/it-autoflight/output/vert</property>
<value>7</value>
</equals>
<and>
<equals>
<property>/it-autoflight/output/vert</property>
<value>8</value>
</equals>
<equals>
<property>/it-autoflight/output/prof-vert</property>
<value>4</value>
</equals>
</and>
</or>
</condition>
<property>/it-autoflight/internal/target-fpm-b</property>
<scale>0.16667</scale>
</reference>
<reference>
<condition>
<and>
<equals>
<property>/it-autoflight/output/vert</property>
<value>8</value>
</equals>
<equals>
<property>/it-autoflight/output/prof-vert</property>
<value>1</value>
</equals>
</and>
</condition>
<property>/it-autoflight/internal/prof-fpm</property>
<scale>0.16667</scale>
</reference>
<reference>
<condition>
<equals>
@ -1262,7 +1117,7 @@
</input>
<output>/it-autoflight/internal/target-pitch</output>
<type>noise-spike</type>
<max-rate-of-change>6</max-rate-of-change>
<max-rate-of-change>3</max-rate-of-change>
</filter>
<pid-controller>
@ -1337,7 +1192,7 @@
</input>
<output>/controls/flight/elevator</output>
<type>noise-spike</type>
<max-rate-of-change>0.4</max-rate-of-change>
<max-rate-of-change>0.2</max-rate-of-change>
</filter>
<!-- =============================================================== -->
@ -1599,7 +1454,6 @@
<max>30</max>
</filter>
<filter>
<name>FD: PITCH</name>
<debug>false</debug>