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:28] 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 63: Line 63:
 ==== 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 238: 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 298: 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 355: 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 361: 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 442: 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.1613129301.txt.gz · Last modified: 2021/02/12 12:28 by jh