Timing

From B58 Wiki
Revision as of 18:21, 2 July 2024 by Jtownson (talk | contribs)

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

With reference to the diagram below:

  • 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

Temperature corrections

Knock adaptation

Knock correction

Lambda correction

Torque intervention and optimal timing

Zw_out: final timing angle