Subsections of Using GWv4

Frequently Asked Questions

Why can’t I select other units in the units configuration?

The current unit does not have any other related units that it can convert to. Check that the base unit has been quantified. For more information see Unit configuration.

Is there an easy way to adjust a map to a target?

Yes, please see PC based auto mappingfor more information.

PC based auto mapping

Auto mapping is a useful feature that can adjust base map values in real time to match a target map as closely as possible. This feature can only be used when online and can be enabled in the Log Map Controller Add Log Map Controller.... Here, controls for the auto mapping algorithm can be set as described in Log Map Controller.

An example auto mapping procedure for Lambda tuning

Let’s go through an example auto mapping procedure on a Lambda Log Map. Before starting, we must make sure that the calibration:

  • Has a base map to adjust.
  • Has a target map set by you that the algorithm will try to match.
  • Has an active Lambda feedback in operation so that Lambda updates from changes made to the base map.
  • Does not have any other processes that can adjust the base map switched on; we just want the auto mapping algorithm in control.

To achieve this we will use the base map of engine load vs engine speed and create a simple target map of lambda set to 1 over the whole map for a simple example (in reality we’d want a richer mixture at lower engine loads and speeds, and leaner at higher). It is better to be conservative and start with a richer target map to avoid overheating the engine. Some GEMS ECUs support closed loop Lambda feedback which have built-in auto mapping. So switch this off if applicable so that GWv4 is the only system changing values through the auto mapping algorithm.

Switch all of the Fuel Lambda options to OFF. Alternatively, set the options Lambda FB Speed Min and Lambda FB Speed Max to 0.

Switching off closed loop Lambda feedback Switching off closed loop Lambda feedback

The base map The base map
The target map The target map

Adjusting auto mapping parameters

Now we need to adjust the auto mapping parameters in the Log Map controller. The typical accuracy of a wideband oxygen sensor is around 0.01 at Lambda 1 so we’ll set this as the Target Accuracy parameter in the Targeting panel. This value is optimistic as there are several other sources of uncertainty. Once you have enough data to make a good uncertainty estimate, update the target accuracy to this value for more confidence in the results. To average out the noise of the Lambda reading, we’ll set the Weight Before Change value to 5, so that the cell will only be changed after 5 milliseconds at this location.

In the Modifications panel, we’ll select a percentage change to modify the base map by. If using this mode, you can only perform auto mapping on non-zero base map cells. Generally we want the Multiplier to be negative to increase stability. Start with a low value and increase later if the steps in the changes are not large enough. We don’t need to add an Offset so leave as zero.

We’ll set sensible maximum changes of 20% in the Maximum Changes panel. Remember that these are changes from the original cell value.

Lastly, start auto mapping by clicking the button.

Log Map Controller setup Log Map Controller setup

Auto mapping a cell

After setting up the Log Map Controller, we can add a Log Map Grid via Add Log Map Grid... or a Log Map Graph via Add Log Map Graph.... The grid/graph will be empty until auto mapping starts.To start, select a cell and click the Start Auto Mapping button on the Log Map Controller. You can now run the engine on a plan to target the desired cells you wish to auto map. It can also be useful to add the Lambda Error (or Ox Error depending on your ECU) channel to a Channel List to see how the auto mapping procedure is progressing. This channel should tend towards zero as the cell’s target value is approached.

Useful channels to keep an eye on Useful channels to keep an eye on
Lambda Log Map during auto mapping Lambda Log Map during auto mapping
The base Fuel Map being adjusted during auto mapping The base Fuel Map being adjusted during auto mapping

Once mapping is complete, don’t forget to switch back on the other processes that adjust the base map.

Troubleshooting tips

Auto mapping may not work for the following reasons:

  • There is some lag between adjusting the Fuel Map and observing a change in lambda. If the Fuel Map is updated too aggressively then you could start oscillating and under extreme settings, the oscillations could be unstable.
  • The Fuel Map needs sensible values in it as a rough starting point. If the auto mapping is adjusting by percentage then values of 0 in the Fuel Map will never change.
  • If you have to pump the pedal on startup, you will be interpolating between the base map and acceleration maps which will change the mixture and feed an incorrect Lambda reading into auto mapping algorithm. Instead, the initial crank pulse should be increased so that pump the pedal is not required.
  • The target Lambda map may be too difficult to reach due to uncontrollable changes in atmospheric conditions and fuel age.

Unit configuration

When configuring units, there may be times where you are unable to select other existing scaled units. This is because there are no available conversions, so you need to select a different base unit.

An example of this issue is the Air-to-fuel Ratio (AFR/Lambda). For some ECUs, Lambda readings are specified in the unitless quantity ‘AFR’. This has no real meaning or relationship to other AFR units, so the base unit needs to be changed to one that is quantified and convertible. To resolve this, select the base unit that matches the current fuel type.

Some of GEMS ECUs provide a user Enumeration/Option List ‘AFR Base Units’ that allows the base units to be recorded in the ECU calibration memory. If this is unavailable, you can create your own using dynamic chained units in user scalars.

Firstly, create your required User Scalars:

[USERSCALAR,AFR Custom,AFR,...] // for exotic fuels
[USERSCALAR,AFR Methanol,afr:AFR Gasoline,...]
[USERSCALAR,AFR Gasoline,afr:AFR Methanol,...]
[USERSCALAR,AFR Diesel,afr:AFR Diesel,...]
// etc

Then create an Enumeration/Option List with these User Scalars:

[ENUM=AfrUnitList,0,AFR Custom,1,AFR Methanol,2,AFR Gasoline,3,AFR Diesel, ...etc]

Then create the Option for the Enumeration:

[AFR Units,,ol(AfrUnitList),...]

Finally, create a new definition for AFR Units using the Option:

[USERSCALAR,AFR Units,O[AFR Units],...]

You will now be able to select the appropriate User Scalar from the AFR Units Option.

Otherwise, the base unit choice must be stored externally to the ECU and GWv4 will not remember your choice. There are a few ways to accomplish this:

  • Reload the same calibration file every time you connect the ECU.

  • Override the base unit to a particular choice for any or all of the following: ECU types, versions, current project, calibration files on your PC. However, this may only be desirable if you are only ever working with a single fuel type.

Select Units / Scaling..., scroll down to the desired unit name and click ‘’ on the right hand side next to the current unit.

Configure Units Override Configure Units Override

  • Save units whilst in the Configure Units / Scaling window and reload then when needed.

  • Change the default AFR units to be afr:LA and calibrate the reading to read 1.0 at the stoichiometric ratio. You can then select AFR for different fuel types from that. However, any other calibrations would also need recalibrating because their AFR offset and AFR scalar will be wrong.