This repository has been archived on 2021-09-26. You can view files and clone it, but cannot push or open issues or pull requests.
IDG-A32X/Systems/a320-spoiler.xml
2019-03-07 20:30:03 -05:00

771 lines
19 KiB
XML

<!-- Airbus A320 FCS -->
<!-- Joshua Davidson (it0uchpods) -->
<!-- Copyright (c) 2019 Joshua Davidson (it0uchpods) -->
<system name="A320: Spoilers">
<property value="0">hydraulics/spoiler-l2/main-cmd-feedback</property>
<channel name="Spoiler Logic">
<switch name="spoilers/main-gear-or">
<default value="0"/>
<test logic="OR" value="1">
gear/unit[1]/WOW eq 1
gear/unit[2]/WOW eq 1
</test>
</switch>
<switch name="spoilers/main-gear-and">
<default value="0"/>
<test logic="AND" value="1">
gear/unit[1]/WOW eq 1
gear/unit[2]/WOW eq 1
</test>
</switch>
<switch name="spoilers/throttle[0]">
<default value="/controls/engines/engine[0]/throttle"/>
<test logic="OR" value="0">
/controls/engines/engine[0]/reverser eq 1
</test>
</switch>
<switch name="spoilers/throttle[1]">
<default value="/controls/engines/engine[1]/throttle"/>
<test logic="OR" value="0">
/controls/engines/engine[1]/reverser eq 1
</test>
</switch>
<switch name="spoilers/auto-speedbrake-cmd">
<default value="spoilers/auto-speedbrake-cmd"/>
<test logic="OR" value="0"> <!-- Reset -->
spoilers/throttle[0] ge 0.01
spoilers/throttle[1] ge 0.01
/controls/flight/speedbrake-arm ne 1
</test>
<test logic="AND" value="1"> <!-- EXT Set -->
spoilers/throttle[0] lt 0.01
spoilers/throttle[1] lt 0.01
/controls/flight/speedbrake-arm eq 1
spoilers/main-gear-and eq 1
/velocities/groundspeed-kt ge 72
</test>
<test logic="AND" value="0.25"> <!-- PLD Set -->
spoilers/throttle[0] lt 0.01
spoilers/throttle[1] lt 0.01
/controls/flight/speedbrake-arm eq 1
spoilers/main-gear-or eq 1
/velocities/groundspeed-kt ge 72
</test>
</switch>
<switch name="spoilers/max-spoiler">
<default value="1.0"/>
<test logic="AND" value="0.5">
spoilers/main-gear-or eq 0
fbw/fmgc/enabled eq 1
</test>
</switch>
<fcs_function name="spoilers/speedbrake-nul">
<function>
<table>
<independentVar lookup="row">/controls/flight/speedbrake</independentVar>
<tableData>
0.10 0.0
0.45 0.5
0.55 0.5
0.95 1.0
</tableData>
</table>
</function>
</fcs_function>
<lag_filter name="spoilers/main-lever">
<input>spoilers/speedbrake-nul</input>
<c1>20</c1>
</lag_filter>
<summer name="spoilers/main-cmd">
<input>spoilers/speedbrake-nul</input>
<input>spoilers/auto-speedbrake-cmd</input>
<clipto>
<min>0.0</min>
<max>spoilers/max-spoiler</max>
</clipto>
<output>fbw/spoiler-output</output>
</summer>
<lag_filter name="spoilers/lever-arm">
<input>/controls/flight/speedbrake-arm</input>
<c1>20</c1>
</lag_filter>
</channel>
<channel name="Spoiler L1">
<switch name="hydraulics/spoiler-l1/switch">
<default value="0"/>
<test logic="AND" value="spoilers/main-cmd">
/systems/hydraulic/green-psi ge 1500
spoilers/main-gear-and eq 1
/systems/failures/spoiler-l1 eq 0
</test>
<clipto>
<min>0.0</min>
<max>1.0</max>
</clipto>
</switch>
<pure_gain name="hydraulics/spoiler-l1/cmd-deg">
<input>hydraulics/spoiler-l1/switch</input>
<gain>40.0</gain>
</pure_gain>
<actuator name="hydraulics/spoiler-l1/final-actuator">
<input>hydraulics/spoiler-l1/cmd-deg</input>
<rate_limit>35</rate_limit>
<lag>26.5</lag>
<output>hydraulics/spoiler-l1/final-deg</output>
</actuator>
</channel>
<channel name="Spoiler L2">
<switch name="hydraulics/spoiler-l2/main-cmd-rate">
<default value="0.72"/>
<test value="0.9">
spoilers/main-gear-and eq 1
</test>
</switch>
<actuator name="hydraulics/spoiler-l2/main-cmd">
<input>spoilers/main-cmd</input>
<rate_limit>hydraulics/spoiler-l2/main-cmd-rate</rate_limit>
<output>hydraulics/spoiler-l2/main-cmd-feedback</output>
</actuator>
<fcs_function name="hydraulics/spoiler-l2/air-extended">
<function>
<sum>
<product>
<property>hydraulics/spoiler-l2/main-cmd</property>
<value>0.5</value>
</product>
<table>
<independentVar lookup="row">fbw/roll/s-l</independentVar>
<tableData>
0.0 0.0
1.0 -0.4
</tableData>
</table>
</sum>
</function>
</fcs_function>
<fcs_function name="hydraulics/spoiler-l2/ground-extended">
<function>
<sum>
<property>spoilers/main-cmd</property>
<table>
<independentVar lookup="row">fbw/roll/s-l</independentVar>
<tableData>
0.0 0.0
1.0 -0.5
</tableData>
</table>
</sum>
</function>
</fcs_function>
<fcs_function name="hydraulics/spoiler-l2/retracted">
<function>
<table>
<independentVar lookup="row">fbw/roll/s-l</independentVar>
<tableData>
-1.0 0.5
0.0 0.0
</tableData>
</table>
</function>
</fcs_function>
<switch name="hydraulics/spoiler-l2/switch">
<default value="0"/>
<test logic="AND" value="hydraulics/spoiler-l2/air-extended">
/systems/hydraulic/yellow-psi ge 1500
spoilers/main-gear-and eq 0
/systems/failures/spoiler-l2 eq 0
spoilers/main-cmd gt 0
</test>
<test logic="AND" value="hydraulics/spoiler-l2/ground-extended">
/systems/hydraulic/yellow-psi ge 1500
spoilers/main-gear-and eq 1
/systems/failures/spoiler-l2 eq 0
spoilers/main-cmd gt 0
</test>
<test logic="AND" value="hydraulics/spoiler-l2/retracted">
/systems/hydraulic/yellow-psi ge 1500
/systems/failures/spoiler-l2 eq 0
spoilers/main-cmd eq 0
</test>
<clipto>
<min>0.0</min>
<max>1.0</max>
</clipto>
</switch>
<pure_gain name="hydraulics/spoiler-l2/cmd-deg">
<input>hydraulics/spoiler-l2/switch</input>
<gain>40.0</gain>
</pure_gain>
<actuator name="hydraulics/spoiler-l2/final-actuator">
<input>hydraulics/spoiler-l2/cmd-deg</input>
<rate_limit>35</rate_limit>
<lag>26.5</lag>
<output>hydraulics/spoiler-l2/final-deg</output>
</actuator>
</channel>
<channel name="Spoiler L3">
<fcs_function name="hydraulics/spoiler-l3/extended">
<function>
<sum>
<property>spoilers/main-cmd</property>
<table>
<independentVar lookup="row">fbw/roll/s-l</independentVar>
<tableData>
0.0 0.0
1.0 -0.5
</tableData>
</table>
</sum>
</function>
</fcs_function>
<fcs_function name="hydraulics/spoiler-l3/retracted">
<function>
<table>
<independentVar lookup="row">fbw/roll/s-l</independentVar>
<tableData>
-1.0 0.5
0.0 0.0
</tableData>
</table>
</function>
</fcs_function>
<switch name="hydraulics/spoiler-l3/switch">
<default value="0"/>
<test logic="AND" value="hydraulics/spoiler-l3/extended">
/systems/hydraulic/blue-psi ge 1500
/systems/failures/spoiler-l3 eq 0
spoilers/main-cmd gt 0
</test>
<test logic="AND" value="hydraulics/spoiler-l3/retracted">
/systems/hydraulic/blue-psi ge 1500
/systems/failures/spoiler-l3 eq 0
spoilers/main-cmd eq 0
</test>
<clipto>
<min>0.0</min>
<max>1.0</max>
</clipto>
</switch>
<pure_gain name="hydraulics/spoiler-l3/cmd-deg">
<input>hydraulics/spoiler-l3/switch</input>
<gain>40.0</gain>
</pure_gain>
<actuator name="hydraulics/spoiler-l3/final-actuator">
<input>hydraulics/spoiler-l3/cmd-deg</input>
<rate_limit>35</rate_limit>
<lag>26.5</lag>
<output>hydraulics/spoiler-l3/final-deg</output>
</actuator>
</channel>
<channel name="Spoiler L4">
<fcs_function name="hydraulics/spoiler-l4/extended">
<function>
<sum>
<property>spoilers/main-cmd</property>
<table>
<independentVar lookup="row">fbw/roll/s-l</independentVar>
<tableData>
0.0 0.0
1.0 -0.5
</tableData>
</table>
</sum>
</function>
</fcs_function>
<fcs_function name="hydraulics/spoiler-l4/retracted">
<function>
<table>
<independentVar lookup="row">fbw/roll/s-l</independentVar>
<tableData>
-1.0 0.5
0.0 0.0
</tableData>
</table>
</function>
</fcs_function>
<switch name="hydraulics/spoiler-l4/switch">
<default value="0"/>
<test logic="AND" value="hydraulics/spoiler-l4/extended">
/systems/hydraulic/yellow-psi ge 1500
/systems/failures/spoiler-l4 eq 0
spoilers/main-cmd gt 0
</test>
<test logic="AND" value="hydraulics/spoiler-l4/retracted">
/systems/hydraulic/yellow-psi ge 1500
/systems/failures/spoiler-l4 eq 0
spoilers/main-cmd eq 0
</test>
<clipto>
<min>0.0</min>
<max>1.0</max>
</clipto>
</switch>
<pure_gain name="hydraulics/spoiler-l4/cmd-deg">
<input>hydraulics/spoiler-l4/switch</input>
<gain>40.0</gain>
</pure_gain>
<actuator name="hydraulics/spoiler-l4/final-actuator">
<input>hydraulics/spoiler-l4/cmd-deg</input>
<rate_limit>35</rate_limit>
<lag>26.5</lag>
<output>hydraulics/spoiler-l4/final-deg</output>
</actuator>
</channel>
<channel name="Spoiler L5">
<fcs_function name="hydraulics/spoiler-l5/ground-extended">
<function>
<sum>
<property>spoilers/main-cmd</property>
<table>
<independentVar lookup="row">fbw/roll/s-l</independentVar>
<tableData>
0.0 0.0
1.0 -0.5
</tableData>
</table>
</sum>
</function>
</fcs_function>
<fcs_function name="hydraulics/spoiler-l5/retracted">
<function>
<table>
<independentVar lookup="row">fbw/roll/s-l</independentVar>
<tableData>
-1.0 0.5
0.0 0.0
</tableData>
</table>
</function>
</fcs_function>
<switch name="hydraulics/spoiler-l5/switch">
<default value="0"/>
<test logic="AND" value="hydraulics/spoiler-l5/ground-extended">
/systems/hydraulic/green-psi ge 1500
spoilers/main-gear-and eq 1
/systems/failures/spoiler-l5 eq 0
spoilers/main-cmd gt 0
</test>
<test logic="AND" value="hydraulics/spoiler-l5/retracted">
/systems/hydraulic/green-psi ge 1500
/systems/failures/spoiler-l5 eq 0
spoilers/main-cmd eq 0
</test>
<clipto>
<min>0.0</min>
<max>1.0</max>
</clipto>
</switch>
<pure_gain name="hydraulics/spoiler-l5/cmd-deg">
<input>hydraulics/spoiler-l5/switch</input>
<gain>40.0</gain>
</pure_gain>
<actuator name="hydraulics/spoiler-l5/final-actuator">
<input>hydraulics/spoiler-l5/cmd-deg</input>
<rate_limit>35</rate_limit>
<lag>26.5</lag>
<output>hydraulics/spoiler-l5/final-deg</output>
</actuator>
</channel>
<channel name="Spoiler R1">
<switch name="hydraulics/spoiler-r1/switch">
<default value="0"/>
<test logic="AND" value="spoilers/main-cmd">
/systems/hydraulic/green-psi ge 1500
spoilers/main-gear-and eq 1
/systems/failures/spoiler-r1 eq 0
</test>
<clipto>
<min>0.0</min>
<max>1.0</max>
</clipto>
</switch>
<pure_gain name="hydraulics/spoiler-r1/cmd-deg">
<input>hydraulics/spoiler-r1/switch</input>
<gain>40.0</gain>
</pure_gain>
<actuator name="hydraulics/spoiler-r1/final-actuator">
<input>hydraulics/spoiler-r1/cmd-deg</input>
<rate_limit>35</rate_limit>
<lag>26.5</lag>
<output>hydraulics/spoiler-r1/final-deg</output>
</actuator>
</channel>
<channel name="Spoiler R2">
<switch name="hydraulics/spoiler-r2/main-cmd-rate">
<default value="0.72"/>
<test value="0.9">
spoilers/main-gear-and eq 1
</test>
</switch>
<actuator name="hydraulics/spoiler-r2/main-cmd">
<input>spoilers/main-cmd</input>
<rate_limit>hydraulics/spoiler-r2/main-cmd-rate</rate_limit>
<output>hydraulics/spoiler-r2/main-cmd-feedback</output>
</actuator>
<fcs_function name="hydraulics/spoiler-r2/air-extended">
<function>
<sum>
<product>
<property>hydraulics/spoiler-r2/main-cmd</property>
<value>0.5</value>
</product>
<table>
<independentVar lookup="row">fbw/roll/s-l</independentVar>
<tableData>
-1.0 -0.4
0.0 0.0
</tableData>
</table>
</sum>
</function>
</fcs_function>
<fcs_function name="hydraulics/spoiler-r2/ground-extended">
<function>
<sum>
<property>spoilers/main-cmd</property>
<table>
<independentVar lookup="row">fbw/roll/s-l</independentVar>
<tableData>
-1.0 -0.5
0.0 0.0
</tableData>
</table>
</sum>
</function>
</fcs_function>
<fcs_function name="hydraulics/spoiler-r2/retracted">
<function>
<table>
<independentVar lookup="row">fbw/roll/s-l</independentVar>
<tableData>
0.0 0.0
1.0 0.5
</tableData>
</table>
</function>
</fcs_function>
<switch name="hydraulics/spoiler-r2/switch">
<default value="0"/>
<test logic="AND" value="hydraulics/spoiler-r2/air-extended">
/systems/hydraulic/yellow-psi ge 1500
spoilers/main-gear-and eq 0
/systems/failures/spoiler-r2 eq 0
spoilers/main-cmd gt 0
</test>
<test logic="AND" value="hydraulics/spoiler-r2/ground-extended">
/systems/hydraulic/yellow-psi ge 1500
spoilers/main-gear-and eq 1
/systems/failures/spoiler-r2 eq 0
spoilers/main-cmd gt 0
</test>
<test logic="AND" value="hydraulics/spoiler-r2/retracted">
/systems/hydraulic/yellow-psi ge 1500
/systems/failures/spoiler-r2 eq 0
spoilers/main-cmd eq 0
</test>
<clipto>
<min>0.0</min>
<max>1.0</max>
</clipto>
</switch>
<pure_gain name="hydraulics/spoiler-r2/cmd-deg">
<input>hydraulics/spoiler-r2/switch</input>
<gain>40.0</gain>
</pure_gain>
<actuator name="hydraulics/spoiler-r2/final-actuator">
<input>hydraulics/spoiler-r2/cmd-deg</input>
<rate_limit>35</rate_limit>
<lag>26.5</lag>
<output>hydraulics/spoiler-r2/final-deg</output>
</actuator>
</channel>
<channel name="Spoiler R3">
<fcs_function name="hydraulics/spoiler-r3/extended">
<function>
<sum>
<property>spoilers/main-cmd</property>
<table>
<independentVar lookup="row">fbw/roll/s-l</independentVar>
<tableData>
-1.0 -0.5
0.0 0.0
</tableData>
</table>
</sum>
</function>
</fcs_function>
<fcs_function name="hydraulics/spoiler-r3/retracted">
<function>
<table>
<independentVar lookup="row">fbw/roll/s-l</independentVar>
<tableData>
0.0 0.0
1.0 0.5
</tableData>
</table>
</function>
</fcs_function>
<switch name="hydraulics/spoiler-r3/switch">
<default value="0"/>
<test logic="AND" value="hydraulics/spoiler-r3/extended">
/systems/hydraulic/blue-psi ge 1500
/systems/failures/spoiler-r3 eq 0
spoilers/main-cmd gt 0
</test>
<test logic="AND" value="hydraulics/spoiler-r3/retracted">
/systems/hydraulic/blue-psi ge 1500
/systems/failures/spoiler-r3 eq 0
spoilers/main-cmd eq 0
</test>
<clipto>
<min>0.0</min>
<max>1.0</max>
</clipto>
</switch>
<pure_gain name="hydraulics/spoiler-r3/cmd-deg">
<input>hydraulics/spoiler-r3/switch</input>
<gain>40.0</gain>
</pure_gain>
<actuator name="hydraulics/spoiler-r3/final-actuator">
<input>hydraulics/spoiler-r3/cmd-deg</input>
<rate_limit>35</rate_limit>
<lag>26.5</lag>
<output>hydraulics/spoiler-r3/final-deg</output>
</actuator>
</channel>
<channel name="Spoiler R4">
<fcs_function name="hydraulics/spoiler-r4/extended">
<function>
<sum>
<property>spoilers/main-cmd</property>
<table>
<independentVar lookup="row">fbw/roll/s-l</independentVar>
<tableData>
-1.0 -0.5
0.0 0.0
</tableData>
</table>
</sum>
</function>
</fcs_function>
<fcs_function name="hydraulics/spoiler-r4/retracted">
<function>
<table>
<independentVar lookup="row">fbw/roll/s-l</independentVar>
<tableData>
0.0 0.0
1.0 0.5
</tableData>
</table>
</function>
</fcs_function>
<switch name="hydraulics/spoiler-r4/switch">
<default value="0"/>
<test logic="AND" value="hydraulics/spoiler-r4/extended">
/systems/hydraulic/yellow-psi ge 1500
/systems/failures/spoiler-r4 eq 0
spoilers/main-cmd gt 0
</test>
<test logic="AND" value="hydraulics/spoiler-r4/retracted">
/systems/hydraulic/yellow-psi ge 1500
/systems/failures/spoiler-r4 eq 0
spoilers/main-cmd eq 0
</test>
<clipto>
<min>0.0</min>
<max>1.0</max>
</clipto>
</switch>
<pure_gain name="hydraulics/spoiler-r4/cmd-deg">
<input>hydraulics/spoiler-r4/switch</input>
<gain>40.0</gain>
</pure_gain>
<actuator name="hydraulics/spoiler-r4/final-actuator">
<input>hydraulics/spoiler-r4/cmd-deg</input>
<rate_limit>35</rate_limit>
<lag>26.5</lag>
<output>hydraulics/spoiler-r4/final-deg</output>
</actuator>
</channel>
<channel name="Spoiler R5">
<fcs_function name="hydraulics/spoiler-r5/ground-extended">
<function>
<sum>
<property>spoilers/main-cmd</property>
<table>
<independentVar lookup="row">fbw/roll/s-l</independentVar>
<tableData>
-1.0 -0.5
0.0 0.0
</tableData>
</table>
</sum>
</function>
</fcs_function>
<fcs_function name="hydraulics/spoiler-r5/retracted">
<function>
<table>
<independentVar lookup="row">fbw/roll/s-l</independentVar>
<tableData>
0.0 0.0
1.0 0.5
</tableData>
</table>
</function>
</fcs_function>
<switch name="hydraulics/spoiler-r5/switch">
<default value="0"/>
<test logic="AND" value="hydraulics/spoiler-r5/ground-extended">
/systems/hydraulic/green-psi ge 1500
spoilers/main-gear-and eq 1
/systems/failures/spoiler-r5 eq 0
spoilers/main-cmd gt 0
</test>
<test logic="AND" value="hydraulics/spoiler-r5/retracted">
/systems/hydraulic/green-psi ge 1500
/systems/failures/spoiler-r5 eq 0
spoilers/main-cmd eq 0
</test>
<clipto>
<min>0.0</min>
<max>1.0</max>
</clipto>
</switch>
<pure_gain name="hydraulics/spoiler-r5/cmd-deg">
<input>hydraulics/spoiler-r5/switch</input>
<gain>40.0</gain>
</pure_gain>
<actuator name="hydraulics/spoiler-r5/final-actuator">
<input>hydraulics/spoiler-r5/cmd-deg</input>
<rate_limit>35</rate_limit>
<lag>26.5</lag>
<output>hydraulics/spoiler-r5/final-deg</output>
</actuator>
</channel>
<channel name="Output">
<summer name="fcs/spoiler-left-sum">
<input>hydraulics/spoiler-l1/final-actuator</input>
<input>hydraulics/spoiler-l2/final-actuator</input>
<input>hydraulics/spoiler-l3/final-actuator</input>
<input>hydraulics/spoiler-l4/final-actuator</input>
<input>hydraulics/spoiler-l5/final-actuator</input>
</summer>
<fcs_function name="fcs/spoiler-left-deg">
<function>
<quotient>
<property>fcs/spoiler-left-sum</property>
<value>5</value>
</quotient>
</function>
</fcs_function>
<summer name="fcs/spoiler-right-sum">
<input>hydraulics/spoiler-r1/final-actuator</input>
<input>hydraulics/spoiler-r2/final-actuator</input>
<input>hydraulics/spoiler-r3/final-actuator</input>
<input>hydraulics/spoiler-r4/final-actuator</input>
<input>hydraulics/spoiler-r5/final-actuator</input>
</summer>
<fcs_function name="fcs/spoiler-right-deg">
<function>
<quotient>
<property>fcs/spoiler-right-sum</property>
<value>5</value>
</quotient>
</function>
</fcs_function>
</channel>
</system>