Dynamic Advance & Dynamic Advance Multiplier Explained v1.00
This document is intended to assist you with the understanding of what the stock Subaru ECU is trying to do in order to optimize ignition advance. We would like to start out with some initial table definitions. These tables are in the factory Engine Control Module (ECM, also known as the ECU) and are calibrated to safely operate the motor. For those that have the AccessTUNER Professional or AccessTUNER Street software, you can access these table descriptions (and tuning tips) by pressing the "F1" key while that table is highlighted in the Table List.
The Primary Ignition table is the main look-up table used to determine the ignition advance the ECU should run for the given RPM and engine load conditions. This table uses engine RPM for the vertical (Y) axis and calculated load for the horizontal (X) axis. All, if any, corrections made to ignition timing will be based on the values originally looked up in this table. These values are in degrees BTDC (before top dead center); the higher value the more ignition advance, the lower value, the lower the ignition advance.
Variables such as octane rating, spark plug temperature and gap, intake air temperature, and application (street driving, road racing, rally racing, drag racing, etc.) must be taken into account when tuning this ignition advance table. When tuning Ignition Advance, keep in mind that your final ignition advance value will also include a portion of the Dynamic Advance table, as well as any corrections the ECU has made in the Knock Learning table. Keep in mind the engine will need less Ignition Advance as the engine's Volumetric Efficiency increases. This means you will typically use less ignition advance near or at peak torque. After your torque peak, you typically will want an increasing ignition advance. Best power typically is found near the threshold of knock, so use care when tuning. However, it is also possible to make less power with more ignition advance without actually reaching the knock threshold. This is where tuning on a load-based dyno with realtime feedback can be very beneficial.
The Dynamic Advance table is a closed-loop ignition advance table that allows the ECU to advance ignition timing beyond the main ignition table values as long as the engine "noise" heard by the knock sensor is not too high for that given RPM & load point, as determined by the ECU. This dynamic ignition advancing table uses engine RPM for the y-axis and calculated load for the x-axis. In other words, as long as the engine is happy the ECU will allow the ignition to advance beyond the main Primary Ignition table values. The freedom for the ECU to add additional degrees of ignition timing is partly determined by the values in this table. Even if additional ignition timing could be added the ECU will not advance ignition timing beyond these values. If the ECU hears noise which it finds unacceptable, the ECU will not allow any additional ignition advance to be run. If the ECU hears too much noise through the knock sensor and determines that detonation is occurring or is about to occur then the ECU will pull timing until it is satisfied with the engine noise for that RPM & load point. The ECU does this in order to protect the motor and to minimize the emissions output. If the Primary Ignition table has a timing value which is too high for the current conditions the ECU will recognize this and try to pull timing until the ECU determines the engine is safely operating. All values are in degrees BTDC (before top dead center). The amount of timing to be added to the Primary Ignition table is determined by the values in this table along with the Dynamic Advance Multiplier value. The ECU will take the look-up value from this table and then use a percentage of that value based on the value of the Dynamic Advance Multiplier.
The Dynamic Advance Multiplier table contains a singular value used to determine the value for the Dynamic Advance Multiplier that the ECU will start with upon resetting the ECU. The higher the value, the greater the proportion of the Dynamic Advance values will be added to the Primary Ignition. The total of these two values will be the total ignition advance for the motor, if the ECU does not remove ignition advance in order to protect the motor.
The Knock Learning table is used by the ECU to store learned ignition advance information. The ECU uses this table and populates it with adjustments made against the amount of Dynamic Advance used by the ECU (total ignition advance) to operate the motor. This table uses engine RPM for the y-axis and calculated load for the x-axis. The ECU can make positive or negative adjustments to ignition advance in this table. If the ECU determines the motor can be further optimized by running additional ignition advance for a given RPM and calculated load, then it will populate this table with positive values. If the ECU determines the motor can be or is being damaged by too much ignition advance for a given RPM and calculated load, then it will populate this table with negative values. This assists the ECU in learning what conditions the engine tends to make noise (knock) and attempts to be proactive in its Dynamic Advance advancements based on values in this table.
This table can be refreshed while you are connected for live tuning with the AccessTUNER Pro or AccessTUNER Race software by pressing the F5 key. A negative value in this table means the ECU has found that engine noise is too high for that particular load and RPM group and it has removed some of the Dynamic Advance that can be used (for that section of load and RPM cells). Given this information you can remove this amount of ignition advance from the Primary Ignition table. A positive value in this table means the ECU has found that engine noise is too low for that particular load and RPM group and it has added some additional authority to the Dynamic Advance that can be used (for that section of load and RPM cells). Given this information you can add this amount of ignition advance from the Primary Ignition table to optimize engine operation.
NOTE: Having this table populated with small adjustments such as +2 or -2 is normal activity. Although, if a larger negative value is in the WOT load column, you may want to remove some ignition from your Primary Ignition table (for those load and RPM sections).
Dynamic Advance Multiplier (DAM) can be seen as a measurement of how happy the ECU is:
- For the Drive-By-Cable (DBC) vehicles, the DAM has a range from 0 to 16 (measured in increments of ~1. 0) to determine what portion of Dynamic Advance will be run. A DAM of 0 usually means the vehicle is seeing continuous detonation, and a value of 16 would indicate the ECU is happy with the tune and is allowing a more aggressive total ignition advance curve.
- For the Drive-By-Wire (DBW) vehicles, the DAM has a range from 0 to 1.0 (measured in increments of ~.1) to determine what portion of Dynamic Advance will be run. A DAM of 0 usually means the vehicle is seeing continuous detonation, and a value of 1.00 would indicate the ECU is happy with the tune and is allowing a more aggressive total ignition advance curve.
For ignition advance calculations, the factory ECU looks up the value in the Primary Ignition table for that particular RPM and load point, then it will use the DAM to determine the proportion of additional ignition advance it will add to the Primary Ignition value to create the total ignition for the motor. The ECU is constantly listening to the motor through the knock sensor and watching crankshaft fluctuations. If the ECU does not hear too much engine noise for that given RPM and load point, then it will allow the DAM to grow. If too much noise is heard, then the DAM will move down or stay steady...depending on how much excessive noise is heard. It will stay constant on some poorer gases or if you have tuned close to the detonation threshold.
When you reset the ECU, the DAM will be reset to whatever is dictated in the AccessTUNER software through the Dynamic Advance Multiplier (Default) table. The ECU will use the ignition advance value in the Primary Ignition table's cell, according to the RPM and load point it is in. The ECU will then reference the DAM, if the DAM for an STi is .8, then the STi ECU will use the timing value in the Primary Ignition table (for that load and RPM point) and add 80% (.8 divided by 1.0) of the value in the DA table (for the same load and RPM point) as the total ignition timing.
Total Ignition Advance
The ECU will look-up the Primary Ignition table value for the corresponding RPM and Calculated Load breakpoint, then
+ (DAM percentage * DA table value) for the corresponding RPM and Calculated Load breakpoint, then
+/- Knock Learning table value for the corresponding RPM and Calculated Load breakpoint, then
+/- Adjustment made by ECU within the Knock Detection range. Within the Knock Detection range, the ECU can make a final adjustment to remove ignition advance is it hears the engine noise is getting too close threshold. The ECU will do what it can to protect the motor.
These final adjustments are made to the Dynamic Advance value and can be seen in a datalog. If your DA value for a particular load point is 6 and your DAM is showing as .50, then you should log a ~3 as your DA value. If you do not see ~3 in the logged value for DA, this means the Knock Learning table has been populated with a value or your ECU made a final adjustment to ignition advance because the ignition advance for that particular condition (RPM & Calculated Load) is too close to threshold.
If the ECU hears detonation it has the authority to immediately remove timing for a particular load and RPM point so that detonation event does not occur again. In other words, the ECM is doing everything it can to constantly fine tune the motor and assist in the consistency of the motor's performance.
We hope this helps.