Timing

From B58 Wiki

You have probably looked at a log where the DME pulled 3° of timing and though that's not too bad then seen another log with 8° of timing pull and thought that's too much. Equally, you might have noticed that the ambient temperature is 110°F and intake temp 140°F and been unsurprised to see 6° correction. Why is this and how does the DME decide what the timing should be and whether to pull 0°, 3° or 12°?

Timing Overview

It is worth trying to understand in very general terms what the DME is doing. You probably already know that, to maximize performance, timing needs to be advanced upto but not past the knock limit. At the timing retard end, there is another limit called the combustion limit. This is the maximum retard that can be employed before partial burning and misfire problems start. One final quantity is the brake optimal timing angle. This is the angle that would achieve maximum possible torque. The DME is juggling these quantities depending on its aims.

  • The combustion limit is useful for cat heating and sound tuning. Relatively little combustion energy goes into the pistons and most it becomes heat, so it heats up the cat and sends fuel into the exhaust.
  • The optimal timing angle is used in torque calculations and torque intervention. The optimal angle provides for a reference torque that allows the DME to figure out the torque corresponding to the timing it is running.
  • The knock limit is the performance related number we all know and love. The DME employs a neural network approach to knock prediction, so it can estimate the probability of a knock event and use this to keep the timing safe but performant.

The overview of timing strategy is outlined below, with reference to the diagram:

  • Step 1. Basic, knock-limited timing
    • There are two main timing tables, KF_ZW_PF1 and KF_ZW_S_PF1.
    • Almost all timing calculations depend on the engine load (Rf_zwv) and RPM. The logic is that if RPM increases then the pistons are moving faster. If load increases the combustion flame front is moving slower. Timing calculations are attempting to marry up these two things. As RPM increases, timing advance increases. As load increases, timing advance decreases.
    • These represent the timing advance you think you can achieve, before knock, with the best fuel for the tune.
    • The abbreviation is Kennfeld Zuendwinkel Path1 which translates as Map for timing path 1.
    • The additional S means safe, although BMW comments use warm and cold. In any case, the DME interpolates between the normal and safe timing maps according to its notion of engine readiness.
    • Path 1 is the usual path and path 2 is used for throttled operation.
    • There are additional UESP maps which are used when turbo blowoff is being flushed through the engine. As you would expect, these are substantially retarted in relation to the knock limited maps.
    • The output is termed the basic ignition angle, zwstat. zwstat is uncorrected at this point.
  • Step 2. Temperature correction factors
    • The engine and intake temperature, plus two tables, KF_FDZWT_PF1 and KF_FDZWT_PF2 are sampled every second to determine a temperature correction factor.
      • Note the F for factor, the DZW for delta Zuendwinkel (timing correction) and T for temperature.
  • Step 3. Temperature correction
    • There are three temperature correction tables: KF_DZWT_PF1, KF_DZWT_PF2 and KF_DZWT_UESP_PF1. Can you guess what they are for?
    • The DME samples the engine load, rpm and the correction factors above to produce a temperature correction angle.
  • Step 4. Knock adaption delta
    • If the knock limited tables above (KF_ZW_PF1, etc) are too aggressive, this value will go up to compensate.
    • If the delta is zero, the timing might be too conservative or it might be bang on. A very small value indicates it is close to target.
    • This is all temperature, load and rpm dependent.
  • Step 5. Dynamic correction
    • There are four dynamic correction factor tables KF_FDZW_DYN1..4, which work as follows:
      • KF_FDZW_DYN1 and KF_FDZW_DYN2 are for manual transmissions
      • KF_FDZW_DYN3 and KF_FDZW_DYN4 are for autos.
      • Taking the auto case, KF_FDZW_DYN3 depends on intake temp and (? something to do with knock protection) which KF_FDZW_DYN3 depends on gear and vehicle speed.
  • Step 6. Basic corrected angle
    • The corrected, basic ignition angle is output based on: Zw_grund = Zwstat + Dzwt + Dzt_krann - Dzwdyn
  • Step 7. Possible torque intervention
    • The torque sub-system might specify a timing angle in order to reduce torque (for example, because the gearbox or traction control asks for this). This works by reference to a set of KF_ZWOPT_PF1, etc tables (not shown) which provide the torque-optimal timing and thus a reference from which the DME can determine some retard from this optimal angle to get the torque it wants.
  • Step 8. Possible knock intervention
    • The knock sub-system is predictive. It tells the DME if it thinks knock is likely.
    • The knock-limited ingition angle is output, plus the total of all corrections.
  • Step 9. Zw_out (timing angle out)
    • In addition to the basic, knock-limited angle, the torque angle and the knock intervention angle, there are other timing sub-systems, notably for startup and cat heating which are not shown, plus the DME needs to know which cylinder it is dealing with. The job of the IgnOut functions is to weigh up all these factors and provide a single, cylinder specific command to the ignition driver.

Basic timing angle

Here, the DME interpolates between the normal and safe maps and then that and the blowoff map.

Temperature corrections

The idea here is to

  • calculate a timing mutiplier based on the temperature every second
  • apply this to the value read from the load and RPM correction table.
  • For shifts and liftoff, the flushing table will be used, with an interpolation to smooth transitions.
  • Because the temperatures are sampled once per second, timing logs often show a stepwise change in timing.

Knock adaptation

Knock correction

Lambda correction

Torque intervention and optimal timing

Zw_out: final timing angle