How To: Understand And Use Learning View’s Knock Information

Original Source / Web Archive

Detonation kills motors. Learning View can help you recognize when your engine has a detonation problem, and it can help you understand the circumstances in which detonation is occurring inside your engine.

In order to understand Learning View, you must first understand detonation, what causes it, and how the ECU responds to it.

0) What do I need to run Learning View?

See this thread about getting started, in general:
And get a copy of learning view from the first post in this thread:

1) What is detonation?

First, let’s talk about combustion. Normal combustion consists of a flame that expands outward from the spark plug in and orderly and predictable fashion. The pressure from this combustion pushes the piston downward, which turns the crankshaft, and so on. Ideally, the pressure caused by combustion is at its peak when the crankshaft has rotated about 20 degrees beyond top-dead-center. This is late enough to have good leverage on the crankshaft, and early enough that the pressure isn’t lost due to the increasing combustion chamber volume.

Sometimes however, the heat and pressure caused by the expanding flame causes spontaneous combustion of the air/fuel mixture elsewhere in the combustion chamber. Or, worse yet, it causes spontaneous combustion of the air/fuel mixture everywhere in the combustion chamber. Now we have peak pressure arriving ahead of schedule. The combustion chamber is much smaller than it normally would be at peak pressure, so the pressure peak is much higher than it normally would be. The piston may not even have reached top-dead-center yet, which means that the peak cylinder pressure isn’t contributing to any torque on the crankshaft – instead it’s just pushing straight down on the connecting rod, or worse yet, it might even be trying to spin the crankshaft backward. As you might guess, this puts a tremendous strain on the piston, connecting rod, wrist pin, rings, ringlands, crankshaft bearings, and so on. This detonation, and it kills motors. It is also known as knock – those two words refer to exactly the same thing, and they are used interchangeably.

2) What causes detonation?

The three most interesting factors are: load, air/fuel ratio, and ignition advance. Load is the amount of air in the combustion chamber – it ranges from less than half a gram at idle, to 4 grams or more in powerful engines. (Think of air being loaded into the cylinder, rather than load being placed on the engine.) Air/fuel ratio is of course the ratio between the load and the amount of fuel that has been injected along with the load. Ignition advance tells us how far in advance of top-dead-center the spark plug fires. Ignition advance is typically expressed in degrees – at higher engine speeds, more advance is required, so that the peak cylinder pressure occurs well after top-dead-center even when the motor is spinning faster.

Load (by itself) and AFR both affect how rapidly the flame propagates, and how susceptible the remaining air/fuel mixture is to spontaneous combustion. Lean AFRs are easier to detonate, richer AFRs (up to a point) are more resistant to detonation.

Too much ignition advance can precipitate knock. In low-load conditions (idle, cruise) excessive advance will just reduce power, but in high-load conditions it will cause detonation. In Subaru motors, running on pump gasoline, ignition advance (and therefore power) is limited by detonation. This why people are able to get increased power using high octane fuel (aka race gas), additives such as MMT (Torco), and anti-detonation injectants such as water and/or methanol.

(Incidentally, the Octane Rating Number of your fuel is actually no longer a measure of how much of the chemical “octane” is in it; today that number is actually just a measure of detonation resistance, which was formerly linked closely to the chemical that the Octane Rating Number is named for.)

3) How does the ECU respond to detonation?

Our ECUs are equipped with knock sensors, which are basically just microphones that are tuned to listen for the frequencies that are characteristic of knock – together with signal processing that attempts to screen out non-knock noises.

The ECU responds to knock by adjusting ignition advance. It can do this in one of four ways:

3.1) It can retard the ignition advance for a short period of time (a second or two). This is called Feedback Knock Correction (FBKC). FBKC is more likely to be used when Load is changing rapidly. Apparently the ECU software developers assume that the problem has more to do with the rapid change than with the specific RPM and Load, so they briefly pull timing, and then restore it over the next second or two.

3.2) It can retard the ignition advance for a certain RPM/Load range, for a longer period of time. This is called Fine Learning Knock Correction (FLKC) and it is one of the key things that Learning View shows us. FLKC is generally be used when RPM and Load are changing relatively slowly, and when the ECU doesn’t have reason to think that you’ve accidentally put non-premium fuel in the tank. FLKC is gradually unlearned if you drive in the same RPM/Load region without knock. The time required to unlearn FLKC varies by ECU.

3.3) It can retard the ignition advance for a broad range of RPM/Load combinations, by reducing the Ignition Advance Multiplier (IAM). This is sometimes called “rough” knock correction (the opposite of “fine” knock correction). When the ECU calculates ignition timing, it multiplies the timing value from the ‘ignition advance’ timing table by the IAM, and adds the result to the timing value in the ‘base timing’ table. Thus, cutting IAM to 0.5 would reduce timing over much of the RPM/Load range, in proportion to the values in the ignition advance table.

Generally speaking, you can think of IAM as the ECU’s way to cope with an accidental fill-up with non-premium fuel. However IAM will also drop if anything else is causing a substantial amount of knock – lean AFR, mechanical noise, bad tune with too much timing, etc.

3.4) Or, the ECU can do nothing. It could just hope that the knock it heard was probably just noise. This will be the case for knock outside the feedback, fine, and rough correction RPM/Load limits, which are configurable in most ECUs.

For a thorough explanation of the ECU’s knock control strategy, see this thread:
topic1840.html” onclick=”;return false;

4) What can Learning View tell us?

4.1) Learning View shows us the Fine Learning Knock Correction table, also known as the FLKC table. In a perfectly healthy car, this table would consist entirely of 0.0 values. When the ECU pulls timing in an FLKC cell, it subtracts 1.4 degrees of timing from the corresponding RPM/Load range, in hopes that this will be enough to prevent further knock. If there is no further knock in that same RPM/Load range, the ECU will add timing back, in increments of 0.35 degrees. If there is further knock in the same RPM/Load range, the ECU will subtract another 1.4 degrees, and so on. (Note that a retard value of 1.4 degrees and advance value of 0.35 degrees are both common in factory tunes, but they can be changed. More about this in section 6.01.)

If you occasionally see -1.4 values (or smaller, e.g. -1.05, -0.70, -0.35) in different cells at different times, your car is probably healthy. Even when running the stock tune there will be some corrections like those. Perhaps they are due to occasional knock, perhaps just noise. However Subaru seems to feel it’s no big deal – and remember, they have to rebuild these motors under warranty.

If you see one or two cells with small corrections, and it’s a different cell (and sometimes, no cells) every time you check, then your motor is probably healthy – but you should use data logging to make sure. If you see many cells with small corrections, you should make some changes to reduce the amount of knock your engine has to put up with.

If you see values beyond -1.4 (such as -1.75, -2.80, -3.15, and so on) then you have a problem. Such numbers indicate that the ECU pulled 1.4 degrees of timing and still saw knock. This is a cause for concern, and you should do something about it. More about that below.

If you see positive values in the FLKC table, the ECU has used an IAM reduction, and is now experimenting with increased timing (increased from the values that the reduced IAM produces) to see if it’s safe. The ECU will never add timing beyond the total allowed by the base + advance timing tables, however a reduced IAM makes some room for positive values in the FLKC table.

4.2) Learning View shows us the Ignition Advance Multiplier. For cars with 32-bit ECUs, this is a value that ranges from 0 to 1. For cars with 16-bit ECUs, it ranges from 0 to 16. If IAM has dropped below maximum (1 or 16), then you have a problem. You’ve either got the wrong fuel in the tank, or you’ve got too much timing, or you’ve got messed-up air-fuel ratios, or too much boost. Whatever the problem is, you should fix it before getting into boost again.

5) What can we do about knock?

5.1) Reduce timing. First, look for abnormal peaks in the combined base + advance timing tables. These are difficult to spot using RomRaider alone, but other tools exist to make it easier: Excel, Timing Editor, and EcuEdit can all sum the two tables and show you the result graphically. If you see something that sticks up, in the range where Learning View showed knock corrections, then change the base or advance tables to smooth out the timing surface by cutting down the peak(s).

5.2) Add fuel. Assuming you’re not crazy rich to begin with (in the 10s), adding fuel might be the answer. But, see below about logging first.

5.3) Reduce load. If you’re getting knock corrections only in the rightmost column, it could be that you’re pushing your turbocharger beyond its efficient range. The resulting hot air is more prone to detonation. Look at what people with similar mods are running, and if you’re using higher boost, consider turning it down a bit.

6) How can we make Learning View’s knock learning information more useful?

6.1) Tweak the rows and columns

The rows and columns in the knock correction table displayed by Learning View can be changed. Open up your tune in RomRaider or EcuFlash, and look for these tables under the “Ignition Timing – Knock Control” section:

* Fine Correction Rows (RPM)
* Fine Correction Columns (Load)

The contents of these tables varies quite a bit, even between stock tunes – even the numbers of rows and columns varies widely. There is no single best way to configure them, but here are some ideas to consider:

* Some stock tunes have effectively disabled one or more rows or columns by setting the values ridiculously high. For example, the last two rows in some 2002 WRX tables are 5,000-12,800 RPM and 12,800+ RPM. If you’re turning faster than 12,800 RPM, knock is probably the least of your concerns. 5,000-6,000 and 6,000+ are much more reasonable. The same ROMs have the last two load columns set to 1.5-4.0 and 4.0+, but 1.5-2.0 and 2.0+ would be more useful.

* It can be useful to align the load columns in Learning View (maybe just the rightmost 3 or 4 columns) with the load columns in your timing tables that you hit in a WOT pull. This makes it easy to translate knock corrections shown by Learning View into adjustments in your actual timing tables. This is not necessarily a great idea for the long term, but it makes it easy to tune timing for specific boost levels.

* It’s usually pretty easy to keep you car knock-free below 1.0 load. Consider setting the leftmost load column to 0-1.0, and equally spacing the rest of the columns to cover the range between 1.0 and the highest load that you hit in full-boost WOT pulls. This makes it harder to translate Learning View’s corrections into timing table changes, but when I feel ‘done’ with timing changes I like the idea of letting the ECU make its knock corrections in equally-spaced ranges like this.

6.01) Tweak the Advance and Retard values for Fine Learning Knock Correction

When the amount of knock that you’re getting is relatively small, I suggest changing the advance and retard values for fine learning correction make it pull 1.01 degrees at a time, and add back 0.20 degrees at a time. These settings can be found in the “Ignition Advance – Knock Control” section. I set my car up this way quite a while ago. There are two nice things about this:

The 1.01 / 0.20 setup will pull 1.01 degrees the first time the ECU hears knock in any FLKC cell. But if the motor knocks there again, the ECU will pull another 1.01 degrees. When you see 2.02 degrees pulled, you can be pretty sure it wasn’t just noise – pull 1 degree and see what happens.

If you see X.X2 degrees, you know the ECU pulled timing at least twice in that cell. That’s the neat thing about using 1.01 rather than 1.00. It will reset all the way to 0.00 after a while, but if you get a learning view in the meantime, the .01 / .02 / .03 provides a little more information than the stock setup does.

It’s not revolutionary, but it is kinda neat.

7) What can’t Learning View tell us?

Learning view can give you a vague idea of the RPM/Load range where you’re getting knock, but it can’t tell you what AFR you had at the time of the knock.

It can’t tell you exactly what RPM and load you were at when the ECU detected knock – the cells in the FLKC table are pretty broad.

It can’t tell you that you’re overshooting your boost targets.

It can’t tell you that you’re dipping super-rich right after you stomp on the gas.

It can’t tell you that you’re running lean because you need more fuel than your injectors or pump can deliver.

It can’t tell you that you’re getting knock in quick throttle changes, because the ECU will usually address that with feedback knock correction, rather than learned knock correction.

For these things, and more, you’ll need to do some data logging.