engines.cfg - Additional Information

This page contains various notes related to some of the functionality derived from the engines.cfg sections and parameters.

 

 

Note On Time Constants And Tuning Constants

When setting up the engines.cfg, regardless of the engine type, you will be using some general parameters which will be affected by time constants (suffixed with _tc) and tuning constants (suffixed with _tuning_constant). These parameters are used to perform integrations by the simulation to compute time dependent values, typically taking the form of:

$$ value(t+dt)=value(t)+(target\_value \times tuning\_constant - value(t))\times dt \times \textrm{tc} $$

Where:

  • \(dt\) is the time step that is given by the simulation for each frame (delta time).
  • \(target\_value\) is the value calculated using the current simulation conditions.

 

In these integrations, the tuning constant acts as a multiplier on the \(target\_value\) thus increasing the final value. This is essentially the same effect as increasing the target value given in whichever parameter or table dictates the \(target\_value\).

 

The time constant, however, has a very different effect. It does not modify the final value, but instead it controls the rate at which the value will be evaluated towards the \(target\_value\).

 

 

Notes On Emergency Boost

The emergency boost system will work in two "modes" depending on whether the emergency_boost_mp_damage parameter has been set to anything other than 0 or not. When set to 0, boost calculations will be done using the legacy FSX time counter:

  • for water and methanol-water injection:
    Elapsed_time = Elapsed_time + ( deltaT * current_rpm / max_rated_rpm )
  • for WEP:
    Elapsed_time = Elapsed_time + deltaT

NOTE: deltaT here is the "Delta Time" value, which is the time that has elapsed between the last simulation frame and the current simulation frame. See here for a more in-depth explanation.

 

When setting emergency_boost_mp_damage to a value that is greater than 0, it will enable the Microsoft Flight Simulator 2024 time counter which works like this for methanol-water injection, water injection, and WEP:

Elapsed_time = Elapsed_time + (deltaT * (current_manifold_pressure / emergency_boost_mp_damage))

Considering that a manifold pressure above the damage threshold will accelerate the counter, one should take into account the desired upper limit for manifold pressure when setting the max_emergency_boost_time.

As an example: let's consider an aircraft where going above 61inHg of manifold pressure will start damaging the engine and emergency boost can allow for a maximum of 67inHg. If one wants to be able to spend 315 seconds at 67inHg then max_emergency_boost_time should be set to:

max_emergency_boost_time = 315 * (67/61) = 315 * 1.098 = 346

To get the current elapsed time since the emergency boost has been activated, you can use the SimVar RECIP_ENG_EMERGENCY_BOOST_ELAPSED_TIME.

 

 

Notes On Supercharger

In legacy FSX, the supercharger - activated using the supercharged parameter - used a calculation that was actually lacking an essential parameter:

boost = ( supercharger_boost_high_end - supercharger_boost_low_end ) * Throttle_position

In this formula, the supercharger_boost_low_end parameter is not used at all. In Microsoft Flight Simulator 2024 this has been rectified and you can enable the use of the correct formula by enabling the new_supercharged parameter in the engines.cfg file, using one of the following values:

 

  • 1: This will make the simulation use a fixed formula to calculate the supercharger boost using the existing legacy supercharger parameters supercharger_boost_high_end and supercharger_boost_low_end. Boost will then be calculated using the following formula:
    boost = ( supercharger_boost_high_end - supercharger_boost_low_end ) * Throttle_position + supercharger_boost_low_end

 

  • 2: This will permit the simulation to have multi speed support for the supercharger using the following parameters: supercharger_altitude_gear.N, supercharger_boost_high_end_gear.N, supercharger_boost_low_end_gear.N. This system will allow for a maximum of 5 gears. As an example, if a two speed supercharger is needed then the CFG parameters would have this structure:
    supercharger_altitude_gear.1 = [VALUE]
    supercharger_boost_high_end_gear.1 = [VALUE]
    supercharger_boost_low_end_gear.1 = [VALUE]
    supercharger_altitude_gear.2 = [VALUE]
    supercharger_boost_high_end_gear.2 = [VALUE]
    supercharger_boost_low_end_gear.2 = [VALUE]
    When using the multi-speed supercharger you can monitor which gear is engaged by monitoring the SimVar RECIP_ENG_SUPERCHARGER_ACTIVE_GEAR. The supercharger system will continuously check if the current Pressure Altitude is superior or equal to the altitude at which each gear should engage in order to automatically switch between the gears. If an altitude is set as -1.0 the gear is considered inactive and the engaging altitude for this gear will not be checked thus preventing the switch to this particular gear (which is why default altitude value is -1.0). When a gear is engaged the boost values corresponding to this gear will be used in the following calculation of boost:
    boost = ( supercharger_current_gear_boost_high_end - supercharger_current_gear_boost_low_end ) * Throttle_position + supercharger_current_gear_boost_low_end

IMPORTANT! When using the "new_supercharged" param, the legacy "supercharged" parameter must be either set to 0 or removed from the CFG file.

 

 

Note On Autofeathering

If your aircraft is to support auto-feathering, then it is worth knowing the following information to enable you to set it up and use it correctly:

  • You must have created a dedicated electrical circuit.N of the type CIRCUIT_AUTO_FEATHER.
  • You will need to set up the min_n1_for_autofeather_armed parameter as this will be used to arm autofeathering (if the N1 goes above this value, it will be armed).
  • You will need to set up the max_n1_for_autofeather_actuated value, which is used to unfeather the propeller when the N1 goes above this value.
    NOTE: Currently you will need to use the alias max_pct_torque_for_autofeather_actuated since there is a bug in the code.

 

Once those have been setup, in the simulation the SimVars CIRCUIT AUTO FEATHER ON and PANEL AUTO FEATHER SWITCH will need to be set to 1.

 

 

Note On Propeller Pitch And Throttle

The parameter min_flight_beta_throttle_pos enables the propeller pitch control algorithm in the BETA-range of throttle (power lever), while simultaneously defining a throttle position that forces the propeller to the minimum flight pitch, specified by the beta_min parameter. The way this works is that the min_flight_beta_throttle_pos value essentially divides the entire range of travel of the throttle into two ranges:

  • the normal position (ie: when the throttle position is greater than the min_flight_beta_throttle_pos), in which the propeller pitch is controlled by the governor, in accordance with the prop speed set by the throttle
  • the beta position (ie: when the throttle position is less than or equal to the min_flight_beta_throttle_pos), in which the throttle position sets the the propeller pitch using the following guidelines:

NOTE: Set tp_high_idle_throttle_pos to the min_flight_beta_throttle_pos if you want a turboprop engine to idle in the range of throttle positions between 0 and tp_high_idle_throttle_pos.

 

When min_flight_beta_throttle_pos is greater than 0 it will additionally have the following effect on the simulation:

  • If the throttle is in the thrust reverse range (ie, the throttle position is less than 0) and prop_reverse_available is enabled, then the minimum propeller pitch limitation no longer depends on the throttle position (this is the same as for Microsoft Flight Simulator 2020 aircraft). Thus, if a pilot sharply moves the throttle from the reverse position to position 0 and above, then the propeller blades will no longer exit the reverse mode instantly, but will increase pitch at a limited speed.
  • When the following conditions are met:
    • the throttle is greater than 0 and:
    • prop_reverse_available is enabled and:
    • one or more landing gear is touching the ground and:
    • the ground type is not water:
    then the minimum propeller pitch limitation is no longer set to the minimum_on_ground_beta. Thus, it becomes possible to control the propeller pitch in the BETA-range, regardless of the interaction of the aircraft landing gear with the ground.

 

 

Note On Propeller RPM Limiter

The automatic propeller RPM limiter is designed for piston engine aircraft with a constant speed propeller and turboprop aircraft. It's purpose is to prevent dangerous overspeeding of the propeller beyond its maximum allowed RPM. Such overspeeding typically occurs when the propeller enters a "windmilling" mode, where the propeller spins faster than expected driven by the energy of the incoming airflow during flight, takeoff, or landing. This mainly happens when there is an unfavorable combination of too low a blade pitch angle (propeller in a fine pitch, beta range, or reverse mode) and higher than average engine torque (excess power on the shaft).

 

The limiter is implemented as two different types over 5 parameters, and they can be used independently or together (although it's more likely you'll use one or the other):

 

It should be noted that there is also a dedicated debug tool which has been developed to make tuning of both limiter types easier, clearer, and more effective. This window can be found by opening the Engines debug window, and then selecting Propeller RPM Limiter Analysis.

IMPORTANT: For proper initialization and operation of each limiter type, the following conditions must be met:
- The RPM limit value must be greater than zero
- At least one of the PID controller coefficients P or I must be greater than zero.
The limiter will not be initialized and will have no effect on the propeller if these conditions are not met.

 

 

Note On The Fuel Flow PID

The functioning of the fuel flow PID (defined using the fuel_flow_controller_p, fuel_flow_controller_p, fuel_flow_controller_p, fuel_flow_controller_iboundary, and fuel_flow_controller_dboundary, parameters) will vary depending on a few factors, which we'll outline below:

 

  • For jet engines, the PID works different based on the use_commanded_Ne_table:
    • If true, the fuel flow PID controller regulates corrected N2, driving it toward commanded Ne.
    • if false, the fuel flow PID controller regulates N1, driving it toward commanded Ne

 

  • For turboprop or helo-turbine engines, the fuel flow PID controller regulates corrected N1, driving it toward commanded Ne.

 

For more information on PID functionality, please see here: PID Parameters

 

 

Note On Corrected Values

The various parameters that use corrected values have their calculations based on the following paper:

  1. GAS TURBINE PARAMETER CORRECTIONS, by Allan J. Volponi
  2. January 2020
  3. DOI: 10.1007/978-3-030-41076-6
  4. ISBN: 978-3-030-41075-9

 

 

Note On Computing Commanded Ne

The mach_0_corrected_commanded_ne_table and mach_hi_corrected_commanded_ne_table tables are only used when the use_commanded_Ne_table is set to 1 (TRUE). In that case they should be filled in where:

  • The top row of the table is the low/high Mach value in column 1, followed by the inverted pressure ratio (1/delta) values in ascending order (and therefore in ascending pressure altitude) in all sunsequent columns.
  • All other rows of the table have the throttle position in the first column, followed by the Commanded Ne values corresponding to the inverted pressure ratio (1/delta) values in the 1st row of the table.

 

The following images show a schematic of how those tables would look if added into a spreadsheet:

Schematic Of The mach_0_corrected_commanded_ne_table Parameter Contents

Schematic Of The mach_hi_corrected_commanded_ne_table Parameter Contents

 

When using these tables, the commanded Ne is computed in three steps:

  1. First, we obtain the commanded Ne for Low Mach from the first table (mach_0_corrected_commanded_ne_table) for the given throttle position and pressure altitude (using the inverted pressure ratio (1/delta) value).
  2. Next, we obtain the commanded Ne for High Mach from the second table (mach_hi_corrected_commanded_ne_table) for the given throttle position and pressure altitude (using the inverted pressure ratio (1/delta) value).
  3. Finally, we compute the commanded Ne for the target Mach as a linear interpolation between the values found for Low Mach and High Mach.

 

It is worth noting the following when using these tables:

  • As with any 2D table, the data must be arranged such that the inverted pressure ratio (1/delta) values in the first row and the throttle position values in the first column are in ascending order. This is why the inverted delta is used, as it increases with altitude.
  • Because interpolation within each table is performed independently, the inverted pressure ratio (1/delta) and throttle position breakpoints in the first table do not have to match those in the second table.
  • Low Mach and High Mach may be arbitrary but must not be equal.
  • Please avoid cases where the interpolation results from the first and second tables are equal for the same throttle position and pressure altitude. In such cases, the engine may incorrectly switch to idle.
  • Extrapolation beyond the table limits is not performed, so you should expand the table boundaries sufficiently to prevent throttle position and pressure altitude from exceeding the defined ranges.