<!-- Airbus A320 FCS/FBW --> <!-- Joshua Davidson (it0uchpods) --> <!-- ############################################## # Copyright (c) Joshua Davidson (it0uchpods) # ############################################## --> <system name="A320: FCS"> <property value="0">fbw/roll/pid</property> <property value="0">fbw/pitch/g-pi</property> <property value="0">fbw/pitch/pid</property> <property value="0">fbw/yaw/tc-pid</property> <!-- Default gains for tuning --> <property value="0">fbw/roll/p-gain</property> <property value="0">fbw/roll/i-gain</property> <property value="0">fbw/roll/d-gain</property> <property value="0">fbw/pitch/p-gain</property> <property value="0">fbw/pitch/i-gain</property> <property value="0">fbw/pitch/d-gain</property> <property value="0">fbw/yaw/yd-p-gain</property> <property value="0">fbw/yaw/tc-p-gain</property> <property value="0">fbw/yaw/tc-i-gain</property> <!-- FMGC stuff --> <property value="0">fbw/fmgc/roll-cmd</property> <property value="0">fbw/fmgc/pitch-cmd</property> <property value="0">fbw/fmgc/yaw-cmd</property> <channel name="Libraries"> <switch name="position/wow"> <default value="0"/> <test logic="OR" value="1"> gear/unit[0]/WOW eq 1 gear/unit[1]/WOW eq 1 gear/unit[2]/WOW eq 1 </test> </switch> <switch name="fbw/roll/gain-switch"> <default value="0"/> <test logic="OR" value="1"> position/wow eq 1 /it-fbw/law ne 0 </test> </switch> <switch name="fbw/pitch/gain-switch"> <default value="0"/> <test logic="OR" value="1"> position/wow eq 1 /it-fbw/law eq 2 /it-fbw/law eq 3 </test> </switch> <switch name="fbw/yaw/gain-switch"> <default value="0"/> <test logic="OR" value="1"> position/wow eq 1 /it-fbw/law eq 2 /it-fbw/law eq 3 </test> </switch> <switch name="fbw/fmgc/enabled"> <default value="0"/> <test logic="OR" value="1"> /it-autoflight/output/ap1 eq 1 /it-autoflight/output/ap2 eq 1 </test> </switch> <fcs_function name="fbw/roll/p-gain"> <function> <table> <independentVar lookup="row">velocities/mach</independentVar> <independentVar lookup="column">fbw/roll/gain-switch</independentVar> <tableData> 0 1 0.2 -26.2 0.0 0.9 -15.5 0.0 </tableData> </table> </function> </fcs_function> <fcs_function name="fbw/roll/i-gain"> <function> <table> <independentVar lookup="row">velocities/mach</independentVar> <independentVar lookup="column">fbw/roll/gain-switch</independentVar> <tableData> 0 1 0.2 -45.5 0.0 0.9 -36.0 0.0 </tableData> </table> </function> </fcs_function> <fcs_function name="fbw/roll/d-gain"> <function> <table> <independentVar lookup="row">velocities/mach</independentVar> <independentVar lookup="column">fbw/roll/gain-switch</independentVar> <tableData> 0 1 0.2 -2.1 0.0 0.9 -1.1 0.0 </tableData> </table> </function> </fcs_function> <fcs_function name="fbw/pitch/p-gain"> <function> <table> <independentVar lookup="row">velocities/mach</independentVar> <independentVar lookup="column">fbw/pitch/gain-switch</independentVar> <tableData> 0 1 0.2 28 0 0.9 23 0 </tableData> </table> </function> </fcs_function> <fcs_function name="fbw/pitch/i-gain"> <function> <table> <independentVar lookup="row">velocities/mach</independentVar> <independentVar lookup="column">fbw/pitch/gain-switch</independentVar> <tableData> 0 1 0.2 61 0 0.9 45 0 </tableData> </table> </function> </fcs_function> <fcs_function name="fbw/pitch/d-gain"> <function> <table> <independentVar lookup="row">velocities/mach</independentVar> <independentVar lookup="column">fbw/pitch/gain-switch</independentVar> <tableData> 0 1 0.2 2.9 0.0 0.9 1.3 0.0 </tableData> </table> </function> </fcs_function> <fcs_function name="fbw/yaw/yd-p-gain"> <function> <table> <independentVar lookup="row">velocities/mach</independentVar> <independentVar lookup="column">fbw/yaw/gain-switch</independentVar> <tableData> 0 1 0.2 -7.5 0.0 0.9 -1.5 0.0 </tableData> </table> </function> </fcs_function> <fcs_function name="fbw/yaw/tc-p-gain"> <function> <table> <independentVar lookup="row">velocities/mach</independentVar> <independentVar lookup="column">fbw/yaw/gain-switch</independentVar> <tableData> 0 1 0.2 -1.20 0.00 0.9 -0.07 0.00 </tableData> </table> </function> </fcs_function> <fcs_function name="fbw/yaw/tc-i-gain"> <function> <table> <independentVar lookup="row">velocities/mach</independentVar> <independentVar lookup="column">fbw/yaw/gain-switch</independentVar> <tableData> 0 1 0.2 -0.25 0.00 0.9 -0.19 0.00 </tableData> </table> </function> </fcs_function> </channel> <channel name="FBW: Roll"> <switch name="fbw/roll/a-i-f"> <default value="/controls/flight/aileron"/> <test value="0"> fbw/fmgc/enabled eq 1 </test> </switch> <kinematic name="fbw/roll/a-i-k"> <input>fbw/roll/a-i-f</input> <traverse> <setting> <position>-1</position> <time>0</time> </setting> <setting> <position>1</position> <time>0.7</time> </setting> </traverse> <output>/controls/flight/aileron-input-fast</output> </kinematic> <fcs_function name="fbw/roll/aileron-nul"> <function> <table> <independentVar lookup="row">/controls/flight/aileron</independentVar> <tableData> -1.00 -1 -0.04 0 0.04 0 1.00 1 </tableData> </table> </function> </fcs_function> <switch name="fbw/roll/a-i-s"> <default value="0"/> <test logic="AND" value="fbw/roll/aileron-nul"> fbw/fmgc/enabled eq 0 </test> <test logic="AND" value="fbw/fmgc/roll-cmd"> position/wow eq 0 fbw/fmgc/enabled eq 1 </test> </switch> <kinematic name="fbw/roll/a-i"> <input>fbw/roll/a-i-s</input> <traverse> <setting> <position>-1</position> <time>0</time> </setting> <setting> <position>1</position> <time>2.0</time> </setting> </traverse> <output>/controls/flight/aileron-input</output> </kinematic> <fcs_function name="fbw/roll/r-r-33"> <function> <sum> <product> <property>fbw/roll/a-i</property> <value>0.261799</value> </product> <table> <independentVar lookup="row">attitude/roll-rad</independentVar> <independentVar lookup="column">fbw/roll/a-i</independentVar> <tableData> -1 0 1 -0.575959 0.261799 0.000000 0.000000 -0.575958 0.000000 0.000000 0.000000 0.575958 0.000000 0.000000 0.000000 0.575959 0.000000 0.000000 -0.261799 </tableData> </table> <table> <independentVar lookup="row">attitude/roll-rad</independentVar> <tableData> -0.750492 0.261799 -0.575959 0.000000 0.575959 0.000000 0.750492 -0.261799 </tableData> </table> </sum> </function> </fcs_function> <fcs_function name="fbw/roll/r-r-67"> <function> <sum> <product> <property>fbw/roll/a-i</property> <value>0.261799</value> </product> <table> <independentVar lookup="row">attitude/roll-rad</independentVar> <independentVar lookup="column">fbw/roll/a-i</independentVar> <tableData> -1 0 1 -1.169370 0.261799 0.000000 0.000000 -1.169369 0.000000 0.000000 0.000000 1.169369 0.000000 0.000000 0.000000 1.169370 0.000000 0.000000 -0.261799 </tableData> </table> <table> <independentVar lookup="row">attitude/roll-rad</independentVar> <tableData> -1.343900 0.261799 -1.169370 0.000000 1.169370 0.000000 1.343900 -0.261799 </tableData> </table> </sum> </function> </fcs_function> <fcs_function name="fbw/roll/r-r-rb"> <function> <table> <independentVar lookup="row">attitude/roll-rad</independentVar> <tableData> -1.169370 0.436332 -0.698132 0.174533 -0.575959 0.000000 0.575959 0.000000 0.698132 -0.174533 1.169370 -0.436332 </tableData> </table> </function> </fcs_function> <fcs_function name="fbw/roll/r-r-os-nrb"> <function> <sum> <product> <property>fbw/roll/a-i</property> <value>0.261799</value> </product> <table> <independentVar lookup="row">attitude/roll-rad</independentVar> <independentVar lookup="column">fbw/roll/a-i</independentVar> <tableData> -1 0 1 -0.698132 0.261799 0.000000 0.000000 -0.698131 0.000000 0.000000 0.000000 0.698131 0.000000 0.000000 0.000000 0.698132 0.000000 0.000000 -0.261799 </tableData> </table> </sum> </function> </fcs_function> <fcs_function name="fbw/roll/r-r-os-rb"> <function> <table> <independentVar lookup="row">attitude/roll-rad</independentVar> <tableData> -0.698132 0.436332 -0.261799 0.174533 0.000000 0.000000 0.261799 -0.174533 0.698132 -0.436332 </tableData> </table> </function> </fcs_function> <switch name="fbw/roll/rate-demand"> <!-- 15 deg/0.261799 rad per second --> <default value="0"/> <test logic="AND" value="fbw/roll/r-r-33"> /it-fbw/roll-lim eq 33 /it-fbw/roll-back ne 1 /it-fbw/protections/overspeed ne 1 </test> <test logic="AND" value="fbw/roll/r-r-67"> /it-fbw/roll-lim eq 67 /it-fbw/protections/overspeed ne 1 </test> <test logic="AND" value="fbw/roll/r-r-rb"> /it-fbw/roll-back eq 1 /it-fbw/protections/overspeed ne 1 </test> <test logic="AND" value="fbw/roll/r-r-os-nrb"> /it-fbw/protections/overspeed eq 1 /it-fbw/protections/overspeed-roll-back ne 1 </test> <test logic="AND" value="fbw/roll/r-r-os-rb"> /it-fbw/protections/overspeed eq 1 /it-fbw/protections/overspeed-roll-back eq 1 </test> </switch> <lag_filter name="fbw/roll/rate-demand-lag"> <input>fbw/roll/rate-demand</input> <c1>16.4</c1> </lag_filter> <fcs_function name="fbw/roll/p-rad_sec"> <function> <toradians> <property>/orientation/roll-rate-degps</property> </toradians> </function> </fcs_function> <switch name="fbw/roll/p-r_s-s"> <default value="fbw/roll/p-rad_sec"/> <test value="0"> gear/unit[0]/WOW eq 1 </test> </switch> <fcs_function name="fbw/roll/rate-error"> <function> <difference> <property>fbw/roll/p-r_s-s</property> <property>fbw/roll/rate-demand-lag</property> </difference> </function> </fcs_function> <switch name="fbw/roll/trigger"> <default value="0"/> <test logic="OR" value="1"> fbw/roll/gain-switch gt 0 fbw/roll/pid le -0.999 fbw/roll/pid ge 0.999 </test> </switch> <pid name="fbw/roll/pid-v"> <input>fbw/roll/rate-error</input> <kp>fbw/roll/p-gain</kp> <ki>fbw/roll/i-gain</ki> <kd>fbw/roll/d-gain</kd> <trigger>fbw/roll/trigger</trigger> <clipto> <min>-1.0</min> <max>1.0</max> </clipto> <output>fbw/roll/pid</output> </pid> <pure_gain name="fbw/roll/rudder-inv"> <input>fbw/fmgc/yaw-cmd</input> <gain>-0.5</gain> </pure_gain> <switch name="fbw/roll/gear-law-switch"> <default value="0"/> <test logic="OR" value="1"> position/wow eq 1 /it-fbw/law eq 1 /it-fbw/law eq 2 </test> </switch> <switch name="fbw/aileron-output"> <default value="0"/> <test logic="AND" value="fbw/roll/pid"> position/wow eq 0 /it-fbw/law eq 0 </test> <test logic="AND" value="fbw/roll/a-i-f"> fbw/fmgc/enabled eq 0 fbw/roll/gear-law-switch eq 1 </test> <test logic="AND" value="fbw/roll/rudder-inv"> fbw/fmgc/enabled eq 1 position/wow eq 1 /it-fbw/law eq 0 </test> <test logic="AND" value="0"> /it-fbw/law eq 3 </test> </switch> <fcs_function name="fbw/roll/s-i-f"> <function> <product> <table> <independentVar lookup="row">fbw/roll/a-i</independentVar> <tableData> -1.0 -1.0 -0.2 0.0 0.2 0.0 1.0 1.0 </tableData> </table> <table> <independentVar lookup="row">velocities/mach</independentVar> <independentVar lookup="column">position/wow</independentVar> <tableData> 0 1 0.2 0.5 1.0 0.9 0.1 1.0 </tableData> </table> </product> </function> </fcs_function> <switch name="fbw/roll/s-i"> <default value="0"/> <test value="fbw/roll/s-i-f"> /it-fbw/roll-back eq 0 </test> </switch> <switch name="fbw/roll/s-l"> <default value="0"/> <test value="fbw/roll/s-i"> /it-fbw/law ne 3 /systems/failures/aileron-left eq 0 </test> <test value="fbw/aileron-output"> /it-fbw/law ne 3 /systems/failures/aileron-left eq 1 </test> <output>/controls/flight/spoiler-left-fbw-cmd</output> </switch> <switch name="fbw/roll/s-r"> <default value="0"/> <test value="fbw/roll/s-i"> /it-fbw/law ne 3 /systems/failures/aileron-right eq 0 </test> <test value="fbw/aileron-output"> /it-fbw/law ne 3 /systems/failures/aileron-right eq 1 </test> <output>/controls/flight/spoiler-right-fbw-cmd</output> </switch> </channel> <channel name="FBW: Pitch"> <switch name="fbw/pitch/e-i-f"> <default value="/controls/flight/elevator"/> <test value="0"> fbw/fmgc/enabled eq 1 </test> </switch> <kinematic name="fbw/pitch/e-i-k"> <input>fbw/pitch/e-i-f</input> <traverse> <setting> <position>-1</position> <time>0</time> </setting> <setting> <position>1</position> <time>0.7</time> </setting> </traverse> <output>/controls/flight/elevator-input-fast</output> </kinematic> <fcs_function name="fbw/pitch/elevator-nul"> <function> <table> <independentVar lookup="row">/controls/flight/elevator</independentVar> <tableData> -1.00 -1 -0.04 0 0.04 0 1.00 1 </tableData> </table> </function> </fcs_function> <fcs_function name="fbw/pitch/e-f-air"> <function> <sum> <property>fbw/pitch/elevator-nul</property> <table> <independentVar lookup="row">/position/gear-agl-ft</independentVar> <tableData> 5 0.2 30 0.1 </tableData> </table> </sum> </function> </fcs_function> <fcs_function name="fbw/pitch/e-f-wow"> <function> <sum> <property>fbw/pitch/elevator-nul</property> <value>-0.15</value> </sum> </function> </fcs_function> <switch name="fbw/pitch/flare-gear-switch"> <default value="0"/> <test logic="OR" value="1"> gear/unit[1]/WOW eq 1 gear/unit[2]/WOW eq 1 </test> </switch> <switch name="fbw/pitch/e-i-s"> <default value="fbw/pitch/elevator-nul"/> <test logic="AND" value="fbw/pitch/e-f-air"> fbw/fmgc/enabled eq 0 /position/gear-agl-ft le 30 /controls/flight/flap-pos ge 4 /controls/engines/engine[0]/throttle lt 0.65 /controls/engines/engine[1]/throttle lt 0.65 /FMGC/status/to-state eq 0 /it-fbw/law eq 0 position/wow eq 0 </test> <test logic="AND" value="fbw/pitch/e-f-wow"> fbw/fmgc/enabled eq 0 /position/gear-agl-ft le 30 /controls/flight/flap-pos ge 4 /controls/engines/engine[0]/throttle lt 0.65 /controls/engines/engine[1]/throttle lt 0.65 /FMGC/status/to-state eq 0 /it-fbw/law eq 0 gear/unit[0]/WOW eq 0 fbw/pitch/flare-gear-switch eq 1 </test> <test logic="AND" value="fbw/fmgc/pitch-cmd"> fbw/fmgc/enabled eq 1 position/wow eq 0 </test> <test logic="AND" value="0"> fbw/fmgc/enabled eq 1 position/wow eq 1 </test> </switch> <kinematic name="fbw/pitch/e-i"> <input>fbw/pitch/e-i-s</input> <traverse> <setting> <position>-1</position> <time>0</time> </setting> <setting> <position>1</position> <time>2.0</time> </setting> </traverse> <output>/controls/flight/elevator-input</output> </kinematic> <switch name="fbw/pitch/g-min"> <default value="-1.0"/> <test value="0.0"> /controls/flight/flap-pos ne 0 </test> </switch> <switch name="fbw/pitch/g-max"> <default value="2.5"/> <test value="2.0"> /controls/flight/flap-pos ne 0 </test> </switch> <fcs_function name="fbw/pitch/g-demand"> <function> <table> <independentVar lookup="row">fbw/pitch/e-i</independentVar> <tableData> -1.0 2.5 0.0 1.0 1.0 -0.5 </tableData> </table> </function> <clipto> <min>fbw/pitch/g-min</min> <max>fbw/pitch/g-max</max> </clipto> </fcs_function> <fcs_function name="fbw/pitch/a-n"> <function> <difference> <quotient> <sum> <product> <property>velocities/q-rad_sec</property> <property>velocities/u-fps</property> </product> <product> <value>-1</value> <property>velocities/p-rad_sec</property> <property>velocities/v-fps</property> </product> <product> <value>32.174</value> <cos> <property>attitude/theta-rad</property> </cos> <cos> <property>attitude/phi-rad</property> </cos> </product> <product> <value>-1</value> <property>accelerations/wdot-ft_sec2</property> </product> </sum> <value>32.174</value> </quotient> <value>1</value> </difference> </function> </fcs_function> <switch name="fbw/pitch/a-n-IaN"> <default value="0"/> <test logic="AND" value="fbw/pitch/a-n"> fbw/pitch/a-n lt 30 fbw/pitch/a-n gt -30 position/wow ne 1 </test> </switch> <fcs_function name="fbw/pitch/g-computed"> <function> <sum> <property>fbw/pitch/a-n-IaN</property> <quotient> <value>-1</value> <cos> <property>attitude/roll-rad</property> </cos> </quotient> <value>2</value> </sum> </function> </fcs_function> <fcs_function name="fbw/pitch/g-error"> <function> <difference> <property>fbw/pitch/g-computed</property> <property>fbw/pitch/g-demand</property> </difference> </function> </fcs_function> <!-- Goes to Systems/fbw-pitch.xml then back as fbw/pitch/g-pi --> <pure_gain name="fbw/pitch/g-pi-inv"> <input>fbw/pitch/g-pi</input> <gain>-1.0</gain> </pure_gain> <switch name="fbw/pitch/g-pi-switched"> <default value="fbw/pitch/g-pi"/> <test logic="OR" value="fbw/pitch/g-pi-inv"> attitude/roll-rad lt -1.5708 attitude/roll-rad gt 1.5708 </test> </switch> <!--pure_gain name="fbw/pitch/g-pi-switched"> <input>fbw/pitch/e-i</input> <gain>1.0</gain> </pure_gain--> <!-- Tuning G Bypass --> <fcs_function name="fbw/pitch/p-r-norm"> <function> <sum> <product> <property>fbw/pitch/g-pi-switched</property> <value>-0.087266</value> </product> <table> <independentVar lookup="row">attitude/pitch-rad</independentVar> <independentVar lookup="column">fbw/pitch/g-pi-switched</independentVar> <tableData> -1 0 1 -0.261799 0.000000 0.000000 0.087266 -0.261798 0.000000 0.000000 0.000000 0.523598 0.000000 0.000000 0.000000 0.523599 -0.087266 0.000000 0.000000 </tableData> </table> <table> <independentVar lookup="row">attitude/pitch-rad</independentVar> <tableData> -0.436332 0.087266 -0.261799 0.000000 0.523599 0.000000 0.698132 -0.087266 </tableData> </table> </sum> </function> </fcs_function> <pure_gain name="fbw/pitch/p-r-altn"> <input>fbw/pitch/g-pi-switched</input> <gain>-0.087266</gain> </pure_gain> <fcs_function name="fbw/pitch/p-r-norm-os"> <function> <sum> <table> <independentVar lookup="row">fbw/pitch/g-pi-switched</independentVar> <tableData> -1.0 0.087266 0.0 0.026180 </tableData> </table> <table> <independentVar lookup="row">attitude/pitch-rad</independentVar> <independentVar lookup="column">fbw/pitch/g-pi-switched</independentVar> <tableData> -1 0 0.523598 -0.026180 0.000000 0.523599 -0.087266 0.000000 </tableData> </table> <table> <independentVar lookup="row">attitude/pitch-rad</independentVar> <tableData> 0.523599 0.000000 0.698132 -0.087266 </tableData> </table> </sum> </function> </fcs_function> <fcs_function name="fbw/pitch/p-r-altn-os"> <function> <table> <independentVar lookup="row">fbw/pitch/g-pi-switched</independentVar> <tableData> -1.0 0.087266 0.0 0.026180 1.0 -0.061086 </tableData> </table> </function> </fcs_function> <switch name="fbw/pitch/rate-demand"> <!-- 5 deg/0.087266 rad per second --> <default value="0"/> <test logic="AND" value="fbw/pitch/p-r-norm"> /it-fbw/law eq 0 /it-fbw/protections/overspeed ne 1 </test> <test logic="AND" value="fbw/pitch/p-r-altn"> /it-fbw/law ne 0 /it-fbw/protections/overspeed ne 1 </test> <test logic="AND" value="fbw/pitch/p-r-norm-os"> /it-fbw/law eq 0 /it-fbw/protections/overspeed eq 1 </test> <test logic="AND" value="fbw/pitch/p-r-altn-os"> /it-fbw/law ne 0 /it-fbw/protections/overspeed eq 1 </test> </switch> <lag_filter name="fbw/pitch/rate-demand-lag"> <input>fbw/pitch/rate-demand</input> <c1>10.1</c1> </lag_filter> <fcs_function name="fbw/pitch/thetadot-rad_sec"> <function> <toradians> <property>/orientation/pitch-rate-degps</property> </toradians> </function> </fcs_function> <switch name="fbw/pitch/t-r_s-s"> <default value="fbw/pitch/thetadot-rad_sec"/> <test value="0"> gear/unit[0]/WOW eq 1 </test> </switch> <fcs_function name="fbw/pitch/rate-error"> <function> <difference> <property>fbw/pitch/t-r_s-s</property> <property>fbw/pitch/rate-demand-lag</property> </difference> </function> </fcs_function> <switch name="fbw/pitch/trigger"> <default value="0"/> <test logic="OR" value="1"> fbw/pitch/gain-switch gt 0 fbw/pitch/pid le -0.999 fbw/pitch/pid ge 0.999 </test> </switch> <pid name="fbw/pitch/pid-v"> <input>fbw/pitch/rate-error</input> <kp>fbw/pitch/p-gain</kp> <ki>fbw/pitch/i-gain</ki> <kd>fbw/pitch/d-gain</kd> <trigger>fbw/pitch/trigger</trigger> <clipto> <min>-1.0</min> <max>1.0</max> </clipto> <output>fbw/pitch/pid</output> </pid> <pure_gain name="fbw/pitch/pid-inv"> <input>fbw/pitch/pid</input> <gain>-1.0</gain> </pure_gain> <switch name="fbw/pitch/pid-switched"> <default value="fbw/pitch/pid"/> <test logic="OR" value="fbw/pitch/pid-inv"> attitude/roll-rad lt -1.5708 attitude/roll-rad gt 1.5708 </test> </switch> <switch name="fbw/pitch/law-switch"> <default value="0"/> <test logic="OR" value="1"> /it-fbw/law eq 0 /it-fbw/law eq 1 </test> </switch> <switch name="fbw/pitch/law-gear-switch"> <default value="0"/> <test logic="OR" value="1"> gear/unit[1]/WOW eq 1 gear/unit[2]/WOW eq 1 /it-fbw/law eq 2 </test> </switch> <switch name="fbw/elevator-output"> <default value="0"/> <test logic="AND" value="fbw/pitch/pid-switched"> position/wow eq 0 fbw/pitch/law-switch eq 1 </test> <test logic="AND" value="fbw/pitch/e-i-f"> fbw/fmgc/enabled eq 0 fbw/pitch/law-gear-switch eq 1 </test> <test logic="AND" value="0.1"> fbw/fmgc/enabled eq 1 position/wow eq 1 </test> <test logic="AND" value="0"> /it-fbw/law eq 3 </test> </switch> <switch name="fbw/pitch/autotrim-height"> <default value="50"/> <test logic="AND" value="100"> fbw/fmgc/enabled eq 1 </test> </switch> <switch name="fbw/pitch/autotrim-switch"> <default value="0"/> <test logic="AND" value="1"> fbw/pitch/gain-switch eq 0 /position/gear-agl-ft ge fbw/pitch/autotrim-height attitude/roll-rad lt 0.628319 attitude/roll-rad gt -0.628319 fbw/pitch/pid-switched ge 0.01 forces/load-factor lt -0.5 /it-fbw/protections/overspeed ne 1 /controls/flight/elevator-trim le 0.32 position/wow eq 0 </test> <test logic="AND" value="2"> fbw/pitch/gain-switch eq 0 /position/gear-agl-ft ge fbw/pitch/autotrim-height attitude/roll-rad lt 0.628319 attitude/roll-rad gt -0.628319 fbw/pitch/pid-switched le -0.01 forces/load-factor lt -0.5 /it-fbw/protections/overspeed ne 1 /controls/flight/elevator-trim ge -1.0 position/wow eq 0 </test> </switch> <fcs_function name="fbw/pitch/autotrim-offset"> <function> <sum> <ifthen> <eq> <property>fbw/pitch/autotrim-switch</property> <value>1</value> </eq> <table> <independentVar lookup="row">fbw/pitch/pid-switched</independentVar> <tableData> 0.05 0.00001 0.30 0.00015 </tableData> </table> <value>0.0</value> </ifthen> <ifthen> <eq> <property>fbw/pitch/autotrim-switch</property> <value>2</value> </eq> <table> <independentVar lookup="row">fbw/pitch/pid-switched</independentVar> <tableData> -0.30 -0.00015 -0.05 -0.00001 </tableData> </table> <value>0.0</value> </ifthen> </sum> </function> </fcs_function> <fcs_function name="fbw/elevator-trim-output"> <function> <sum> <property>/controls/flight/elevator-trim</property> <property>fbw/pitch/autotrim-offset</property> </sum> </function> <clipto> <min>-1.0</min> <max>0.32</max> </clipto> <output>/controls/flight/elevator-trim</output> </fcs_function> </channel> <channel name="FBW: Yaw"> <fcs_function name="fbw/yaw/rudder-nul"> <function> <table> <independentVar lookup="row">/controls/flight/rudder</independentVar> <independentVar lookup="column">fbw/fmgc/enabled</independentVar> <tableData> 0 1 -1.00 -1 0 -0.04 0 0 0.04 0 0 1.00 1 0 </tableData> </table> </function> </fcs_function> <switch name="fbw/yaw/autoland-switch"> <default value="0"/> <test logic="AND" value="1"> fbw/fmgc/enabled eq 1 /it-autoflight/output/lat eq 4 </test> </switch> <switch name="fbw/yaw/r-r_s-s"> <default value="velocities/r-rad_sec"/> <test logic="OR" value="0"> position/wow eq 1 fbw/yaw/rudder-nul gt 0 fbw/yaw/rudder-nul lt 0 /position/gear-agl-ft lt 50 fbw/yaw/autoland-switch eq 1 </test> </switch> <pure_gain name="fbw/yaw/yd-f"> <input>fbw/yaw/r-r_s-s</input> <gain>fbw/yaw/yd-p-gain</gain> <clipto> <min>-0.2</min> <max>0.2</max> </clipto> </pure_gain> <switch name="fbw/yaw/slip-skid"> <default value="/instrumentation/slip-skid-ball/indicated-slip-skid"/> <test logic="OR" value="0"> position/wow eq 1 fbw/yaw/rudder-nul gt 0 fbw/yaw/rudder-nul lt 0 </test> </switch> <switch name="fbw/yaw/trigger"> <default value="0"/> <test logic="OR" value="1"> fbw/yaw/gain-switch gt 0 fbw/yaw/tc-pid le -0.199 fbw/yaw/tc-pid ge 0.199 /position/gear-agl-ft lt 50 fbw/yaw/autoland-switch eq 1 </test> </switch> <pid name="fbw/yaw/tc-pid-v"> <input>fbw/yaw/slip-skid</input> <kp>fbw/yaw/tc-p-gain</kp> <ki>fbw/yaw/tc-i-gain</ki> <kd>0.0</kd> <trigger>fbw/yaw/trigger</trigger> <clipto> <min>-0.2</min> <max>0.2</max> </clipto> <output>fbw/yaw/tc-pid</output> </pid> <switch name="fbw/yaw/tc-pid-s"> <default value="fbw/yaw/tc-pid"/> <test logic="OR" value="0"> position/wow eq 1 fbw/yaw/rudder-nul gt 0 fbw/yaw/rudder-nul lt 0 </test> </switch> <switch name="fbw/yaw/fmgc-cmd"> <default value="0"/> <test value="fbw/fmgc/yaw-cmd"> fbw/yaw/autoland-switch eq 1 </test> </switch> <summer name="fbw/yaw/output-sum"> <input>fbw/yaw/yd-f</input> <input>fbw/yaw/tc-pid-s</input> <input>fbw/yaw/fmgc-cmd</input> </summer> <switch name="fbw/yaw/law-switch"> <default value="0"/> <test logic="OR" value="1"> /it-fbw/law eq 0 /it-fbw/law eq 1 </test> </switch> <switch name="fbw/rudder-output"> <default value="fbw/yaw/rudder-nul"/> <test logic="AND" value="fbw/yaw/output-sum"> fbw/yaw/law-switch eq 1 fbw/yaw/rudder-nul eq 0 </test> <output>/controls/flight/rudder-fbw</output> </switch> </channel> <channel name="Surface Droop"> <fcs_function name="hydraulics/aileron-droop"> <function> <table> <independentVar lookup="row">/velocities/airspeed-kt</independentVar> <tableData> 62 0.5 116 0.0 </tableData> </table> </function> </fcs_function> <pure_gain name="hydraulics/aileron-droop-neg"> <input>hydraulics/aileron-droop</input> <gain>-1.0</gain> </pure_gain> <fcs_function name="hydraulics/elevator-droop"> <function> <table> <independentVar lookup="row">/velocities/airspeed-kt</independentVar> <tableData> 72 0.5 121 0.0 </tableData> </table> </function> </fcs_function> </channel> <channel name="Aileron Common"> <summer name="hydraulics/roll-fbw-summer"> <input>fbw/aileron-output</input> <input>/controls/flight/aileron-trim</input> <clipto> <min>-1</min> <max>1</max> </clipto> </summer> </channel> <channel name="Aileron L"> <fcs_function name="hydraulics/aileron-l/extended"> <function> <product> <sum> <property>/controls/flight/speedbrake-norm</property> <product> <property>hydraulics/roll-fbw-summer</property> <value>-1</value> </product> </sum> <value>-0.5</value> </product> </function> </fcs_function> <fcs_function name="hydraulics/aileron-l/retracted"> <function> <sum> <product> <property>hydraulics/roll-fbw-summer</property> <value>0.5</value> </product> <table> <independentVar lookup="row">/fdm/jsbsim/fcs/flap-pos-deg</independentVar> <tableData> 1 0.00 5 0.13 </tableData> </table> </sum> </function> </fcs_function> <switch name="hydraulics/aileron-l/pressure-switch-or"> <default value="0"/> <test logic="OR" value="1"> /systems/hydraulic/green-psi ge 1500 /systems/hydraulic/blue-psi ge 1500 </test> </switch> <switch name="hydraulics/aileron-l/switch"> <default value="hydraulics/aileron-droop"/> <test logic="AND" value="hydraulics/aileron-l/extended"> hydraulics/aileron-l/pressure-switch-or eq 1 /controls/flight/speedbrake-norm eq 1 /gear/gear[1]/wow eq 1 /gear/gear[2]/wow eq 1 /systems/failures/aileron-left eq 0 </test> <test logic="AND" value="hydraulics/aileron-l/retracted"> hydraulics/aileron-l/pressure-switch-or eq 1 /systems/failures/aileron-left eq 0 </test> <clipto> <min>-0.5</min> <max>0.5</max> </clipto> </switch> <lag_filter name="hydraulics/aileron-l/final"> <input>hydraulics/aileron-l/switch</input> <c1>14.5</c1> <output>/controls/flight/aileron-left</output> </lag_filter> </channel> <channel name="Aileron R"> <fcs_function name="hydraulics/aileron-r/extended"> <function> <product> <sum> <property>/controls/flight/speedbrake-norm</property> <property>hydraulics/roll-fbw-summer</property> </sum> <value>0.5</value> </product> </function> </fcs_function> <fcs_function name="hydraulics/aileron-r/retracted"> <function> <sum> <product> <property>hydraulics/roll-fbw-summer</property> <value>0.5</value> </product> <table> <independentVar lookup="row">/fdm/jsbsim/fcs/flap-pos-deg</independentVar> <tableData> 1 0.00 5 -0.13 </tableData> </table> </sum> </function> </fcs_function> <switch name="hydraulics/aileron-r/pressure-switch-or"> <default value="0"/> <test logic="OR" value="1"> /systems/hydraulic/green-psi ge 1500 /systems/hydraulic/blue-psi ge 1500 </test> </switch> <switch name="hydraulics/aileron-r/switch"> <default value="hydraulics/aileron-droop-neg"/> <test logic="AND" value="hydraulics/aileron-r/extended"> hydraulics/aileron-r/pressure-switch-or eq 1 /controls/flight/speedbrake-norm eq 1 /gear/gear[1]/wow eq 1 /gear/gear[2]/wow eq 1 /systems/failures/aileron-right eq 0 </test> <test logic="AND" value="hydraulics/aileron-r/retracted"> hydraulics/aileron-r/pressure-switch-or eq 1 /systems/failures/aileron-right eq 0 </test> <clipto> <min>-0.5</min> <max>0.5</max> </clipto> </switch> <lag_filter name="hydraulics/aileron-r/final"> <input>hydraulics/aileron-r/switch</input> <c1>14.5</c1> <output>/controls/flight/aileron-right</output> </lag_filter> </channel> <channel name="Roll"> <fcs_function name="hydraulics/roll-control"> <function> <product> <sum> <product> <sum> <property>hydraulics/aileron-l/final</property> <property>hydraulics/aileron-r/final</property> </sum> <value>1.75</value> </product> <product> <sum> <product> <property>/controls/flight/spoiler-l-sum</property> <value>-1.0</value> </product> <property>/controls/flight/spoiler-r-sum</property> </sum> <value>0.25</value> </product> </sum> <value>0.444444</value> </product> </function> <clipto> <min>-1.0</min> <max>1.0</max> </clipto> </fcs_function> <aerosurface_scale name="fcs/roll-pos-rad"> <input>hydraulics/roll-control</input> <range> <min>-0.436332</min> <max>0.436332</max> </range> </aerosurface_scale> </channel> <channel name="Elevator Common"> <aerosurface_scale name="hydraulics/elevator-output-scale"> <input>fbw/elevator-output</input> <range> <min>-0.6666666666666666666666666666666</min> <max>1.0</max> </range> </aerosurface_scale> <switch name="hydraulics/elevator-output-switch"> <default value="hydraulics/elevator-output-scale"/> <test value="fbw/elevator-output"> /velocities/groundspeed-kt lt 75 </test> </switch> <pure_gain name="hydraulics/elevator-output-gain"> <input>hydraulics/elevator-output-switch</input> <gain>0.5</gain> </pure_gain> </channel> <channel name="Elevator L"> <switch name="hydraulics/elevator-l/pressure-switch-or"> <default value="0"/> <test logic="OR" value="1"> /systems/hydraulic/green-psi ge 1500 /systems/hydraulic/blue-psi ge 1500 </test> </switch> <switch name="hydraulics/elevator-l/switch"> <default value="hydraulics/elevator-droop"/> <test logic="AND" value="hydraulics/elevator-output-gain"> hydraulics/elevator-l/pressure-switch-or eq 1 /systems/failures/elevator-left eq 0 </test> <clipto> <min>-0.5</min> <max>0.5</max> </clipto> </switch> <lag_filter name="hydraulics/elevator-l/final"> <input>hydraulics/elevator-l/switch</input> <c1>14.5</c1> <output>/controls/flight/elevator-left</output> </lag_filter> </channel> <channel name="Elevator R"> <switch name="hydraulics/elevator-r/pressure-switch-or"> <default value="0"/> <test logic="OR" value="1"> /systems/hydraulic/yellow-psi ge 1500 /systems/hydraulic/blue-psi ge 1500 </test> </switch> <switch name="hydraulics/elevator-r/switch"> <default value="hydraulics/elevator-droop"/> <test logic="AND" value="hydraulics/elevator-output-gain"> hydraulics/elevator-r/pressure-switch-or eq 1 /systems/failures/elevator-right eq 0 </test> <clipto> <min>-0.5</min> <max>0.5</max> </clipto> </switch> <lag_filter name="hydraulics/elevator-r/final"> <input>hydraulics/elevator-r/switch</input> <c1>14.5</c1> <output>/controls/flight/elevator-right</output> </lag_filter> </channel> <channel name="Pitch"> <fcs_function name="hydraulics/pitch-control"> <function> <sum> <property>hydraulics/elevator-l/final</property> <property>hydraulics/elevator-r/final</property> </sum> </function> <clipto> <min>-1.0</min> <max>1.0</max> </clipto> </fcs_function> <aerosurface_scale name="fcs/pitch-pos-rad"> <input>hydraulics/pitch-control</input> <range> <min>-0.523599</min> <max>0.296706</max> </range> </aerosurface_scale> <scheduled_gain name="fcs/pitch-pos-geared"> <input>fcs/pitch-pos-rad</input> <table> <independentVar lookup="row">velocities/mach</independentVar> <independentVar lookup="column">atmosphere/density-altitude</independentVar> <tableData> 0 43000 0.0 1.00 0.850 0.9 0.02 0.750 </tableData> </table> </scheduled_gain> </channel> <channel name="Pitch Trim"> <aerosurface_scale name="fcs/pitch-trim-cmd-deg"> <input>/controls/flight/elevator-trim</input> <domain> <min>-1.00</min> <max>0.32</max> </domain> <range> <min>-12.5</min> <max>4.0</max> </range> </aerosurface_scale> <aerosurface_scale name="fcs/pitch-trim-pos-rad"> <input>/controls/flight/elevator-trim-fdm</input> <domain> <min>-1.00</min> <max>0.32</max> </domain> <range> <min>-0.2181662</min> <max>0.0698132</max> </range> </aerosurface_scale> <aerosurface_scale name="fcs/pitch-trim-pos-deg"> <input>/controls/flight/elevator-trim-fdm</input> <domain> <min>-1.00</min> <max>0.32</max> </domain> <range> <min>-12.5</min> <max>4.0</max> </range> </aerosurface_scale> <scheduled_gain name="fcs/pitch-trim-pos-geared"> <input>fcs/pitch-trim-pos-rad</input> <table> <independentVar lookup="row">velocities/mach</independentVar> <independentVar lookup="column">atmosphere/density-altitude</independentVar> <tableData> 0 43000 0.0 1.00 0.850 0.9 0.02 0.750 </tableData> </table> </scheduled_gain> </channel> <channel name="FADEC"> <lag_filter name="fcs/throttle1"> <input>/controls/engines/engine[0]/throttle-output</input> <c1>0.95</c1> <output>fcs/throttle-cmd-norm</output> <output>fcs/throttle-pos-norm</output> </lag_filter> <lag_filter name="fcs/throttle2"> <input>/controls/engines/engine[1]/throttle-output</input> <c1>0.95</c1> <output>fcs/throttle-cmd-norm[1]</output> <output>fcs/throttle-pos-norm[1]</output> </lag_filter> <lag_filter name="fcs/n1-actual1"> <input>/engines/engine[0]/n1</input> <c1>2.25</c1> <output>/engines/engine[0]/n1-actual</output> <output>/engines/engine[3]/n1</output> </lag_filter> <lag_filter name="fcs/n1-actual2"> <input>/engines/engine[1]/n1</input> <c1>2.25</c1> <output>/engines/engine[1]/n1-actual</output> <output>/engines/engine[4]/n1</output> </lag_filter> <lag_filter name="fcs/n2-actual1"> <input>/engines/engine[0]/n2</input> <c1>2.25</c1> <output>/engines/engine[0]/n2-actual</output> <output>/engines/engine[3]/n2</output> </lag_filter> <lag_filter name="fcs/n2-actual2"> <input>/engines/engine[1]/n2</input> <c1>2.25</c1> <output>/engines/engine[1]/n2-actual</output> <output>/engines/engine[4]/n2</output> </lag_filter> </channel> <channel name="Rudder"> <fcs_function name="hydraulics/rudder/max-deg-fac"> <function> <table> <independentVar lookup="row">/velocities/airspeed-kt</independentVar> <tableData> 160.00 25.000 162.15 23.649 165.02 22.226 168.64 21.015 172.25 19.734 176.59 18.595 181.67 17.525 186.75 16.385 191.83 15.316 197.65 14.318 205.65 13.247 212.93 12.318 219.48 11.462 227.48 10.533 236.96 9.7450 246.43 8.8863 255.18 8.0990 266.12 7.4525 277.06 6.7704 288.00 6.0884 299.67 5.5124 311.35 5.0075 323.03 4.5736 335.44 4.2104 347.13 3.9186 358.81 3.6979 370.50 3.5482 380.00 3.4000 </tableData> </table> </function> </fcs_function> <switch name="hydraulics/rudder/max-deg-switch"> <default value="25"/> <test logic="AND" value="hydraulics/rudder/max-deg-fac"> /systems/fctl/fac1 eq 1 /systems/fctl/fac2 eq 1 /gear/gear[1]/wow eq 0 /gear/gear[2]/wow eq 0 </test> <test logic="AND" value="hydraulics/rudder/max-deg-fac"> /controls/flight/slats eq 0 /gear/gear[1]/wow eq 0 /gear/gear[2]/wow eq 0 </test> </switch> <aerosurface_scale name="hydraulics/rudder/max-deg-scale"> <input>hydraulics/rudder/max-deg-switch</input> <domain> <min>-25</min> <max>25</max> </domain> <range> <min>-1</min> <max>1</max> </range> </aerosurface_scale> <pure_gain name="hydraulics/rudder/max-deg-scale-neg"> <input>hydraulics/rudder/max-deg-scale</input> <gain>-1.0</gain> </pure_gain> <switch name="hydraulics/rudder/pressure-switch-or"> <default value="0"/> <test logic="OR" value="1"> /systems/hydraulic/green-psi ge 1500 /systems/hydraulic/blue-psi ge 1500 /systems/hydraulic/yellow-psi ge 1500 </test> </switch> <aerosurface_scale name="fcs/rudder-trim-cmd-deg"> <input>/controls/flight/rudder-trim</input> <domain> <min>-1.0</min> <max>1.0</max> </domain> <range> <min>-20.0</min> <max>20.0</max> </range> </aerosurface_scale> <aerosurface_scale name="hydraulics/rudder/trim-norm"> <input>/controls/flight/rudder-trim-fdm</input> <range> <min>-0.8</min> <max>0.8</max> </range> </aerosurface_scale> <summer name="hydraulics/rudder/summer"> <input>fbw/rudder-output</input> <input>hydraulics/rudder/trim-norm</input> <clipto> <min>-1</min> <max>1</max> </clipto> </summer> <switch name="hydraulics/rudder/switch"> <default value="0"/> <test logic="AND" value="hydraulics/rudder/summer"> hydraulics/rudder/pressure-switch-or eq 1 /systems/failures/rudder eq 0 </test> <clipto> <min>hydraulics/rudder/max-deg-scale-neg</min> <max>hydraulics/rudder/max-deg-scale</max> </clipto> </switch> <lag_filter name="hydraulics/rudder/final"> <input>hydraulics/rudder/switch</input> <c1>13.5</c1> <output>/controls/flight/rudder-fdm</output> </lag_filter> </channel> <channel name="Yaw"> <aerosurface_scale name="rubbish/rudder-pos-rad"> <input>hydraulics/rudder/final</input> <range> <min>-0.436332</min> <max>0.436332</max> </range> <output>fcs/rudder-pos-rad</output> </aerosurface_scale> </channel> <channel name="Flaps"> <kinematic name="rubbish/flap-pos-deg"> <input>/controls/flight/flaps</input> <traverse> <setting> <position>0</position> <time>0</time> </setting> <setting> <position>35</position> <time>30</time> </setting> </traverse> <output>fcs/flap-pos-deg</output> </kinematic> <aerosurface_scale name="rubbish/flap-pos-norm"> <input>fcs/flap-pos-deg</input> <domain> <min>0</min> <max>35</max> </domain> <range> <min>0</min> <max>1</max> </range> <output>fcs/flap-pos-norm</output> </aerosurface_scale> </channel> <channel name="Slats"> <kinematic name="rubbish/slat-pos-deg"> <input>/controls/flight/slats</input> <traverse> <setting> <position>0</position> <time>0</time> </setting> <setting> <position>27</position> <time>20</time> </setting> </traverse> <output>fcs/slat-pos-deg</output> </kinematic> <aerosurface_scale name="rubbish/slat-pos-norm"> <input>fcs/slat-pos-deg</input> <domain> <min>0</min> <max>27</max> </domain> <range> <min>0</min> <max>1</max> </range> <output>fcs/slat-pos-norm</output> </aerosurface_scale> </channel> <channel name="Landing Gear"> <kinematic name="rubbish/gear-pos-norm"> <input>gear/gear-cmd-norm</input> <traverse> <setting> <position>0</position> <time>0</time> </setting> <setting> <position>1</position> <time>10</time> </setting> </traverse> <output>gear/gear-pos-norm</output> </kinematic> </channel> <channel name="Speedbrake"> <pure_gain name="rubbish/speedbrake-pos-norm"> <input>/controls/flight/speedbrake-output</input> <gain>1.0</gain> <output>fcs/speedbrake-pos-norm</output> </pure_gain> </channel> <channel name="Tiller"> <switch name="hydraulics/tiller/switch"> <default value="/controls/flight/rudder"/> <test logic="AND" value="/controls/flight/aileron"> fbw/fmgc/enabled eq 0 /controls/flight/aileron-drives-tiller eq 1 </test> <test value="fbw/fmgc/yaw-cmd"> fbw/fmgc/enabled eq 1 </test> </switch> <fcs_function name="hydraulics/tiller/function"> <function> <table> <independentVar lookup="row">/velocities/groundspeed-kt</independentVar> <independentVar lookup="column">hydraulics/tiller/switch</independentVar> <tableData> -1 0 1 30.000 -70.0 0 70.0 30.001 -10.0 0 10.0 </tableData> </table> </function> </fcs_function> <actuator name="fcs/steer-deg"> <input>hydraulics/tiller/function</input> <rate_limit>70</rate_limit> <output>fcs/steer-pos-deg[0]</output> </actuator> </channel> <channel name="Brakes"> <summer name="fcs/left-brake-summer"> <input>/controls/gear/brake-left</input> <input>/controls/gear/brake-parking</input> <clipto> <min>-1</min> <max>1</max> </clipto> </summer> <switch name="rubbish/left-brake-cmd-norm"> <default value="fcs/left-brake-summer"/> <test value="/controls/autobrake/brake-left"> /controls/autobrake/active eq 1 </test> <output>fcs/left-brake-cmd-norm</output> </switch> <summer name="fcs/right-brake-summer"> <input>/controls/gear/brake-right</input> <input>/controls/gear/brake-parking</input> <clipto> <min>-1</min> <max>1</max> </clipto> </summer> <switch name="rubbish/right-brake-cmd-norm"> <default value="fcs/right-brake-summer"/> <test value="/controls/autobrake/brake-right"> /controls/autobrake/active eq 1 </test> <output>fcs/right-brake-cmd-norm</output> </switch> </channel> </system>