Timing: Difference between revisions

From B58 Wiki
No edit summary
No edit summary
Line 7: Line 7:
* 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 current timing it is running.
* 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 current 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. In general, this allows the DME to avoid knock. If this fails and knock is detected, the DME will quickly drop to a very safe timing angle.
* 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. In general, this allows the DME to avoid knock. If this fails and knock is detected, the DME will quickly drop to a very safe timing 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.
File:Ign_038_005_0-hlf.svg


=== Basic timing angle ===
=== Basic timing angle ===
Line 72: Line 45:


This parameter can be thought of as an octane correction.
This parameter can be thought of as an octane correction.
Note that, if you are confident your fuel is good, and this value is adjusting timing, the basic angle tables are probably too aggressive. On the other hand, if your fuel is lower octant and this correction is zero, then the basic angles might be too conservative. Do not forget that this is all temperature, load and rpm dependent so both conditions can be true across the range of values.


[[File:Dzw_krann.png||Dzw_krann - knock adaptation correction]]
[[File:Dzw_krann.png||Dzw_krann - knock adaptation correction]]
Line 77: Line 52:
=== Dynamic correction ===
=== 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 knock correction while KF_FDZW_DYN4 depends on gear and vehicle speed.


=== Lambda correction ===
=== Lambda correction ===
Line 111: Line 91:


=== Torque intervention and optimal timing ===
=== Torque intervention and optimal timing ===
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.




=== Zw_out: final timing angle ===
=== Zw_out: final timing angle ===
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.
File:Ign_038_005_0-hlf.svg

Revision as of 08:36, 11 July 2024

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 (putting aside any fuel limitations). The DME is juggling these quantities depending on its aims.

  • The combustion limit is useful for cat heating, sound tuning and antilag. Relatively little combustion energy goes into the pistons and most becomes heat, so the cat gets hot and unburnt fuel can be flushed 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 current 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. In general, this allows the DME to avoid knock. If this fails and knock is detected, the DME will quickly drop to a very safe timing angle.

Basic timing angle

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 knock-limited tables represent the timing advance you think you can achieve, with the best fuel for the tune without undue heat.

The KF_ZW_PF1 abbreviation refers to 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 normal operation path and path 2 is used for throttled operation. Path 2 is not shown but it is essentially equivalent in terms of logic.

Note the 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. There is a blowoff factor, used for interpolation, which allows smooth transition between the normal and uesp maps on liftoff and gear shift.

The output is termed the basic, static ignition angle, zwstat. At this point, it is uncorrected.

Temperature corrections

There are two parts to the timing correction 1. Calculate a timing mutiplier based on the temperature every second. This uses the engine and intake temperature, plus two tables, KF_FDZWT_PF1 and KF_FDZWT_PF2. Note that, because the temperatures are sampled once per second, timing logs often show a stepwise change in timing. 2. Apply it every 10ms. This applies three correction tables: KF_DZWT_PF1, KF_DZWT_PF2 and KF_DZWT_UESP_PF1. Can you guess what they are for?

The abbreviations are F for factor, DZW for delta Zuendwinkel (timing correction) and T for temperature.

As for the basic angle, the flushing table can be used with an interpolation.

Knock adaptation correction

In this article, we will treat the knock adaptation as a black box and note only that it outputs another timing delta.

This parameter can be thought of as an octane correction.

Note that, if you are confident your fuel is good, and this value is adjusting timing, the basic angle tables are probably too aggressive. On the other hand, if your fuel is lower octant and this correction is zero, then the basic angles might be too conservative. Do not forget that this is all temperature, load and rpm dependent so both conditions can be true across the range of values.

Dzw_krann - knock adaptation correction

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 knock correction while KF_FDZW_DYN4 depends on gear and vehicle speed.

Lambda correction

Lambda corrections are zero on the gen 1. Lambda correction tables are not calibrated.


Application of timing corrections - corrected knock limited angle

With corrections in hand, the DME adds together the basic angle and the corrections, to obtain the knock-limited angle. This is the timing angle that will be used unless the knock control or torque systems intervene.


Knock control intervention

Here, the DME will discard the basic timing angle and revert to a very conservative retarded angle if knock is detected.

The maths is

DME timing intervention in case of knock

We can see from the stock KF_ZWKS table that the knock angle is retarded for loads higher than 130%.

Ignition angle for knock protection


Furthermore, the temperature-based delta applies additional negative timing (i.e. retard) of about -2° after multiplication with the factor.

KF_DZWKS - Delta ignition angle for knock correction


KF_FDZWKS - Temp-based factor

Torque intervention and optimal timing

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.


Zw_out: final timing angle

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.

File:Ign_038_005_0-hlf.svg