1
0
Fork 0

Control: Start V2500

This commit is contained in:
Josh Davidson 2021-05-16 18:31:08 -04:00
parent 608e06d123
commit 722c89c27b
14 changed files with 1646 additions and 290 deletions

View file

@ -276,7 +276,7 @@
<system file="glass-effect"/>
<system file="a320-fbw"/>
<system file="a320-fcs"/>
<system file="a320-cfm56-5b4-engine-fadec"/>
<system file="a320-v2527-a5-engine-fadec"/>
<system file="a320-fuel"/>
<system file="a320-fwc"/>
<system file="a320-fwc-phases"/>

View file

@ -705,9 +705,11 @@
<clbreduc-ft type="double">1500</clbreduc-ft>
<control-1 n="0">
<detent-text type="string">IDLE</detent-text>
<n1-mode-sw type="bool">0</n1-mode-sw>
</control-1>
<control-2 n="0">
<detent-text type="string">IDLE</detent-text>
<n1-mode-sw type="bool">0</n1-mode-sw>
</control-2>
<eng-out type="bool">0</eng-out>
<limit n="0">
@ -1321,11 +1323,6 @@
</sources>
</electrical>
<fadec>
<n1mode1 type="bool">0</n1mode1>
<n1mode2 type="bool">0</n1mode2>
</fadec>
<failures n="0">
<aileron-left type="bool">0</aileron-left>
<aileron-right type="bool">0</aileron-right>

View file

@ -2,21 +2,21 @@
<!-- Copyright (c) 2021 Josh Davidson (Octal450) -->
<turbine_engine name="CFM56-5B4">
<turbine_engine name="V2527-A5">
<milthrust>27000</milthrust>
<milthrust>26600</milthrust> <!-- @ 0.2 Mach, 24800 at 0 Mach, handled in fadec file -->
<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>
<ignitionn1>4.8</ignitionn1>
<ignitionn2>23.9</ignitionn2>
<n1spinup>0.2</n1spinup>
<n2spinup>1.0</n2spinup>
<n1startrate>0.365</n1startrate>
<n2startrate>1.724</n2startrate>
<idlen1>22.4</idlen1>
<idlen2>60.9</idlen2>
<maxn1>100.0</maxn1>
<maxn2>100.0</maxn2>
<augmented>0</augmented>
<injected>0</injected>
@ -50,32 +50,32 @@
</table>
</function>
<function name="N2SpoolUp"> <!-- N1 to N2 factor 0.535840188014101 -->
<function name="N2SpoolUp"> <!-- N1 to N2 factor 0.503865979381443 -->
<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
28 1.5
46 4.9
68 7.8
80 9.9
94 10.8
103 11.9
</tableData>
</table>
</function>
<function name="N2SpoolDown"> <!-- N1 to N2 factor 0.535840188014101 -->
<function name="N2SpoolDown"> <!-- N1 to N2 factor 0.503865979381443 -->
<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
28 1.5
46 4.9
68 7.8
80 9.9
94 10.8
103 11.9
</tableData>
</table>
</function>

View file

@ -2,21 +2,21 @@
<!-- Copyright (c) 2021 Josh Davidson (Octal450) -->
<turbine_engine name="CFM56-5B4">
<turbine_engine name="V2527-A5">
<milthrust>27000</milthrust>
<milthrust>26600</milthrust> <!-- @ 0.2 Mach, 24800 at 0 Mach, handled in fadec file -->
<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>
<ignitionn1>4.8</ignitionn1>
<ignitionn2>23.9</ignitionn2>
<n1spinup>0.2</n1spinup>
<n2spinup>1.0</n2spinup>
<n1startrate>0.365</n1startrate>
<n2startrate>1.724</n2startrate>
<idlen1>22.4</idlen1>
<idlen2>60.9</idlen2>
<maxn1>100.0</maxn1>
<maxn2>100.0</maxn2>
<augmented>0</augmented>
<injected>0</injected>
@ -50,32 +50,32 @@
</table>
</function>
<function name="N2SpoolUp"> <!-- N1 to N2 factor 0.535840188014101 -->
<function name="N2SpoolUp"> <!-- N1 to N2 factor 0.503865979381443 -->
<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
28 1.5
46 4.9
68 7.8
80 9.9
94 10.8
103 11.9
</tableData>
</table>
</function>
<function name="N2SpoolDown"> <!-- N1 to N2 factor 0.535840188014101 -->
<function name="N2SpoolDown"> <!-- N1 to N2 factor 0.503865979381443 -->
<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
28 1.5
46 4.9
68 7.8
80 9.9
94 10.8
103 11.9
</tableData>
</table>
</function>

View file

@ -53,7 +53,7 @@
</and>
</condition>
<command>property-toggle</command>
<property>controls/fadec/n1mode1</property>
<property>fdm/jsbsim/fadec/control-1/n1-mode-sw</property>
</binding>
<binding>
<command>property-assign</command>
@ -116,7 +116,7 @@
<condition>
<or>
<equals>
<property>controls/fadec/n1mode1</property>
<property>fdm/jsbsim/fadec/control-1/n1-mode-sw</property>
<value>1</value>
</equals>
<equals>
@ -154,7 +154,7 @@
</and>
</condition>
<command>property-toggle</command>
<property>controls/fadec/n1mode2</property>
<property>fdm/jsbsim/fadec/control-2/n1-mode-sw</property>
</binding>
<binding>
<command>property-assign</command>
@ -217,7 +217,7 @@
<condition>
<or>
<equals>
<property>controls/fadec/n1mode2</property>
<property>fdm/jsbsim/fadec/control-2/n1-mode-sw</property>
<value>1</value>
</equals>
<equals>

View file

@ -1019,13 +1019,13 @@ input = {
egt_2_needle: "/instrumentation/upper-ecam/egt[1]",
# N1 parameters
EPR_1: "/ECAM/Upper/EPR[0]",
EPR_2: "/ECAM/Upper/EPR[1]",
EPR_1: "/instrumentation/upper-ecam/epr[0]",
EPR_2: "/instrumentation/upper-ecam/epr[1]",
EPR_actual_1: "/engines/engine[0]/epr-actual",
EPR_actual_2: "/engines/engine[1]/epr-actual",
EPR_lim: "/ECAM/Upper/EPRylim",
EPRthr_1: "/ECAM/Upper/EPRthr[0]",
EPRthr_2: "/ECAM/Upper/EPRthr[1]",
EPR_lim: "/instrumentation/upper-ecam/epr-limit",
EPRthr_1: "/instrumentation/upper-ecam/epr-thr[0]",
EPRthr_2: "/instrumentation/upper-ecam/epr-thr[1]",
# fuel flow
fuelflow_1: "/engines/engine[0]/ff-actual",
@ -1051,8 +1051,8 @@ input = {
fadecPower1: "/systems/fadec/powered1",
fadecPower2: "/systems/fadec/powered2",
fadecPowerStart: "/systems/fadec/powerup",
N1_mode_1: "/fdm/jsbsim/fadec/control-1/n1-mode",
N1_mode_2: "/fdm/jsbsim/fadec/control-2/n1-mode",
N1_mode_1: "/fdm/jsbsim/fadec/control-1/n1-mode-sw",
N1_mode_2: "/fdm/jsbsim/fadec/control-2/n1-mode-sw",
eng1_epr: "/systems/fadec/eng1/epr",
eng2_epr: "/systems/fadec/eng2/epr",
eng1_n1: "/systems/fadec/eng1/n1",

View file

@ -355,6 +355,10 @@ var ITAF = {
fcu.apOff("hard", 0);
}
}
if ((systems.FADEC.n1Mode[0].getValue() > 0 or systems.FADEC.n1Mode[1].getValue() > 0) and Output.athr.getBoolValue()) {
fcu.athrOff("hard");
}
},
slowLoop: func() {
Velocities.trueAirspeedKtTemp = Velocities.trueAirspeedKt.getValue();
@ -476,7 +480,7 @@ var ITAF = {
},
athrMaster: func(s) {
if (s == 1) {
if (systems.ELEC.Bus.acEss.getValue() >= 110 and !pts.FMGC.CasCompare.casRejectAll.getBoolValue() and fbw.FBW.apOff == 0) {
if (systems.ELEC.Bus.acEss.getValue() >= 110 and !pts.FMGC.CasCompare.casRejectAll.getBoolValue() and fbw.FBW.apOff == 0 and systems.FADEC.n1Mode[0].getValue() == 0 and systems.FADEC.n1Mode[1].getValue() == 0) {
Output.athr.setBoolValue(1);
Custom.ThrLock.setValue(0);
Custom.Sound.enableAthrOff = 1;

View file

@ -14,8 +14,6 @@ var cvr_tone = props.globals.getNode("/controls/CVR/tone");
var variousReset = func() {
setprop("/modes/cpt-du-xfr", 0);
setprop("/modes/fo-du-xfr", 0);
setprop("/controls/fadec/n1mode1", 0);
setprop("/controls/fadec/n1mode2", 0);
setprop("/instrumentation/mk-viii/serviceable", 1);
setprop("/instrumentation/mk-viii/inputs/discretes/ta-tcf-inhibit", 0);
setprop("/instrumentation/mk-viii/inputs/discretes/gpws-inhibit", 0);

View file

@ -43,14 +43,6 @@ var FADEC_S = {
n2: 0,
ff: 0,
},
Switches: {
n1ModeSwitch1: props.globals.initNode("/controls/fadec/n1mode1", 0, "BOOL"),
n1ModeSwitch2: props.globals.initNode("/controls/fadec/n1mode2", 0, "BOOL"),
},
Modes: {
n1Mode1: props.globals.initNode("/fdm/jsbsim/fadec/control-1/n1-mode", 0, "BOOL"), # 0 == EPR, 1 == N1 Rated, 2 == N1 Unrated #
n1Mode2: props.globals.initNode("/fdm/jsbsim/fadec/control-2/n1-mode", 0, "BOOL"),
},
init: func() {
me.Power.poweredTime.setValue(-300);
me.Eng1.eng1Time.setValue(-300);

View file

@ -39,6 +39,7 @@ var FADEC = {
manThrAboveMct: [0, 0],
maxDetent: props.globals.getNode("/fdm/jsbsim/fadec/max-detent"),
n1Mode: [props.globals.getNode("/fdm/jsbsim/fadec/control-1/n1-mode"), props.globals.getNode("/fdm/jsbsim/fadec/control-2/n1-mode")],
n1ModeSw: [props.globals.getNode("/fdm/jsbsim/fadec/control-1/n1-mode-sw"), props.globals.getNode("/fdm/jsbsim/fadec/control-2/n1-mode-sw")],
togaLk: props.globals.getNode("/fdm/jsbsim/fadec/toga-lk"),
init: func() {
me.engOut.setBoolValue(0);
@ -46,6 +47,13 @@ var FADEC = {
me.Limit.activeModeInt.setValue(0);
me.Limit.flexActive.setBoolValue(0);
me.Limit.flexActiveCmd.setBoolValue(0);
if (pts.Options.eng.getValue() == "IAE") {
me.n1ModeSw[0].setBoolValue(1);
me.n1ModeSw[1].setBoolValue(1);
} else {
me.n1ModeSw[0].setBoolValue(0);
me.n1ModeSw[1].setBoolValue(0);
}
systems.FADEC_S.init();
thrustFlashT.start();
},
@ -117,7 +125,7 @@ var FADEC = {
pts.Gear.wowTemp[1] = pts.Gear.wow[1].getValue();
pts.Gear.wowTemp[2] = pts.Gear.wow[2].getValue();
if (me.Limit.flexActiveCmd.getBoolValue() and !me.n1Mode[0].getValue() and !me.n1Mode[1].getValue() and pts.Gear.wowTemp[1] and pts.Gear.wowTemp[2] and pts.Velocities.groundspeedKt.getValue() < 40 and (pts.Engines.Engine.stateTemp[0] == 3 or pts.Engines.Engine.stateTemp[1] == 3)) {
if (me.Limit.flexActiveCmd.getBoolValue() and me.n1Mode[0].getValue() == 0 and me.n1Mode[1].getValue() == 0 and pts.Gear.wowTemp[1] and pts.Gear.wowTemp[2] and pts.Velocities.groundspeedKt.getValue() < 40 and (pts.Engines.Engine.stateTemp[0] == 3 or pts.Engines.Engine.stateTemp[1] == 3)) {
if (!me.Limit.flexActive.getBoolValue()) {
me.Limit.flexActive.setBoolValue(1);
}

View file

@ -43,14 +43,6 @@ var FADEC_S = {
n2: 0,
ff: 0,
},
Switches: {
n1ModeSwitch1: props.globals.initNode("/controls/fadec/n1mode1", 0, "BOOL"),
n1ModeSwitch2: props.globals.initNode("/controls/fadec/n1mode2", 0, "BOOL"),
},
Modes: {
n1Mode1: props.globals.initNode("/fdm/jsbsim/fadec/control-1/n1-mode", 0, "BOOL"), # 0 == EPR, 1 == N1 Rated, 2 == N1 Unrated #
n1Mode2: props.globals.initNode("/fdm/jsbsim/fadec/control-2/n1-mode", 0, "BOOL"),
},
init: func() {
me.Power.poweredTime.setValue(-300);
me.Eng1.eng1Time.setValue(-300);
@ -146,7 +138,7 @@ var FADEC_S = {
powerup = me.Power.powerup.getValue();
if (powered1 or powerup or me.Eng1.eng1Off.getValue()) {
if (me.Modes.n1Mode1.getValue() == 0) {
if (FADEC.n1Mode[0].getValue() == 0) {
me.Eng1.epr.setValue(1);
} else {
me.Eng1.epr.setValue(0);
@ -160,7 +152,7 @@ var FADEC_S = {
}
if (powered2 or powerup or me.Eng2.eng2Off.getValue()) {
if (me.Modes.n1Mode2.getValue() == 0) {
if (FADEC.n1Mode[1].getValue() == 0) {
me.Eng2.epr.setValue(1);
} else {
me.Eng2.epr.setValue(0);
@ -203,19 +195,3 @@ var FADEC_S = {
}
},
};
setlistener("/controls/fadec/n1mode1", func() {
if (FADEC.Switches.n1ModeSwitch1.getValue()) {
FADEC.Modes.n1Mode1.setValue(1);
} else {
FADEC.Modes.n1Mode1.setValue(0);
}
}, 0, 0);
setlistener("/controls/fadec/n1mode2", func() {
if (FADEC.Switches.n1ModeSwitch2.getValue()) {
FADEC.Modes.n1Mode2.setValue(1);
} else {
FADEC.Modes.n1Mode2.setValue(0);
}
}, 0, 0);

View file

@ -12,6 +12,8 @@
<property value="104">fadec/limit/max-n1</property>
<property value="0">fadec/athr/cmd</property>
<property value="1">fadec/limit/active-epr</property> <!-- Unused in this engine -->
<property value="0">fadec/control-1/n1-mode</property> <!-- Unused in this engine -->
<property value="0">fadec/control-2/n1-mode</property> <!-- Unused in this engine -->
<channel name="Thrust Limits">

File diff suppressed because it is too large Load diff

View file

@ -4,189 +4,6 @@
<PropertyList>
<filter>
<name>EPR 1</name>
<type>gain</type>
<gain>1.0</gain>
<input>
<condition>
<equals>
<property>/options/eng</property>
<value>IAE</value>
</equals>
</condition>
<expression>
<table>
<property>/engines/engine[0]/epr-actual</property>
<entry><ind>0.970</ind><dep>-139</dep></entry>
<entry><ind>1.000</ind><dep>-125</dep></entry>
<entry><ind>1.200</ind><dep> -55</dep></entry>
<entry><ind>1.400</ind><dep> 16</dep></entry>
<entry><ind>1.600</ind><dep> 87</dep></entry>
<entry><ind>1.650</ind><dep> 98</dep></entry>
</table>
</expression>
</input>
<input>0</input>
<output>/ECAM/Upper/EPR[0]</output>
</filter>
<filter>
<name>EPR THR 1</name>
<type>gain</type>
<gain>1.0</gain>
<input>
<condition>
<equals>
<property>/options/eng</property>
<value>IAE</value>
</equals>
</condition>
<expression>
<table>
<property>/engines/engine[0]/epr-cmd</property>
<entry><ind>0.970</ind><dep>-139</dep></entry>
<entry><ind>1.000</ind><dep>-125</dep></entry>
<entry><ind>1.200</ind><dep> -55</dep></entry>
<entry><ind>1.400</ind><dep> 16</dep></entry>
<entry><ind>1.600</ind><dep> 87</dep></entry>
<entry><ind>1.650</ind><dep> 98</dep></entry>
</table>
</expression>
</input>
<input>0</input>
<output>/ECAM/Upper/EPRthr[0]</output>
</filter>
<filter>
<name>EPR 2</name>
<type>gain</type>
<gain>1.0</gain>
<input>
<condition>
<equals>
<property>/options/eng</property>
<value>IAE</value>
</equals>
</condition>
<expression>
<table>
<property>/engines/engine[1]/epr-actual</property>
<entry><ind>0.970</ind><dep>-139</dep></entry>
<entry><ind>1.000</ind><dep>-125</dep></entry>
<entry><ind>1.200</ind><dep> -55</dep></entry>
<entry><ind>1.400</ind><dep> 16</dep></entry>
<entry><ind>1.600</ind><dep> 87</dep></entry>
<entry><ind>1.650</ind><dep> 98</dep></entry>
</table>
</expression>
</input>
<input>0</input>
<output>/ECAM/Upper/EPR[1]</output>
</filter>
<filter>
<name>EPR THR 2</name>
<type>gain</type>
<gain>1.0</gain>
<input>
<condition>
<equals>
<property>/options/eng</property>
<value>IAE</value>
</equals>
</condition>
<expression>
<table>
<property>/engines/engine[1]/epr-cmd</property>
<entry><ind>0.970</ind><dep>-139</dep></entry>
<entry><ind>1.000</ind><dep>-125</dep></entry>
<entry><ind>1.200</ind><dep> -55</dep></entry>
<entry><ind>1.400</ind><dep> 16</dep></entry>
<entry><ind>1.600</ind><dep> 87</dep></entry>
<entry><ind>1.650</ind><dep> 98</dep></entry>
</table>
</expression>
</input>
<input>0</input>
<output>/ECAM/Upper/EPRthr[1]</output>
</filter>
<filter>
<name>EPR LIMIT</name>
<type>gain</type>
<gain>1.0</gain>
<input>
<condition>
<equals>
<property>/options/eng</property>
<value>IAE</value>
</equals>
</condition>
<expression>
<table>
<property>/fdm/jsbsim/fadec/epr/toga-lim</property>
<entry><ind>0.970</ind><dep>-139</dep></entry>
<entry><ind>1.000</ind><dep>-125</dep></entry>
<entry><ind>1.200</ind><dep> -55</dep></entry>
<entry><ind>1.400</ind><dep> 16</dep></entry>
<entry><ind>1.600</ind><dep> 87</dep></entry>
<entry><ind>1.650</ind><dep> 98</dep></entry>
</table>
</expression>
</input>
<input>0</input>
<output>/ECAM/Upper/EPRylim</output>
</filter>
<!--filter>
<name>N1 1</name>
<type>gain</type>
<gain>1.0</gain>
<input>
<condition>
<equals>
<property>/options/eng</property>
<value>IAE</value>
</equals>
</condition>
<expression>
<table>
<property>/engines/engine[0]/n1-actual</property>
<entry><ind> 20.0</ind><dep>-112.5</dep></entry>
<entry><ind> 40.0</ind><dep> -67.5</dep></entry>
<entry><ind>100.0</ind><dep> 67.5</dep></entry>
<entry><ind>110.0</ind><dep> 90.0</dep></entry>
</table>
</expression>
</input>
<output>/instrumentation/upper-ecam/n1[0]</output>
</filter>
<filter>
<name>N1 2</name>
<type>gain</type>
<gain>1.0</gain>
<input>
<condition>
<equals>
<property>/options/eng</property>
<value>IAE</value>
</equals>
</condition>
<expression>
<table>
<property>/engines/engine[1]/n1-actual</property>
<entry><ind> 20.0</ind><dep>-112.5</dep></entry>
<entry><ind> 40.0</ind><dep> -67.5</dep></entry>
<entry><ind>100.0</ind><dep> 67.5</dep></entry>
<entry><ind>110.0</ind><dep> 90.0</dep></entry>
</table>
</expression>
</input>
<output>/instrumentation/upper-ecam/n1[1]</output>
</filter-->
<filter>
<name>Flap Indicator</name>
<type>gain</type>