Inaccurate Mixture Behavior on Turbocharged Piston Engines

There appears to be a bug in the core mixture logic for turbocharged piston engines in MSFS. In real-life, a turbocharged fuel-injected engine should be able to climb with full-rich fuel mixture all the way to the critical altitude for the turbocharger with no loss of power or engine performance. The turbocharger can compensate for lower air pressure with altitude by compressing more air into the intake manifold and allowing the engine to operate with the same manifold pressure as it would at sea level. This is reflected in the POH instructions for multiple real-world turbocharged aircraft, which generally recommend maintaining a steady manifold pressure during the climb and keeping the mixture at full-rich until reaching the cruising altitude.

However, in Microsoft Flight Simulator, turbocharged engines gradually lose power with altitude when the mixture is set to full-rich. This can be observed by modifying the engines.cfg file for the stock G36 Bonanza to specify a turbocharged engine (turbocharged = 1 instead of 0) and then setting a realistic critical altitude for the turbocharger (for a real-world Bonanza outfitted with an aftermarket turbo, this appears to be about 18,000 ft). If the mixture is set to full-rich in MSFS, the engine will gradually lose power with altitude, eventually resulting in a complete inability to continue climbing. Leaning the mixture under these circumstances increases the fuel flow dramatically, and the engine develops a more realistic amount of power.

The behavior appears similar to the mixture bug that was fixed last fall for naturally-aspirated piston airplanes. In that case, maximum fuel flow would occur at a mixture setting of 91% at sea-level. Full-rich mixture produced a lower fuel flow than 91% mixture. That behavior was fixed at sea-level, but it continues to occur at higher altitudes for both naturally-aspirated and turbocharged engines. For turbocharged engines, it should not occur, at least until the critical altitude for the turbocharger.

I remember reading a forum discussion several months ago where someone reported that the same bug existed in FSX. As such, I don’t lay the blame on Asobo for this problem. Most likely, the bug already existed in the code they started with. Also, to my knowledge, none of the stock airplanes uses a turbocharged piston engine with user-adjustable mixture, so it’s quite possible that this bug was never observed in testing.

For any third-party plane makers who want to use the core engine simulation rather than developing a fully custom model, this bug will appear, though. It appears to affect a few third-party aircraft already.

4 Likes

In this bug report, I’m referring to turbocharged piston engines, rather than turboprop engines. The two are very different. Asobo is working diligently on the turboprop engine logic, and they’ve already released some welcome changes. But so far, I haven’t seen much discussion of the fuel mixture behavior in turbocharged piston engines. The bug I’m identifying here appears to affect a couple of add-on airplanes, which are probably using the core engine logic provided by MSFS rather than developing a fully independent engine model.

3 Likes

Sorry about that. I completely misread that. Absolutely no idea how that happended. Please disregard … :zipper_mouth_face:

The mixture on the turbo Arrow is definitely odd ,

1 Like

Engines that can keep their power/manifold pressure constant up to the critical altitude need to adjust the amount of boost generated by the turbo system. As the air gets less dense the turbo needs to compress the air more, this can be achieved by routing more hot air from the engine to the turbo impeller, which in turn drives the turbo compressor. The waste gate controls how much hot air goes to the turbo system. In short: if you want a constant manifold pressure up to the critical altitude, you need something like an adjustable waste gate.

Now, the thing is, the Piper Turbo Arrow III actually has a fixed waste gate. This means that at low altitude you can overboost the engine, but it also means that manifold pressure will not be constant if you change altitude. I think it also means that, for fixed waste gate engines, you need to adjust mixture. I’m not saying that the mixture system is not flawed, it probably is, just wanted to point out that there are multiple turbocharge designs, and that each design will have its own idiosynchrasies.

The fixed waste gate system is nicely explained here:

4 Likes

The Piper PA-28RT-201T (Turbo Arrow IV) POH specifies a combination of manifold pressure and RPM for cruise climb (if memory serves, I think it’s approximately 33 inches manifold and 2450 RPM). With the Piper fixed wastegate, maintaining that cruise power setting requires adjusting the throttle throughout the climb to keep manifold pressure near 33 inches. The POH also specifies keeping mixture at full-rich for the whole climb. As long as the pilot maintains a constant manifold pressure (either by adjusting the throttle with a fixed wastegate or by having a variable wastegate that automatically adjusts), it should not be necessary to lean the mixture with altitude.

I suspect the details of the mixture behavior also depend on whether the engine is carbureted or fuel injected, and possibly on the type of fuel injection system that is installed.

6 Likes

Update: I just completed a test flight to collect data to supplement the description I gave in the original post. As described in the original post, I modified the stock G36 Bonanza engines.cfg file with the following two changes:

turbocharged = 1
critical_altitude = 18000

I left everything else unchanged from stock. This configuration simulates a turbonormalized engine (a turbocharger with a variable wastegate) in which full throttle produces 29.6 inches of manifold pressure until the critical altitude of 18000 ft.

I loaded a flight with the Clear Skies weather preset (which uses standard atmospheric pressure and temperature). After takeoff, I set full throttle, 2500 RPM, and full rich mixture. I kept cowl flaps open for the duration of the climb and engaged the autopilot to hold a constant heading with flight level change mode set to 120 kias. Here are the fuel flow numbers I observed every 1000 ft (measured in gallons per hour):

2,000 ft: 23.5 gph
3,000 ft: 23.6 gph
4,000 ft: 23.7 gph
5,000 ft: 23.8 gph
6,000 ft: 23.7 gph
7,000 ft: 23.1 gph
8,000 ft: 21.3 gph
9,000 ft: 19.4 gph
10,000 ft: 14.8 gph
11,000 ft: 7.7 gph
12,000 ft: 0.5 gph

My climb rate slowed as the fuel flow decreased and the autopilot maintained 120 kias. By 10,400 ft, I could no longer climb at 120 kias. I reduced the climb speed to 80 kias, and I was able to reach 11,000 ft without adjusting mixture. To reach 12,000 ft, I had to lean the mixture, which dramatically increased the fuel flow and climb performance. I pushed the mixture lever back to full-rich as I passed 12,000 ft to measure the fuel flow (almost zero!). I repeated this climb procedure twice to verify the numbers, and the resulting fuel flows were within 0.1 gph of the original values.

Next, I leaned the mixture at each 1000 ft interval to find the maximum fuel flow and the corresponding mixture setting at that altitude. Here is the result of that test:

Altitude: Max Fuel Flow:
2,000 ft: 23.6 gph at 94% mixture
3,000 ft: 23.7 gph at 91% mixture
4,000 ft: 23.9 gph at 64% mixture
5,000 ft: 24.0 gph at 66% mixture
6,000 ft: 24.1 gph at 54% mixture
7,000 ft: 24.2 gph at 52% mixture
8,000 ft: 24.3 gph at 50% mixture
9,000 ft: 24.4 gph at 48% mixture
10,000 ft: 24.5 gph at 44% mixture
11,000 ft: 24.6 gph at 42% mixture
12,000 ft: 24.6 gph at 40% mixture

I only completed this test once, and I found the maximum fuel flow values by trial and error moving the mixture lever as the plane continued climbing. As such, these values are less precise, but they indicate a couple of important results:

  1. It is possible to achieve a realistic fuel flow for a turbocharged engine at high altitudes using the current MSFS mixture logic, but it requires leaning the mixture substantially (an unrealistic effect)
  2. With increasing altitude, the maximum fuel flow occurs at progressively lower mixture settings.
5 Likes

How does this compare with Rob Young’s Turbo Normalised Bonanza mod ?

Rob Young’s mod includes the two changes to the stock Bonanza’s engines.cfg file which I used in my test above (turbocharged = 1 and critical_altitude = 18000). I just took his mod on an identical test flight to the one I reported above (clear skies, full throttle, 2500 RPM, mixture full rich, flight level change mode set to 120 kias). The plane stopped climbing at about 10,300 ft (almost the same as my test above in the turbocharged stock Bonanza). The numerical fuel flow guage is not working for me in Rob Young’s Bonanza, so I can’t offer any numbers. The behavior is identical, though. When I lean the mixture after the airplane stops climbing at 10,300 ft, there is a dramatic increase in climb performance, just like in the stock Bonanza, so it appears the exact same fuel flow logic is happening.

Most probably the bug is that the code is looking at the ambient air density instead of the intake manifold density to calculate the air fuel ratio.

6 Likes

I made several additional test flights to collect data. I used the Python SimConnect API to extract the instantaneous Fuel/Air ratio and the ambient air density from the sim at each 1000 foot interval during the climb. I collected data with both the “Clear Skies” weather preset and real-world weather. Mathematically, the fuel/air ratio should be directly proportional to the reciprocal of the ambient density in a simple engine with no turbocharger:

fuel/air = (mass of fuel) / (mass of air)
density = (mass of air) / volume

So:

(fuel / air)/(1 / density) = (mass of fuel) / volume = constant

The data I collected from multiple flights show that this is exactly true in MSFS:

I have not found a way to access the intake manifold density directly from the sim, so I calculated it from the ambient pressure, temperature, and manifold pressure using the equation for an adiabatic compression. Here is the relationship between fuel/air ratio and intake manifold density:

This is not a linear relationship, so the sim is not accounting for the turbocharger increasing the density inside the intake manifold at all. It is modeling the proportion of fuel to air in each cylinder based on ambient air density.

6 Likes

Good job with the curves.

The good news is that after checking in the SDK documentation, the SimVar RECIP MIXTURE RATIO is writeable, which means that you can perform the calculations via a gauge and send the correct value to the sim.

I don’t know how well it would work given that I’ve tried in the past a similar modification with the IAS, calculating it in a JS gauge and sending it to the SimVar and the plane was simply flying a Mach 10.

The best solution would be an update of MSFS default SimEngine to account for the intake manifold density, rather than the ambient air density.

I’ve noticed that there is a RECIP ENG MANIFOLD PRESSURE SimVar but nothing about manifold temperature, humidity, etc, so I’m thinking that the turbo effect, in the current simulation, is only to increase the manifold pressure without heating the compressed air.

I just tried setting RECIP MIXTURE RATIO using the Python SimConnect API, but it appears to have no effect. Judging by the forum link below, it looks like the same behavior was true in FSX:

I completed more tests today to investigate the dependence between fuel/air ratio and throttle position (to confirm there is no dependence between the two in MSFS). Throttle position has absolutely no effect on fuel/air ratio.

Then, I tested the relationship between mixture lever position and the fuel/air ratio. Not surprisingly, this also depends on ambient density. Dividing the fuel/air ratio by the reciprocal of density (the same way I did above) yields a more reliable relationship with mixture lever setting. It looks like MSFS models the mixture lever behavior as three distinct linear functions: One function for mixture settings between 0 and 20%, another for mixture between 20-60%, and a third for mixture between 60-100%:

I still need to figure out the math for partial throttle settings (since in that case, I can’t use manifold density as a stand-in for ambient density to correct the MSFS logic). But I think it might be possible to create a workaround controller loop that intercepts the mixture lever position, calculates a corresponding mixture setting that produces the correct fuel/air ratio for the current manifold density, and sets the mixture axis in the sim accordingly. This would be similar to the FADEC controls that Working Title, the DA62X, and FlyByWire have developed.

1 Like

Looking at that graph again, maybe there are 4 linear functions: 0-20%, 20-60%, 60-90%, and 90-100%.

1 Like

That’s the impression I have as well.

Excellent analysis of the issue and potential solution. Hope this gets resolved quickly.

Wastegate and spool up logic is also reversed in mfs.

Superchargers also seem to generate full boost regardless of RPM

Leaning of non-turbo engines is still exessive after the “fix” as well. Quite a few core issues have been present since day 1 and are not being touched.

Disappointing imo…

1 Like

Very nice documented report, but no signs that Asobo is going to fix this? I didnt read it on the beta patch notes …