1
0
Fork 0

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:
Josh Davidson 2021-09-20 18:23:46 -05:00
parent 7181eefddf
commit f412d3069e
9 changed files with 239 additions and 192 deletions

View file

@ -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>

View 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

View file

@ -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);
}
}
}

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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

View file

@ -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>

View file

@ -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>