How to Make Sense of OBD II Freeze Frame Data

 


Reading freeze frame data 2

signup_proof

While connecting a code reader to a vehicle is the easy part of modern automotive diagnostics, deciphering the root cause(s) of especially emissions related the code(s) is sometimes less easy. While the freeze frame data that accompany each code can be useful, this data does not always identify the proverbial “smoking gun”, since freeze frame data is often incomplete or inconclusive.

In fact, in some cases, it can be more be profitable to concentrate on what freeze frame data is not telling you, than to concentrate on the minutiae of the data. To illustrate this point, this article will explain what OBD II freeze frame data is, and how what it often does not tell you can (sometimes) be used to resolve issues when the root cause(s) of some types of trouble codes are not immediately apparent, starting with this question-

What is freeze frame data? 

The term “freeze frame” derives from the fact that when a fault occurs that has the potential to illuminate the CEL “Check Engine” light, the OBD II system records the engine operating conditions that obtained when the fault occurred. In practice, all the information from all the sensors that are implicated in a given engine control function is recorded at the instant a fault occurs during the first of two consecutive trips. Freeze frame data therefore represents a single frame of information that can be thought of as a “snapshot” of what was happening at the time the fault had occurred.

As a practical matter, the data that was recorded at the time the fault occurred will remain in the OBD II system’s fault memory either until the code is repaired and cleared, or if the battery is disconnected. However, if a fault with a higher priority occurs before the original code is resolved, such as a fault that has the potential to damage the say, the catalytic converter(s), or even the engine, the original freeze frame data may be overwritten by the more serious codes’ freeze frame data.

Nonetheless, freeze frame data consists of several “layers”, all of which are combined in a single, coherent message that can be retrieved with most scan tools. Below are some details of what typically constitutes a single frame of data-

Similar Conditions Window

This layer contains information about engine operation during the time a readiness monitor is running, and typically, the engine load in the form of MAP (Manifold Absolute Pressure) values and the engine speed are recorded when a failure occurs that prevents a monitor from running or completing. Note that there are two different Similar Conditions Windows, one relating to the fuel system, while the other relates to misfire detection.

If the fuel system fails, the OBD II system records the actual MAP value and the engine speed to determine if there was a plausible correlation between the fuel delivery strategy and engine speed/load at the time the failure occurred, by switching from “YES” to “NO”. The stored MAP value relates to the engine load i.e., was the engine idling or at WOT when the failure occurred, while the engine speed value informs the user at what engine speed the failure occurred.

Adaptive Memory Factor

In this layer, the ECU uses both the long and short-term fuel trim values to calculate a value for the total fuel corrections required over a predetermined time, as opposed to a predetermined distance. This is to ensure that fuel consumption remains within the limits the emission control system is designed to cope with.

Similar Conditions Time Window

This window records the length of time the engine is running without failures present, subject to all Similar Conditions being met. Each failure-free trip is added to a so-called “good trip” counter.

Fuel System Good Trip Counter

This timer is used to extinguish the CEL light, but is used exclusively for fuel system related trouble codes. In order to qualify as a good trip, the Similar Conditions Window must indicate “YES”, the Adaptive Memory Factor must not exceed a predefined value, and the Adaptive Memory Factor must remain below the predefined value for a specified length of time.  

How to interpret freeze frame data

It should be noted that the above items represent the layers of freeze frame data that most scan tools can access. However, depending on both the capability of the scanner and the application, typical freeze frame data could contain other items like the engine coolant temperature, intake air temperature, fuel pressure, throttle position sensor values, throttle opening angles (or percentages), oxygen sensor voltages, engine run-time since a code was set, and the vehicle speed, among many others.

As stated elsewhere, freeze frame data can be a valuable diagnostic aid but somewhat counter intuitively, the clues to the solution of a problem often lay in what the freeze frame data does NOT include. Let us use two common generic trouble codes as practical examples to illustrate this very important point, these codes being P0420- “Catalyst System Efficiency Below Threshold Bank 1”, and P0300-“Random/Multiple Cylinder Misfire Detected”.

In the first example, the freeze frame data was extracted with a generic scanner on a Ford application, while in the case of P0300, the freeze frame data was extracted from a Mercedes application with a high-end, manufacturer specific scan tool. The available freeze frame data from actual diagnostic procedures performed in this writer’s own repair shop is reproduced below from workshop records.

Let us look at P0420 first. In this instance, there were no additional active or pending codes present, and there were no apparent driveability issues. 

  •  Fuel SYS 1 CL = Indicates the fuel management system was in closed loop operation at the time the code was set
  •  Fuel SYS 2 N/A = Indicates a non V-type engine i.e., a single bank of cylinders
  •  Load (%) 92.1 = Indicates the averaged value of the mass of the intake air per intake stroke as a percentage, with about 95% being   normal for normally aspirated engines
  •  ECT (0C) 101.6 = Indicates engine coolant temperature when the code was set
  •  Shrt FT 1 (%) 2.2 = Indicates the percentage of fuel trim correction at the moment the code was set
  •  Long FT 1 (%) -3.1 = Indicates the ECU was subtracting fuel when the code was set
  •  MAP (kPa) 26.7 = Indicates the manifold absolute pressure in kPa at the time the code was set
  •  RPM (min) 2035 = Indicates the engine speed when the code was set
  •  VSS (k/ph) 74 = Indicates the vehicle speed when the code was set
  •  IAT (0C) 28 = Indicates the intake air temperature when the code was set

signup_proof

What does this data mean?

Taken at face value, there is nothing in the limited freeze frame that indicates why the catalytic converter was operating below a minimum allowable threshold, except to say that the negative long-term fuel trim value means the ECU was seeing a rich condition, and set code P0171 as a result.

From a diagnostic perspective, and given the fact that the ECU can only infer the efficiency of a catalytic converted based on input data from all the oxygen sensors, the freeze frame data  does not contain sufficient evidence to prove that the catalytic converter is defective. Astute readers will notice that (among many other parameters) there is no fuel pressure or oxygen sensor current data in the freeze frame, which means that condemning the catalytic out of hand based purely on the freeze frame data would have been unwise.

Clearly, in this case, more information was required, but since there were no other codes present (and in particular, no oxygen sensor codes), logic dictated that the rich condition was caused by a factor or set of circumstances that the ECU could not control and/or monitor.  

However, long experience has taught this writer to question car owners very closely about the service history of their vehicles when the cause of a problem is not immediately apparent, and in this case, close questioning of the customer revealed that the vehicle had suffered a serious engine-overheating episode three weeks prior to the appearance of code P0171.

An inspection of the spark plugs confirmed this, since the plugs showed some oil fouling as the result of damaged piston rings and/or cylinder walls, which explained not only the presence of code P0171, but also the absence of additional codes. An analysis of the exhaust gas showed excessive levels of hydrocarbons in the exhaust as the result of excessive oil consumption, but not enough to cause visible smoke. Nonetheless, the ECU perceived the oil-derived hydrocarbons as a rich condition, and tried to compensate for it by subtracting fuel, hence the negative fuel trim value.

In this instance, our recommendation was that the engine be replaced or rebuilt.

Another example of how to interpret freeze frame data

In the second example, the customer presented his vehicle, a 2009 Mercedes GLK 280 with code P0300 - “Random/Multiple Cylinder Misfire Detected” present and complained of a slight but noticeable misfire at idle speed when the engine was cold.  Once the engine warmed up, the random misfires disappeared. There were no driveability issues when the engine was fully warmed up, and no codes other than P0300 were present.

We let the vehicle sit in the shop overnight, and extracted the following freeze frame data the next morning with a high-end scan tool-

  •   Fuel System 1 Status = 1
  •   Fuel System 2 Status = 1
  •   Fuel System 1 Status = 1
  •   Fuel System 2 Status = 1
  •   Calculated Load = 22. 16 %
  •   Engine coolant temperature = 87 deg C
  •   Short term fuel trim (Bank 1) = 0%
  •   Long term fuel trim (Bank 1) = +11.65%
  •   Short term fuel trim (Bank 2) = 0%
  •   Long term fuel trim (Bank 2) = +7.4%
  •   Vehicle speed = 0 km/h
  •   Ignition advance (Cyl #1) = 42.0 deg
  •   Engine speed = 1198.1 RPM
  •   IAT = 38 deg C
  •   Mass airflow rate = 5.60 gram/second
  •   Absolute throttle position = 12.8%
  •   Fuel pressure (Rail) = 379 kPa
  •   Commanded EVAP Purge = 0%
  •   Fuel level = 42.1%
  •   Control module current = 13.90 V
  •   Absolute load = 16.98%
  •   Commanded air/fuel equivalence ratio = 1.53
  •   Relative throttle position = 1.89%
  •   Ambient air temperature = 34 deg C
  •   Absolute throttle position B = 12.89%
  •   Accelerator pedal position D = 6.22%
  •   Accelerator pedal position E = 6.22%
  •   Commanded throttle actuator position = 2.70%

What does this data mean?

Observant readers will notice that although this example of freeze frame data contains a whole lot of information, it contains nothing that could be definitively interpreted as the direct cause of the random misfire code, except possibly the large difference in long-term fuel trim values between banks 1 & 2.

Moreover, this example also does not contain oxygen sensor data, and the only clue that something might be amiss with the upstream oxygen sensors is the fact that the short-term fuel trim values on both banks read 0%, which is impossible while the engine is running with the coolant temperature at 87 deg C. At this temperature, the upstream oxygen sensors should be in closed loop operation, meaning that the short-term fuel trims cannot possibly remain at 0% when the throttle is momentarily blipped; only the downstream oxygen sensors registered a change with changes in engine speed.

At this point, it would have been tempting to blame defects in the ignition system, defective or clogged fuel injectors, or perhaps even some unidentified mechanical issue for the random misfire at low engine temperatures, but this would have been unwise given the fact that the operation of the upstream oxygen sensors had not been tested. As it turned out, live data from both sensors showed a constant signal voltage of 1.0 V during changes in the engine speed, which was clear evidence that both sensors were defective which was unusual, but not impossible.  

However, defective upstream oxygen sensors do not explain the difference in the long-term fuel trim values, and again in the absence of additional active or pending codes, the problem must involve something that the ECU cannot control and/or monitor, and can therefore not be recorded in the freeze frame data.

One other crucial piece of information was lacking, which was the fuel flow rate. Knowing this value would confirm whether or not cold start fuel-enrichment was taking place. If it were, the misfires were not caused by poor combustion during cold starts. However, if cold start enrichment were not taking place, the misfires could be explained by an overly lean mixture, but viewed objectively it is unlikely for a systemic cause of a lean mixture to produce differences in the long-term fuel trim values between banks 1 & 2.

Thus, as a first step, we replaced the upstream oxygen sensors since they were known to be defective, cleared the code, and ran a second scan the following morning, which showed that code P0300 had returned, but this time, the upstream oxygen sensors entered close loop operation as expected. Thus, the only logical explanation was that the engine was suffering from an engine vacuum leak that affected the two cylinder banks differently, thereby producing different long-term fuel trim values.

To prove this hypothesis, penetrating oil was applied around the intake manifold, which revealed a leak in the intake manifold gasket that was greatest on the side of bank 1, making the solution of the problem self-evident: as the engine warmed up, the manifold expanded, thus pinching off the vacuum leak. Replacement of the intake manifold gaskets resolved the problem permanently.    

Conclusion

While the two examples in this article are admittedly somewhat simplified, the moral of these stories is that while freeze frame data can be useful, it must never be seen as the be-all and end-all of automotive diagnostics. Freeze frame data, and especially incomplete freeze frame data is just one aspect of the proverbial “big picture”, and as such, an over-reliance on incomplete freeze frame data has the potential to cause misdiagnoses, expensive comebacks, and very often, the loss of a paying customer.  

signup_proof