2084 lines
53 KiB
XML
2084 lines
53 KiB
XML
<?xml version="1.0"?>
|
|
|
|
<!-- Airbus A320 FBW -->
|
|
<!-- Copyright (c) 2022 Josh Davidson (Octal450) -->
|
|
|
|
<system name="A320: FBW">
|
|
|
|
<property value="0">fbw/detent-1-feedback</property>
|
|
<property value="0">fbw/detent-2-feedback</property>
|
|
<property value="0">fbw/roll/pid</property>
|
|
<property value="0">fbw/pitch/load-factor-pi</property>
|
|
<property value="0">fbw/pitch/pid</property>
|
|
<property value="0">fbw/yaw/tc-pd</property>
|
|
<property value="1">fbw/pitch/mixer/sidestick-gain-feedback</property>
|
|
<property value="0">fbw/spoiler-output</property>
|
|
<property value="3">fbw/rate-c1</property>
|
|
<property value="0">fbw/pitch/ias-input</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-d-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="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"> <!-- disable auto-trim -->
|
|
<default value="0"/>
|
|
<test logic="OR" value="1">
|
|
position/wow eq 1
|
|
<test logic="AND">
|
|
/it-fbw/yaw-law eq 2
|
|
/it-fbw/law ne 0
|
|
</test>
|
|
</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/alpha-stall-deg">
|
|
<function>
|
|
<table>
|
|
<independentVar lookup="row">atmosphere/density-altitude</independentVar>
|
|
<tableData>
|
|
0 15.5
|
|
43000 8.3
|
|
</tableData>
|
|
</table>
|
|
</function>
|
|
</fcs_function>
|
|
|
|
<fcs_function name="fbw/alpha-prot-deg">
|
|
<function>
|
|
<table>
|
|
<independentVar lookup="row">atmosphere/density-altitude</independentVar>
|
|
<independentVar lookup="column">fcs/flap-pos-deg</independentVar>
|
|
<independentVar lookup="table">fcs/slat-pos-deg</independentVar>
|
|
<tableData breakPoint="0">
|
|
0 10 15
|
|
0 9.0 11.0 10.5
|
|
43000 6.5 7.0 7.0
|
|
</tableData>
|
|
<tableData breakPoint="18">
|
|
0 10 15
|
|
0 10.0 11.0 10.5
|
|
43000 7.0 7.0 7.0
|
|
</tableData>
|
|
</table>
|
|
</function>
|
|
</fcs_function>
|
|
|
|
<fcs_function name="fbw/alpha-max-deg">
|
|
<function>
|
|
<table>
|
|
<independentVar lookup="row">atmosphere/density-altitude</independentVar>
|
|
<independentVar lookup="column">fcs/flap-pos-deg</independentVar>
|
|
<independentVar lookup="table">fcs/slat-pos-deg</independentVar>
|
|
<tableData breakPoint="0">
|
|
0 10 15
|
|
0 12.0 15.0 14.5
|
|
43000 7.4 7.7 7.7
|
|
</tableData>
|
|
<tableData breakPoint="18">
|
|
0 10 15
|
|
0 15.0 15.0 14.5
|
|
43000 7.7 7.7 7.7
|
|
</tableData>
|
|
</table>
|
|
</function>
|
|
</fcs_function>
|
|
|
|
<switch name="fbw/protections/overspeed">
|
|
<default value="fbw/protections/overspeed"/>
|
|
<test logic="OR" value="0">
|
|
position/wow eq 1
|
|
/it-fbw/law ne 0
|
|
/instrumentation/airspeed-indicator/indicated-speed-kt le /FMGC/internal/vmo-mmo
|
|
aero/alpha-deg-damped ge fbw/alpha-stall-deg
|
|
</test>
|
|
<test value="1">
|
|
/instrumentation/airspeed-indicator/indicated-speed-kt ge /FMGC/internal/vmo-mmo-plus-6
|
|
</test>
|
|
</switch>
|
|
|
|
<fcs_function name="fbw/roll/p-gain">
|
|
<function>
|
|
<table>
|
|
<independentVar lookup="row">velocities/vc-kts</independentVar>
|
|
<independentVar lookup="column">fbw/roll/gain-switch</independentVar>
|
|
<tableData>
|
|
0 1
|
|
140 -20.0 0.0
|
|
350 -5.0 0.0
|
|
</tableData>
|
|
</table>
|
|
</function>
|
|
</fcs_function>
|
|
|
|
<fcs_function name="fbw/roll/i-gain">
|
|
<function>
|
|
<table>
|
|
<independentVar lookup="row">velocities/vc-kts</independentVar>
|
|
<independentVar lookup="column">fbw/roll/gain-switch</independentVar>
|
|
<tableData>
|
|
0 1
|
|
140 -35.0 0.0
|
|
350 -10.0 0.0
|
|
</tableData>
|
|
</table>
|
|
</function>
|
|
</fcs_function>
|
|
|
|
<fcs_function name="fbw/roll/d-gain">
|
|
<function>
|
|
<table>
|
|
<independentVar lookup="row">velocities/vc-kts</independentVar>
|
|
<independentVar lookup="column">fbw/roll/gain-switch</independentVar>
|
|
<tableData>
|
|
0 1
|
|
140 -1.9 0.0
|
|
350 -0.4 0.0
|
|
</tableData>
|
|
</table>
|
|
</function>
|
|
</fcs_function>
|
|
|
|
<fcs_function name="fbw/pitch/p-gain">
|
|
<function>
|
|
<table>
|
|
<independentVar lookup="row">velocities/vc-kts</independentVar>
|
|
<independentVar lookup="column">fbw/pitch/gain-switch</independentVar>
|
|
<tableData>
|
|
0 1
|
|
140 28 0
|
|
350 20 0
|
|
</tableData>
|
|
</table>
|
|
</function>
|
|
</fcs_function>
|
|
|
|
<fcs_function name="fbw/pitch/i-gain">
|
|
<function>
|
|
<table>
|
|
<independentVar lookup="row">velocities/vc-kts</independentVar>
|
|
<independentVar lookup="column">fbw/pitch/gain-switch</independentVar>
|
|
<tableData>
|
|
0 1
|
|
140 60 0
|
|
350 40 0
|
|
</tableData>
|
|
</table>
|
|
</function>
|
|
</fcs_function>
|
|
|
|
<fcs_function name="fbw/pitch/d-gain">
|
|
<function>
|
|
<table>
|
|
<independentVar lookup="row">velocities/vc-kts</independentVar>
|
|
<independentVar lookup="column">fbw/pitch/gain-switch</independentVar>
|
|
<tableData>
|
|
0 1
|
|
140 2.0 0.0
|
|
350 0.3 0.0
|
|
</tableData>
|
|
</table>
|
|
</function>
|
|
</fcs_function>
|
|
|
|
<fcs_function name="fbw/yaw/yd-p-gain">
|
|
<function>
|
|
<table>
|
|
<independentVar lookup="row">velocities/vc-kts</independentVar>
|
|
<independentVar lookup="column">fbw/yaw/gain-switch</independentVar>
|
|
<tableData>
|
|
0 1
|
|
140 -7.0 0.0
|
|
350 -1.2 0.0
|
|
</tableData>
|
|
</table>
|
|
</function>
|
|
</fcs_function>
|
|
|
|
<fcs_function name="fbw/yaw/tc-p-gain">
|
|
<function>
|
|
<table>
|
|
<independentVar lookup="row">velocities/vc-kts</independentVar>
|
|
<independentVar lookup="column">fbw/yaw/gain-switch</independentVar>
|
|
<tableData>
|
|
0 1
|
|
140 3.0 0.0
|
|
350 1.5 0.0
|
|
</tableData>
|
|
</table>
|
|
</function>
|
|
</fcs_function>
|
|
|
|
<fcs_function name="fbw/yaw/tc-d-gain">
|
|
<function>
|
|
<table>
|
|
<independentVar lookup="row">velocities/vc-kts</independentVar>
|
|
<independentVar lookup="column">fbw/yaw/gain-switch</independentVar>
|
|
<tableData>
|
|
0 1
|
|
140 6.0 0.0
|
|
350 3.0 0.0
|
|
</tableData>
|
|
</table>
|
|
</function>
|
|
</fcs_function>
|
|
|
|
<pure_gain name="fbw/pitch/g-instrumented">
|
|
<input>/accelerations/pilot-g</input>
|
|
<gain>1.0</gain>
|
|
</pure_gain>
|
|
|
|
<actuator name="fbw/roll/mixer/sidestick-gain">
|
|
<input>position/wow</input>
|
|
<rate_limit>2</rate_limit> <!-- 0.5 seconds -->
|
|
<output>fbw/roll/mixer/sidestick-gain-feedback</output>
|
|
</actuator>
|
|
|
|
<fcs_function name="fbw/roll/mixer/computer-gain">
|
|
<function>
|
|
<table>
|
|
<independentVar lookup="row">fbw/roll/mixer/sidestick-gain</independentVar>
|
|
<tableData>
|
|
0 1
|
|
1 0
|
|
</tableData>
|
|
</table>
|
|
</function>
|
|
</fcs_function>
|
|
|
|
<actuator name="fbw/pitch/mixer/sidestick-gain-linear">
|
|
<input>position/wow</input>
|
|
<rate_limit>0.2</rate_limit> <!-- 5 seconds -->
|
|
<output>fbw/pitch/mixer/sidestick-gain-feedback</output>
|
|
</actuator>
|
|
|
|
<fcs_function name="fbw/pitch/mixer/sidestick-gain">
|
|
<function>
|
|
<table>
|
|
<independentVar lookup="row">fbw/pitch/mixer/sidestick-gain-linear</independentVar>
|
|
<independentVar lookup="column">position/wow</independentVar>
|
|
<tableData>
|
|
0 1
|
|
0.0 0.0 0.0
|
|
0.4 0.2 0.7
|
|
0.6 0.3 0.8
|
|
1.0 1.0 1.0
|
|
</tableData>
|
|
</table>
|
|
</function>
|
|
</fcs_function>
|
|
|
|
<fcs_function name="fbw/pitch/mixer/computer-gain">
|
|
<function>
|
|
<table>
|
|
<independentVar lookup="row">fbw/pitch/mixer/sidestick-gain</independentVar>
|
|
<tableData>
|
|
0 1
|
|
1 0
|
|
</tableData>
|
|
</table>
|
|
</function>
|
|
</fcs_function>
|
|
|
|
<fcs_function name="fbw/sidestick/roll-input-cmd">
|
|
<function>
|
|
<sum>
|
|
<product>
|
|
<property>/controls/flight/aileron[0]</property>
|
|
<property>fbw/sidestick/active[0]</property>
|
|
</product>
|
|
<product>
|
|
<property>/controls/flight/aileron[1]</property>
|
|
<property>fbw/sidestick/active[1]</property>
|
|
</product>
|
|
</sum>
|
|
</function>
|
|
<clipto>
|
|
<min>-1.0</min>
|
|
<max>1.0</max>
|
|
</clipto>
|
|
</fcs_function>
|
|
|
|
<fcs_function name="fbw/sidestick/roll-input">
|
|
<function>
|
|
<table>
|
|
<independentVar lookup="row">fbw/sidestick/roll-input-cmd</independentVar>
|
|
<tableData>
|
|
-1.00 -1
|
|
-0.02 0
|
|
0.02 0
|
|
1.00 1
|
|
</tableData>
|
|
</table>
|
|
</function>
|
|
</fcs_function>
|
|
|
|
<fcs_function name="fbw/sidestick/pitch-input-cmd">
|
|
<function>
|
|
<sum>
|
|
<product>
|
|
<property>/controls/flight/elevator[0]</property>
|
|
<property>fbw/sidestick/active[0]</property>
|
|
</product>
|
|
<product>
|
|
<property>/controls/flight/elevator[1]</property>
|
|
<property>fbw/sidestick/active[1]</property>
|
|
</product>
|
|
</sum>
|
|
</function>
|
|
<clipto>
|
|
<min>-1.0</min>
|
|
<max>1.0</max>
|
|
</clipto>
|
|
</fcs_function>
|
|
|
|
<fcs_function name="fbw/sidestick/pitch-input">
|
|
<function>
|
|
<table>
|
|
<independentVar lookup="row">fbw/sidestick/pitch-input-cmd</independentVar>
|
|
<tableData>
|
|
-1.00 -1
|
|
-0.02 0
|
|
0.02 0
|
|
1.00 1
|
|
</tableData>
|
|
</table>
|
|
</function>
|
|
</fcs_function>
|
|
|
|
<fcs_function name="fbw/sidestick/yaw-input-cmd">
|
|
<function>
|
|
<sum>
|
|
<product>
|
|
<property>/controls/flight/rudder[0]</property>
|
|
<property>fbw/sidestick/active[0]</property>
|
|
</product>
|
|
<product>
|
|
<property>/controls/flight/rudder[1]</property>
|
|
<property>fbw/sidestick/active[1]</property>
|
|
</product>
|
|
</sum>
|
|
</function>
|
|
<clipto>
|
|
<min>-1.0</min>
|
|
<max>1.0</max>
|
|
</clipto>
|
|
</fcs_function>
|
|
|
|
<fcs_function name="fbw/sidestick/yaw-input">
|
|
<function>
|
|
<table>
|
|
<independentVar lookup="row">fbw/sidestick/yaw-input-cmd</independentVar>
|
|
<independentVar lookup="column">fbw/fmgc/enabled</independentVar>
|
|
<tableData>
|
|
0 1
|
|
-1.00 -1 0
|
|
-0.02 0 0
|
|
0.02 0 0
|
|
1.00 1 0
|
|
</tableData>
|
|
</table>
|
|
</function>
|
|
</fcs_function>
|
|
|
|
<pid name="fbw/pitch/vc-kts-rate">
|
|
<descripton>Use D only to calculate rate of IAS</descripton>
|
|
<input>velocities/vc-kts</input>
|
|
<kp>0.0</kp>
|
|
<ki>0.0</ki>
|
|
<kd>1.0</kd>
|
|
</pid>
|
|
|
|
<lag_filter name="fbw/pitch/vc-kts-rate-lag">
|
|
<input>fbw/pitch/vc-kts-rate</input>
|
|
<c1>10</c1>
|
|
</lag_filter>
|
|
|
|
<!-- Because we want to be attitude stable -->
|
|
<fcs_function name="fbw/roll/p-rad_sec">
|
|
<function>
|
|
<toradians>
|
|
<property>/orientation/roll-rate-degps</property>
|
|
</toradians>
|
|
</function>
|
|
</fcs_function>
|
|
|
|
<fcs_function name="fbw/pitch/thetadot-rad_sec">
|
|
<function>
|
|
<toradians>
|
|
<property>/orientation/pitch-rate-degps</property>
|
|
</toradians>
|
|
</function>
|
|
</fcs_function>
|
|
|
|
<!-- Custom Load Factor Calculation -->
|
|
<fcs_function name="fbw/pitch/load-factor-computed">
|
|
<function>
|
|
<ifthen>
|
|
<eq>
|
|
<property>position/wow</property>
|
|
<value>0</value>
|
|
</eq>
|
|
<sum>
|
|
<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>
|
|
<quotient>
|
|
<value>-1</value>
|
|
<cos>
|
|
<property>attitude/roll-rad</property>
|
|
</cos>
|
|
</quotient>
|
|
<value>1</value>
|
|
</sum>
|
|
<value>1</value>
|
|
</ifthen>
|
|
</function>
|
|
</fcs_function>
|
|
|
|
<lag_filter name="fbw/pitch/load-factor">
|
|
<input>fbw/pitch/load-factor-computed</input>
|
|
<c1>7.5</c1>
|
|
</lag_filter>
|
|
|
|
</channel>
|
|
|
|
<channel name="ELAC Power Supply">
|
|
|
|
<switch name="/systems/fctl/power-supply/elac1/relay-condition">
|
|
<default value="0"/>
|
|
<test logic="OR" value="1">
|
|
/systems/hydraulic/blue-psi ge 1500
|
|
/systems/hydraulic/green-psi ge 1500
|
|
/systems/hydraulic/yellow-psi ge 1500
|
|
</test>
|
|
</switch>
|
|
|
|
<!-- if ELAC1 is not powered, then the timer does not run - this makes behaviour with cold + dark OK -->
|
|
<switch name="/systems/fctl/power-supply/elac1/relay-rate">
|
|
<default value="100"/>
|
|
<test logic="OR" value="0.03333333333">
|
|
/systems/fctl/elac1 eq 1
|
|
</test>
|
|
</switch>
|
|
|
|
<actuator name="/systems/fctl/power-supply/elac1/relay-timer">
|
|
<input>/systems/fctl/power-supply/elac1/relay-condition</input>
|
|
<rate_limit sense="incr">100</rate_limit>
|
|
<rate_limit sense="decr">0.03333333333</rate_limit> <!-- 30s -->
|
|
</actuator>
|
|
|
|
<switch name="/systems/fctl/power-supply/elac1/relay">
|
|
<default value="0"/>
|
|
<test logic="AND" value="/systems/electrical/bus/sub-bus/dc-hot-1-703">
|
|
/systems/electrical/bus/sub-bus/dc-hot-1-703 ge 25
|
|
/systems/fctl/power-supply/elac1/relay-timer ne 0
|
|
</test>
|
|
</switch>
|
|
|
|
<switch name="/systems/fctl/power-supply/elac2/relay-power">
|
|
<default value="0"/>
|
|
<test logic="AND" value="1"> <!-- latch as long as power is lost -->
|
|
/systems/fctl/power-supply/elac2/relay-power eq 1
|
|
/systems/electrical/bus/sub-bus/dc-2-202 lt 25
|
|
</test>
|
|
<test logic="AND" value="1"> <!-- only trigger if the ELAC is on -->
|
|
/systems/fctl/elac2 eq 1
|
|
/systems/electrical/bus/sub-bus/dc-2-202 lt 25
|
|
</test>
|
|
</switch>
|
|
|
|
<!-- Only if the relay has already gone on -
|
|
if blue is low or gear is not extended, it will go permanently rather than for just 30 seconds
|
|
in addition this will happen even if the timer has already reached 30 seconds
|
|
however, it will not trigger if the relay is not yet triggered
|
|
and it should not trigger unless the ELAC has already gained and then lost power -->
|
|
<switch name="/systems/fctl/power-supply/elac2/relay-power-override">
|
|
<default value="0"/>
|
|
<test logic="AND" value="1">
|
|
<test logic="OR">
|
|
/systems/hydraulic/blue-psi lt 1500
|
|
/gear/gear[1]/position-norm ne 0
|
|
</test>
|
|
/systems/electrical/some-electric-thingie/speed-abv-100 eq 1
|
|
/systems/fctl/power-supply/elac2/relay-power eq 1
|
|
</test>
|
|
</switch>
|
|
|
|
<actuator name="/systems/fctl/power-supply/elac2/relay-timer">
|
|
<input>/systems/fctl/power-supply/elac2/relay-power</input>
|
|
<rate_limit sense="incr">0.03333333333</rate_limit>
|
|
<rate_limit sense="decr">100</rate_limit>
|
|
</actuator>
|
|
|
|
<switch name="/systems/fctl/power-supply/elac2/relay">
|
|
<default value="0"/>
|
|
<test logic="AND" value="/systems/electrical/bus/sub-bus/dc-hot-2-704">
|
|
/systems/electrical/bus/sub-bus/dc-hot-2-704 ge 25
|
|
/systems/fctl/power-supply/elac2/relay-power eq 1
|
|
<test logic="OR">
|
|
/systems/fctl/power-supply/elac2/relay-power-override eq 1
|
|
/systems/fctl/power-supply/elac2/relay-timer ne 1
|
|
</test>
|
|
</test>
|
|
</switch>
|
|
|
|
</channel>
|
|
|
|
<channel name="SEC Power Supply">
|
|
|
|
<switch name="/systems/fctl/power-supply/sec1/relay-condition">
|
|
<default value="0"/>
|
|
<test logic="OR" value="1">
|
|
/systems/hydraulic/blue-psi ge 1500
|
|
/systems/hydraulic/green-psi ge 1500
|
|
/systems/hydraulic/yellow-psi ge 1500
|
|
</test>
|
|
</switch>
|
|
|
|
<!-- if SEC1 is not powered, then the timer does not run - this makes behaviour with cold + dark OK -->
|
|
<switch name="/systems/fctl/power-supply/sec1/relay-rate">
|
|
<default value="100"/>
|
|
<test logic="OR" value="0.03333333333">
|
|
/systems/fctl/sec1 eq 1
|
|
</test>
|
|
</switch>
|
|
|
|
<actuator name="/systems/fctl/power-supply/sec1/relay-timer">
|
|
<input>/systems/fctl/power-supply/sec1/relay-condition</input>
|
|
<rate_limit sense="incr">100</rate_limit>
|
|
<rate_limit sense="decr">0.03333333333</rate_limit> <!-- 30s -->
|
|
</actuator>
|
|
|
|
<switch name="/systems/fctl/power-supply/sec1/relay">
|
|
<default value="0"/>
|
|
<test logic="AND" value="/systems/electrical/bus/sub-bus/dc-hot-1-703">
|
|
/systems/electrical/bus/sub-bus/dc-hot-1-703 ge 25
|
|
/systems/fctl/power-supply/sec1/relay-timer ne 0
|
|
</test>
|
|
</switch>
|
|
|
|
</channel>
|
|
|
|
<channel name="Computers">
|
|
|
|
<switch name="/systems/fctl/lights/elac1-fault">
|
|
<default value="0"/>
|
|
<test logic="AND" value="1">
|
|
/controls/fctl/switches/elac1 eq 1
|
|
/systems/fctl/elac1 eq 0
|
|
</test>
|
|
</switch>
|
|
|
|
<switch name="/systems/fctl/power-supply/elac1/has-power">
|
|
<default value="0"/>
|
|
<test logic="OR" value="1">
|
|
/systems/electrical/bus/dc-ess ge 25
|
|
/systems/fctl/power-supply/elac1/relay ge 25
|
|
</test>
|
|
</switch>
|
|
|
|
<actuator name="/systems/fctl/power-supply/elac1/has-power-output">
|
|
<input>/systems/fctl/power-supply/elac1/has-power</input>
|
|
<rate_limit sense="incr">100</rate_limit>
|
|
<rate_limit sense="decr">10</rate_limit> <!-- 100ms -->
|
|
</actuator>
|
|
|
|
<switch name="/systems/fctl/elac1">
|
|
<default value="0"/>
|
|
<test logic="AND" value="1">
|
|
/controls/fctl/switches/elac1 eq 1
|
|
/systems/failures/fctl/elac1 eq 0
|
|
/systems/fctl/power-supply/elac1/has-power-output ne 0
|
|
</test>
|
|
</switch>
|
|
|
|
<switch name="/systems/fctl/lights/elac2-fault">
|
|
<default value="0"/>
|
|
<test logic="AND" value="1">
|
|
/controls/fctl/switches/elac2 eq 1
|
|
/systems/fctl/elac2 eq 0
|
|
</test>
|
|
</switch>
|
|
|
|
<switch name="/systems/fctl/power-supply/elac2/has-power">
|
|
<default value="0"/>
|
|
<test logic="OR" value="1">
|
|
/systems/electrical/bus/sub-bus/dc-2-202 ge 25
|
|
/systems/fctl/power-supply/elac2/relay ge 25
|
|
</test>
|
|
</switch>
|
|
|
|
<actuator name="/systems/fctl/power-supply/elac2/has-power-output">
|
|
<input>/systems/fctl/power-supply/elac2/has-power</input>
|
|
<rate_limit sense="incr">100</rate_limit>
|
|
<rate_limit sense="decr">10</rate_limit> <!-- 100ms -->
|
|
</actuator>
|
|
|
|
<switch name="/systems/fctl/elac2">
|
|
<default value="0"/>
|
|
<test logic="AND" value="1">
|
|
/controls/fctl/switches/elac2 eq 1
|
|
/systems/failures/fctl/elac2 eq 0
|
|
/systems/fctl/power-supply/elac2/has-power-output ne 0
|
|
</test>
|
|
</switch>
|
|
|
|
<switch name="/systems/fctl/lights/sec1-fault">
|
|
<default value="0"/>
|
|
<test logic="AND" value="1">
|
|
/controls/fctl/switches/sec1 eq 1
|
|
/systems/fctl/sec1 eq 0
|
|
</test>
|
|
</switch>
|
|
|
|
<switch name="/systems/fctl/power-supply/sec1/has-power">
|
|
<default value="0"/>
|
|
<test logic="OR" value="1">
|
|
/systems/electrical/bus/dc-ess ge 25
|
|
/systems/fctl/power-supply/sec1/relay ge 25
|
|
</test>
|
|
</switch>
|
|
|
|
<actuator name="/systems/fctl/power-supply/sec1/has-power-output">
|
|
<input>/systems/fctl/power-supply/sec1/has-power</input>
|
|
<rate_limit sense="incr">100</rate_limit>
|
|
<rate_limit sense="decr">10</rate_limit> <!-- 100ms -->
|
|
</actuator>
|
|
|
|
<switch name="/systems/fctl/sec1">
|
|
<default value="0"/>
|
|
<test logic="AND" value="1">
|
|
/controls/fctl/switches/sec1 eq 1
|
|
/systems/failures/fctl/sec1 eq 0
|
|
/systems/fctl/power-supply/sec1/has-power-output ne 0
|
|
</test>
|
|
</switch>
|
|
|
|
<switch name="/systems/fctl/lights/sec2-fault">
|
|
<default value="0"/>
|
|
<test logic="AND" value="1">
|
|
/controls/fctl/switches/sec2 eq 1
|
|
/systems/fctl/sec2 eq 0
|
|
</test>
|
|
</switch>
|
|
|
|
<switch name="/systems/fctl/power-supply/sec2/has-power">
|
|
<default value="0"/>
|
|
<test logic="OR" value="1">
|
|
/systems/electrical/bus/sub-bus/dc-2-204 ge 25
|
|
</test>
|
|
</switch>
|
|
|
|
<actuator name="/systems/fctl/power-supply/sec2/has-power-output">
|
|
<input>/systems/fctl/power-supply/sec2/has-power</input>
|
|
<rate_limit sense="incr">100</rate_limit>
|
|
<rate_limit sense="decr">10</rate_limit> <!-- 100ms -->
|
|
</actuator>
|
|
|
|
<switch name="/systems/fctl/sec2">
|
|
<default value="0"/>
|
|
<test logic="AND" value="1">
|
|
/controls/fctl/switches/sec2 eq 1
|
|
/systems/failures/fctl/sec2 eq 0
|
|
/systems/fctl/power-supply/sec2/has-power-output ne 0
|
|
</test>
|
|
</switch>
|
|
|
|
<switch name="/systems/fctl/lights/sec3-fault">
|
|
<default value="0"/>
|
|
<test logic="AND" value="1">
|
|
/controls/fctl/switches/sec3 eq 1
|
|
/systems/fctl/sec3 eq 0
|
|
</test>
|
|
</switch>
|
|
|
|
<switch name="/systems/fctl/power-supply/sec3/has-power">
|
|
<default value="0"/>
|
|
<test logic="OR" value="1">
|
|
/systems/electrical/bus/sub-bus/dc-2-204 ge 25
|
|
</test>
|
|
</switch>
|
|
|
|
<actuator name="/systems/fctl/power-supply/sec3/has-power-output">
|
|
<input>/systems/fctl/power-supply/sec3/has-power</input>
|
|
<rate_limit sense="incr">100</rate_limit>
|
|
<rate_limit sense="decr">10</rate_limit> <!-- 100ms -->
|
|
</actuator>
|
|
|
|
|
|
<switch name="/systems/fctl/sec3">
|
|
<default value="0"/>
|
|
<test logic="AND" value="1">
|
|
/controls/fctl/switches/sec3 eq 1
|
|
/systems/failures/fctl/sec3 eq 0
|
|
/systems/fctl/power-supply/sec3/has-power-output ne 0
|
|
</test>
|
|
</switch>
|
|
|
|
<switch name="/systems/fctl/fac1-healthy-inp">
|
|
<default value="0"/>
|
|
<test logic="AND" value="1">
|
|
/controls/fctl/switches/fac1 eq 1
|
|
/systems/failures/fctl/fac1 eq 0
|
|
<test logic="OR">
|
|
/systems/electrical/bus/ac-ess ge 110
|
|
/systems/electrical/bus/dc-ess-shed ge 25
|
|
</test>
|
|
</test>
|
|
</switch>
|
|
|
|
<actuator name="/systems/fctl/fac1-healthy">
|
|
<input>/systems/fctl/fac1-healthy-inp</input>
|
|
<rate_limit sense="incr">100</rate_limit>
|
|
<rate_limit sense="decr">10</rate_limit>
|
|
</actuator>
|
|
|
|
<switch name="/systems/fctl/fac1-healthy-latch-set">
|
|
<default value="0"/>
|
|
<test logic="AND" value="1">
|
|
/gear/gear[0]/wow eq 0
|
|
/controls/fctl/switches/fac1 eq 1
|
|
/systems/fctl/fac1-healthy eq 0
|
|
</test>
|
|
</switch>
|
|
|
|
<switch name="/systems/fctl/fac1-healthy-latch-reset">
|
|
<default value="0"/>
|
|
<test logic="AND" value="1">
|
|
/controls/fctl/switches/fac1 eq 0
|
|
</test>
|
|
</switch>
|
|
|
|
<switch name="/systems/fctl/fac1-healthy-latch">
|
|
<default value="/systems/fctl/fac1-healthy-latch"/>
|
|
<test value="1">
|
|
/systems/fctl/fac1-healthy-latch-set eq 1
|
|
</test>
|
|
<test value="0">
|
|
/systems/fctl/fac1-healthy-latch-reset eq 1
|
|
</test>
|
|
</switch>
|
|
|
|
<switch name="/systems/fctl/fac1-healthy-signal">
|
|
<default value="0"/>
|
|
<test logic="AND" value="1">
|
|
/systems/fctl/fac1-healthy eq 1
|
|
<test logic="OR">
|
|
/systems/fctl/fac1-healthy-latch eq 0
|
|
/gear/gear[0]/wow eq 1
|
|
</test>
|
|
</test>
|
|
</switch>
|
|
|
|
<switch name="/systems/fctl/lights/fac1-fault">
|
|
<default value="0"/>
|
|
<test logic="AND" value="1">
|
|
/controls/fctl/switches/fac1 eq 1
|
|
/systems/fctl/fac1-healthy-signal eq 0
|
|
</test>
|
|
</switch>
|
|
|
|
<switch name="/systems/fctl/fac1">
|
|
<default value="0"/>
|
|
<test logic="AND" value="1">
|
|
/controls/fctl/switches/fac1 eq 1
|
|
/systems/fctl/fac1-healthy-signal eq 1
|
|
</test>
|
|
</switch>
|
|
|
|
<switch name="/systems/fctl/fac2-healthy-inp">
|
|
<default value="0"/>
|
|
<test logic="AND" value="1">
|
|
/controls/fctl/switches/fac2 eq 1
|
|
/systems/failures/fctl/fac2 eq 0
|
|
<test logic="OR">
|
|
/systems/electrical/bus/ac-2 ge 110
|
|
/systems/electrical/bus/dc-2 ge 25
|
|
</test>
|
|
</test>
|
|
</switch>
|
|
|
|
<actuator name="/systems/fctl/fac2-healthy">
|
|
<input>/systems/fctl/fac2-healthy-inp</input>
|
|
<rate_limit sense="incr">100</rate_limit>
|
|
<rate_limit sense="decr">10</rate_limit>
|
|
</actuator>
|
|
|
|
<switch name="/systems/fctl/fac2-healthy-latch-set">
|
|
<default value="0"/>
|
|
<test logic="AND" value="1">
|
|
/controls/fctl/switches/fac2 eq 1
|
|
/systems/fctl/fac2-healthy eq 0
|
|
</test>
|
|
</switch>
|
|
|
|
<switch name="/systems/fctl/fac2-healthy-latch-reset">
|
|
<default value="0"/>
|
|
<test logic="AND" value="1">
|
|
/controls/fctl/switches/fac2 eq 0
|
|
</test>
|
|
</switch>
|
|
|
|
<switch name="/systems/fctl/fac2-healthy-latch">
|
|
<default value="/systems/fctl/fac2-healthy-latch"/>
|
|
<test value="1">
|
|
/gear/gear[0]/wow eq 0
|
|
/systems/fctl/fac2-healthy-latch-set eq 1
|
|
</test>
|
|
<test value="0">
|
|
/systems/fctl/fac2-healthy-latch-reset eq 1
|
|
</test>
|
|
</switch>
|
|
|
|
<switch name="/systems/fctl/fac2-healthy-signal">
|
|
<default value="0"/>
|
|
<test logic="AND" value="1">
|
|
/systems/fctl/fac2-healthy eq 1
|
|
<test logic="OR">
|
|
/systems/fctl/fac2-healthy-latch eq 0
|
|
/gear/gear[0]/wow eq 1
|
|
</test>
|
|
</test>
|
|
</switch>
|
|
|
|
<switch name="/systems/fctl/lights/fac2-fault">
|
|
<default value="0"/>
|
|
<test logic="AND" value="1">
|
|
/controls/fctl/switches/fac2 eq 1
|
|
/systems/fctl/fac2-healthy-signal eq 0
|
|
</test>
|
|
</switch>
|
|
|
|
<switch name="/systems/fctl/fac2">
|
|
<default value="0"/>
|
|
<test logic="AND" value="1">
|
|
/controls/fctl/switches/fac2 eq 1
|
|
/systems/fctl/fac2-healthy-signal eq 1
|
|
</test>
|
|
</switch>
|
|
|
|
</channel>
|
|
|
|
<channel name="FBW: Roll">
|
|
|
|
<switch name="fbw/roll/a-i-f">
|
|
<default value="fbw/sidestick/roll-input"/>
|
|
<test value="0">
|
|
fbw/fmgc/enabled eq 1
|
|
</test>
|
|
</switch>
|
|
|
|
<actuator name="fbw/roll/a-i-m">
|
|
<input>fbw/roll/a-i-f</input>
|
|
<rate_limit>3.0</rate_limit>
|
|
</actuator>
|
|
|
|
<lag_filter name="fbw/roll/a-i-pfd">
|
|
<input>fbw/roll/a-i-m</input>
|
|
<c1>20</c1>
|
|
</lag_filter>
|
|
|
|
<fcs_function name="fbw/roll/max-rad-i-n">
|
|
<function>
|
|
<abs>
|
|
<table>
|
|
<independentVar lookup="row">fbw/roll/a-i-f</independentVar>
|
|
<tableData>
|
|
-1.00 -1
|
|
-0.25 0
|
|
0.25 0
|
|
1.00 1
|
|
</tableData>
|
|
</table>
|
|
</abs>
|
|
</function>
|
|
</fcs_function>
|
|
|
|
<fcs_function name="fbw/roll/max-rad-i-o">
|
|
<function>
|
|
<abs>
|
|
<property>fbw/roll/a-i-f</property>
|
|
</abs>
|
|
</function>
|
|
</fcs_function>
|
|
|
|
<lag_filter name="fbw/roll/max-rad-l-n">
|
|
<input>fbw/roll/max-rad-i-n</input>
|
|
<c1>fbw/rate-c1</c1>
|
|
</lag_filter>
|
|
|
|
<lag_filter name="fbw/roll/max-rad-l-o">
|
|
<input>fbw/roll/max-rad-i-o</input>
|
|
<c1>fbw/rate-c1</c1>
|
|
</lag_filter>
|
|
|
|
<switch name="fbw/roll/overspeed-overbank">
|
|
<default value="0"/>
|
|
<test value="0">
|
|
fbw/protections/overspeed ne 1
|
|
</test>
|
|
<test logic="OR" value="1">
|
|
attitude/roll-rad lt -0.584685
|
|
attitude/roll-rad gt 0.584685
|
|
</test>
|
|
</switch>
|
|
|
|
<fcs_function name="fbw/roll/max-rad">
|
|
<function>
|
|
<ifthen>
|
|
<eq>
|
|
<property>fbw/protections/overspeed</property>
|
|
<value>1</value>
|
|
</eq>
|
|
<table>
|
|
<independentVar lookup="row">fbw/roll/max-rad-l-o</independentVar>
|
|
<tableData>
|
|
0 0.000000
|
|
1 0.785398
|
|
</tableData>
|
|
</table>
|
|
<table>
|
|
<independentVar lookup="row">fbw/roll/max-rad-l-n</independentVar>
|
|
<tableData>
|
|
0 0.575959
|
|
1 1.169370
|
|
</tableData>
|
|
</table>
|
|
</ifthen>
|
|
</function>
|
|
</fcs_function>
|
|
|
|
<pure_gain name="fbw/roll/min-rad">
|
|
<input>fbw/roll/max-rad</input>
|
|
<gain>-1.0</gain>
|
|
</pure_gain>
|
|
|
|
<summer name="fbw/roll/max-rad-error">
|
|
<input>attitude/roll-rad</input>
|
|
<input>-fbw/roll/max-rad</input>
|
|
</summer>
|
|
|
|
<summer name="fbw/roll/min-rad-error">
|
|
<input>attitude/roll-rad</input>
|
|
<input>-fbw/roll/min-rad</input>
|
|
</summer>
|
|
|
|
<fcs_function name="fbw/roll/a-i-max">
|
|
<function>
|
|
<table>
|
|
<independentVar lookup="row">fbw/roll/max-rad-error</independentVar>
|
|
<tableData>
|
|
-0.087266 1.0
|
|
-0.034907 0.1
|
|
0.000000 0.0
|
|
</tableData>
|
|
</table>
|
|
</function>
|
|
</fcs_function>
|
|
|
|
<fcs_function name="fbw/roll/a-i-min">
|
|
<function>
|
|
<table>
|
|
<independentVar lookup="row">fbw/roll/min-rad-error</independentVar>
|
|
<tableData>
|
|
0.000000 0.0
|
|
0.034907 -0.1
|
|
0.087266 -1.0
|
|
</tableData>
|
|
</table>
|
|
</function>
|
|
</fcs_function>
|
|
|
|
<switch name="fbw/roll/a-i-cmd">
|
|
<default value="0"/>
|
|
<test logic="AND" value="fbw/sidestick/roll-input">
|
|
fbw/fmgc/enabled eq 0
|
|
</test>
|
|
<test logic="AND" value="fbw/fmgc/roll-cmd">
|
|
position/wow eq 0
|
|
fbw/fmgc/enabled eq 1
|
|
</test>
|
|
<clipto>
|
|
<min>fbw/roll/a-i-min</min>
|
|
<max>fbw/roll/a-i-max</max>
|
|
</clipto>
|
|
</switch>
|
|
|
|
<fcs_function name="fbw/roll/over-max">
|
|
<function>
|
|
<table>
|
|
<independentVar lookup="row">fbw/roll/max-rad-error</independentVar>
|
|
<independentVar lookup="column">fbw/roll/overspeed-overbank</independentVar>
|
|
<tableData>
|
|
0 1
|
|
0.000000 0.00 0.00
|
|
0.034907 -0.10 -0.10
|
|
0.087266 -0.67 -1.00
|
|
</tableData>
|
|
</table>
|
|
</function>
|
|
</fcs_function>
|
|
|
|
<fcs_function name="fbw/roll/over-min">
|
|
<function>
|
|
<table>
|
|
<independentVar lookup="row">fbw/roll/min-rad-error</independentVar>
|
|
<independentVar lookup="column">fbw/roll/overspeed-overbank</independentVar>
|
|
<tableData>
|
|
0 1
|
|
-0.087266 0.67 1.00
|
|
-0.034907 0.10 0.10
|
|
0.000000 0.00 0.00
|
|
</tableData>
|
|
</table>
|
|
</function>
|
|
</fcs_function>
|
|
|
|
<summer name="fbw/roll/a-i-sum">
|
|
<input>fbw/roll/a-i-cmd</input>
|
|
<input>fbw/roll/over-max</input>
|
|
<input>fbw/roll/over-min</input>
|
|
<clipto>
|
|
<min>-1.0</min>
|
|
<max>1.0</max>
|
|
</clipto>
|
|
</summer>
|
|
|
|
<lag_filter name="fbw/roll/a-i">
|
|
<input>fbw/roll/a-i-sum</input>
|
|
<c1>fbw/rate-c1</c1>
|
|
</lag_filter>
|
|
|
|
<pure_gain name="fbw/roll/rate-demand">
|
|
<input>fbw/roll/a-i</input>
|
|
<gain>0.261799</gain>
|
|
</pure_gain>
|
|
|
|
<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>
|
|
|
|
<summer name="fbw/roll/rate-error">
|
|
<input>fbw/roll/p-r_s-s</input>
|
|
<input>-fbw/roll/rate-demand</input>
|
|
</summer>
|
|
|
|
<switch name="fbw/roll/trigger">
|
|
<default value="0"/>
|
|
<test value="-1">
|
|
fbw/roll/gain-switch gt 0
|
|
</test>
|
|
<test logic="OR" value="1">
|
|
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>
|
|
<output>fbw/roll/pid</output>
|
|
<clipto>
|
|
<min>-1.0</min>
|
|
<max>1.0</max>
|
|
</clipto>
|
|
</pid>
|
|
|
|
<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>
|
|
|
|
<pure_gain name="fbw/roll/rollout-cmd">
|
|
<input>/orientation/roll-deg</input>
|
|
<gain>-0.1</gain>
|
|
</pure_gain>
|
|
|
|
<pure_gain name="fbw/roll/mixer/computer-demand">
|
|
<input>fbw/roll/pid</input>
|
|
<gain>fbw/roll/mixer/computer-gain</gain>
|
|
</pure_gain>
|
|
|
|
<pure_gain name="fbw/roll/mixer/sidestick-demand">
|
|
<input>fbw/roll/a-i-f</input>
|
|
<gain>fbw/roll/mixer/sidestick-gain</gain>
|
|
</pure_gain>
|
|
|
|
<summer name="fbw/roll/mixer/output">
|
|
<input>fbw/roll/mixer/computer-demand</input>
|
|
<input>fbw/roll/mixer/sidestick-demand</input>
|
|
<clipto>
|
|
<min>-1.0</min>
|
|
<max>1.0</max>
|
|
</clipto>
|
|
</summer>
|
|
|
|
<switch name="fbw/aileron-output">
|
|
<default value="0"/>
|
|
<test logic="AND" value="fbw/roll/mixer/output"> <!-- Mix stick and control law for transition -->
|
|
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/rollout-cmd">
|
|
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>
|
|
|
|
<switch name="fbw/roll/s-i-f-i">
|
|
<default value="0"/>
|
|
<test logic="AND" value="fbw/roll/a-i">
|
|
position/wow eq 0
|
|
/it-fbw/law eq 0
|
|
</test>
|
|
<test value="fbw/roll/a-i-f">
|
|
fbw/roll/gear-law-switch eq 1
|
|
</test>
|
|
<test logic="AND" value="0">
|
|
/it-fbw/law eq 3
|
|
</test>
|
|
</switch>
|
|
|
|
<fcs_function name="fbw/roll/s-i-f-cmd">
|
|
<function>
|
|
<table>
|
|
<independentVar lookup="row">fbw/roll/s-i-f-i</independentVar>
|
|
<tableData>
|
|
-1.00 -1.0
|
|
-0.05 0.0
|
|
0.05 0.0
|
|
1.00 1.0
|
|
</tableData>
|
|
</table>
|
|
</function>
|
|
</fcs_function>
|
|
|
|
<fcs_function name="fbw/roll/s-i-f">
|
|
<function>
|
|
<product>
|
|
<pow>
|
|
<abs><property>fbw/roll/s-i-f-i</property></abs>
|
|
<value>1.7</value>
|
|
</pow>
|
|
<ifthen>
|
|
<lt>
|
|
<property>fbw/roll/s-i-f-i</property>
|
|
<value>0</value>
|
|
</lt>
|
|
<value>-1</value>
|
|
<value>1</value>
|
|
</ifthen>
|
|
<table>
|
|
<independentVar lookup="row">velocities/vc-kts</independentVar>
|
|
<independentVar lookup="column">position/wow</independentVar>
|
|
<tableData>
|
|
0 1
|
|
140 0.7 1.0
|
|
350 0.3 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-2">
|
|
<default value="0"/>
|
|
<test logic="OR" value="0">
|
|
/it-fbw/law eq 3
|
|
</test>
|
|
<test logic="OR" value="fbw/roll/s-i">
|
|
/it-fbw/law eq 0
|
|
position/wow eq 1
|
|
/systems/failures/aileron-left eq 1
|
|
</test>
|
|
</switch>
|
|
|
|
<switch name="fbw/roll/s-l-3">
|
|
<default value="0"/>
|
|
<test logic="OR" value="0">
|
|
/it-fbw/law eq 3
|
|
</test>
|
|
<test logic="OR" value="fbw/roll/s-i">
|
|
/it-fbw/law eq 0
|
|
position/wow eq 1
|
|
/systems/failures/aileron-left eq 1
|
|
/systems/failures/spoilers/spoiler-l4 eq 1
|
|
</test>
|
|
</switch>
|
|
|
|
<switch name="fbw/roll/s-l-4">
|
|
<default value="0"/>
|
|
<test value="fbw/roll/s-i">
|
|
/it-fbw/law ne 3
|
|
</test>
|
|
</switch>
|
|
|
|
<switch name="fbw/roll/s-l-5">
|
|
<default value="0"/>
|
|
<test value="fbw/roll/s-i">
|
|
/it-fbw/law ne 3
|
|
</test>
|
|
</switch>
|
|
|
|
<switch name="fbw/roll/s-r-2">
|
|
<default value="0"/>
|
|
<test logic="OR" value="0">
|
|
/it-fbw/law eq 3
|
|
</test>
|
|
<test logic="OR" value="fbw/roll/s-i">
|
|
/it-fbw/law eq 0
|
|
position/wow eq 1
|
|
/systems/failures/aileron-right eq 1
|
|
</test>
|
|
</switch>
|
|
|
|
<switch name="fbw/roll/s-r-3">
|
|
<default value="0"/>
|
|
<test logic="OR" value="0">
|
|
/it-fbw/law eq 3
|
|
</test>
|
|
<test logic="OR" value="fbw/roll/s-i">
|
|
/it-fbw/law eq 0
|
|
position/wow eq 1
|
|
/systems/failures/aileron-right eq 1
|
|
/systems/failures/spoilers/spoiler-r4 eq 1
|
|
</test>
|
|
</switch>
|
|
|
|
<switch name="fbw/roll/s-r-4">
|
|
<default value="0"/>
|
|
<test value="fbw/roll/s-i">
|
|
/it-fbw/law ne 3
|
|
</test>
|
|
</switch>
|
|
|
|
<switch name="fbw/roll/s-r-5">
|
|
<default value="0"/>
|
|
<test value="fbw/roll/s-i">
|
|
/it-fbw/law ne 3
|
|
</test>
|
|
</switch>
|
|
|
|
</channel>
|
|
|
|
<channel name="FBW: Pitch">
|
|
|
|
<switch name="fbw/pitch/e-i-f">
|
|
<default value="fbw/sidestick/pitch-input"/>
|
|
<test value="0">
|
|
fbw/fmgc/enabled eq 1
|
|
</test>
|
|
</switch>
|
|
|
|
<actuator name="fbw/pitch/e-i-m">
|
|
<input>fbw/pitch/e-i-f</input>
|
|
<rate_limit>3.0</rate_limit>
|
|
</actuator>
|
|
|
|
<lag_filter name="fbw/pitch/e-i-pfd">
|
|
<input>fbw/pitch/e-i-m</input>
|
|
<c1>20</c1>
|
|
</lag_filter>
|
|
|
|
<summer name="fbw/pitch/vmo-mmo-error">
|
|
<input>fbw/pitch/ias-input</input>
|
|
<input>-/FMGC/internal/vmo-mmo</input>
|
|
</summer>
|
|
|
|
<fcs_function name="fbw/pitch/e-i-normal">
|
|
<function>
|
|
<sum>
|
|
<property>fbw/sidestick/pitch-input</property>
|
|
<table>
|
|
<independentVar lookup="row">attitude/roll-rad</independentVar>
|
|
<tableData>
|
|
-1.1693700 0.4
|
|
-0.5846853 0.0
|
|
0.5846853 0.0
|
|
1.1693700 0.4
|
|
</tableData>
|
|
</table>
|
|
</sum>
|
|
</function>
|
|
</fcs_function>
|
|
|
|
<fcs_function name="fbw/pitch/e-i-overspeed">
|
|
<function>
|
|
<table>
|
|
<independentVar lookup="row">fbw/sidestick/pitch-input</independentVar>
|
|
<independentVar lookup="column">fbw/pitch/vc-kts-rate</independentVar>
|
|
<independentVar lookup="table">fbw/pitch/vmo-mmo-error</independentVar>
|
|
<tableData breakPoint="6"> <!-- Engage point, reduced forwards authority -->
|
|
-1 1 3
|
|
-1 -1.0 -1.0 -1.0
|
|
0 0.0 -0.5 -0.7
|
|
1 0.3 0.3 0.3
|
|
</tableData>
|
|
<tableData breakPoint="16"> <!-- VMO + 16, no forwards authority allowed -->
|
|
-2 0 2
|
|
-1 -1.0 -1.0 -1.0
|
|
0 0.0 -0.5 -0.7
|
|
1 0.0 0.0 0.0
|
|
</tableData>
|
|
<tableData breakPoint="31"> <!-- Full forward stabilizes just below VD -->
|
|
-3 -1 0 2 4
|
|
-1 -1.0 -1.0 -1.0 -1.0 -1.0
|
|
0 0.0 -0.5 -0.5 -1.0 -1.0
|
|
1 0.0 0.0 0.0 -0.5 -1.0
|
|
</tableData>
|
|
<tableData breakPoint="36"> <!-- Get under VD at all costs -->
|
|
-3 1
|
|
-1 -1.0 -1.0
|
|
0 0.0 -1.0
|
|
</tableData>
|
|
</table>
|
|
</function>
|
|
</fcs_function>
|
|
|
|
<switch name="fbw/pitch/flare-active">
|
|
<default value="0"/>
|
|
<test logic="AND" value="1">
|
|
fbw/fmgc/enabled eq 0
|
|
/position/gear-agl-ft le 30
|
|
/controls/flight/flaps-pos ge 4
|
|
/FMGC/internal/to-state eq 0
|
|
/it-fbw/law eq 0
|
|
gear/unit[0]/WOW eq 0
|
|
fbw/detent-1-feedback le 2
|
|
fbw/detent-2-feedback le 2
|
|
fadec/eng-out ne 1
|
|
</test>
|
|
<test logic="AND" value="1">
|
|
fbw/fmgc/enabled eq 0
|
|
/position/gear-agl-ft le 30
|
|
/controls/flight/flaps-pos ge 4
|
|
/FMGC/internal/to-state eq 0
|
|
/it-fbw/law eq 0
|
|
gear/unit[0]/WOW eq 0
|
|
fbw/detent-1-feedback le 4
|
|
fbw/detent-2-feedback le 4
|
|
fadec/eng-out eq 1
|
|
</test>
|
|
</switch>
|
|
|
|
<switch name="fbw/pitch/flare-decr">
|
|
<default value="1"/>
|
|
<test logic="AND" value="100"> <!-- Instant -->
|
|
fbw/fmgc/enabled eq 1
|
|
</test>
|
|
</switch>
|
|
|
|
<actuator name="fbw/pitch/flare-gain">
|
|
<input>fbw/pitch/flare-active</input>
|
|
<rate_limit sense="incr">1</rate_limit>
|
|
<rate_limit sense="decr">fbw/pitch/flare-decr</rate_limit>
|
|
</actuator>
|
|
|
|
<fcs_function name="fbw/pitch/e-i-flare">
|
|
<function>
|
|
<product>
|
|
<property>fbw/pitch/flare-gain</property>
|
|
<table>
|
|
<independentVar lookup="row">/position/gear-agl-ft</independentVar>
|
|
<tableData>
|
|
5 0.2
|
|
30 0.1
|
|
</tableData>
|
|
</table>
|
|
</product>
|
|
</function>
|
|
</fcs_function>
|
|
|
|
<switch name="fbw/pitch/max-rad">
|
|
<default value="0.523599"/>
|
|
<test value="3.14159"> <!-- So its irrelevant -->
|
|
/it-fbw/law gt 0
|
|
</test>
|
|
</switch>
|
|
|
|
<switch name="fbw/pitch/min-rad">
|
|
<default value="-0.261799"/>
|
|
<test value="-3.14159"> <!-- So its irrelevant -->
|
|
/it-fbw/law gt 0
|
|
</test>
|
|
</switch>
|
|
|
|
<summer name="fbw/pitch/max-rad-error">
|
|
<input>attitude/pitch-rad</input>
|
|
<input>-fbw/pitch/max-rad</input>
|
|
</summer>
|
|
|
|
<summer name="fbw/pitch/min-rad-error">
|
|
<input>attitude/pitch-rad</input>
|
|
<input>-fbw/pitch/min-rad</input>
|
|
</summer>
|
|
|
|
<fcs_function name="fbw/pitch/e-i-max">
|
|
<function>
|
|
<table>
|
|
<independentVar lookup="row">fbw/pitch/min-rad-error</independentVar>
|
|
<tableData>
|
|
0.000000 0.0
|
|
0.034907 0.1
|
|
0.087266 1.0
|
|
</tableData>
|
|
</table>
|
|
</function>
|
|
</fcs_function>
|
|
|
|
<fcs_function name="fbw/pitch/e-i-min">
|
|
<function>
|
|
<max>
|
|
<table>
|
|
<independentVar lookup="row">fbw/pitch/max-rad-error</independentVar>
|
|
<tableData>
|
|
-0.087266 -1.0
|
|
-0.034907 -0.1
|
|
0.000000 0.0
|
|
</tableData>
|
|
</table>
|
|
</max>
|
|
</function>
|
|
</fcs_function>
|
|
|
|
<switch name="fbw/pitch/e-i-cmd">
|
|
<default value="fbw/pitch/e-i-normal"/>
|
|
<test logic="AND" value="fbw/pitch/e-i-overspeed">
|
|
fbw/protections/overspeed eq 1
|
|
position/wow eq 0
|
|
</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>
|
|
<clipto>
|
|
<min>fbw/pitch/e-i-min</min>
|
|
<max>fbw/pitch/e-i-max</max>
|
|
</clipto>
|
|
</switch>
|
|
|
|
<fcs_function name="fbw/pitch/over-max">
|
|
<function>
|
|
<table>
|
|
<independentVar lookup="row">fbw/pitch/max-rad-error</independentVar>
|
|
<tableData>
|
|
0.000000 0.0
|
|
0.034907 0.1
|
|
0.087266 1.0
|
|
</tableData>
|
|
</table>
|
|
</function>
|
|
</fcs_function>
|
|
|
|
<fcs_function name="fbw/pitch/over-min">
|
|
<function>
|
|
<table>
|
|
<independentVar lookup="row">fbw/pitch/min-rad-error</independentVar>
|
|
<tableData>
|
|
-0.087266 -1.0
|
|
-0.034907 -0.1
|
|
0.000000 0.0
|
|
</tableData>
|
|
</table>
|
|
</function>
|
|
</fcs_function>
|
|
|
|
<summer name="fbw/pitch/e-i-sum">
|
|
<input>fbw/pitch/e-i-cmd</input>
|
|
<input>fbw/pitch/e-i-flare</input>
|
|
<input>fbw/pitch/over-max</input>
|
|
<input>fbw/pitch/over-min</input>
|
|
<clipto>
|
|
<min>-1.0</min>
|
|
<max>1.0</max>
|
|
</clipto>
|
|
</summer>
|
|
|
|
<switch name="fbw/pitch/load-factor-min">
|
|
<default value="-1.0"/>
|
|
<test value="0.0">
|
|
/controls/flight/flaps-input-out ne 0
|
|
</test>
|
|
</switch>
|
|
|
|
<switch name="fbw/pitch/load-factor-max">
|
|
<default value="2.5"/>
|
|
<test value="2.0">
|
|
/controls/flight/flaps-input-out ne 0
|
|
</test>
|
|
</switch>
|
|
|
|
<lag_filter name="fbw/pitch/e-i-sum-lag">
|
|
<input>fbw/pitch/e-i-sum</input>
|
|
<c1>20</c1>
|
|
</lag_filter>
|
|
|
|
<fcs_function name="fbw/pitch/load-factor-demand">
|
|
<function>
|
|
<table>
|
|
<independentVar lookup="row">fbw/pitch/e-i-sum-lag</independentVar>
|
|
<tableData>
|
|
-1 2.5
|
|
0 1.0
|
|
1 -0.5
|
|
</tableData>
|
|
</table>
|
|
</function>
|
|
<clipto>
|
|
<min>fbw/pitch/load-factor-min</min>
|
|
<max>fbw/pitch/load-factor-max</max>
|
|
</clipto>
|
|
</fcs_function>
|
|
|
|
<summer name="fbw/pitch/load-factor-error">
|
|
<input>fbw/pitch/load-factor</input>
|
|
<input>-fbw/pitch/load-factor-demand</input>
|
|
</summer>
|
|
|
|
<lag_filter name="fbw/pitch/e-i">
|
|
<input>fbw/pitch/load-factor-pi</input> <!-- From a320-fbw-rules.xml -->
|
|
<c1>fbw/rate-c1</c1>
|
|
</lag_filter>
|
|
|
|
<switch name="fbw/pitch/rate-demand-gain">
|
|
<default value="-0.087266"/>
|
|
<test logic="OR" value="0.087266">
|
|
attitude/roll-rad lt -1.5708
|
|
attitude/roll-rad gt 1.5708
|
|
</test>
|
|
</switch>
|
|
|
|
<pure_gain name="fbw/pitch/rate-demand">
|
|
<input>fbw/pitch/e-i</input>
|
|
<gain>fbw/pitch/rate-demand-gain</gain>
|
|
</pure_gain>
|
|
|
|
<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>
|
|
|
|
<summer name="fbw/pitch/rate-error">
|
|
<input>fbw/pitch/t-r_s-s</input>
|
|
<input>-fbw/pitch/rate-demand</input>
|
|
</summer>
|
|
|
|
<switch name="fbw/pitch/trigger">
|
|
<default value="0"/>
|
|
<test value="-1">
|
|
fbw/pitch/gain-switch gt 0
|
|
</test>
|
|
<test logic="OR" value="1">
|
|
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>
|
|
<output>fbw/pitch/pid</output>
|
|
<clipto>
|
|
<min>-1.0</min>
|
|
<max>1.0</max>
|
|
</clipto>
|
|
</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>
|
|
|
|
<pure_gain name="fbw/pitch/mixer/computer-demand">
|
|
<input>fbw/pitch/pid-switched</input>
|
|
<gain>fbw/pitch/mixer/computer-gain</gain>
|
|
</pure_gain>
|
|
|
|
<pure_gain name="fbw/pitch/mixer/sidestick-demand">
|
|
<input>fbw/pitch/e-i-f</input>
|
|
<gain>fbw/pitch/mixer/sidestick-gain</gain>
|
|
</pure_gain>
|
|
|
|
<summer name="fbw/pitch/mixer/output">
|
|
<input>fbw/pitch/mixer/computer-demand</input>
|
|
<input>fbw/pitch/mixer/sidestick-demand</input>
|
|
<clipto>
|
|
<min>-1.0</min>
|
|
<max>1.0</max>
|
|
</clipto>
|
|
</summer>
|
|
|
|
<switch name="fbw/elevator-output">
|
|
<default value="0"/>
|
|
<test logic="AND" value="fbw/pitch/mixer/output"> <!-- Mix stick and control law for transition -->
|
|
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
|
|
gear/unit[0]/WOW eq 0
|
|
</test>
|
|
<test logic="AND" value="0.05">
|
|
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
|
|
fbw/pitch/g-instrumented ge 0.5
|
|
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
|
|
fbw/pitch/g-instrumented ge 0.5
|
|
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/max-deg-fac-1">
|
|
<function>
|
|
<table>
|
|
<independentVar lookup="row">/systems/fmgc/active-airspeed-1</independentVar>
|
|
<tableData>
|
|
160 25.0
|
|
410 3.5
|
|
</tableData>
|
|
</table>
|
|
</function>
|
|
</fcs_function>
|
|
|
|
<fcs_function name="fbw/yaw/max-deg-fac-2">
|
|
<function>
|
|
<table>
|
|
<independentVar lookup="row">/systems/fmgc/active-airspeed-2</independentVar>
|
|
<tableData>
|
|
160 25.0
|
|
410 3.5
|
|
</tableData>
|
|
</table>
|
|
</function>
|
|
</fcs_function>
|
|
|
|
<switch name="/systems/fctl/fac1-rtlu-avail">
|
|
<default value="0"/>
|
|
<test logic="AND" value="1">
|
|
/systems/failures/fctl/rtlu-1 eq 0
|
|
/systems/electrical/bus/dc-ess ge 25
|
|
/systems/fctl/fac1-healthy-signal eq 1
|
|
<test logic="OR">
|
|
<test logic="AND">
|
|
/systems/fmgc/cas-compare/cas-reject-1 eq 0
|
|
/systems/navigation/adr/operating-1 eq 1
|
|
</test>
|
|
<test logic="AND">
|
|
/systems/fmgc/cas-compare/cas-reject-3 eq 0
|
|
/systems/navigation/adr/operating-3 eq 1
|
|
</test>
|
|
</test>
|
|
</test>
|
|
</switch>
|
|
|
|
<switch name="/systems/fctl/fac2-rtlu-avail">
|
|
<default value="0"/>
|
|
<test logic="AND" value="1">
|
|
/systems/failures/fctl/rtlu-2 eq 0
|
|
/systems/electrical/bus/dc-2 ge 25
|
|
/systems/fctl/fac2-healthy-signal eq 1
|
|
<test logic="OR">
|
|
<test logic="AND">
|
|
/systems/fmgc/cas-compare/cas-reject-2 eq 0
|
|
/systems/navigation/adr/operating-2 eq 1
|
|
</test>
|
|
<test logic="AND">
|
|
/systems/fmgc/cas-compare/cas-reject-3 eq 0
|
|
/systems/navigation/adr/operating-3 eq 1
|
|
</test>
|
|
</test>
|
|
</test>
|
|
</switch>
|
|
|
|
<switch name="fbw/yaw/rtlu-emergency">
|
|
<default value="0"/>
|
|
<test logic="AND" value="1">
|
|
/systems/fctl/fac1-rtlu-avail eq 0
|
|
/systems/fctl/fac2-rtlu-avail eq 0
|
|
fcs/slat-pos-deg ne 0
|
|
</test>
|
|
</switch>
|
|
|
|
<switch name="fbw/yaw/max-deg-switch-cmd">
|
|
<default value="25"/>
|
|
<test logic="AND" value="fbw/yaw/max-deg-switch"> <!-- RTLU frozen with FAC 1 / 2 failure -->
|
|
/systems/fctl/fac1-rtlu-avail eq 0
|
|
/systems/fctl/fac2-rtlu-avail eq 0
|
|
fcs/slat-pos-deg eq 0
|
|
</test>
|
|
<test logic="AND" value="25"> <!-- Return to low speed control with slats extended -->
|
|
fbw/yaw/rtlu-emergency eq 1
|
|
</test>
|
|
<test logic="AND" value="fbw/yaw/max-deg-fac-1"> <!-- Side 1 has priority -->
|
|
/systems/fctl/fac1-rtlu-avail eq 1
|
|
</test>
|
|
<test logic="AND" value="fbw/yaw/max-deg-fac-2">
|
|
/systems/fctl/fac2-rtlu-avail eq 1
|
|
</test>
|
|
</switch>
|
|
|
|
<switch name="fbw/yaw/rtlu-power">
|
|
<default value="0"/>
|
|
<test logic="AND" value="25"> <!-- Main motor control -->
|
|
<test logic="OR">
|
|
/systems/electrical/bus/dc-ess-shed ge 25
|
|
/systems/electrical/bus/dc-2 ge 25
|
|
</test>
|
|
fbw/yaw/rtlu-emergency ne 1
|
|
</test>
|
|
<test logic="AND" value="3"> <!-- Emergency motor is slower -->
|
|
/systems/electrical/bus/ac-ess-26v ge 24.8
|
|
/systems/fctl/fac1-rtlu-avail eq 0
|
|
/systems/fctl/fac2-rtlu-avail eq 0
|
|
fcs/slat-pos-deg ne 0
|
|
fbw/yaw/max-deg-switch ne fbw/yaw/max-deg-switch-cmd
|
|
</test>
|
|
</switch>
|
|
|
|
<actuator name="rubbish/rudder-travel-limiter">
|
|
<input>fbw/yaw/max-deg-switch-cmd</input>
|
|
<rate_limit>fbw/yaw/rtlu-power</rate_limit>
|
|
<output>fbw/yaw/max-deg-switch</output>
|
|
</actuator>
|
|
|
|
<aerosurface_scale name="fbw/yaw/max-deg-scale">
|
|
<input>fbw/yaw/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="fbw/yaw/max-deg-scale-neg">
|
|
<input>fbw/yaw/max-deg-scale</input>
|
|
<gain>-1.0</gain>
|
|
</pure_gain>
|
|
|
|
<fcs_function name="fbw/sidestick/yaw-input-scheduled">
|
|
<function>
|
|
<quotient>
|
|
<product>
|
|
<property>fbw/sidestick/yaw-input</property>
|
|
<property>fbw/yaw/max-deg-switch</property>
|
|
</product>
|
|
<value>25.0</value>
|
|
</quotient>
|
|
</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>
|
|
|
|
<washout_filter name="fbw/yaw/r-washout">
|
|
<input>velocities/r-rad_sec</input>
|
|
<c1>0.5</c1>
|
|
</washout_filter>
|
|
|
|
<switch name="fbw/yaw/r-r_s-s">
|
|
<default value="fbw/yaw/r-washout"/>
|
|
<test logic="OR" value="0">
|
|
position/wow eq 1
|
|
/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.5</min>
|
|
<max>0.5</max>
|
|
</clipto>
|
|
</pure_gain>
|
|
|
|
<switch name="fbw/yaw/slip-skid">
|
|
<default value="aero/beta-rad"/>
|
|
<test value="0">
|
|
position/wow eq 1
|
|
</test>
|
|
</switch>
|
|
|
|
<pid name="fbw/yaw/tc-pd-v">
|
|
<input>fbw/yaw/slip-skid</input>
|
|
<kp>fbw/yaw/tc-p-gain</kp>
|
|
<ki>0.0</ki>
|
|
<kd>fbw/yaw/tc-d-gain</kd>
|
|
<output>fbw/yaw/tc-pd</output>
|
|
<clipto>
|
|
<min>-0.4</min>
|
|
<max>0.4</max>
|
|
</clipto>
|
|
</pid>
|
|
|
|
<switch name="fbw/yaw/tc-pd-s">
|
|
<default value="fbw/yaw/tc-pd"/>
|
|
<test value="0">
|
|
position/wow eq 1
|
|
</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-pd-s</input>
|
|
<input>fbw/yaw/fmgc-cmd</input>
|
|
</summer>
|
|
|
|
<switch name="fbw/yaw/law-switch">
|
|
<default value="0"/>
|
|
<test logic="AND" value="1">
|
|
/it-fbw/law ne 3
|
|
<test logic="OR">
|
|
/it-fbw/yaw-law eq 0
|
|
/it-fbw/yaw-law eq 1
|
|
</test>
|
|
</test>
|
|
</switch>
|
|
|
|
<switch name="fbw/yaw/output-switch">
|
|
<default value="fbw/yaw/fmgc-cmd"/> <!-- FMGC keeps working even if YD is unavail -->
|
|
<test value="fbw/yaw/output-sum">
|
|
fbw/yaw/law-switch eq 1
|
|
</test>
|
|
</switch>
|
|
|
|
<summer name="fbw/rudder-output">
|
|
<input>fbw/sidestick/yaw-input-scheduled</input>
|
|
<input>fbw/yaw/output-switch</input>
|
|
<clipto>
|
|
<min>-1.0</min>
|
|
<max>1.0</max>
|
|
</clipto>
|
|
</summer>
|
|
|
|
</channel>
|
|
|
|
</system>
|