Injection Monitoring (B58g1 onwards)


To avoid overloading the high pressure fuel pump, there is a map used on N55 M2, (and present but maxed on the S55) that limits the cylinder fill using RPM and lambda target. The purpose of this is to create a load limit which shouldn’t result in too much fuel and max out the high pressure pump, which can be easily done on an N55 with stock fuel pump. However this is quite clunky, totally open loop and a bit of a pain to calibrate.

Additionally there are many issues on S55 where the injection angle is maxed out, leading to a leaning out which presents as a soft progressive misfire. The only solution is to reduce the cylinder fill (less boost) or fuel load.

Fast forward to the B58 g1 and we have an injection monitoring function which actively checks the status of the high pressure fuel system, both pump and injection, and can lower the cylinder fill limit to prevent either maxing the pump or available injection window

High Pressure Fuel Pump

The high pressure fuel pump can be considered at it’s limit if either the maximum angle (typically 126°) is reached, the fuel pressure drops far enough below the target, or if the mass flow rate of the fuel reaches the calculated mass flow rate of the pump. Since the mass flow rate of the pump is estimated it appears that the limit can be reached even if the angle is not at it’s maximum.

When the conditions to start limiting are met, the ECU starts to drop the cylinder fill limit until the fuel pump is back within spec. It does this by incrementing the limit down quite rapidly, but up again quite slowly. It will lower the limit to a minimum set by KL_RFMIN_KRSTSYS “Load Limit Minimum - Injection monitoring” it has been a tactic to raise this number to a high level to stop the limit coming down and spoiling the party, however then you can run the pump out and have significant drops in fuel pressure as a result.

Typical operating conditions:

  • Cylinder fill limit comes from main tables, or RaceROm per gear table

  • Torque demand results in a cylinder fill that is actually a little below the limit

  • Fuel pump peaks around 100-110° and drops with increasing rpm

  • Fuel Pressure very close to target.

Pump Flow Calculation

The main flow calculation comes from BMWinjmon_vol_HppCmpn_C which is the base volumetric capacity of the pump stock this 500uL on B58g1 and 526uL on B58g2. This is multiplied by the pump volumetric efficiency from BMWinjmon_fac_HppEff_M and corrected for fuel temperature with BMWinjmon_fac_HppRt_T and then engine speed and some constants to give a final figure for a maximum volume flow rate.

Calibration considerations

Automatic load limitation

If this system is calibrated corrected, it will mean that at times of higher fuel system load, the load limit may reduced lower than “normal” levels. Rather than just prevent any of these safety subsystems from doing their job, we would recommend that they are actually used in a way that if everything operates as you intend they don’t cause a problem. Instead of trying to carefully craft your load limits to avoid the pump being maxed out, let this do it for you, not only that if the fuel load increases because, for example the lambda target is lowered for temperature control, the airflow will be reduced to keep the pump in a sensible operating range.

Disabling Injection Monitoring Load limitation

This is bad, but prior to now it’s been what most tuners have been doing, and we can see the effect of setting Load Limit Minimum - Injection monitoring to a flat 200% thereby preventing the load limit from this system dropping below 200%. You can see in the log below from a test to deliberately overload the HPFP, the fuel pressure drops to just 5Mpa which is “less than ideal” as the ECU tries to maintain high fuel demand (lambda target made rich for this test) at relatively high load. We now would recommend not to do this.

HPFP Volume and Efficiency

The log and map values below show the effect of lowering the pump volume, causing the load limit to be abnormally low, limiting the MSV active angle to less than 100° with a further drop when the pump efficiency drops to 0.6 from 4000 to 4100rpm.

The below edit shows the MSV angle and load limit doesn’t have a further drop at 4100rpm, and you can also see the cylinder fill being balanced and maintaining the MSV angle between 90° and 100°

Increasing the pump volume gives the following change, allowing the MSV angle to hover around 100º-105º instead of 90

Load limit adjustment rates

The load limit adjustment rates cap the rate at which the cylinder fill limit is reduced and increased, increasing the magnitude of these gives the following result, a slow oscillation of the cylinder fill load limit, as there is a delay in the change of the cylinder fill limit or desired cylinder fill, to the actual fuel load reduction and reduction in fuel pump control angle.

Upgraded HPFP

In the case where a higher flowing high pressure fuel pump has been fitted, it would appear that the main thing to do is update BMWinjmon_vol_HppCmpn_C to reflect the higher capacity, otherwise the ECU will trigger the injection monitoring load limit even though the pump has plenty of spare capacity, as seen below. The point at the cursor shows where the cylinder fill limit starts to actually limit the desired cylinder fill, after the injection monitoring limit kicking in at the peak of the fuel pump angle. However the limit is still in place with the pump comfortably within it’s operating range. In this case the solution will be to correct the pump capacity, and possibly fine tune the efficiency.

Cylinder Fill limit reduction gain

BMWinjmon_fac_HppMax_M appears on B58g1 to be the cylinder fill limit reduction gain table, but the control seems best set with the overall pump capacity and efficiency table.