Control: Rework AP, fix lots of stuff

This commit is contained in:
Joshua Davidson 2018-10-19 17:45:13 -04:00
parent e25c114c62
commit 568fa31d8b
5 changed files with 190 additions and 375 deletions

View file

@ -10,9 +10,7 @@
<PropertyList>
<!-- =============================================================== -->
<!-- Predictors -->
<!-- =============================================================== -->
<predict-simple>
<name>IAS 5 SECOND PREDICTOR</name>
@ -68,15 +66,12 @@
<filter-gain>0.0</filter-gain>
</predict-simple>
<!-- =============================================================== -->
<!-- Autopilot Helpers/Calculators -->
<!-- =============================================================== -->
<filter>
<name>AUTOLAND FD FPM</name>
<type>gain</type>
<gain>1.0</gain>
<update-interval-secs type="double">0.05</update-interval-secs>
<input>
<expression>
<table>
@ -94,7 +89,6 @@
<name>AUTOLAND FPM</name>
<type>gain</type>
<gain>1.0</gain>
<update-interval-secs type="double">0.05</update-interval-secs>
<input>
<expression>
<table>
@ -116,7 +110,6 @@
<name>FMGC MNG SPD</name>
<type>gain</type>
<gain>1.0</gain>
<update-interval-secs type="double">0.05</update-interval-secs>
<input>
<expression>
<product>
@ -138,7 +131,6 @@
<name>FMGC MNG MACH</name>
<type>gain</type>
<gain>1.0</gain>
<update-interval-secs type="double">0.05</update-interval-secs>
<input>
<expression>
<product>
@ -164,7 +156,6 @@
<name>FMGC Target IAS PFD</name>
<type>gain</type>
<gain>1.0</gain>
<update-interval-secs type="double">0.1</update-interval-secs>
<input>
<condition>
<equals>
@ -197,6 +188,7 @@
<filter>
<name>KTS INPUT FILTER</name>
<debug>false</debug>
<type>noise-spike</type>
<feedback-if-disabled>true</feedback-if-disabled>
<initialize-to>output</initialize-to>
<input>
@ -218,32 +210,6 @@
<property>/it-autoflight/settings/togaspd</property>
</input>
<output>/it-autoflight/internal/flch-kts</output>
<type>noise-spike</type>
<max-rate-of-change>
<condition>
<or>
<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>
<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>100</value>
</max-rate-of-change>
<max-rate-of-change>
<condition>
<and>
@ -257,6 +223,10 @@
<value>7</value>
</equals>
</or>
<equals>
<property>/it-autoflight/input/kts-mach</property>
<value>0</value>
</equals>
<equals>
<property>/gear/gear[1]/wow</property>
<value>0</value>
@ -269,44 +239,34 @@
</condition>
<value>5</value>
</max-rate-of-change>
<max-rate-of-change>100</max-rate-of-change>
</filter>
<filter>
<name>MACH INPUT FILTER</name>
<debug>false</debug>
<type>noise-spike</type>
<feedback-if-disabled>true</feedback-if-disabled>
<initialize-to>output</initialize-to>
<input>
<property>/it-autoflight/input/spd-mach</property>
</input>
<input>/it-autoflight/input/spd-mach</input>
<output>/it-autoflight/internal/flch-mach</output>
<type>noise-spike</type>
<max-rate-of-change>
<condition>
<or>
<not-equals>
<property>/it-autoflight/output/vert</property>
<value>4</value>
</not-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>1</value>
</max-rate-of-change>
<max-rate-of-change>
<condition>
<and>
<or>
<equals>
<property>/it-autoflight/output/vert</property>
<value>4</value>
</equals>
<equals>
<property>/it-autoflight/output/vert</property>
<value>7</value>
</equals>
</or>
<equals>
<property>/it-autoflight/input/kts-mach</property>
<value>1</value>
</equals>
<equals>
<property>/gear/gear[1]/wow</property>
<value>0</value>
@ -319,6 +279,7 @@
</condition>
<value>0.05</value>
</max-rate-of-change>
<max-rate-of-change>1</max-rate-of-change>
</filter>
<filter>
@ -333,7 +294,6 @@
</equals>
</condition>
</enable>
<update-interval-secs type="double">0.5</update-interval-secs>
<input>/instrumentation/airspeed-indicator/indicated-speed-kt</input>
<output>/it-autoflight/input/spd-kts</output>
</filter>
@ -350,7 +310,6 @@
</equals>
</condition>
</enable>
<update-interval-secs type="double">0.5</update-interval-secs>
<input>/instrumentation/airspeed-indicator/indicated-mach</input>
<output>/it-autoflight/input/spd-mach</output>
</filter>
@ -365,9 +324,7 @@
</condition>
<property>/orientation/heading-deg</property>
</input>
<input>
<property>/orientation/heading-magnetic-deg</property>
</input>
<input>/orientation/heading-magnetic-deg</input>
<reference>0</reference>
<output>/it-autoflight/internal/heading-deg</output>
<output>/instrumentation/pfd/heading-deg</output>
@ -522,7 +479,10 @@
<input>
<expression>
<floor>
<sum>
<property>/it-autoflight/internal/vert-speed-fpm</property>
<value>0.5</value>
</sum>
</floor>
</expression>
</input>
@ -532,31 +492,18 @@
<filter>
<name>VERT SPEED FILTER</name>
<debug>false</debug>
<type>noise-spike</type>
<feedback-if-disabled>true</feedback-if-disabled>
<initialize-to>output</initialize-to>
<input>
<property>/it-autoflight/input/vs</property>
</input>
<input>/it-autoflight/input/vs</input>
<output>/it-autoflight/internal/vs</output>
<type>noise-spike</type>
<max-rate-of-change>
<condition>
<or>
<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>2000</value>
</max-rate-of-change>
<max-rate-of-change>
<condition>
<and>
<equals>
<property>/it-autoflight/output/vert</property>
<value>1</value>
</equals>
<equals>
<property>/gear/gear[1]/wow</property>
<value>0</value>
@ -569,6 +516,7 @@
</condition>
<value>300</value>
</max-rate-of-change>
<max-rate-of-change>2000</max-rate-of-change>
</filter>
<filter>
@ -831,48 +779,12 @@
<output>/it-autoflight/internal/fpa</output>
</filter>
<!-- =============================================================== -->
<!-- Flight Director -->
<!-- =============================================================== -->
<filter>
<name>IT-CONTROLLER: TARGET ROLL CMD</name>
<debug>false</debug>
<feedback-if-disabled>true</feedback-if-disabled>
<initialize-to>output</initialize-to>
<input>
<property>/it-autoflight/internal/target-roll-deg</property>
</input>
<output>/it-autoflight/internal/target-roll-fd</output>
<type>noise-spike</type>
<max-rate-of-change>15</max-rate-of-change>
</filter>
<filter>
<name>FD: ROLL</name>
<debug>false</debug>
<type>gain</type>
<gain>1.0</gain>
<input>
<condition>
<and>
<not-equals>
<property>/it-autoflight/output/lat</property>
<value>4</value>
</not-equals>
<not-equals>
<property>/it-autoflight/output/lat</property>
<value>5</value>
</not-equals>
</and>
</condition>
<expression>
<dif>
<property>/it-autoflight/internal/target-roll-fd</property>
<property>/orientation/roll-deg</property>
</dif>
</expression>
</input>
<input>
<condition>
<or>
@ -886,9 +798,37 @@
</equals>
</or>
</condition>
<value>0</value>
</input>
<input>/it-autoflight/internal/target-roll-deg</input>
<output>/it-autoflight/internal/target-roll-fd</output>
<max-rate-of-change>
<condition>
<and>
<not-equals>
<property>/it-autoflight/output/fd1</property>
<value>1</value>
</not-equals>
<not-equals>
<property>/it-autoflight/output/fd1</property>
<value>1</value>
</not-equals>
</and>
</condition>
<value>50</value>
</max-rate-of-change>
<max-rate-of-change>15</max-rate-of-change>
</filter>
<filter>
<name>FD: ROLL</name>
<debug>false</debug>
<type>gain</type>
<gain>1.0</gain>
<input>
<expression>
<dif>
<value>0</value>
<property>/it-autoflight/internal/target-roll-fd</property>
<property>/orientation/roll-deg</property>
</dif>
</expression>

View file

@ -45,15 +45,9 @@
</condition>
<property>/it-autoflight/internal/mng-alt</property>
</reference>
<output>
<property>/it-autoflight/internal/target-fpm</property>
</output>
<min>
<property>/it-autoflight/internal/min-vs</property>
</min>
<max>
<property>/it-autoflight/internal/max-vs</property>
</max>
<output>/it-autoflight/internal/target-fpm</output>
<min>/it-autoflight/internal/min-vs</min>
<max>/it-autoflight/internal/max-vs</max>
</filter>
<pid-controller>
@ -87,15 +81,9 @@
</and>
</condition>
</enable>
<input>
<property>/it-autoflight/internal/fpa</property>
</input>
<reference>
<property>/it-autoflight/input/fpa</property>
</reference>
<output>
<property>/it-autoflight/internal/target-fpm-d</property>
</output>
<input>/it-autoflight/internal/fpa</input>
<reference>/it-autoflight/input/fpa</reference>
<output>/it-autoflight/internal/target-fpm-d</output>
<config>
<Kp>
<expression>
@ -106,9 +94,6 @@
</table>
</expression>
</Kp>
<beta>1.0</beta>
<alpha>0.1</alpha>
<gamma>0.0</gamma>
<Ti>2.0</Ti>
<Td>0.002</Td>
<u_min>
@ -215,9 +200,7 @@
<property>/it-autoflight/internal/flch-mach</property>
<scale>1000.0</scale>
</reference>
<output>
<property>/it-autoflight/internal/target-fpm-b</property>
</output>
<output>/it-autoflight/internal/target-fpm-b</output>
<config>
<Kp>
<condition>
@ -237,9 +220,6 @@
</condition>
<value>-60</value>
</Kp>
<beta>1.0</beta>
<alpha>0.1</alpha>
<gamma>0.0</gamma>
<Ti>2.5</Ti>
<Td>0.001</Td>
<u_min>
@ -505,9 +485,7 @@
</and>
</condition>
</enable>
<input>
<property>/it-autoflight/internal/vert-speed-fpm</property>
</input>
<input>/it-autoflight/internal/vert-speed-fpm</input>
<reference>
<condition>
<or>
@ -590,9 +568,7 @@
</condition>
<property>/it-autoflight/internal/nav1-rate-of-climb-fpm</property>
</reference>
<output>
<property>/it-autoflight/internal/target-pitch-deg</property>
</output>
<output>/it-autoflight/internal/target-pitch-deg</output>
<config>
<Kp>
<condition>
@ -717,15 +693,9 @@
<debug>false</debug>
<type>gain</type>
<gain>0.15</gain>
<input>
<property>/orientation/pitch-deg</property>
</input>
<reference>
<property>/it-autoflight/internal/target-pitch-deg</property>
</reference>
<output>
<property>/fdm/jsbsim/fbw/fmgc/pitch-cmd</property> <!-- Inputs to the FBW Pitch Rate -->
</output>
<input>/orientation/pitch-deg</input>
<reference>/it-autoflight/internal/target-pitch-deg</reference>
<output>/fdm/jsbsim/fbw/fmgc/pitch-cmd</output> <!-- Inputs to the FBW Pitch -->
<min>-0.3</min>
<max>0.3</max>
</filter>

View file

@ -51,15 +51,9 @@
</and>
</condition>
</enable>
<input>
<property>/it-autoflight/internal/heading-error-deg</property>
</input>
<reference>
<value>0</value>
</reference>
<output>
<property>/it-autoflight/internal/target-roll-deg</property>
</output>
<input>/it-autoflight/internal/heading-error-deg</input>
<reference>0</reference>
<output>/it-autoflight/internal/target-roll-deg</output>
<config>
<Kp>-1.8</Kp>
<Ki>-0.000001</Ki>
@ -67,9 +61,7 @@
<property>/it-autoflight/internal/bank-limit</property>
<scale>-1</scale>
</min>
<max>
<property>/it-autoflight/internal/bank-limit</property>
</max>
<max>/it-autoflight/internal/bank-limit</max>
</config>
</pi-simple-controller>
@ -104,30 +96,9 @@
</and>
</condition>
</enable>
<input>
<condition>
<equals>
<property>/it-autoflight/settings/use-backcourse</property>
<value>0</value>
</equals>
</condition>
<property>/it-autoflight/internal/nav-heading-error-deg</property>
</input>
<input>
<condition>
<equals>
<property>/it-autoflight/settings/use-backcourse</property>
<value>1</value>
</equals>
</condition>
<property>/it-autoflight/internal/nav-bc-heading-error-deg</property>
</input>
<reference>
<value>0.0</value>
</reference>
<output>
<property>/it-autoflight/internal/target-roll-deg</property>
</output>
<input>/it-autoflight/internal/nav-heading-error-deg</input>
<reference>0</reference>
<output>/it-autoflight/internal/target-roll-deg</output>
<config>
<Kp>-2.8</Kp>
<Ki>-0.0001</Ki>
@ -135,9 +106,7 @@
<property>/it-autoflight/internal/bank-limit</property>
<scale>-1</scale>
</min>
<max>
<property>/it-autoflight/internal/bank-limit</property>
</max>
<max>/it-autoflight/internal/bank-limit</max>
</config>
</pi-simple-controller>
@ -174,48 +143,14 @@
<property>/it-autoflight/internal/bank-limit</property>
<scale>-1</scale>
</min>
<max>
<property>/it-autoflight/internal/bank-limit</property>
</max>
<max>/it-autoflight/internal/bank-limit</max>
</filter>
<filter>
<name>IT-CONTROLLER: TARGET ROLL CMD</name>
<debug>false</debug>
<feedback-if-disabled>true</feedback-if-disabled>
<initialize-to>output</initialize-to>
<input>
<property>/it-autoflight/internal/target-roll-deg</property>
</input>
<output>/it-autoflight/internal/target-roll</output>
<type>noise-spike</type>
<max-rate-of-change>6</max-rate-of-change>
</filter>
<filter>
<name>System Command: Roll Rate</name>
<debug>false</debug>
<type>gain</type>
<gain>-0.1</gain>
<input>
<property>/orientation/roll-deg</property>
</input>
<reference>
<condition>
<and>
<not-equals>
<property>/it-autoflight/output/lat</property>
<value>4</value>
</not-equals>
<not-equals>
<property>/it-autoflight/output/lat</property>
<value>5</value>
</not-equals>
</and>
</condition>
<property>/it-autoflight/internal/target-roll</property>
</reference>
<reference>
<condition>
<or>
<equals>
@ -229,10 +164,58 @@
</or>
</condition>
<value>0</value>
</reference>
<output>
<property>/fdm/jsbsim/fbw/fmgc/roll-cmd</property> <!-- Inputs to the FBW Roll Rate -->
</output>
</input>
<input>/it-autoflight/internal/target-roll-deg</input>
<output>/it-autoflight/internal/target-roll</output>
<max-rate-of-change>
<condition>
<and>
<not-equals>
<property>/it-autoflight/output/ap1</property>
<value>1</value>
</not-equals>
<not-equals>
<property>/it-autoflight/output/ap2</property>
<value>1</value>
</not-equals>
<not-equals>
<property>/it-autoflight/output/fd1</property>
<value>1</value>
</not-equals>
<not-equals>
<property>/it-autoflight/output/fd2</property>
<value>1</value>
</not-equals>
</and>
</condition>
<value>50</value>
</max-rate-of-change>
<max-rate-of-change>
<condition>
<and>
<not-equals>
<property>/it-autoflight/output/ap1</property>
<value>1</value>
</not-equals>
<not-equals>
<property>/it-autoflight/output/ap2</property>
<value>1</value>
</not-equals>
</and>
</condition>
<value>15</value>
</max-rate-of-change>
<max-rate-of-change>8</max-rate-of-change>
</filter>
<filter>
<name>System Command: Roll Rate</name>
<debug>false</debug>
<type>gain</type>
<gain>-0.1</gain>
<input>/orientation/roll-deg</input>
<reference>/it-autoflight/internal/target-roll</reference>
<output>/fdm/jsbsim/fbw/fmgc/roll-cmd</output> <!-- Inputs to the FBW Roll -->
<min>-0.32</min>
<max>0.32</max>
</filter>
@ -252,12 +235,8 @@
</equals>
</condition>
</enable>
<input>
<property>/it-autoflight/internal/nav-heading-error-deg</property>
</input>
<reference>
<value>0</value>
</reference>
<input>/it-autoflight/internal/nav-heading-error-deg</input>
<reference>0</reference>
<output>/it-autoflight/internal/rudder-cmd</output>
<config>
<Kp>
@ -299,6 +278,7 @@
<filter>
<name>IT-CONTROLLER: RUDDER CMD</name>
<debug>false</debug>
<type>noise-spike</type>
<feedback-if-disabled>true</feedback-if-disabled>
<initialize-to>output</initialize-to>
<input>
@ -319,8 +299,7 @@
</condition>
<property>/it-autoflight/internal/rudder-cmd</property>
</input>
<output>/fdm/jsbsim/fbw/fmgc/yaw-cmd</output>
<type>noise-spike</type>
<output>/fdm/jsbsim/fbw/fmgc/yaw-cmd</output> <!-- Inputs to the FBW Yaw -->
<max-rate-of-change>0.6</max-rate-of-change>
</filter>

View file

@ -8,43 +8,16 @@
<PropertyList>
<!-- =============================================================== -->
<!-- Thrust Modes -->
<!-- =============================================================== -->
<!-- Thrust Axis -->
<filter>
<name>KTS INPUT FILTER</name>
<debug>false</debug>
<type>noise-spike</type>
<feedback-if-disabled>true</feedback-if-disabled>
<initialize-to>output</initialize-to>
<input>
<property>/it-autoflight/input/spd-kts</property>
</input>
<input>/it-autoflight/input/spd-kts</input>
<output>/it-autoflight/internal/kts</output>
<type>noise-spike</type>
<max-rate-of-change>
<condition>
<or>
<not-equals>
<property>/it-autoflight/output/thr-mode</property>
<value>0</value>
</not-equals>
<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>
@ -56,6 +29,10 @@
<property>/it-autoflight/output/athr</property>
<value>1</value>
</equals>
<equals>
<property>/it-autoflight/input/kts-mach</property>
<value>0</value>
</equals>
<equals>
<property>/gear/gear[1]/wow</property>
<value>0</value>
@ -68,41 +45,17 @@
</condition>
<value>10</value>
</max-rate-of-change>
<max-rate-of-change>200</max-rate-of-change>
</filter>
<filter>
<name>MACH INPUT FILTER</name>
<debug>false</debug>
<type>noise-spike</type>
<feedback-if-disabled>true</feedback-if-disabled>
<initialize-to>output</initialize-to>
<input>
<property>/it-autoflight/input/spd-mach</property>
</input>
<input>/it-autoflight/input/spd-mach</input>
<output>/it-autoflight/internal/mach</output>
<type>noise-spike</type>
<max-rate-of-change>
<condition>
<or>
<not-equals>
<property>/it-autoflight/output/thr-mode</property>
<value>0</value>
</not-equals>
<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>
@ -114,6 +67,10 @@
<property>/it-autoflight/output/athr</property>
<value>1</value>
</equals>
<equals>
<property>/it-autoflight/input/kts-mach</property>
<value>1</value>
</equals>
<equals>
<property>/gear/gear[1]/wow</property>
<value>0</value>
@ -126,6 +83,7 @@
</condition>
<value>0.1</value>
</max-rate-of-change>
<max-rate-of-change>2</max-rate-of-change>
</filter>
<filter>
@ -250,28 +208,15 @@
</and>
</condition>
</enable>
<input>
<property>/instrumentation/airspeed-indicator/indicated-speed-kt</property>
</input>
<reference>
<property>/it-autoflight/internal/kts</property>
</reference>
<output>
<property>/controls/engines/throttle-cmd-pid</property>
</output>
<input>/instrumentation/airspeed-indicator/indicated-speed-kt</input>
<reference>/it-autoflight/internal/kts</reference>
<output>/controls/engines/throttle-cmd-pid</output>
<config>
<Kp>0.055</Kp>
<beta>1.0</beta>
<alpha>0.1</alpha>
<gamma>0.0</gamma>
<Ti>9.0</Ti>
<Td>0.00001</Td>
<u_min>
<property>/controls/engines/idle-limit</property>
</u_min>
<u_max>
<property>/controls/engines/throttle-pid-max</property>
</u_max>
<u_min>/controls/engines/idle-limit</u_min>
<u_max>/controls/engines/throttle-pid-max</u_max>
</config>
</pid-controller>
@ -390,22 +335,13 @@
<property>/it-autoflight/internal/mach</property>
<scale>1000.0</scale>
</reference>
<output>
<property>/controls/engines/throttle-cmd-pid</property>
</output>
<output>/controls/engines/throttle-cmd-pid</output>
<config>
<Kp>0.055</Kp>
<beta>1.0</beta>
<alpha>0.1</alpha>
<gamma>0.0</gamma>
<Ti>9.0</Ti>
<Td>0.00001</Td>
<u_min>
<property>/controls/engines/idle-limit</property>
</u_min>
<u_max>
<property>/controls/engines/throttle-pid-max</property>
</u_max>
<u_min>/controls/engines/idle-limit</u_min>
<u_max>/controls/engines/throttle-pid-max</u_max>
</config>
</pid-controller>
@ -512,12 +448,8 @@
</and>
</condition>
</enable>
<input>
<value>0.0</value>
</input>
<output>
<property>/controls/engines/throttle-cmd-pid</property>
</output>
<input>0.0</input>
<output>/controls/engines/throttle-cmd-pid</output>
</filter>
<filter>
@ -623,12 +555,8 @@
</and>
</condition>
</enable>
<input>
<value>1.0</value>
</input>
<output>
<property>/controls/engines/throttle-cmd-pid</property>
</output>
<input>1.0</input>
<output>/controls/engines/throttle-cmd-pid</output>
</filter>
<filter>
@ -725,12 +653,10 @@
</not-equals>
</and>
</condition>
<value>1</value>
<value>1.0</value>
</input>
<input>0</input>
<output>
<property>/controls/engines/throttle-cmd-pid</property>
</output>
<input>0.0</input>
<output>/controls/engines/throttle-cmd-pid</output>
</filter>
</PropertyList>

View file

@ -1 +1 @@
4678
4679