1
0
Fork 0

Engines: New CFM performance, toga limit but its not active. needs fadec rewrite

This commit is contained in:
Josh Davidson 2021-02-07 14:12:27 -05:00
parent 318da4c0a2
commit 4466f8b701
14 changed files with 500 additions and 277 deletions

View file

@ -94,7 +94,7 @@
<ground_reactions file="Systems/a320-ground-reactions"/>
<propulsion>
<engine file="cfm56_5b4_1">
<engine file="cfm56-5b4_1">
<location unit="M">
<x>-5.34904</x>
<y>-5.755</y>
@ -120,7 +120,7 @@
</thruster>
</engine>
<engine file="cfm56_5b4_2">
<engine file="cfm56-5b4_2">
<location unit="M">
<x>-5.34904</x>
<y>5.755</y>
@ -276,6 +276,7 @@
<system file="glass-effect"/>
<system file="a320-fbw"/>
<system file="a320-fcs"/>
<system file="a320-cfm56-5b4-engine-fadec"/>
<system file="a320-fuel"/>
<system file="a320-fwc"/>
<system file="a320-fwc-phases"/>

View file

@ -94,7 +94,7 @@
<ground_reactions file="Systems/a320-ground-reactions"/>
<propulsion>
<engine file="v2527_a5_1">
<engine file="v2527-a5_1">
<location unit="M">
<x>-5.34904</x>
<y>-5.755</y>
@ -120,7 +120,7 @@
</thruster>
</engine>
<engine file="v2527_a5_2">
<engine file="v2527-a5_2">
<location unit="M">
<x>-5.34904</x>
<y>5.755</y>

View file

@ -786,8 +786,9 @@
<FMGC n="0">
<active-fmgc-channel type="int">0</active-fmgc-channel>
<internal>
<internal n="0">
<cost-index type="int">0</cost-index>
<flex type="int">45</flex>
<to-state type="bool">0</to-state>
</internal>
<simbrief-username type="string"></simbrief-username>

128
Engines/cfm56-5b4_1.xml Normal file
View file

@ -0,0 +1,128 @@
<?xml version="1.0"?>
<!-- Copyright (c) 2021 Josh Davidson (Octal450) -->
<turbine_engine name="CFM56-5B4">
<milthrust>27000</milthrust>
<tsfc>0.445</tsfc>
<bleed>0.03</bleed>
<ignitionn1>0.6</ignitionn1>
<ignitionn2>22.2</ignitionn2>
<n1spinup>0.05</n1spinup>
<n2spinup>1.85</n2spinup>
<n1startrate>0.573</n1startrate>
<n2startrate>1.127</n2startrate>
<idlen1>18.9</idlen1>
<idlen2>59.4</idlen2>
<maxn1>104.0</maxn1>
<maxn2>105.0</maxn2>
<augmented>0</augmented>
<injected>0</injected>
<function name="N1SpoolUp">
<table>
<independentVar lookup="row">/engines/engine[0]/n1</independentVar>
<tableData>
24 1.1
28 2.9
46 9.7
68 15.4
80 19.6
94 21.4
103 23.6
</tableData>
</table>
</function>
<function name="N1SpoolDown">
<table>
<independentVar lookup="row">/engines/engine[0]/n1</independentVar>
<tableData>
24 1.1
28 2.9
46 9.7
68 15.4
80 19.6
94 21.4
103 23.6
</tableData>
</table>
</function>
<function name="N2SpoolUp"> <!-- N1 to N2 factor 0.535840188014101 -->
<table>
<independentVar lookup="row">/engines/engine[0]/n1</independentVar>
<tableData>
24 0.6
28 1.6
46 5.2
68 8.3
80 10.5
94 11.5
103 12.6
</tableData>
</table>
</function>
<function name="N2SpoolDown"> <!-- N1 to N2 factor 0.535840188014101 -->
<table>
<independentVar lookup="row">/engines/engine[0]/n1</independentVar>
<tableData>
24 0.6
28 1.6
46 5.2
68 8.3
80 10.5
94 11.5
103 12.6
</tableData>
</table>
</function>
<function name="IdleThrust">
<table>
<independentVar lookup="row">velocities/mach</independentVar>
<independentVar lookup="column">atmosphere/density-altitude</independentVar>
<tableData>
-10000 0 10000 20000 30000 40000 50000
0.0 0.0430 0.0458 0.0378 0.0684 0.0819 0.0793 0.0000
0.2 0.0500 0.0291 0.0205 0.0514 0.0727 0.0729 0.0000
0.4 0.0040 0.0047 0.0012 0.0412 0.0585 0.0671 0.0000
0.6 0.0000 0.0000 0.0000 0.0000 0.0416 0.0518 0.0000
0.8 0.0000 0.0000 0.0000 0.0000 0.0354 0.0468 0.0000
1.0 0.0000 0.0000 0.0000 0.0000 0.0000 0.0352 0.0000
</tableData>
</table>
</function>
<function name="MilThrust"> <!-- If you change this, make sure you update the table in the engine system file -->
<product>
<table>
<independentVar lookup="row">velocities/mach</independentVar>
<independentVar lookup="column">atmosphere/density-altitude</independentVar>
<tableData>
-10000 0 10000 20000 30000 40000 50000
0.0 1.2600 1.0000 0.7400 0.5640 0.3920 0.2710 0.0000
0.2 1.1710 0.9740 0.6970 0.5360 0.3850 0.2610 0.0000
0.4 1.1500 0.9570 0.6920 0.5460 0.3870 0.2530 0.0000
0.6 1.1810 0.9410 0.7210 0.5660 0.3580 0.2180 0.0000
0.8 1.2290 1.0200 0.7820 0.5570 0.3040 0.1930 0.0000
0.9 1.2580 1.0200 0.7820 0.5220 0.2710 0.1140 0.0000
1.0 1.1810 0.9510 0.7210 0.4410 0.1740 0.0450 0.0000
1.2 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
1.4 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
</tableData>
</table>
<property>fadec/limit/rated-thrust-factor</property>
<table> <!-- Thrust loss due to reverser angle -->
<independentVar lookup="row">/engines/engine[0]/reverser-pos-norm</independentVar>
<tableData>
0.01 1.00
1.00 0.65
</tableData>
</table>
</product>
</function>
</turbine_engine>

128
Engines/cfm56-5b4_2.xml Normal file
View file

@ -0,0 +1,128 @@
<?xml version="1.0"?>
<!-- Copyright (c) 2021 Josh Davidson (Octal450) -->
<turbine_engine name="CFM56-5B4">
<milthrust>27000</milthrust>
<tsfc>0.445</tsfc>
<bleed>0.03</bleed>
<ignitionn1>0.6</ignitionn1>
<ignitionn2>22.2</ignitionn2>
<n1spinup>0.05</n1spinup>
<n2spinup>1.85</n2spinup>
<n1startrate>0.573</n1startrate>
<n2startrate>1.127</n2startrate>
<idlen1>18.9</idlen1>
<idlen2>59.4</idlen2>
<maxn1>104.0</maxn1>
<maxn2>105.0</maxn2>
<augmented>0</augmented>
<injected>0</injected>
<function name="N1SpoolUp">
<table>
<independentVar lookup="row">/engines/engine[1]/n1</independentVar>
<tableData>
24 1.1
28 2.9
46 9.7
68 15.4
80 19.6
94 21.4
103 23.6
</tableData>
</table>
</function>
<function name="N1SpoolDown">
<table>
<independentVar lookup="row">/engines/engine[1]/n1</independentVar>
<tableData>
24 1.1
28 2.9
46 9.7
68 15.4
80 19.6
94 21.4
103 23.6
</tableData>
</table>
</function>
<function name="N2SpoolUp"> <!-- N1 to N2 factor 0.535840188014101 -->
<table>
<independentVar lookup="row">/engines/engine[1]/n1</independentVar>
<tableData>
24 0.6
28 1.6
46 5.2
68 8.3
80 10.5
94 11.5
103 12.6
</tableData>
</table>
</function>
<function name="N2SpoolDown"> <!-- N1 to N2 factor 0.535840188014101 -->
<table>
<independentVar lookup="row">/engines/engine[1]/n1</independentVar>
<tableData>
24 0.6
28 1.6
46 5.2
68 8.3
80 10.5
94 11.5
103 12.6
</tableData>
</table>
</function>
<function name="IdleThrust">
<table>
<independentVar lookup="row">velocities/mach</independentVar>
<independentVar lookup="column">atmosphere/density-altitude</independentVar>
<tableData>
-10000 0 10000 20000 30000 40000 50000
0.0 0.0430 0.0458 0.0378 0.0684 0.0819 0.0793 0.0000
0.2 0.0500 0.0291 0.0205 0.0514 0.0727 0.0729 0.0000
0.4 0.0040 0.0047 0.0012 0.0412 0.0585 0.0671 0.0000
0.6 0.0000 0.0000 0.0000 0.0000 0.0416 0.0518 0.0000
0.8 0.0000 0.0000 0.0000 0.0000 0.0354 0.0468 0.0000
1.0 0.0000 0.0000 0.0000 0.0000 0.0000 0.0352 0.0000
</tableData>
</table>
</function>
<function name="MilThrust"> <!-- If you change this, make sure you update the table in the engine system file -->
<product>
<table>
<independentVar lookup="row">velocities/mach</independentVar>
<independentVar lookup="column">atmosphere/density-altitude</independentVar>
<tableData>
-10000 0 10000 20000 30000 40000 50000
0.0 1.2600 1.0000 0.7400 0.5640 0.3920 0.2710 0.0000
0.2 1.1710 0.9740 0.6970 0.5360 0.3850 0.2610 0.0000
0.4 1.1500 0.9570 0.6920 0.5460 0.3870 0.2530 0.0000
0.6 1.1810 0.9410 0.7210 0.5660 0.3580 0.2180 0.0000
0.8 1.2290 1.0200 0.7820 0.5570 0.3040 0.1930 0.0000
0.9 1.2580 1.0200 0.7820 0.5220 0.2710 0.1140 0.0000
1.0 1.1810 0.9510 0.7210 0.4410 0.1740 0.0450 0.0000
1.2 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
1.4 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
</tableData>
</table>
<property>fadec/limit/rated-thrust-factor</property>
<table> <!-- Thrust loss due to reverser angle -->
<independentVar lookup="row">/engines/engine[1]/reverser-pos-norm</independentVar>
<tableData>
0.01 1.00
1.00 0.65
</tableData>
</table>
</product>
</function>
</turbine_engine>

View file

@ -1,119 +0,0 @@
<?xml version="1.0"?>
<!-- Copyright (c) 2020 Josh Davidson (Octal450) -->
<turbine_engine name="CFM56_5B4">
<!-- source https://www.youtube.com/watch?v=jnGfzv7Odh4 -->
<milthrust> 27000 </milthrust>
<tsfc> 0.445 </tsfc>
<bleed> 0.03 </bleed>
<ignitionn1> 0.6 </ignitionn1>
<ignitionn2> 22.2</ignitionn2>
<idlen1> 18.9 </idlen1>
<idlen2> 59.4 </idlen2>
<n1spinup> 0.05 </n1spinup>
<n2spinup> 1.85 </n2spinup>
<n1startrate> 0.573 </n1startrate>
<n2startrate> 1.127 </n2startrate>
<maxn1> 103.8 </maxn1>
<maxn2> 101.4 </maxn2>
<augmented> 0 </augmented>
<injected> 0 </injected>
<function name="N1SpoolUp">
<table>
<independentVar lookup="row">/engines/engine[0]/n1</independentVar>
<tableData>
24 1.1
28 2.9
46 9.7
68 15.4
80 19.6
94 21.4
103 23.6
</tableData>
</table>
</function>
<function name="N1SpoolDown">
<table>
<independentVar lookup="row">/engines/engine[0]/n1</independentVar>
<tableData>
24 1.1
28 2.9
46 9.7
68 15.4
80 19.6
94 21.4
103 23.6
</tableData>
</table>
</function>
<function name="N2SpoolUp">
<table>
<independentVar lookup="row">/engines/engine[0]/n1</independentVar>
<tableData>
24 1.1
28 2.9
46 9.7
68 15.4
80 19.6
94 21.4
103 23.6
</tableData>
</table>
</function>
<function name="N2SpoolDown">
<table>
<independentVar lookup="row">/engines/engine[0]/n1</independentVar>
<tableData>
24 1.1
28 2.9
46 9.7
68 15.4
80 19.6
94 21.4
103 23.6
</tableData>
</table>
</function>
<function name="IdleThrust">
<table>
<independentVar lookup="row">velocities/mach</independentVar>
<independentVar lookup="column">atmosphere/density-altitude</independentVar>
<tableData>
-10000 0 10000 20000 30000 40000 50000
0.0 0.0430 0.0458 0.0378 0.0684 0.0619 0.0693 0.0000
0.2 0.0500 0.0291 0.0205 0.0514 0.0627 0.0629 0.0000
0.4 0.0040 0.0047 0.0012 0.0412 0.0485 0.0571 0.0000
0.6 0.0000 0.0000 0.0000 0.0000 0.0316 0.0418 0.0000
0.8 0.0000 0.0000 0.0000 0.0000 0.0254 0.0368 0.0000
1.0 0.0000 0.0000 0.0000 0.0000 0.0000 0.0252 0.0000
</tableData>
</table>
</function>
<function name="MilThrust">
<table>
<independentVar lookup="row">velocities/mach</independentVar>
<independentVar lookup="column">atmosphere/density-altitude</independentVar>
<tableData>
-10000 0 10000 20000 30000 40000 50000
0.0 1.2600 1.0000 0.7400 0.5640 0.3920 0.2710 0.0000
0.2 1.1710 0.9740 0.6970 0.5360 0.3850 0.2610 0.0000
0.4 1.1500 0.9570 0.6920 0.5460 0.3870 0.2530 0.0000
0.6 1.1810 0.9410 0.7210 0.5660 0.3580 0.2180 0.0000
0.8 1.2290 1.0200 0.7820 0.5570 0.3040 0.1930 0.0000
0.9 1.2580 1.0200 0.7820 0.5220 0.2710 0.1140 0.0000
1.0 1.1810 0.9510 0.7210 0.4410 0.1740 0.0450 0.0000
1.2 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
1.4 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
</tableData>
</table>
</function>
</turbine_engine>

View file

@ -1,119 +0,0 @@
<?xml version="1.0"?>
<!-- Copyright (c) 2020 Josh Davidson (Octal450) -->
<turbine_engine name="CFM56_5B4">
<!-- source https://www.youtube.com/watch?v=jnGfzv7Odh4 -->
<milthrust> 27000 </milthrust>
<tsfc> 0.445 </tsfc>
<bleed> 0.03 </bleed>
<ignitionn1> 0.6 </ignitionn1>
<ignitionn2> 22.2</ignitionn2>
<idlen1> 18.9 </idlen1>
<idlen2> 59.4 </idlen2>
<n1spinup> 0.05 </n1spinup>
<n2spinup> 1.85 </n2spinup>
<n1startrate> 0.573 </n1startrate>
<n2startrate> 1.127 </n2startrate>
<maxn1> 103.8 </maxn1>
<maxn2> 101.4 </maxn2>
<augmented> 0 </augmented>
<injected> 0 </injected>
<function name="N1SpoolUp">
<table>
<independentVar lookup="row">/engines/engine[1]/n1</independentVar>
<tableData>
24 1.1
28 2.9
46 9.7
68 15.4
80 19.6
94 21.4
103 23.6
</tableData>
</table>
</function>
<function name="N1SpoolDown">
<table>
<independentVar lookup="row">/engines/engine[1]/n1</independentVar>
<tableData>
24 1.1
28 2.9
46 9.7
68 15.4
80 19.6
94 21.4
103 23.6
</tableData>
</table>
</function>
<function name="N2SpoolUp">
<table>
<independentVar lookup="row">/engines/engine[1]/n1</independentVar>
<tableData>
24 1.1
28 2.9
46 9.7
68 15.4
80 19.6
94 21.4
103 23.6
</tableData>
</table>
</function>
<function name="N2SpoolDown">
<table>
<independentVar lookup="row">/engines/engine[1]/n1</independentVar>
<tableData>
24 1.1
28 2.9
46 9.7
68 15.4
80 19.6
94 21.4
103 23.6
</tableData>
</table>
</function>
<function name="IdleThrust">
<table>
<independentVar lookup="row">velocities/mach</independentVar>
<independentVar lookup="column">atmosphere/density-altitude</independentVar>
<tableData>
-10000 0 10000 20000 30000 40000 50000
0.0 0.0430 0.0458 0.0378 0.0684 0.0619 0.0693 0.0000
0.2 0.0500 0.0291 0.0205 0.0514 0.0627 0.0629 0.0000
0.4 0.0040 0.0047 0.0012 0.0412 0.0485 0.0571 0.0000
0.6 0.0000 0.0000 0.0000 0.0000 0.0316 0.0418 0.0000
0.8 0.0000 0.0000 0.0000 0.0000 0.0254 0.0368 0.0000
1.0 0.0000 0.0000 0.0000 0.0000 0.0000 0.0252 0.0000
</tableData>
</table>
</function>
<function name="MilThrust">
<table>
<independentVar lookup="row">velocities/mach</independentVar>
<independentVar lookup="column">atmosphere/density-altitude</independentVar>
<tableData>
-10000 0 10000 20000 30000 40000 50000
0.0 1.2600 1.0000 0.7400 0.5640 0.3920 0.2710 0.0000
0.2 1.1710 0.9740 0.6970 0.5360 0.3850 0.2610 0.0000
0.4 1.1500 0.9570 0.6920 0.5460 0.3870 0.2530 0.0000
0.6 1.1810 0.9410 0.7210 0.5660 0.3580 0.2180 0.0000
0.8 1.2290 1.0200 0.7820 0.5570 0.3040 0.1930 0.0000
0.9 1.2580 1.0200 0.7820 0.5220 0.2710 0.1140 0.0000
1.0 1.1810 0.9510 0.7210 0.4410 0.1740 0.0450 0.0000
1.2 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
1.4 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
</tableData>
</table>
</function>
</turbine_engine>

View file

@ -2,7 +2,7 @@
<!-- Copyright (c) 2020 Josh Davidson (Octal450) -->
<turbine_engine name="V2527_A5">
<turbine_engine name="V2527-A5">
<!-- data measured from https://www.youtube.com/watch?v=gPRQcYNRV_U -->
<milthrust> 24800 </milthrust>

View file

@ -2,7 +2,7 @@
<!-- Copyright (c) 2020 Josh Davidson (Octal450) -->
<turbine_engine name="V2527_A5">
<turbine_engine name="V2527-A5">
<!-- data measured from https://www.youtube.com/watch?v=gPRQcYNRV_U -->
<milthrust> 24800 </milthrust>

View file

@ -248,7 +248,7 @@ var postInit = func() {
var FMGCNodes = {
costIndex: props.globals.initNode("/FMGC/internal/cost-index", 0, "DOUBLE"),
flexSet: props.globals.initNode("/FMGC/internal/flex-set", 0, "BOOL"),
flexTemp: props.globals.initNode("/FMGC/internal/flex", 0, "INT"),
flexTemp: props.globals.initNode("/FMGC/internal/flex", 45, "INT"),
mngSpdAlt: props.globals.getNode("/FMGC/internal/mng-alt-spd"),
mngMachAlt: props.globals.getNode("/FMGC/internal/mng-alt-mach"),
toFromSet: props.globals.initNode("/FMGC/internal/tofrom-set", 0, "BOOL"),

View file

@ -222,7 +222,7 @@ var perfTOInput = func(key, i) {
}
} else if (key == "R4" and modifiable) {
if (scratchpad == "CLR") {
setprop("/FMGC/internal/flex", 0);
setprop("/FMGC/internal/flex", 45);
setprop("/FMGC/internal/flex-set", 0);
mcdu_scratchpad.scratchpads[i].empty();
} else {
@ -231,8 +231,6 @@ var perfTOInput = func(key, i) {
if (int(scratchpad) != nil and scratchpad >= 0 and scratchpad <= 99) {
setprop("/FMGC/internal/flex", scratchpad);
setprop("/FMGC/internal/flex-set", 1);
var flex_calc = getprop("/FMGC/internal/flex") - getprop("environment/temperature-degc");
setprop("/FMGC/internal/flex-cmd", flex_calc);
mcdu_scratchpad.scratchpads[i].empty();
} else {
mcdu_message(i, "NOT ALLOWED");

View file

@ -0,0 +1,205 @@
<?xml version="1.0"?>
<!-- Airbus A320 CFM56-5B4 Engine -->
<!-- Copyright (c) 2021 Josh Davidson (Octal450) -->
<system name="A320: CFM56 Engine">
<property value="45">fadec/limit/rated-temp</property>
<property value="27000">fadec/limit/rated-thrust</property>
<channel name="Thrust Limits">
<fcs_function name="fadec/limit/rated-thrust-n1"> <!-- Vs 98.7, 104.8 (-15 bias + 1), 103.2 -->
<function>
<table>
<independentVar lookup="row">/position/altitude-ft</independentVar>
<independentVar lookup="column">propulsion/tat-c</independentVar>
<tableData>
-45 -15 15 45 75
0 79.5 84.6 89.2 93.8 98.3
10000 90.1 94.8 99.1 100.6 99.3
43000 88.7 89.1 94.2 99.3 104.3
</tableData>
</table>
</function>
</fcs_function>
<fcs_function name="fadec/limit/milthrust-unmodified"> <!-- Copy of MilThrust table in engines file -->
<function>
<table>
<independentVar lookup="row">velocities/mach</independentVar>
<independentVar lookup="column">atmosphere/density-altitude</independentVar>
<tableData>
-10000 0 10000 20000 30000 40000 50000
0.0 1.2600 1.0000 0.7400 0.5640 0.3920 0.2710 0.0000
0.2 1.1710 0.9740 0.6970 0.5360 0.3850 0.2610 0.0000
0.4 1.1500 0.9570 0.6920 0.5460 0.3870 0.2530 0.0000
0.6 1.1810 0.9410 0.7210 0.5660 0.3580 0.2180 0.0000
0.8 1.2290 1.0200 0.7820 0.5570 0.3040 0.1930 0.0000
0.9 1.2580 1.0200 0.7820 0.5220 0.2710 0.1140 0.0000
1.0 1.1810 0.9510 0.7210 0.4410 0.1740 0.0450 0.0000
1.2 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
1.4 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
</tableData>
</table>
</function>
</fcs_function>
<!-- Following functions fix a FGTurbine inaccuracy... rated thrust N1% should be rated thrust lbs -->
<!-- These calculations change it so that the rated power at sea level is at the correct N1% value. It still changes with altitude and mach as it should -->
<fcs_function name="fadec/limit/fgturbine-thrust-lbs">
<function>
<sum>
<product>
<property>propulsion/engine/IdleThrust</property>
<property>fadec/limit/rated-thrust</property>
</product>
<product>
<difference>
<property>fadec/limit/rated-thrust</property>
<product>
<property>propulsion/engine[0]/IdleThrust</property> <!-- It doesn't matter which engine, its same for all -->
<property>fadec/limit/rated-thrust</property>
</product>
</difference>
<property>fadec/limit/milthrust-unmodified</property>
</product>
</sum>
</function>
</fcs_function>
<fcs_function name="fadec/limit/rated-thrust-lbs">
<function>
<sum>
<product>
<property>propulsion/engine[0]/IdleThrust</property> <!-- It doesn't matter which engine, its same for all -->
<property>fadec/limit/rated-thrust</property>
</product>
<product>
<product>
<difference>
<property>fadec/limit/rated-thrust</property>
<product>
<property>propulsion/engine[0]/IdleThrust</property> <!-- It doesn't matter which engine, its same for all -->
<property>fadec/limit/rated-thrust</property>
</product>
</difference>
<property>fadec/limit/milthrust-unmodified</property>
</product>
<quotient>
<difference>
<property>fadec/limit/rated-thrust-n1</property>
<value>18.9</value>
</difference>
<value>85.1</value>
</quotient>
<quotient>
<difference>
<property>fadec/limit/rated-thrust-n1</property>
<value>18.9</value>
</difference>
<value>85.1</value>
</quotient>
</product>
</sum>
</function>
</fcs_function>
<fcs_function name="fadec/limit/rated-thrust-factor"> <!-- Normalize -->
<function>
<ifthen>
<eq>
<property>/systems/acconfig/autoconfig-running</property>
<value>1</value>
</eq>
<value>0</value>
<ifthen>
<nq> <!-- Prevent divide by 0 -->
<property>fadec/limit/rated-thrust-lbs</property>
<value>0</value>
</nq>
<quotient>
<property>fadec/limit/fgturbine-thrust-lbs</property>
<property>fadec/limit/rated-thrust-lbs</property>
</quotient>
<value>1</value>
</ifthen>
</ifthen>
</function>
</fcs_function>
<fcs_function name="fadec/limit/toga-ref"> <!-- Vs 98.7, 104.8 (-15 bias + 1), 103.2 -->
<function>
<table> <!-- TODO: Figure out how to integrate FCOM table with this one -->
<independentVar lookup="row">/position/altitude-ft</independentVar>
<independentVar lookup="column">propulsion/tat-c</independentVar>
<tableData>
-45 -15 15 45 75
0 79.5 84.6 89.2 93.8 89.1
10000 90.1 94.8 99.1 100.6 96.2
43000 88.7 89.1 94.2 99.3 97.2
</tableData>
</table>
</function>
</fcs_function>
<fcs_function name="fadec/limit/toga">
<function>
<quotient>
<integer>
<sum>
<product>
<property>fadec/limit/toga-ref</property>
<value>10</value>
</product>
<value>0.5</value> <!-- Make it round correctly -->
</sum>
</integer>
<value>10</value>
</quotient>
</function>
</fcs_function>
<summer name="fadec/limit/flex-temp-input"> <!-- (Rated - Flex) + TAT -->
<input>fadec/limit/rated-temp</input>
<input>-/FMGC/internal/flex</input>
<input>propulsion/tat-c</input>
</summer>
<fcs_function name="fadec/limit/flex-ref">
<function>
<min> <!-- FLEX can not increase thrust past TOGA -->
<property>fadec/limit/toga-ref</property>
<table> <!-- TODO: Figure out how to integrate FCOM table with this one -->
<independentVar lookup="row">/position/altitude-ft</independentVar>
<independentVar lookup="column">propulsion/tat-c</independentVar>
<tableData>
-45 -15 15 45 75
0 79.5 84.6 89.2 93.8 89.1
10000 90.1 94.8 99.1 100.6 96.2
43000 88.7 89.1 94.2 99.3 97.2
</tableData>
</table>
</min>
</function>
</fcs_function>
<!--
TODO: need to figure out how to make MCT work, 24370lbs
<switch name="fadec/limit/mct-final-ref">
<default value="fadec/limit/mct-ref"/>
<test value="fadec/limit/flex-ref">
fadec/limit/flex-active eq 1
</test>
</switch>
<fcs_function name="fadec/limit/mct-ref">
<function>
</function>
</fcs_function>
-->
</channel>
</system>

View file

@ -10,7 +10,7 @@
<name>OAT Thrust Scale</name>
<type>gain</type>
<gain>1.0</gain>
<update-interval-secs type="double">0.05</update-interval-secs>
<update-interval-secs>0.05</update-interval-secs>
<input>
<expression>
<table>
@ -28,7 +28,7 @@
<name>FLX Thrust Scale</name>
<type>gain</type>
<gain>1.0</gain>
<update-interval-secs type="double">0.05</update-interval-secs>
<update-interval-secs>0.05</update-interval-secs>
<input>
<expression>
<table>
@ -46,7 +46,7 @@
<name>IDLE Limit</name>
<type>gain</type>
<gain>1.0</gain>
<update-interval-secs type="double">0.05</update-interval-secs>
<update-interval-secs>0.05</update-interval-secs>
<input>
<condition>
<and>
@ -85,7 +85,7 @@
<name>MAN One</name>
<type>gain</type>
<gain>1.0</gain>
<update-interval-secs type="double">0.05</update-interval-secs>
<update-interval-secs>0.05</update-interval-secs>
<input>
<expression>
<table>
@ -107,7 +107,7 @@
<name>MAN Two</name>
<type>gain</type>
<gain>1.0</gain>
<update-interval-secs type="double">0.05</update-interval-secs>
<update-interval-secs>0.05</update-interval-secs>
<input>
<expression>
<table>
@ -129,7 +129,7 @@
<name>MAN CMD One</name>
<type>gain</type>
<gain>1.0</gain>
<update-interval-secs type="double">0.05</update-interval-secs>
<update-interval-secs>0.05</update-interval-secs>
<input>
<expression>
<product>
@ -154,7 +154,7 @@
<name>MAN CMD Two</name>
<type>gain</type>
<gain>1.0</gain>
<update-interval-secs type="double">0.05</update-interval-secs>
<update-interval-secs>0.05</update-interval-secs>
<input>
<expression>
<product>
@ -179,7 +179,7 @@
<name>N1 CMD 1</name>
<type>gain</type>
<gain>1.0</gain>
<update-interval-secs type="double">0.05</update-interval-secs>
<update-interval-secs>0.05</update-interval-secs>
<input>
<condition>
<and>
@ -220,7 +220,7 @@
<name>N1 CMD 2</name>
<type>gain</type>
<gain>1.0</gain>
<update-interval-secs type="double">0.05</update-interval-secs>
<update-interval-secs>0.05</update-interval-secs>
<input>
<condition>
<and>
@ -1057,7 +1057,7 @@
<name>N1 Limit TOGA</name>
<type>gain</type>
<gain>1.0</gain>
<update-interval-secs type="double">0.05</update-interval-secs>
<update-interval-secs>0.05</update-interval-secs>
<input>
<expression>
<table>
@ -1077,7 +1077,7 @@
<name>N1 Limit MCT</name>
<type>gain</type>
<gain>1.0</gain>
<update-interval-secs type="double">0.05</update-interval-secs>
<update-interval-secs>0.05</update-interval-secs>
<input>
<expression>
<table>
@ -1097,7 +1097,7 @@
<name>N1 Limit FLX</name>
<type>gain</type>
<gain>1.0</gain>
<update-interval-secs type="double">0.05</update-interval-secs>
<update-interval-secs>0.05</update-interval-secs>
<input>
<expression>
<table>
@ -1117,7 +1117,7 @@
<name>N1 Limit CLB</name>
<type>gain</type>
<gain>1.0</gain>
<update-interval-secs type="double">0.05</update-interval-secs>
<update-interval-secs>0.05</update-interval-secs>
<input>
<expression>
<table>

View file

@ -10,7 +10,7 @@
<name>OAT Thrust Scale</name>
<type>gain</type>
<gain>1.0</gain>
<update-interval-secs type="double">0.05</update-interval-secs>
<update-interval-secs>0.05</update-interval-secs>
<input>
<expression>
<table>
@ -28,7 +28,7 @@
<name>FLX Thrust Scale</name>
<type>gain</type>
<gain>1.0</gain>
<update-interval-secs type="double">0.05</update-interval-secs>
<update-interval-secs>0.05</update-interval-secs>
<input>
<expression>
<table>
@ -46,7 +46,7 @@
<name>IDLE Limit</name>
<type>gain</type>
<gain>1.0</gain>
<update-interval-secs type="double">0.05</update-interval-secs>
<update-interval-secs>0.05</update-interval-secs>
<input>
<condition>
<and>
@ -85,7 +85,7 @@
<name>MAN One</name>
<type>gain</type>
<gain>1.0</gain>
<update-interval-secs type="double">0.05</update-interval-secs>
<update-interval-secs>0.05</update-interval-secs>
<input>
<expression>
<table>
@ -107,7 +107,7 @@
<name>MAN Two</name>
<type>gain</type>
<gain>1.0</gain>
<update-interval-secs type="double">0.05</update-interval-secs>
<update-interval-secs>0.05</update-interval-secs>
<input>
<expression>
<table>
@ -129,7 +129,7 @@
<name>MAN CMD One</name>
<type>gain</type>
<gain>1.0</gain>
<update-interval-secs type="double">0.05</update-interval-secs>
<update-interval-secs>0.05</update-interval-secs>
<input>
<expression>
<product>
@ -154,7 +154,7 @@
<name>MAN CMD Two</name>
<type>gain</type>
<gain>1.0</gain>
<update-interval-secs type="double">0.05</update-interval-secs>
<update-interval-secs>0.05</update-interval-secs>
<input>
<expression>
<product>
@ -1328,7 +1328,7 @@
<name>EPR Limit TOGA</name>
<type>gain</type>
<gain>1.0</gain>
<update-interval-secs type="double">0.05</update-interval-secs>
<update-interval-secs>0.05</update-interval-secs>
<input>
<expression>
<table>
@ -1356,7 +1356,7 @@
<name>EPR CMD TOGA</name>
<type>gain</type>
<gain>1.0</gain>
<update-interval-secs type="double">0.05</update-interval-secs>
<update-interval-secs>0.05</update-interval-secs>
<input>
<expression>
<sum>
@ -1372,7 +1372,7 @@
<name>EPR Limit MCT</name>
<type>gain</type>
<gain>1.0</gain>
<update-interval-secs type="double">0.05</update-interval-secs>
<update-interval-secs>0.05</update-interval-secs>
<input>
<expression>
<table>
@ -1400,7 +1400,7 @@
<name>EPR CMD MCT</name>
<type>gain</type>
<gain>1.0</gain>
<update-interval-secs type="double">0.05</update-interval-secs>
<update-interval-secs>0.05</update-interval-secs>
<input>
<expression>
<sum>
@ -1416,7 +1416,7 @@
<name>EPR Limit FLX</name>
<type>gain</type>
<gain>1.0</gain>
<update-interval-secs type="double">0.05</update-interval-secs>
<update-interval-secs>0.05</update-interval-secs>
<input>
<expression>
<table>
@ -1444,7 +1444,7 @@
<name>EPR CMD FLX</name>
<type>gain</type>
<gain>1.0</gain>
<update-interval-secs type="double">0.05</update-interval-secs>
<update-interval-secs>0.05</update-interval-secs>
<input>
<expression>
<sum>
@ -1460,7 +1460,7 @@
<name>EPR Limit CLB</name>
<type>gain</type>
<gain>1.0</gain>
<update-interval-secs type="double">0.05</update-interval-secs>
<update-interval-secs>0.05</update-interval-secs>
<input>
<expression>
<table>
@ -1488,7 +1488,7 @@
<name>EPR CMD CLB</name>
<type>gain</type>
<gain>1.0</gain>
<update-interval-secs type="double">0.05</update-interval-secs>
<update-interval-secs>0.05</update-interval-secs>
<input>
<expression>
<sum>