User Tools

Site Tools


aircraft:tmd:turbo_engines

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
aircraft:tmd:turbo_engines [2021/02/12 12:16] – [Step 5 - Adjustments] jhaircraft:tmd:turbo_engines [2022/08/02 10:00] (current) jh
Line 27: Line 27:
  
 <code>            <[input_lever][Throttle1Input][] <code>            <[input_lever][Throttle1Input][]
-                <[string8][Input][Controls.Throttle1]>+                <[string8][Message][Controls.Throttle1]>
             >             >
             <[turbofan][Engine1][]             <[turbofan][Engine1][]
Line 38: Line 38:
                 <[float64][IdleFraction][0.2]>                 <[float64][IdleFraction][0.2]>
             ></code>             ></code>
 +
 +
 +===== Engine Station Nomenclature =====
 +
 +The implementation of these engines in the Aerofly simulator follows the international standard nomenclature for jet stream engines. It assigns numbers to the different locations within an engine. 
 +
 +All air from the outside, far in front of an engine (0) enters through the intake (1) and is split into the core (1) and bypass air flow (12). The bypass air masses are accelerated by the fan or "booster" (13) and exit the engine directly (19).
 +
 +The core air masses are further compressed (21 to 3). They enter the combustion chamber at a relatively slow airspeed (3), where they hit the hot flames. The exhaust is accelerated from the end of the combustion chamber (4) towards the lower pressure rear end of the engine (5). The turbine blades (4 to 5) that spin in the airflow that is rushing towards the low pressure end hereby extract the heat energy in the air flow and converted it into mechanical power to drive all other components (compressor and fan) via shafts in the center of the engine.
 +
 +The afterburning turbojet engines take the still hot exhaust gases and mix it with fuel for a second time (at 5, between 5 and 7). The resulting fuel burn is not as efficient but it increases the maximum thrust further for short term applications.
 +
 +All exhaust gases then finally leave the engine through the nozzle (7 to 9) which is can be mechanically controlled in afterburning fighter jet engines.
 +
 +{{ :aircraft:tmd:intl_standard_nomenclature_jetengine.png?nolink |}}
 +
  
 ===== Creating a New Turbo-Engine ===== ===== Creating a New Turbo-Engine =====
  
 It is advisable to create new engines based on existing and working engines of our default aircraft. It is advisable to create new engines based on existing and working engines of our default aircraft.
-It starts by copying an existing engine, simplifying the required inputs: ignition = on, fuel flow = basic mapping, reverser closed. +It starts by copying an existing engine, simplifying the required inputs: ignition = on, fuel flow = basic mapping, reverser closed. 
  
 ==== Step 1 - Copy Paste ==== ==== Step 1 - Copy Paste ====
  
-The code below is the engine-setup for a CFM56-5B4 engine as found in the A320 with 120kN of thrust.+The code below is a working engine-setup for a CFM56-5B4 engine as found in the A320 with 120kN of thrust.
 Copy paste all this code into your tmd file, engine, peripherals and debug outputs. Copy paste all this code into your tmd file, engine, peripherals and debug outputs.
  
-**Engine** +These debug outputs compute the engine thrust, engine compression ratio and engine pressure ratio (EPR) to be displayed by the [[aircraft:tmd#debugging|debug monitoring]]. 
-<code>            <[turbo_engine][Engine1][]+ 
 +The peripherals are required by the engine code to run. The code below offers an example on how these could look like and is the bare minimum. The FADEC in this example is just a simple mapping from thrust lever input to fuel flow in kg/s. This mapping has to be adjusted later and depends on the particular aircraft system. 
 + 
 + 
 +<code>            // engine controls 
 +            <[input_lever][Throttle1Input][] 
 +                <[string8][Message][Controls.Throttle1]> 
 +            > 
 +            <[constant][Reverser1Flaps][] 
 +                <[string8][Input][0.0]> 
 +            > 
 + 
 +            // engine 1 FADEC 
 +            <[linear_interpolation][Engine1FADEC][] 
 +                <[string8][Input][Throttle1Input.Output]> 
 +                <[tmvector2d][Map][ (0.0 0.05) (1.0 1.06) ]> 
 +            > 
 +            <[constant][Engine1Ignition][] 
 +                <[string8][Input][1.0]> 
 +            > 
 +             
 +            // fuel metering 
 +            <[servoclassic][Engine1FuelMeteringUnit][] 
 +                <[string8][Input][Engine1FADEC.Output]> 
 +                <[float64][Speed][5.0]> 
 +                <[float64][P0][0.0]> 
 +                <[float64][P1][1.0]> 
 +                <[float64][P2][0.0]> 
 +                <[float64][P3][0.0]> 
 +                <[float64][Position][0.02]> 
 +            > 
 + 
 + 
 +            // DEBUG start 
 + 
 +            <[sum][Engine1TotalThrust][] 
 +                <[string8][Inputs][ Engine1Bypass.OutputThrust Engine1Exhaust.OutputThrust ]> 
 +            > 
 +            <[inverse][Engine1Station2TotalPressureInverted][] 
 +                //<[string8][Input][Engine1Station2.OutputTotalPressure]> 
 +                <[string8][Input][PitotTube.TotalPressure]> 
 +            > 
 +            <[product][Engine1FanPressureRatio][] 
 +                <[string8][Inputs][ Engine1Station21.OutputTotalPressure Engine1Station2TotalPressureInverted.Output ]> 
 +            > 
 +            <[product][Engine1EnginePressureRatio][] 
 +                <[string8][Inputs][ Engine1Station5.OutputTotalPressure Engine1Station2TotalPressureInverted.Output ]> 
 +            > 
 +            <[product][Engine1OverallPressureRatio][] 
 +                <[string8][Inputs][ Engine1Station3.OutputTotalPressure Engine1Station2TotalPressureInverted.Output ]> 
 +            > 
 +            <[inverse][Engine1TotalThrustInverse][] 
 +                <[string8][Input][Engine1TotalThrust.Output]> 
 +            > 
 +            <[product][Engine1SpecificFuelConsumption][] 
 +                <[string8][Inputs][ Engine1FuelMeteringUnit.Output Engine1TotalThrustInverse.Output 1000.0 1000.0 ]> 
 +            > 
 + 
 +            // DEBUG end 
 + 
 + 
 +            // turbo engine 
 +            <[turbo_engine][Engine1][]
                 <[string8][Components][ Engine1Station2                 <[string8][Components][ Engine1Station2
                                         Engine1Fan                                         Engine1Fan
Line 221: Line 300:
                 <[string8][HeatCapacity][5000.0]>                 <[string8][HeatCapacity][5000.0]>
             >             >
-</code> 
  
-**Peripheral Requirements** 
  
-Objects with these names are required by the engine code above to run. The code below offers an example on how these could look like and is the bare minimum. The FADEC in this example is just a simple mapping from thrust lever input to fuel flow in kg/s. This mapping has to be adjusted later. +            // engine outputs 
- +            <[linear][Engine1N1][]
-<code> +
-            <[input_lever][Throttle1Input][] +
-                <[string8][Input][Controls.Throttle1]> +
-            > +
-            <[linear_interpolation][Engine1FADEC][] +
-                <[string8][Input][Throttle1Input.Output]> +
-                <[tmvector2d][Map][ (0.0 0.05) (1.0 1.06) ]> +
-            > +
-            <[servoclassic][Engine1FuelMeteringUnit][] +
-                <[string8][Input][Engine1FADEC.Output]> +
-                <[float64][Speed][5.0]> +
-                <[float64][P0][0.0]> +
-                <[float64][P1][1.0]> +
-                <[float64][P2][0.0]> +
-                <[float64][P3][0.0]> +
-                <[float64][Position][0.02]> +
-            > +
-            <[constant][Engine1Ignition][] +
-                <[string8][Input][1.0]> +
-            > +
-            <[constant][Reverser1Flaps][] +
-                <[string8][Input][0.0]> +
-            > +
-</code> +
- +
-**Engine Output** +
-<code>            <[linear][Engine1N1][]+
                 <[string8][Input][Engine1LowPressureSpool.OutputRotationSpeed]>                 <[string8][Input][Engine1LowPressureSpool.OutputRotationSpeed]>
                 <[float64][Scaling][0.001909854851031]>                 <[float64][Scaling][0.001909854851031]>
Line 281: Line 331:
                 <[string8][Input][Engine1FuelMeteringUnit.Output]>                 <[string8][Input][Engine1FuelMeteringUnit.Output]>
             >             >
-</code> 
- 
-**Debugging Values** 
- 
-These elements compute the engine thrust, engine compression ratio and engine pressure ratio (EPR) to be displayed by the [[aircraft:tmd#debugging|debug monitoring]]. 
- 
- 
-<code> 
-            // DEBUG start 
- 
-            <[sum][Engine1TotalThrust][] 
-                <[string8][Inputs][ Engine1Bypass.OutputThrust Engine1Exhaust.OutputThrust ]> 
-            > 
-            <[inverse][Engine1Station2TotalPressureInverted][] 
-                //<[string8][Input][Engine1Station2.OutputTotalPressure]> 
-                <[string8][Input][PitotTube.TotalPressure]> 
-            > 
-            <[product][Engine1FanPressureRatio][] 
-                <[string8][Inputs][ Engine1Station21.OutputTotalPressure Engine1Station2TotalPressureInverted.Output ]> 
-            > 
-            <[product][Engine1EnginePressureRatio][] 
-                <[string8][Inputs][ Engine1Station5.OutputTotalPressure Engine1Station2TotalPressureInverted.Output ]> 
-            > 
-            <[product][Engine1OverallPressureRatio][] 
-                <[string8][Inputs][ Engine1Station3.OutputTotalPressure Engine1Station2TotalPressureInverted.Output ]> 
-            > 
-            <[inverse][Engine1TotalThrustInverse][] 
-                <[string8][Input][Engine1TotalThrust.Output]> 
-            > 
-            <[product][Engine1SpecificFuelConsumption][] 
-                <[string8][Inputs][ Engine1FuelMeteringUnit.Output Engine1TotalThrustInverse.Output 1000.0 1000.0 ]> 
-            > 
- 
-            // DEBUG end 
 </code> </code>
  
Line 338: Line 354:
   * compression ratio/overall pressure ratio   * compression ratio/overall pressure ratio
   * fan diameter in meters   * fan diameter in meters
 +  * specific fuel consumption (fuel flow g/s per kN of thrust) at cruise
 +
 +From aircraft performance manuals or videos:
 +  * takeoff, climb, cruise N1 ratings
  
 From real world videos, ideally in near standard conditions: At sea level and at 15 degrees Celsius (ISA Standard) From real world videos, ideally in near standard conditions: At sea level and at 15 degrees Celsius (ISA Standard)
Line 344: Line 364:
  
 If possible find a value for the air mass flow for takeoff, also in kg/s. If possible find a value for the air mass flow for takeoff, also in kg/s.
 +
 +For turboshaft engines search for the rated power, gas producer speeds and residual thrust.
  
 ==== Step 4 - Adjust Rotation Speeds ==== ==== Step 4 - Adjust Rotation Speeds ====
Line 405: Line 427:
  
 ==== Step 5 - Adjustments ==== ==== Step 5 - Adjustments ====
 +
 +**Abbreviations**\\
 +**N1** - fan rotation speed\\
 +**N2** - core rotation speed\\
 +**HP** - high pressure\\
 +**IP** - intermediate pressure\\
 +**LP** - low pressure (fan)\\
 +**OPR** - overall pressure ratio (pressure after compressor divided by intake pressure, usually between 28 to 42)\\
 +**EPR** - engine pressure ratio (pressure before nozzle divided by intake pressure, usually 1 to 1.7)\\
 +**FPR** - fan pressure ratio (pressure of bypass nozzle divided by intake pressure, usually around 1.5 to 1.6)\\
 +**EGT** - exhaust gas temperature (usually measured at station 45 or 5)\\
 +**ITT** - inter turbine temperature (between HP and LP turbine, station 41)\\
  
 ^ Goal to increase ^ Action to take ^ ^ Goal to increase ^ Action to take ^
-| **Overall Pressure Ratio (OPR)** | Reduce HP turbine area |+| **Overall Pressure Ratio (OPR)** | Reduce HP turbine area, increase design compression ratio (at cost of core speed or fan speed) |
 | **Turbine Temperature (ITT, EGT)** | Reduce core size, IP, HP compressor and turbine areas. Or change turbine efficiencies at the cost of reducing power | | **Turbine Temperature (ITT, EGT)** | Reduce core size, IP, HP compressor and turbine areas. Or change turbine efficiencies at the cost of reducing power |
 | **Fan speed (N1)** | Check fan area, check fan compression ratio and if below roughly 1.5 decrease the bypass nozzle area. Otherwise check the engine core pressure ratio, if EPR is below 1.5 decrease the core nozzle size to increase N1 speed. Consider increasing efficiency of the LP turbine or fuel flow. | | **Fan speed (N1)** | Check fan area, check fan compression ratio and if below roughly 1.5 decrease the bypass nozzle area. Otherwise check the engine core pressure ratio, if EPR is below 1.5 decrease the core nozzle size to increase N1 speed. Consider increasing efficiency of the LP turbine or fuel flow. |
Line 413: Line 447:
 | **Fuel flow** | Reduce efficiencies of the turbines, consider increasing friction, decrease thermal efficiency by making the core larger and less hot. | | **Fuel flow** | Reduce efficiencies of the turbines, consider increasing friction, decrease thermal efficiency by making the core larger and less hot. |
 | **Thrust** | Check engine, fan and compressor pressure ratio. When EPR or fan PR below 1.5 decrease nozzle area of affected section. When OPR less than design value (and N2 at target) decrease LP turbine area and IP/LP turbine and increase compressor design compression areas (to keep N2 the same). When all is well but ITT/EGT is cold then consider making engine more efficient by making it run hotter. | | **Thrust** | Check engine, fan and compressor pressure ratio. When EPR or fan PR below 1.5 decrease nozzle area of affected section. When OPR less than design value (and N2 at target) decrease LP turbine area and IP/LP turbine and increase compressor design compression areas (to keep N2 the same). When all is well but ITT/EGT is cold then consider making engine more efficient by making it run hotter. |
-==== Step 6 - Profit ====+==== Step 6 - Engine control (FADEC) ==== 
 + 
 +Turbo-engines in real life are often controlled by full authority digital engine controllers (FADECs). These take sensor readings from the engine, air data computers, thrust lever angle and other inputs to compute the required engine fuel flow. 
 + 
 +For a very basic fuel controller you can implement a fuel flow proportional to the compressor output pressure and add a governor proportional to the speed deviation. Do something similar like this in the tmd: 
 + 
 +<code>Governor = C_Gov * ( TargetN1 - N1 ) 
 + 
 +Enrichment = Engine1Station3.OutputTotalPressure / ( PitotTube.StaticPressure * DesignCompressionRatio ). 
 + 
 +Gain = PitotTube.StaticPressure / 101325.0 
 + 
 +FuelFlowRaw = Gain * C_FF * ( Governor + Enrichment ) 
 + 
 +FuelFlow = clamp( FuelFlowRaw, MinFuelFlow, MaxFuelFlow )</code>
  
 +where C_Gov is your governor gain (about 0.2 is ok), and C_FF is your fuel flow constant, use your maximum takeoff fuel flow at the beginning. MinFuelFlow is your idle fuel flow at high altitude (high enough to prevent flame out) and MaxFuelFlow is your takeoff fuel flow plus a small amount. DesignCompressionRatio is the compression ratio that you see at takeoff power (depending on the engine data, ranges between like 11 to 42).
  
aircraft/tmd/turbo_engines.1613128612.txt.gz · Last modified: 2021/02/12 12:16 by jh