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-autobrake.xml

330 lines
8 KiB
XML

<?xml version="1.0" encoding="UTF-8" ?>
<!-- Airbus A320 autobrake configuration -->
<!-- Adapated from the Boeing 777-200ER -->
<PropertyList>
<logic>
<name>Disabled state</name>
<!-- ensure output is consistent when no mode is selected-->
<enable>
<condition>
<equals>
<property>/autopilot/autobrake/step</property>
<value>0</value>
</equals>
</condition>
</enable>
<input><false/></input>
<output>/autopilot/autobrake/engaged</output>
</logic>
<logic>
<name>Max (RTO in Boeing terms) selected</name>
<input>
<equals>
<property>/autopilot/autobrake/step</property>
<value>3</value>
</equals>
</input>
<output>/autopilot/autobrake/max-selected</output>
</logic>
<logic>
<name>Autobrake Selected</name>
<input>
<greater-than>
<property>/autopilot/autobrake/step</property>
<value>0</value>
</greater-than>
</input>
<output>/autopilot/autobrake/selected</output>
</logic>
<logic>
<name>Throttles At Idle</name>
<input>
<!-- engine 0 -->
<and>
<or>
<less-than>
<property>/controls/engines/engine[0]/throttle</property>
<property>/autopilot/autobrake/config/idle-throttle</property>
</less-than>
<property>/controls/engines/engine[0]/reverser</property>
</or>
<!-- engine 1 -->
<or>
<less-than>
<property>/controls/engines/engine[1]/throttle</property>
<property>/autopilot/autobrake/config/idle-throttle</property>
</less-than>
<property>/controls/engines/engine[1]/reverser</property>
</or>
</and>
</input>
<output>/autopilot/autobrake/throttles-at-idle</output>
</logic>
<logic>
<name>Airborne</name>
<input>
<not><property>/gear/gear/wow</property></not>
</input>
<output>/autopilot/autobrake/airborne</output>
</logic>
<logic>
<name>High-speed</name>
<input>
<greater-than>
<property>/instrumentation/airspeed-indicator/indicated-speed-kt</property>
<value>40</value>
</greater-than>
</input>
<output>/autopilot/autobrake/above-40-kts</output>
</logic>
<logic>
<name>Spoilers deployed</name>
<input>
<greater-than>
<property>/surface-positions/speedbrake-pos-norm</property>
<value>0</value>
</greater-than>
</input>
<output>/autopilot/autobrake/spoilers-deployed</output>
</logic>
<!-- pilot brake input -->
<logic>
<name>Pilot Input</name>
<input>
<less-than>
<property>/autopilot/autobrake/config/pilot-input</property>
<expression>
<max>
<property>/controls/gear/brake-left</property>
<property>/controls/gear/brake-right</property>
</max>
</expression>
</less-than>
</input>
<output>/autopilot/autobrake/pilot-input</output>
</logic>
<flipflop>
<name>Autobrake Engage logic</name>
<debug>false</debug>
<type>RS</type>
<enable>
<condition>
<and>
<property>/autopilot/autobrake/selected</property>
<not>
<property>/autopilot/autobrake/max-selected</property>
</not>
</and>
</condition>
</enable>
<S>
<and>
<property>/autopilot/autobrake/throttles-at-idle</property>
<property>/autopilot/autobrake/spoilers-deployed</property>
<not>
<property>/autopilot/autobrake/airborne</property>
</not>
</and>
</S>
<R>
<false/>
</R>
<output>/autopilot/autobrake/engaged</output>
</flipflop>
<filter>
<name>MAX cancel logic</name>
<type>gain</type>
<gain>1.0</gain>
<debug>false</debug>
<enable>
<condition>
<property>/autopilot/autobrake/max-selected</property>
<property>/autopilot/autobrake/airborne</property>
</condition>
</enable>
<input><value>0</value></input> <!-- switch to 'off' -->
<output>/autopilot/autobrake/step</output>
</filter>
<flipflop>
<name>MAX engage logic</name>
<type>RS</type>
<debug>false</debug>
<enable>
<condition>
<property>/autopilot/autobrake/max-selected</property>
<property>/autopilot/autobrake/above-40-kts</property>
</condition>
</enable>
<S>
<and>
<property>/autopilot/autobrake/throttles-at-idle</property>
<property>/autopilot/autobrake/spoilers-deployed</property>
</and>
</S>
<R>
<false/>
</R>
<output>/autopilot/autobrake/engaged</output>
</flipflop>
<filter>
<name>Disengage logic</name>
<debug>false</debug>
<type>gain</type>
<gain>1.0</gain>
<enable>
<condition>
<property>/autopilot/autobrake/engaged</property>
<or>
<!-- disengage on pilot input -->
<property>/autopilot/autobrake/pilot-input</property>
<!-- disengage if the throttles are not at idle -->
<not><property>/autopilot/autobrake/throttles-at-idle</property></not>
<!-- disengage if the spoilers are retracted -->
<not><property>/autopilot/autobrake/spoilers-deployed</property></not>
</or>
</condition>
</enable>
<input><value>0</value></input> <!-- switch to 'off' -->
<output>/autopilot/autobrake/step</output>
</filter>
<!-- model the accelerometer portion of the AB system.
This could differentiate indicated-airspeed, but I suspect real-
world systems use accelerometers directly. -->
<filter>
<name>Deceleration Sensor</name>
<type>noise-spike</type>
<max-rate-of-change>5.0</max-rate-of-change>
<input>
<scale>-1</scale> <!-- deceleration, not acceleration -->
<property>/fdm/jsbsim/accelerations/udot-ft_sec2</property>
</input>
<output>/autopilot/autobrake/actual-decel-ftsec2</output>
</filter>
<!-- translate dial setting levels into target decelerations, based upon
information in the POH -->
<filter>
<name>Target Deceleration Table</name>
<type>gain</type>
<debug>false</debug>
<gain>1.0</gain>
<output>/autopilot/autobrake/target-decel-ftsec2</output>
<input>
<condition>
<not>
<property>/autopilot/autobrake/max-selected</property>
</not>
</condition>
<expression>
<!-- values taken from http://www.pprune.org/tech-log/304333-a320-autoland-distance-autobrake-vs-manual-landing-distance-autobrake-2.html#post3809602 -->
<table>
<property>/autopilot/autobrake/step</property>
<entry><ind>0</ind><dep>0</dep></entry>
<entry><ind>1</ind><dep>5.6</dep></entry>
<entry><ind>2</ind><dep>9.8</dep></entry>
</table>
</expression>
</input>
<input>
<condition>
<property>/autopilot/autobrake/max-selected</property>
</condition>
<!-- RTO setting applies max hydraulic pressure, simulate this
with a huge value here, to ensure the PI drives to 1.0 output -->
<value>50</value>
</input>
</filter>
<pi-simple-controller>
<name>Brake Effort Computer</name>
<debug>false</debug>
<enable>
<property>/autopilot/autobrake/engaged</property>
</enable>
<input><property>/autopilot/autobrake/actual-decel-ftsec2</property></input>
<reference>/autopilot/autobrake/target-decel-ftsec2</reference>
<output>/autopilot/autobrake/output-brake</output>
<min>0.0</min>
<max>1.0</max>
<config>
<Kp>1.0</Kp>
<Ki>0.0</Ki>
</config>
</pi-simple-controller>
<!-- left output summer -->
<filter>
<name>Left Output Summer</name>
<type>gain</type>
<gain>1.0</gain>
<input>
<condition>
<property>/autopilot/autobrake/engaged</property>
</condition>
<expression>
<max>
<property>/controls/gear/brake-left</property>
<property>/autopilot/autobrake/output-brake</property>
</max>
</expression>
</input>
<!-- default input -->
<input>
<property>/controls/gear/brake-left</property>
</input>
<output>/autopilot/autobrake/brake-left-output</output>
</filter>
<!-- right output summer -->
<filter>
<name>Right Output Summer</name>
<type>gain</type>
<gain>1.0</gain>
<input>
<condition>
<property>/autopilot/autobrake/engaged</property>
</condition>
<expression>
<max>
<property>/controls/gear/brake-right</property>
<property>/autopilot/autobrake/output-brake</property>
</max>
</expression>
</input>
<!-- default input -->
<input>
<property>/controls/gear/brake-right</property>
</input>
<output>/autopilot/autobrake/brake-right-output</output>
</filter>
</PropertyList>