Time to knock another perceivably insurmountable problem with out ECU down. One that says our cars cannot run on anything over Lambda=1.00 or AFR=14.7.
It is truth that ME 7.1 is coded in a way that it is impossible to go over 1.00 lambda. Several hard coded (no maps!) condition checks inside ECU program substitute higher than 1.0 Lambda with a value of "1", effectively making "1" the highest lambda ECU can run at.
The question is though: how does the ECU know what lambda it is running at? It cerainly doesn't just guess or anything like that so some sensor must be telling it the exhaust gas condition. The O2 sensor at reach bank tells it through its voltage output what is the current Lambda of exhaust gas is.
There are numerous aftermarket solution that will allow anyone to run their cars at any lambda they want without the ECU having a clue that it is being lied to. They include stand alone "between the ECU and O2 sensor" boxes, Zeitronix O2 wideband can also supply ECU with narrowband look-a-like signal at any real AFR you set it to stick to.
The result is that these boxes lie to ECU about the actual exhaust gas condition by substituting real O2 signals with their own generated ones. You can set these to report Lambda = 1 (or 0.455 volts) at any AFR you want, commonly being 15.4 which is considered the best economy AFR.
It is all nice but how about doing some shenanigans inside of ME 7.1 to accomplish similar effect? Read on.
Narrowband O2 sensor like S4/allroads/A4s (some) are using, is good only at measuring Air to Fuel ratio at Lambda = 1. They quickly lose resolution once stepped few hundreds either side of Lambda = 1. The following picture illustrates it very clearly:
Some measured voltages with delta (percentage change) from Lambda = 1:
The challenge is to find how the ECU is exactly figuring out what AFR it is running at. The way ECU works in closed loop is very simple. It reads the voltage, determines how much it is off from a sweet point towards lean or rich, adjusts injection time slightly, measures again, adjusts injection time, and so on, and so on, it is a never ending cycle. The result is that ECU never really sits at precisely Lambda "1", it cruises around trying to eternally reach the goal.
It works since Lambda o2 sensor (narrowband) has great resolution around Lambda = 1. The perfect Lambda of "1" is universally considered to be reached when the O2 sensor voltage reads around 0.450 volts.
I spent some time today analyzing how our car figures out "the sweet spot" and sure enough: module "RL" translated to "Lambda closed loop control" is responsible for taking the O2 voltage and through a lot of calculations and adjustments, output AFR/Lambda as well as apply corrections to injection time it considers needed at the time to move towards L=1.
Most importantly, there is just one variable that defines what the sweet spot is:
USR - "Control threshold for regulation before Kat"
Address (M-box): 0x11ADE
Data Type: Byte
Conversion formula: (1/192) * x - 0.200
Default: 7B or 0.4405
How do we use this?
Lowering or raising this value will force the ECU to adjust fueling to stick around this voltage value, Looking at the graph above, you want to lower this voltage to a level that will directly correspond to AFR you would like your closed loop to work at.
Due to completely non-linear nature of o2 output and very low resolution of USR, we don't have much room to maneuver if our goal is to reach perfect economy AFR of 15.4, 1.05 Lambda but it is not hopeless.
Here is your graph showing best power and best economy AFRs:
In my case setting this to hex 34 (0.0708 volts) gave me AFR of ~15.0 in closed loop and setting to hex 33 (0.0656 volts) gave me AFR around 15.2.
There is a catch though. Since the ECU is set to regulate around 0.45 volts with a lot of room voltage wise around that value with very little AFR/Lambda change, running 0.0656 volts yields a car that like to shoot into very lean territory when you are at very light load/idle. This is really no big deal since you don't really over heat engine at such load or get any knock or misfires.
Massaging PID controller for lambda correction will no doubt make it much smoother but I just wanted to warn any pioneers here that want to use it. The problem doesn't show in normal cruise.
ENjoy!