Control: Add overspeed pitch law with VD, VMO, and rework/fix spoilers, Aero: Fix aileron authority for proper roll rates as per FCOM
This commit is contained in:
parent
7181eefddf
commit
f412d3069e
9 changed files with 239 additions and 192 deletions
|
@ -4698,7 +4698,7 @@
|
|||
<file>Aircraft/A320-family/Nasal/ECAM/ECAM-phases.nas</file>
|
||||
</ecam>
|
||||
<fbw>
|
||||
<file>Aircraft/A320-family/Nasal/FBW/it-fbw.nas</file>
|
||||
<file>Aircraft/A320-family/Nasal/Systems/fbw.nas</file>
|
||||
</fbw>
|
||||
<fcu>
|
||||
<file>Aircraft/A320-family/Nasal/FMGC/FCU.nas</file>
|
||||
|
|
|
@ -115,7 +115,7 @@ var FMGCInternal = {
|
|||
# speeds
|
||||
alpha_prot: 0,
|
||||
alpha_max: 0,
|
||||
vmo_mmo: 0,
|
||||
vmo_mmo: props.globals.getNode("/FMGC/internal/vmo-mmo"),
|
||||
vsw: 0,
|
||||
vls_min: 0,
|
||||
clean: 0,
|
||||
|
@ -688,7 +688,7 @@ var masterFMGC = maketimer(0.2, func {
|
|||
} elsif (pts.Gear.position[0].getValue() != 0 or pts.Gear.position[1].getValue() != 0 or pts.Gear.position[2].getValue() != 0) {
|
||||
FMGCInternal.maxspeed = 284;
|
||||
} else {
|
||||
FMGCInternal.maxspeed = fmgc.FMGCInternal.vmo_mmo;
|
||||
FMGCInternal.maxspeed = fmgc.FMGCInternal.vmo_mmo.getValue();
|
||||
}
|
||||
|
||||
if (newphase != FMGCInternal.phase) { # phase changed
|
||||
|
|
|
@ -87,7 +87,7 @@ var FBW = {
|
|||
fac2: props.globals.getNode("/systems/fctl/lights/fac2-fault"),
|
||||
},
|
||||
Protections: {
|
||||
overspeed: props.globals.getNode("/it-fbw/protections/overspeed"),
|
||||
overspeed: props.globals.getNode("/fdm/jsbsim/fbw/protections/overspeed"),
|
||||
},
|
||||
Sidestick: {
|
||||
active: [props.globals.getNode("/fdm/jsbsim/fbw/sidestick/active[0]"), props.globals.getNode("/fdm/jsbsim/fbw/sidestick/active[1]")],
|
||||
|
@ -240,26 +240,10 @@ var update_loop = func {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
cas = pts.Instrumentation.AirspeedIndicator.indicatedSpdKt.getValue();
|
||||
mmoIAS = (cas / pts.Instrumentation.AirspeedIndicator.indicatedMach.getValue()) * 0.82;
|
||||
if (mmoIAS < 350) {
|
||||
fmgc.FMGCInternal.vmo_mmo = mmoIAS;
|
||||
} else {
|
||||
fmgc.FMGCInternal.vmo_mmo = 350;
|
||||
}
|
||||
|
||||
if (cas > (fmgc.FMGCInternal.vmo_mmo + 6) and (law == 0 or law == 1)) {
|
||||
if (FBW.Protections.overspeed.getBoolValue()) {
|
||||
if (fmgc.Input.ap1.getBoolValue() or fmgc.Input.ap2.getBoolValue()) {
|
||||
fcu.apOff("hard", 0);
|
||||
}
|
||||
if (!FBW.Protections.overspeed.getBoolValue()) {
|
||||
FBW.Protections.overspeed.setBoolValue(1);
|
||||
}
|
||||
} else {
|
||||
if (FBW.Protections.overspeed.getBoolValue()) {
|
||||
FBW.Protections.overspeed.setBoolValue(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -596,7 +596,7 @@
|
|||
<property>metrics/Sw-sqft</property>
|
||||
<property>metrics/bw-ft</property>
|
||||
<toradians><property>hydraulics/aileron-l/final-deg</property></toradians>
|
||||
<value>0.035</value>
|
||||
<value>0.043</value>
|
||||
</product>
|
||||
</function>
|
||||
|
||||
|
@ -607,7 +607,7 @@
|
|||
<property>metrics/Sw-sqft</property>
|
||||
<property>metrics/bw-ft</property>
|
||||
<toradians><property>hydraulics/aileron-r/final-deg</property></toradians>
|
||||
<value>-0.035</value>
|
||||
<value>-0.043</value>
|
||||
</product>
|
||||
</function>
|
||||
|
||||
|
@ -618,7 +618,7 @@
|
|||
<property>metrics/Sw-sqft</property>
|
||||
<property>metrics/bw-ft</property>
|
||||
<toradians><property>fcs/spoiler-left-deg</property></toradians>
|
||||
<value>-0.023</value>
|
||||
<value>-0.027</value>
|
||||
</product>
|
||||
</function>
|
||||
|
||||
|
@ -629,7 +629,7 @@
|
|||
<property>metrics/Sw-sqft</property>
|
||||
<property>metrics/bw-ft</property>
|
||||
<toradians><property>fcs/spoiler-right-deg</property></toradians>
|
||||
<value>0.023</value>
|
||||
<value>0.027</value>
|
||||
</product>
|
||||
</function>
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
<property value="1">fbw/mixer/sidestick-gain-feedback</property>
|
||||
<property value="0">fbw/spoiler-output</property>
|
||||
<property value="3.5">fbw/rate-c1</property>
|
||||
<property value="0">fbw/pitch/ias-input</property>
|
||||
|
||||
<!-- Default gains for tuning -->
|
||||
<property value="0">fbw/roll/p-gain</property>
|
||||
|
@ -69,6 +70,18 @@
|
|||
</test>
|
||||
</switch>
|
||||
|
||||
<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
|
||||
</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>
|
||||
|
@ -105,7 +118,7 @@
|
|||
<tableData>
|
||||
0 1
|
||||
140 -2.5 0.0
|
||||
350 -0.5 0.0
|
||||
350 -0.4 0.0
|
||||
</tableData>
|
||||
</table>
|
||||
</function>
|
||||
|
@ -147,7 +160,7 @@
|
|||
<tableData>
|
||||
0 1
|
||||
140 2.0 0.0
|
||||
350 0.4 0.0
|
||||
350 0.3 0.0
|
||||
</tableData>
|
||||
</table>
|
||||
</function>
|
||||
|
@ -215,19 +228,6 @@
|
|||
</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>1.0</c1>
|
||||
</lag_filter>
|
||||
|
||||
<switch name="fbw/mixer/rate-limit">
|
||||
<default value="fbw/mixer/rate-limit"/>
|
||||
<test logic="AND" value="0.5"> <!-- 2 seconds -->
|
||||
|
@ -661,7 +661,7 @@
|
|||
<switch name="fbw/roll/overspeed-overbank">
|
||||
<default value="0"/>
|
||||
<test value="0">
|
||||
/it-fbw/protections/overspeed ne 1
|
||||
fbw/protections/overspeed ne 1
|
||||
</test>
|
||||
<test logic="OR" value="1">
|
||||
attitude/roll-rad lt -0.584685
|
||||
|
@ -673,7 +673,7 @@
|
|||
<function>
|
||||
<ifthen>
|
||||
<eq>
|
||||
<property>/it-fbw/protections/overspeed</property>
|
||||
<property>fbw/protections/overspeed</property>
|
||||
<value>1</value>
|
||||
</eq>
|
||||
<table>
|
||||
|
@ -714,9 +714,9 @@
|
|||
<table>
|
||||
<independentVar lookup="row">fbw/roll/max-rad-error</independentVar>
|
||||
<tableData>
|
||||
-0.174533 1.00
|
||||
-0.043633 0.25
|
||||
0.000000 0.00
|
||||
-0.087266 1.0
|
||||
-0.034907 0.1
|
||||
0.000000 0.0
|
||||
</tableData>
|
||||
</table>
|
||||
</function>
|
||||
|
@ -727,9 +727,9 @@
|
|||
<table>
|
||||
<independentVar lookup="row">fbw/roll/min-rad-error</independentVar>
|
||||
<tableData>
|
||||
0.000000 0.00
|
||||
0.043633 -0.25
|
||||
0.174533 -1.00
|
||||
0.000000 0.0
|
||||
0.034907 -0.1
|
||||
0.087266 -1.0
|
||||
</tableData>
|
||||
</table>
|
||||
</function>
|
||||
|
@ -758,8 +758,8 @@
|
|||
<tableData>
|
||||
0 1
|
||||
0.000000 0.00 0.00
|
||||
0.043633 -0.25 -0.25
|
||||
0.174533 -0.67 -1.00
|
||||
0.034907 -0.10 -0.10
|
||||
0.087266 -0.67 -1.00
|
||||
</tableData>
|
||||
</table>
|
||||
</function>
|
||||
|
@ -772,8 +772,8 @@
|
|||
<independentVar lookup="column">fbw/roll/overspeed-overbank</independentVar>
|
||||
<tableData>
|
||||
0 1
|
||||
-0.174533 0.67 1.00
|
||||
-0.043633 0.25 0.25
|
||||
-0.087266 0.67 1.00
|
||||
-0.034907 0.10 0.10
|
||||
0.000000 0.00 0.00
|
||||
</tableData>
|
||||
</table>
|
||||
|
@ -926,7 +926,7 @@
|
|||
<product>
|
||||
<pow>
|
||||
<abs><property>fbw/roll/s-i-f-i</property></abs>
|
||||
<value>1.625</value>
|
||||
<value>1.7</value>
|
||||
</pow>
|
||||
<ifthen>
|
||||
<lt>
|
||||
|
@ -956,51 +956,93 @@
|
|||
</test>
|
||||
</switch>
|
||||
|
||||
<switch name="fbw/roll/s-l">
|
||||
<switch name="fbw/roll/s-l-2">
|
||||
<default value="0"/>
|
||||
<test value="fbw/roll/s-i">
|
||||
/it-fbw/law ne 3
|
||||
/systems/failures/aileron-left eq 0
|
||||
<test logic="OR" value="0">
|
||||
/it-fbw/law eq 3
|
||||
</test>
|
||||
<test value="fbw/aileron-output">
|
||||
/it-fbw/law ne 3
|
||||
<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-r">
|
||||
<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
|
||||
/systems/failures/aileron-right eq 0
|
||||
</test>
|
||||
<test value="fbw/aileron-output">
|
||||
</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/elevator-max"> <!-- Prevent pitch down -->
|
||||
<default value="1"/>
|
||||
<test logic="AND" value="0">
|
||||
/it-fbw/law eq 0
|
||||
/it-fbw/protections/overspeed eq 1
|
||||
</test>
|
||||
</switch>
|
||||
|
||||
<switch name="fbw/pitch/e-i-f">
|
||||
<default value="fbw/sidestick/pitch-input"/>
|
||||
<test value="0">
|
||||
fbw/fmgc/enabled eq 1
|
||||
</test>
|
||||
<clipto>
|
||||
<min>-1.0</min>
|
||||
<max>fbw/pitch/elevator-max</max>
|
||||
</clipto>
|
||||
</switch>
|
||||
|
||||
<actuator name="fbw/pitch/e-i-m">
|
||||
|
@ -1013,7 +1055,58 @@
|
|||
<c1>20.0</c1>
|
||||
</lag_filter>
|
||||
|
||||
<fcs_function name="fbw/pitch/e-f-air">
|
||||
<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.0</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-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>
|
||||
|
||||
<fcs_function name="fbw/pitch/e-i-flare">
|
||||
<function>
|
||||
<sum>
|
||||
<property>fbw/sidestick/pitch-input</property>
|
||||
|
@ -1065,9 +1158,9 @@
|
|||
<table>
|
||||
<independentVar lookup="row">fbw/pitch/min-rad-error</independentVar>
|
||||
<tableData>
|
||||
0.000000 0.00
|
||||
0.021817 0.25
|
||||
0.087266 1.00
|
||||
0.000000 0.0
|
||||
0.034907 0.1
|
||||
0.087266 1.0
|
||||
</tableData>
|
||||
</table>
|
||||
</function>
|
||||
|
@ -1078,9 +1171,9 @@
|
|||
<table>
|
||||
<independentVar lookup="row">fbw/pitch/max-rad-error</independentVar>
|
||||
<tableData>
|
||||
-0.087266 -1.00
|
||||
-0.021817 -0.25
|
||||
0.000000 0.00
|
||||
-0.087266 -1.0
|
||||
-0.034907 -0.1
|
||||
0.000000 0.0
|
||||
</tableData>
|
||||
</table>
|
||||
</function>
|
||||
|
@ -1088,7 +1181,11 @@
|
|||
|
||||
<switch name="fbw/pitch/e-i-cmd">
|
||||
<default value="fbw/sidestick/pitch-input"/>
|
||||
<test logic="AND" value="fbw/pitch/e-f-air">
|
||||
<test logic="AND" value="fbw/pitch/e-i-overspeed">
|
||||
fbw/protections/overspeed eq 1
|
||||
position/wow eq 0
|
||||
</test>
|
||||
<test logic="AND" value="fbw/pitch/e-i-flare">
|
||||
fbw/fmgc/enabled eq 0
|
||||
/position/gear-agl-ft le 30
|
||||
/controls/flight/flaps-pos ge 4
|
||||
|
@ -1099,7 +1196,7 @@
|
|||
fbw/detent-2-feedback le 2
|
||||
fadec/eng-out ne 1
|
||||
</test>
|
||||
<test logic="AND" value="fbw/pitch/e-f-air">
|
||||
<test logic="AND" value="fbw/pitch/e-i-flare">
|
||||
fbw/fmgc/enabled eq 0
|
||||
/position/gear-agl-ft le 30
|
||||
/controls/flight/flaps-pos ge 4
|
||||
|
@ -1129,9 +1226,9 @@
|
|||
<table>
|
||||
<independentVar lookup="row">fbw/pitch/max-rad-error</independentVar>
|
||||
<tableData>
|
||||
0.000000 0.00
|
||||
0.021817 0.25
|
||||
0.087266 1.00
|
||||
0.000000 0.0
|
||||
0.034907 0.1
|
||||
0.087266 1.0
|
||||
</tableData>
|
||||
</table>
|
||||
</function>
|
||||
|
@ -1142,9 +1239,9 @@
|
|||
<table>
|
||||
<independentVar lookup="row">fbw/pitch/min-rad-error</independentVar>
|
||||
<tableData>
|
||||
-0.087266 -1.00
|
||||
-0.021817 -0.25
|
||||
0.000000 0.00
|
||||
-0.087266 -1.0
|
||||
-0.034907 -0.1
|
||||
0.000000 0.0
|
||||
</tableData>
|
||||
</table>
|
||||
</function>
|
||||
|
@ -1295,7 +1392,7 @@
|
|||
attitude/roll-rad gt -0.628319
|
||||
fbw/pitch/pid-switched ge 0.01
|
||||
fbw/pitch/g-instrumented ge 0.5
|
||||
/it-fbw/protections/overspeed ne 1
|
||||
fbw/protections/overspeed ne 1
|
||||
/controls/flight/elevator-trim le 0.32
|
||||
position/wow eq 0
|
||||
</test>
|
||||
|
@ -1306,7 +1403,7 @@
|
|||
attitude/roll-rad gt -0.628319
|
||||
fbw/pitch/pid-switched le -0.01
|
||||
fbw/pitch/g-instrumented ge 0.5
|
||||
/it-fbw/protections/overspeed ne 1
|
||||
fbw/protections/overspeed ne 1
|
||||
/controls/flight/elevator-trim ge -1.0
|
||||
position/wow eq 0
|
||||
</test>
|
||||
|
|
|
@ -1,12 +1,46 @@
|
|||
<?xml version="1.0"?>
|
||||
|
||||
<!-- Airbus A320 FMGC -->
|
||||
<!-- Copyright (c) 2019 Jonathan Redpath -->
|
||||
<!-- Copyright (c) 2021 Josh Davidson and Jonathan Redpath -->
|
||||
|
||||
<system name="A320: FMGC">
|
||||
|
||||
|
||||
<property value="350">/FMGC/internal/vmo-kts</property>
|
||||
|
||||
<channel name="FMGC" execrate="8">
|
||||
|
||||
<fcs_function name="/FMGC/internal/mmo-kts">
|
||||
<function>
|
||||
<product>
|
||||
<quotient>
|
||||
<property>/instrumentation/airspeed-indicator/indicated-speed-kt</property>
|
||||
<max> <!-- Prevent divide by 0 -->
|
||||
<property>/instrumentation/airspeed-indicator/indicated-mach</property>
|
||||
<value>0.0000001</value>
|
||||
</max>
|
||||
</quotient>
|
||||
<value>0.82</value>
|
||||
</product>
|
||||
</function>
|
||||
</fcs_function>
|
||||
|
||||
<switch name="/FMGC/internal/vmo-mmo">
|
||||
<default value="/FMGC/internal/vmo-kts"/>
|
||||
<test logic="AND" value="/FMGC/internal/mmo-kts">
|
||||
/FMGC/internal/mmo-kts lt /FMGC/internal/vmo-kts
|
||||
position/wow eq 0
|
||||
</test>
|
||||
</switch>
|
||||
|
||||
<fcs_function name="/FMGC/internal/vmo-mmo-plus-6">
|
||||
<function>
|
||||
<sum>
|
||||
<property>/FMGC/internal/vmo-mmo</property>
|
||||
<value>6</value>
|
||||
</sum>
|
||||
</function>
|
||||
</fcs_function>
|
||||
|
||||
<fcs_function name="/systems/fmgc/cas-compare/cas-1-to-3">
|
||||
<function>
|
||||
<abs>
|
||||
|
|
|
@ -188,7 +188,7 @@
|
|||
<value>0.5</value>
|
||||
</product>
|
||||
<table>
|
||||
<independentVar lookup="row">fbw/roll/s-l</independentVar>
|
||||
<independentVar lookup="row">fbw/roll/s-l-2</independentVar>
|
||||
<tableData>
|
||||
0.0 0.0
|
||||
1.0 -0.55
|
||||
|
@ -203,7 +203,7 @@
|
|||
<sum>
|
||||
<property>spoilers/main-cmd</property>
|
||||
<table>
|
||||
<independentVar lookup="row">fbw/roll/s-l</independentVar>
|
||||
<independentVar lookup="row">fbw/roll/s-l-2</independentVar>
|
||||
<tableData>
|
||||
0.0 0.0
|
||||
1.0 -0.7
|
||||
|
@ -216,7 +216,7 @@
|
|||
<fcs_function name="hydraulics/spoiler-l2/retracted">
|
||||
<function>
|
||||
<table>
|
||||
<independentVar lookup="row">fbw/roll/s-l</independentVar>
|
||||
<independentVar lookup="row">fbw/roll/s-l-2</independentVar>
|
||||
<tableData>
|
||||
-1.0 0.7
|
||||
0.0 0.0
|
||||
|
@ -281,7 +281,7 @@
|
|||
<sum>
|
||||
<property>spoilers/main-cmd</property>
|
||||
<table>
|
||||
<independentVar lookup="row">fbw/roll/s-l</independentVar>
|
||||
<independentVar lookup="row">fbw/roll/s-l-3</independentVar>
|
||||
<tableData>
|
||||
0.0 0.0
|
||||
1.0 -0.7
|
||||
|
@ -299,7 +299,7 @@
|
|||
<value>0.8</value>
|
||||
</product>
|
||||
<table>
|
||||
<independentVar lookup="row">fbw/roll/s-l</independentVar>
|
||||
<independentVar lookup="row">fbw/roll/s-l-3</independentVar>
|
||||
<tableData>
|
||||
0.0 0.0
|
||||
1.0 -0.7
|
||||
|
@ -312,7 +312,7 @@
|
|||
<fcs_function name="hydraulics/spoiler-l3/retracted">
|
||||
<function>
|
||||
<table>
|
||||
<independentVar lookup="row">fbw/roll/s-l</independentVar>
|
||||
<independentVar lookup="row">fbw/roll/s-l-3</independentVar>
|
||||
<tableData>
|
||||
-1.0 0.7
|
||||
0.0 0.0
|
||||
|
@ -377,7 +377,7 @@
|
|||
<sum>
|
||||
<property>spoilers/main-cmd</property>
|
||||
<table>
|
||||
<independentVar lookup="row">fbw/roll/s-l</independentVar>
|
||||
<independentVar lookup="row">fbw/roll/s-l-4</independentVar>
|
||||
<tableData>
|
||||
0.0 0.0
|
||||
1.0 -0.7
|
||||
|
@ -395,7 +395,7 @@
|
|||
<value>0.8</value>
|
||||
</product>
|
||||
<table>
|
||||
<independentVar lookup="row">fbw/roll/s-l</independentVar>
|
||||
<independentVar lookup="row">fbw/roll/s-l-4</independentVar>
|
||||
<tableData>
|
||||
0.0 0.0
|
||||
1.0 -0.7
|
||||
|
@ -408,7 +408,7 @@
|
|||
<fcs_function name="hydraulics/spoiler-l4/retracted">
|
||||
<function>
|
||||
<table>
|
||||
<independentVar lookup="row">fbw/roll/s-l</independentVar>
|
||||
<independentVar lookup="row">fbw/roll/s-l-4</independentVar>
|
||||
<tableData>
|
||||
-1.0 0.7
|
||||
0.0 0.0
|
||||
|
@ -473,7 +473,7 @@
|
|||
<sum>
|
||||
<property>spoilers/main-cmd</property>
|
||||
<table>
|
||||
<independentVar lookup="row">fbw/roll/s-l</independentVar>
|
||||
<independentVar lookup="row">fbw/roll/s-l-5</independentVar>
|
||||
<tableData>
|
||||
0.0 0.0
|
||||
1.0 -0.7
|
||||
|
@ -486,7 +486,7 @@
|
|||
<fcs_function name="hydraulics/spoiler-l5/retracted">
|
||||
<function>
|
||||
<table>
|
||||
<independentVar lookup="row">fbw/roll/s-l</independentVar>
|
||||
<independentVar lookup="row">fbw/roll/s-l-5</independentVar>
|
||||
<tableData>
|
||||
-1.0 0.7
|
||||
0.0 0.0
|
||||
|
@ -609,7 +609,7 @@
|
|||
<value>0.5</value>
|
||||
</product>
|
||||
<table>
|
||||
<independentVar lookup="row">fbw/roll/s-l</independentVar>
|
||||
<independentVar lookup="row">fbw/roll/s-r-2</independentVar>
|
||||
<tableData>
|
||||
-1.0 -0.55
|
||||
0.0 0.0
|
||||
|
@ -624,7 +624,7 @@
|
|||
<sum>
|
||||
<property>spoilers/main-cmd</property>
|
||||
<table>
|
||||
<independentVar lookup="row">fbw/roll/s-l</independentVar>
|
||||
<independentVar lookup="row">fbw/roll/s-r-2</independentVar>
|
||||
<tableData>
|
||||
-1.0 -0.7
|
||||
0.0 0.0
|
||||
|
@ -637,7 +637,7 @@
|
|||
<fcs_function name="hydraulics/spoiler-r2/retracted">
|
||||
<function>
|
||||
<table>
|
||||
<independentVar lookup="row">fbw/roll/s-l</independentVar>
|
||||
<independentVar lookup="row">fbw/roll/s-r-2</independentVar>
|
||||
<tableData>
|
||||
0.0 0.0
|
||||
1.0 0.7
|
||||
|
@ -702,7 +702,7 @@
|
|||
<sum>
|
||||
<property>spoilers/main-cmd</property>
|
||||
<table>
|
||||
<independentVar lookup="row">fbw/roll/s-l</independentVar>
|
||||
<independentVar lookup="row">fbw/roll/s-r-3</independentVar>
|
||||
<tableData>
|
||||
0.0 0.0
|
||||
1.0 -0.7
|
||||
|
@ -720,7 +720,7 @@
|
|||
<value>0.8</value>
|
||||
</product>
|
||||
<table>
|
||||
<independentVar lookup="row">fbw/roll/s-l</independentVar>
|
||||
<independentVar lookup="row">fbw/roll/s-r-3</independentVar>
|
||||
<tableData>
|
||||
0.0 0.0
|
||||
1.0 -0.7
|
||||
|
@ -733,7 +733,7 @@
|
|||
<fcs_function name="hydraulics/spoiler-r3/retracted">
|
||||
<function>
|
||||
<table>
|
||||
<independentVar lookup="row">fbw/roll/s-l</independentVar>
|
||||
<independentVar lookup="row">fbw/roll/s-r-3</independentVar>
|
||||
<tableData>
|
||||
0.0 0.0
|
||||
1.0 0.7
|
||||
|
@ -798,7 +798,7 @@
|
|||
<sum>
|
||||
<property>spoilers/main-cmd</property>
|
||||
<table>
|
||||
<independentVar lookup="row">fbw/roll/s-l</independentVar>
|
||||
<independentVar lookup="row">fbw/roll/s-r-4</independentVar>
|
||||
<tableData>
|
||||
0.0 0.0
|
||||
1.0 -0.7
|
||||
|
@ -816,7 +816,7 @@
|
|||
<value>0.8</value>
|
||||
</product>
|
||||
<table>
|
||||
<independentVar lookup="row">fbw/roll/s-l</independentVar>
|
||||
<independentVar lookup="row">fbw/roll/s-r-4</independentVar>
|
||||
<tableData>
|
||||
0.0 0.0
|
||||
1.0 -0.7
|
||||
|
@ -829,7 +829,7 @@
|
|||
<fcs_function name="hydraulics/spoiler-r4/retracted">
|
||||
<function>
|
||||
<table>
|
||||
<independentVar lookup="row">fbw/roll/s-l</independentVar>
|
||||
<independentVar lookup="row">fbw/roll/s-r-4</independentVar>
|
||||
<tableData>
|
||||
0.0 0.0
|
||||
1.0 0.7
|
||||
|
@ -894,7 +894,7 @@
|
|||
<sum>
|
||||
<property>spoilers/main-cmd</property>
|
||||
<table>
|
||||
<independentVar lookup="row">fbw/roll/s-l</independentVar>
|
||||
<independentVar lookup="row">fbw/roll/s-r-5</independentVar>
|
||||
<tableData>
|
||||
-1.0 -0.7
|
||||
0.0 0.0
|
||||
|
@ -907,7 +907,7 @@
|
|||
<fcs_function name="hydraulics/spoiler-r5/retracted">
|
||||
<function>
|
||||
<table>
|
||||
<independentVar lookup="row">fbw/roll/s-l</independentVar>
|
||||
<independentVar lookup="row">fbw/roll/s-r-5</independentVar>
|
||||
<tableData>
|
||||
0.0 0.0
|
||||
1.0 0.7
|
||||
|
|
|
@ -1,77 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
|
||||
<!-- Copyright (c) 2021 Josh Davidson (Octal450) -->
|
||||
|
||||
<!-- Airbus A3XX FBW System -->
|
||||
<!-- I didn't see an easy way to do this controller in JSBsim, so I keep it here -->
|
||||
|
||||
<PropertyList>
|
||||
|
||||
<pi-simple-controller>
|
||||
<name>FBW PITCH G PI</name>
|
||||
<debug>false</debug>
|
||||
<input>/fdm/jsbsim/fbw/pitch/g-error</input>
|
||||
<reference>0</reference>
|
||||
<output>/fdm/jsbsim/fbw/pitch/g-pi</output>
|
||||
<config>
|
||||
<Kp>
|
||||
<expression>
|
||||
<table>
|
||||
<property>/fdm/jsbsim/velocities/vc-kts</property>
|
||||
<entry><ind>140</ind><dep>-1.0</dep></entry>
|
||||
<entry><ind>350</ind><dep>-0.5</dep></entry>
|
||||
</table>
|
||||
</expression>
|
||||
</Kp>
|
||||
<Ki>
|
||||
<condition>
|
||||
<and>
|
||||
<equals>
|
||||
<property>/fdm/jsbsim/position/wow</property>
|
||||
<value>0</value>
|
||||
</equals>
|
||||
<or>
|
||||
<equals>
|
||||
<property>/it-fbw/law</property>
|
||||
<value>0</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>/it-fbw/law</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
</or>
|
||||
</and>
|
||||
</condition>
|
||||
<expression>
|
||||
<table>
|
||||
<property>/fdm/jsbsim/velocities/vc-kts</property>
|
||||
<entry><ind>140</ind><dep>-1.0</dep></entry>
|
||||
<entry><ind>350</ind><dep>-0.5</dep></entry>
|
||||
</table>
|
||||
</expression>
|
||||
</Ki>
|
||||
<Ki>0.0</Ki>
|
||||
<min>
|
||||
<condition>
|
||||
<less-than>
|
||||
<property>/fdm/jsbsim/fbw/pitch/e-i</property>
|
||||
<value>0</value>
|
||||
</less-than>
|
||||
</condition>
|
||||
<property>/fdm/jsbsim/fbw/pitch/e-i</property>
|
||||
</min>
|
||||
<min>0.0</min>
|
||||
<max>
|
||||
<condition>
|
||||
<greater-than>
|
||||
<property>/fdm/jsbsim/fbw/pitch/e-i</property>
|
||||
<value>0</value>
|
||||
</greater-than>
|
||||
</condition>
|
||||
<property>/fdm/jsbsim/fbw/pitch/e-i</property>
|
||||
</max>
|
||||
<max>0.0</max>
|
||||
</config>
|
||||
</pi-simple-controller>
|
||||
|
||||
</PropertyList>
|
|
@ -1727,5 +1727,14 @@
|
|||
</input>
|
||||
<output>/instrumentation/dcdu/lcd-contrast</output>
|
||||
</filter>
|
||||
|
||||
<predict-simple>
|
||||
<name>FBW Pitch IAS Predictor</name>
|
||||
<debug>false</debug>
|
||||
<input>/instrumentation/airspeed-indicator/indicated-speed-kt</input>
|
||||
<output>/fdm/jsbsim/fbw/pitch/ias-input</output>
|
||||
<seconds>1.0</seconds>
|
||||
<filter-gain>0</filter-gain>
|
||||
</predict-simple>
|
||||
|
||||
</PropertyList>
|
||||
|
|
Loading…
Add table
Reference in a new issue