From 861eea1d2423394c4345602cc6e87ca1c0c31fca Mon Sep 17 00:00:00 2001 From: Joshua Davidson <joshuadavidson2000@gmail.com> Date: Wed, 25 Jul 2018 08:37:44 -0400 Subject: [PATCH] Control: AP bugfix --- Nasal/FMGC-b.nas | 16 ++++----- Systems/fmgc-drivers.xml | 78 ++++++++++++++++++++++++++++++++-------- Systems/fmgc-pitch.xml | 52 ++++++++++++++++++--------- revision.txt | 2 +- 4 files changed, 109 insertions(+), 39 deletions(-) diff --git a/Nasal/FMGC-b.nas b/Nasal/FMGC-b.nas index 6be8a027..8de3b2a7 100644 --- a/Nasal/FMGC-b.nas +++ b/Nasal/FMGC-b.nas @@ -291,8 +291,8 @@ var lateral = func { setprop("/it-autoflight/input/lat-arm", 0); setprop("/it-autoflight/output/loc-armed", 0); setprop("/it-autoflight/output/appr-armed", 0); - var hdg5sec = math.round(getprop("/it-autoflight/internal/heading-predicted")); - setprop("/it-autoflight/input/hdg", hdg5sec); + var hdgpredic = math.round(getprop("/it-autoflight/internal/heading-predicted")); + setprop("/it-autoflight/input/hdg", hdgpredic); setprop("/it-autoflight/output/lat", 0); setprop("/it-autoflight/mode/lat", "HDG"); setprop("/it-autoflight/mode/arm", " "); @@ -367,9 +367,9 @@ var vertical = func { } else { setprop("/it-autoflight/mode/arm", " "); } - var alt5sec = math.round(getprop("/it-autoflight/internal/altitude-predicted"), 100); - setprop("/it-autoflight/input/alt", alt5sec); - setprop("/it-autoflight/internal/alt", alt5sec); + var altpredic = math.round(getprop("/it-autoflight/internal/altitude-predicted"), 100); + setprop("/it-autoflight/input/alt", altpredic); + setprop("/it-autoflight/internal/alt", altpredic); thrustmode(); } else if (vertset == 1) { alandt.stop(); @@ -378,7 +378,7 @@ var vertical = func { setprop("/it-autoflight/output/appr-armed", 0); var altinput = getprop("/it-autoflight/input/alt"); setprop("/it-autoflight/internal/alt", altinput); - var vsnow = math.round(getprop("/it-autoflight/internal/vert-speed-fpm"), 100); + vsnow = math.round(getprop("/it-autoflight/internal/vert-speed-fpm"), 100); setprop("/it-autoflight/input/vs", vsnow); setprop("/it-autoflight/output/vert", 1); setprop("/it-autoflight/mode/vert", "V/S"); @@ -421,7 +421,7 @@ var vertical = func { var calt = getprop("/instrumentation/altimeter/indicated-altitude-ft"); var alt = getprop("/it-autoflight/internal/alt"); var dif = calt - alt; - var vsnow = getprop("/it-autoflight/internal/vert-speed-fpm"); + vsnow = getprop("/it-autoflight/internal/vert-speed-fpm"); if (calt < alt) { setprop("/it-autoflight/internal/max-vs", vsnow); } else if (calt > alt) { @@ -1205,7 +1205,7 @@ var mng_altcapt = func { } var mng_capture_alt = func { - var vsnow = getprop("/it-autoflight/internal/vert-speed-fpm"); + vsnow = getprop("/it-autoflight/internal/vert-speed-fpm"); mng_altcaptt.stop(); mng_des_fpmt.stop(); var calt = getprop("/instrumentation/altimeter/indicated-altitude-ft"); diff --git a/Systems/fmgc-drivers.xml b/Systems/fmgc-drivers.xml index d6a4ba14..6b14f50f 100644 --- a/Systems/fmgc-drivers.xml +++ b/Systems/fmgc-drivers.xml @@ -606,16 +606,46 @@ <gain>1.0</gain> <enable> <condition> - <and> - <not-equals> - <property>/it-autoflight/output/vert</property> - <value>4</value> - </not-equals> - <not-equals> - <property>/it-autoflight/output/vert</property> - <value>7</value> - </not-equals> - </and> + <not> + <or> + <equals> + <property>/it-autoflight/output/vert</property> + <value>4</value> + </equals> + <equals> + <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/vert-mng</property> + <value>4</value> + </equals> + </and> + </or> + <or> + <equals> + <property>/it-autoflight/output/ap1</property> + <value>1</value> + </equals> + <equals> + <property>/it-autoflight/output/ap2</property> + <value>1</value> + </equals> + <equals> + <property>/it-autoflight/output/fd1</property> + <value>1</value> + </equals> + <equals> + <property>/it-autoflight/output/fd2</property> + <value>1</value> + </equals> + </or> + </not> </condition> </enable> <input>/it-autoflight/internal/vert-speed-fpm</input> @@ -629,10 +659,30 @@ <gain>1.0</gain> <enable> <condition> - <not-equals> - <property>/it-autoflight/output/vert</property> - <value>5</value> - </not-equals> + <not> + <equals> + <property>/it-autoflight/output/vert</property> + <value>5</value> + </equals> + <or> + <equals> + <property>/it-autoflight/output/ap1</property> + <value>1</value> + </equals> + <equals> + <property>/it-autoflight/output/ap2</property> + <value>1</value> + </equals> + <equals> + <property>/it-autoflight/output/fd1</property> + <value>1</value> + </equals> + <equals> + <property>/it-autoflight/output/fd2</property> + <value>1</value> + </equals> + </or> + </not> </condition> </enable> <input>/it-autoflight/internal/vert-speed-fpm</input> diff --git a/Systems/fmgc-pitch.xml b/Systems/fmgc-pitch.xml index acfbe56b..dab0489c 100644 --- a/Systems/fmgc-pitch.xml +++ b/Systems/fmgc-pitch.xml @@ -135,26 +135,46 @@ <debug>false</debug> <enable> <condition> - <or> - <equals> - <property>/it-autoflight/output/vert</property> - <value>4</value> - </equals> - <equals> - <property>/it-autoflight/output/vert</property> - <value>7</value> - </equals> - <and> + <and> + <or> <equals> <property>/it-autoflight/output/vert</property> - <value>8</value> - </equals> - <equals> - <property>/it-autoflight/output/vert-mng</property> <value>4</value> </equals> - </and> - </or> + <equals> + <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/vert-mng</property> + <value>4</value> + </equals> + </and> + </or> + <or> + <equals> + <property>/it-autoflight/output/ap1</property> + <value>1</value> + </equals> + <equals> + <property>/it-autoflight/output/ap2</property> + <value>1</value> + </equals> + <equals> + <property>/it-autoflight/output/fd1</property> + <value>1</value> + </equals> + <equals> + <property>/it-autoflight/output/fd2</property> + <value>1</value> + </equals> + </or> + </and> </condition> </enable> <input> diff --git a/revision.txt b/revision.txt index e45a74e6..f203d38e 100644 --- a/revision.txt +++ b/revision.txt @@ -1 +1 @@ -4611 \ No newline at end of file +4613 \ No newline at end of file