Control: Much better and smoother A/THR and FADEC logic, but was a pain to code!

This commit is contained in:
Joshua Davidson 2018-05-23 19:04:47 -04:00
parent 5fe4e3b900
commit fd52c1ea2b
4 changed files with 854 additions and 45 deletions

View file

@ -262,6 +262,430 @@
<output>/engines/engine[1]/n1-actual-cmd</output>
</filter>
<filter>
<name>A/THR FEED 1</name>
<type>noise-spike</type>
<input>/controls/engines/throttle-cmd-pid</input>
<output>/controls/engines/engine[0]/throttle-cmd</output>
<max-rate-of-change>
<condition>
<or>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<value>0</value>
</equals>
<less-than>
<property>/controls/engines/engine[0]/throttle-pos</property>
<value>0.83</value>
</less-than>
<equals>
<property>/systems/thrust/state1</property>
<value>MAN THR</value>
</equals>
</and>
<and>
<greater-than-equals>
<property>/controls/engines/engine[0]/throttle-pos</property>
<value>0.83</value>
</greater-than-equals>
<equals>
<property>/systems/thrust/state1</property>
<value>MAN THR</value>
</equals>
</and>
<and>
<equals>
<property>/it-autoflight/output/athr</property>
<value>0</value>
</equals>
<or>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<value>1</value>
</equals>
<equals>
<property>/systems/thrust/lim-flex</property>
<value>0</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<value>MCT</value>
</equals>
</and>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<value>1</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<value>MAN THR</value>
</equals>
</and>
<equals>
<property>/systems/thrust/state1</property>
<value>CL</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<value>MAN</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<value>IDLE</value>
</equals>
</or>
</and>
</or>
</condition>
<value>1000</value>
</max-rate-of-change>
<max-rate-of-change>
<condition>
<and>
<equals>
<property>/it-autoflight/output/athr</property>
<value>1</value>
</equals>
<or>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<value>1</value>
</equals>
<equals>
<property>/systems/thrust/lim-flex</property>
<value>0</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<value>MCT</value>
</equals>
</and>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<value>1</value>
</equals>
<less-than>
<property>/controls/engines/engine[0]/throttle-pos</property>
<value>0.83</value>
</less-than>
<equals>
<property>/systems/thrust/state1</property>
<value>MAN THR</value>
</equals>
</and>
<equals>
<property>/systems/thrust/state1</property>
<value>CL</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<value>MAN</value>
</equals>
</or>
<equals>
<property>/it-autoflight/output/thr-mode</property>
<value>0</value>
</equals>
</and>
</condition>
<value>0.3</value>
</max-rate-of-change>
<max-rate-of-change>
<condition>
<and>
<equals>
<property>/it-autoflight/output/athr</property>
<value>1</value>
</equals>
<or>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<value>1</value>
</equals>
<equals>
<property>/systems/thrust/lim-flex</property>
<value>0</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<value>MCT</value>
</equals>
</and>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<value>1</value>
</equals>
<less-than>
<property>/controls/engines/engine[0]/throttle-pos</property>
<value>0.83</value>
</less-than>
<equals>
<property>/systems/thrust/state1</property>
<value>MAN THR</value>
</equals>
</and>
<equals>
<property>/systems/thrust/state1</property>
<value>CL</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<value>MAN</value>
</equals>
</or>
<not-equals>
<property>/it-autoflight/output/thr-mode</property>
<value>0</value>
</not-equals>
</and>
</condition>
<value>0.05</value>
</max-rate-of-change>
<max-rate-of-change>1000</max-rate-of-change>
</filter>
<filter>
<name>A/THR FEED LIMIT 1</name>
<type>gain</type>
<gain>1.0</gain>
<input>/controls/engines/engine[0]/throttle-cmd</input>
<output>/controls/engines/engine[0]/throttle-cmd-feed</output>
<min>
<condition>
<equals>
<property>/it-autoflight/mode/thr</property>
<value>RETARD</value>
</equals>
</condition>
<value>0.0</value>
</min>
<min>
<property>/controls/engines/idle-limit</property>
</min>
<max>
<property>/controls/engines/engine[0]/throttle-man</property>
</max>
</filter>
<filter>
<name>A/THR FEED 2</name>
<type>noise-spike</type>
<input>/controls/engines/throttle-cmd-pid</input>
<output>/controls/engines/engine[1]/throttle-cmd</output>
<max-rate-of-change>
<condition>
<or>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<value>0</value>
</equals>
<less-than>
<property>/controls/engines/engine[1]/throttle-pos</property>
<value>0.83</value>
</less-than>
<equals>
<property>/systems/thrust/state2</property>
<value>MAN THR</value>
</equals>
</and>
<and>
<greater-than-equals>
<property>/controls/engines/engine[1]/throttle-pos</property>
<value>0.83</value>
</greater-than-equals>
<equals>
<property>/systems/thrust/state2</property>
<value>MAN THR</value>
</equals>
</and>
<and>
<equals>
<property>/it-autoflight/output/athr</property>
<value>0</value>
</equals>
<or>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<value>1</value>
</equals>
<equals>
<property>/systems/thrust/lim-flex</property>
<value>0</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<value>MCT</value>
</equals>
</and>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<value>1</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<value>MAN THR</value>
</equals>
</and>
<equals>
<property>/systems/thrust/state2</property>
<value>CL</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<value>MAN</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<value>IDLE</value>
</equals>
</or>
</and>
</or>
</condition>
<value>1000</value>
</max-rate-of-change>
<max-rate-of-change>
<condition>
<and>
<equals>
<property>/it-autoflight/output/athr</property>
<value>1</value>
</equals>
<or>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<value>1</value>
</equals>
<equals>
<property>/systems/thrust/lim-flex</property>
<value>0</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<value>MCT</value>
</equals>
</and>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<value>1</value>
</equals>
<less-than>
<property>/controls/engines/engine[1]/throttle-pos</property>
<value>0.83</value>
</less-than>
<equals>
<property>/systems/thrust/state2</property>
<value>MAN THR</value>
</equals>
</and>
<equals>
<property>/systems/thrust/state2</property>
<value>CL</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<value>MAN</value>
</equals>
</or>
<equals>
<property>/it-autoflight/output/thr-mode</property>
<value>0</value>
</equals>
</and>
</condition>
<value>0.3</value>
</max-rate-of-change>
<max-rate-of-change>
<condition>
<and>
<equals>
<property>/it-autoflight/output/athr</property>
<value>1</value>
</equals>
<or>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<value>1</value>
</equals>
<equals>
<property>/systems/thrust/lim-flex</property>
<value>0</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<value>MCT</value>
</equals>
</and>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<value>1</value>
</equals>
<less-than>
<property>/controls/engines/engine[1]/throttle-pos</property>
<value>0.83</value>
</less-than>
<equals>
<property>/systems/thrust/state2</property>
<value>MAN THR</value>
</equals>
</and>
<equals>
<property>/systems/thrust/state2</property>
<value>CL</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<value>MAN</value>
</equals>
</or>
<not-equals>
<property>/it-autoflight/output/thr-mode</property>
<value>0</value>
</not-equals>
</and>
</condition>
<value>0.05</value>
</max-rate-of-change>
<max-rate-of-change>1000</max-rate-of-change>
</filter>
<filter>
<name>A/THR FEED LIMIT 2</name>
<type>gain</type>
<gain>1.0</gain>
<input>/controls/engines/engine[1]/throttle-cmd</input>
<output>/controls/engines/engine[1]/throttle-cmd-feed</output>
<min>
<condition>
<equals>
<property>/it-autoflight/mode/thr</property>
<value>RETARD</value>
</equals>
</condition>
<value>0.0</value>
</min>
<min>
<property>/controls/engines/idle-limit</property>
</min>
<max>
<property>/controls/engines/engine[1]/throttle-man</property>
</max>
</filter>
<filter>
<name>Throttle 1</name>
<debug>false</debug>
@ -435,7 +859,7 @@
</or>
</and>
</condition>
<property>/controls/engines/engine[0]/throttle-cmd</property>
<property>/controls/engines/engine[0]/throttle-cmd-feed</property>
</input>
<output>
<property>/controls/engines/engine[0]/throttle-fdm</property>
@ -615,7 +1039,7 @@
</or>
</and>
</condition>
<property>/controls/engines/engine[1]/throttle-cmd</property>
<property>/controls/engines/engine[1]/throttle-cmd-feed</property>
</input>
<output>
<property>/controls/engines/engine[1]/throttle-fdm</property>

View file

@ -643,6 +643,430 @@
<output>/engines/engine[1]/n1-actual-cmd</output>
</filter>
<filter>
<name>A/THR FEED 1</name>
<type>noise-spike</type>
<input>/controls/engines/throttle-cmd-pid</input>
<output>/controls/engines/engine[0]/throttle-cmd</output>
<max-rate-of-change>
<condition>
<or>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<value>0</value>
</equals>
<less-than>
<property>/controls/engines/engine[0]/throttle-pos</property>
<value>0.83</value>
</less-than>
<equals>
<property>/systems/thrust/state1</property>
<value>MAN THR</value>
</equals>
</and>
<and>
<greater-than-equals>
<property>/controls/engines/engine[0]/throttle-pos</property>
<value>0.83</value>
</greater-than-equals>
<equals>
<property>/systems/thrust/state1</property>
<value>MAN THR</value>
</equals>
</and>
<and>
<equals>
<property>/it-autoflight/output/athr</property>
<value>0</value>
</equals>
<or>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<value>1</value>
</equals>
<equals>
<property>/systems/thrust/lim-flex</property>
<value>0</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<value>MCT</value>
</equals>
</and>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<value>1</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<value>MAN THR</value>
</equals>
</and>
<equals>
<property>/systems/thrust/state1</property>
<value>CL</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<value>MAN</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<value>IDLE</value>
</equals>
</or>
</and>
</or>
</condition>
<value>1000</value>
</max-rate-of-change>
<max-rate-of-change>
<condition>
<and>
<equals>
<property>/it-autoflight/output/athr</property>
<value>1</value>
</equals>
<or>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<value>1</value>
</equals>
<equals>
<property>/systems/thrust/lim-flex</property>
<value>0</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<value>MCT</value>
</equals>
</and>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<value>1</value>
</equals>
<less-than>
<property>/controls/engines/engine[0]/throttle-pos</property>
<value>0.83</value>
</less-than>
<equals>
<property>/systems/thrust/state1</property>
<value>MAN THR</value>
</equals>
</and>
<equals>
<property>/systems/thrust/state1</property>
<value>CL</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<value>MAN</value>
</equals>
</or>
<equals>
<property>/it-autoflight/output/thr-mode</property>
<value>0</value>
</equals>
</and>
</condition>
<value>0.3</value>
</max-rate-of-change>
<max-rate-of-change>
<condition>
<and>
<equals>
<property>/it-autoflight/output/athr</property>
<value>1</value>
</equals>
<or>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<value>1</value>
</equals>
<equals>
<property>/systems/thrust/lim-flex</property>
<value>0</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<value>MCT</value>
</equals>
</and>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<value>1</value>
</equals>
<less-than>
<property>/controls/engines/engine[0]/throttle-pos</property>
<value>0.83</value>
</less-than>
<equals>
<property>/systems/thrust/state1</property>
<value>MAN THR</value>
</equals>
</and>
<equals>
<property>/systems/thrust/state1</property>
<value>CL</value>
</equals>
<equals>
<property>/systems/thrust/state1</property>
<value>MAN</value>
</equals>
</or>
<not-equals>
<property>/it-autoflight/output/thr-mode</property>
<value>0</value>
</not-equals>
</and>
</condition>
<value>0.05</value>
</max-rate-of-change>
<max-rate-of-change>1000</max-rate-of-change>
</filter>
<filter>
<name>A/THR FEED LIMIT 1</name>
<type>gain</type>
<gain>1.0</gain>
<input>/controls/engines/engine[0]/throttle-cmd</input>
<output>/controls/engines/engine[0]/throttle-cmd-feed</output>
<min>
<condition>
<equals>
<property>/it-autoflight/mode/thr</property>
<value>RETARD</value>
</equals>
</condition>
<value>0.0</value>
</min>
<min>
<property>/controls/engines/idle-limit</property>
</min>
<max>
<property>/controls/engines/engine[0]/throttle-man</property>
</max>
</filter>
<filter>
<name>A/THR FEED 2</name>
<type>noise-spike</type>
<input>/controls/engines/throttle-cmd-pid</input>
<output>/controls/engines/engine[1]/throttle-cmd</output>
<max-rate-of-change>
<condition>
<or>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<value>0</value>
</equals>
<less-than>
<property>/controls/engines/engine[1]/throttle-pos</property>
<value>0.83</value>
</less-than>
<equals>
<property>/systems/thrust/state2</property>
<value>MAN THR</value>
</equals>
</and>
<and>
<greater-than-equals>
<property>/controls/engines/engine[1]/throttle-pos</property>
<value>0.83</value>
</greater-than-equals>
<equals>
<property>/systems/thrust/state2</property>
<value>MAN THR</value>
</equals>
</and>
<and>
<equals>
<property>/it-autoflight/output/athr</property>
<value>0</value>
</equals>
<or>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<value>1</value>
</equals>
<equals>
<property>/systems/thrust/lim-flex</property>
<value>0</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<value>MCT</value>
</equals>
</and>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<value>1</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<value>MAN THR</value>
</equals>
</and>
<equals>
<property>/systems/thrust/state2</property>
<value>CL</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<value>MAN</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<value>IDLE</value>
</equals>
</or>
</and>
</or>
</condition>
<value>1000</value>
</max-rate-of-change>
<max-rate-of-change>
<condition>
<and>
<equals>
<property>/it-autoflight/output/athr</property>
<value>1</value>
</equals>
<or>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<value>1</value>
</equals>
<equals>
<property>/systems/thrust/lim-flex</property>
<value>0</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<value>MCT</value>
</equals>
</and>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<value>1</value>
</equals>
<less-than>
<property>/controls/engines/engine[1]/throttle-pos</property>
<value>0.83</value>
</less-than>
<equals>
<property>/systems/thrust/state2</property>
<value>MAN THR</value>
</equals>
</and>
<equals>
<property>/systems/thrust/state2</property>
<value>CL</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<value>MAN</value>
</equals>
</or>
<equals>
<property>/it-autoflight/output/thr-mode</property>
<value>0</value>
</equals>
</and>
</condition>
<value>0.3</value>
</max-rate-of-change>
<max-rate-of-change>
<condition>
<and>
<equals>
<property>/it-autoflight/output/athr</property>
<value>1</value>
</equals>
<or>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<value>1</value>
</equals>
<equals>
<property>/systems/thrust/lim-flex</property>
<value>0</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<value>MCT</value>
</equals>
</and>
<and>
<equals>
<property>/systems/thrust/eng-out</property>
<value>1</value>
</equals>
<less-than>
<property>/controls/engines/engine[1]/throttle-pos</property>
<value>0.83</value>
</less-than>
<equals>
<property>/systems/thrust/state2</property>
<value>MAN THR</value>
</equals>
</and>
<equals>
<property>/systems/thrust/state2</property>
<value>CL</value>
</equals>
<equals>
<property>/systems/thrust/state2</property>
<value>MAN</value>
</equals>
</or>
<not-equals>
<property>/it-autoflight/output/thr-mode</property>
<value>0</value>
</not-equals>
</and>
</condition>
<value>0.05</value>
</max-rate-of-change>
<max-rate-of-change>1000</max-rate-of-change>
</filter>
<filter>
<name>A/THR FEED LIMIT 2</name>
<type>gain</type>
<gain>1.0</gain>
<input>/controls/engines/engine[1]/throttle-cmd</input>
<output>/controls/engines/engine[1]/throttle-cmd-feed</output>
<min>
<condition>
<equals>
<property>/it-autoflight/mode/thr</property>
<value>RETARD</value>
</equals>
</condition>
<value>0.0</value>
</min>
<min>
<property>/controls/engines/idle-limit</property>
</min>
<max>
<property>/controls/engines/engine[1]/throttle-man</property>
</max>
</filter>
<filter>
<name>Throttle 1</name>
<debug>false</debug>
@ -816,7 +1240,7 @@
</or>
</and>
</condition>
<property>/controls/engines/engine[0]/throttle-cmd</property>
<property>/controls/engines/engine[0]/throttle-cmd-feed</property>
</input>
<output>
<property>/controls/engines/engine[0]/throttle-fdm</property>
@ -996,7 +1420,7 @@
</or>
</and>
</condition>
<property>/controls/engines/engine[1]/throttle-cmd</property>
<property>/controls/engines/engine[1]/throttle-cmd-feed</property>
</input>
<output>
<property>/controls/engines/engine[1]/throttle-fdm</property>

View file

@ -523,17 +523,8 @@
</condition>
</enable>
<input>
<condition>
<equals>
<property>/it-autoflight/mode/thr</property>
<value>RETARD</value>
</equals>
</condition>
<value>0.0</value>
</input>
<input>
<property>/controls/engines/idle-limit</property>
</input>
<output>
<property>/controls/engines/throttle-cmd-pid</property>
</output>
@ -643,7 +634,7 @@
</condition>
</enable>
<input>
<property>/controls/engines/throttle-pid-max</property>
<value>1.0</value>
</input>
<output>
<property>/controls/engines/throttle-cmd-pid</property>
@ -750,36 +741,6 @@
<output>
<property>/controls/engines/throttle-cmd-pid</property>
</output>
<min>
<property>/controls/engines/idle-limit</property>
</min>
<max>
<property>/controls/engines/throttle-pid-max</property>
</max>
</filter>
<!-- Engine 1 -->
<filter>
<name>Thrust Filter 1</name>
<type>gain</type>
<gain>1.0</gain>
<input>/controls/engines/throttle-cmd-pid</input>
<output>/controls/engines/engine[0]/throttle-cmd</output>
<max>
<property>/controls/engines/engine[0]/throttle-man</property>
</max>
</filter>
<!-- Engine 2 -->
<filter>
<name>Thrust Filter 2</name>
<type>gain</type>
<gain>1.0</gain>
<input>/controls/engines/throttle-cmd-pid</input>
<output>/controls/engines/engine[1]/throttle-cmd</output>
<max>
<property>/controls/engines/engine[1]/throttle-man</property>
</max>
</filter>
</PropertyList>

View file

@ -1 +1 @@
4500
4501