PDA

View Full Version : OBDII DTC processing



Tom H
02-10-2019, 03:37 PM
Post edit...

I came across a description of four different types of dtc. Description is a bit fuzzy but from what I read, types are:

Type A
-Emissions related.
-Requests illumination of the MIL after one failed driving cycle.
-Stores a freeze frame DTC after one failed driving cycle.

Type B
-Emissions related.
-Sets a Pending Trouble Code after one failed driving cycle.
-Clears a Pending Trouble Code after one successful driving cycle.
-Turns on the MIL after two consecutive failed driving cycles.
-Stores a freeze frame after two consecutive failed driving cycles.

Type C
- Non-emissions related.
- Type C codes can cause the MIL lamp to come on (or illuminate another warning lamp)

Type D
- Non-emissions related.
- Type D codes do not cause the MIL lamp to come on.


In the code I discovered three different "enable" tables. I believe they relate to the types. Not four tables because type d is flagged only on a code reader.
Perhaps someone with knowledge could make all this clear for us. This relates to tuning in a number of ways. Control of various thresholds, re-calibration of
replacement sensors that are modified from the manufacturers and also finding parameters within the code.

End edit

Hi,

I hope someone can help me out with details of how DTC codes are created and processed by GM ECMs. The ECM I am working with is one of the first OBDIIs but I expect GM always handles DTCs the same way. I am working my way through a sub routine and this is the flow I see...

- A pointer is set up to a lookup table that formats bit position, byte offset and DTC codes.
- A FLASH table is looked at to see if the DTC is enabled. (is enabled the right term or is there GM speak for this?)
- First RAM table is looked at to see if the DTC has been detected. (is detected the right term?)
- Second RAM table is looked at if the DTC is already set in table 1. (is confirmed the right term?)
- Third table is looked at if the preceding tables are set. ( is pending the right term?)
- Specific DTCs relating to misfire and fuel trim are singled out for special process.
- Fourth table is looked at and if clear, the bit for this DTC is set in this table only.
- Fifth table is looked at if table 4 is set.

The code loops through all 18 bytes for each bit through each table. I assume all this is to filter transient conditions such that only "real" DTCs remain are flagged.

I would appreciate help getting the terminology right so that when folks look at the comments there is no need to translate into more common terms.

Thanks -Tom