DTC Structure
Like all digital signals, DTCs are sent to the scan tool as a series of 1s and 0s. Each DTC is made up of two data bytes which each consist of eight bits that can be set to 1 or 0. The data is decoded by the scan tool to display each set of four bits as a hexadecimal number (0 to F) in order to display the DTCs in the conventional format. For example, P0420 - Catalyst System Efficiency Below Threshold (Bank 1).
| DTC Byte 1 | DTC Byte 2 | ||
|---|---|---|---|
| 0000 | 0100 | 0010 | 0000 |
| P0 | 4 | 2 | 0 |
The table below shows how to decode the bits into hex digits.
| Binary Bit Pattern | Hex Digit | Binary Bit Pattern | Hex Digit |
|---|---|---|---|
| 0000 | 0 | 1000 | 8 |
| 0001 | 1 | 1001 | 9 |
| 0010 | 2 | 1010 | A |
| 0011 | 3 | 1011 | B |
| 0100 | 4 | 1100 | C |
| 0101 | 5 | 1101 | D |
| 0110 | 6 | 1110 | E |
| 0111 | 7 | 1111 | F |
The first four bits of a DTC do not convert directly into hex digits. The conversion into different types of DTCs (P, B, C and U) is defined by SAE J2012. This standard contains DTC definitions and formats.
| Binary Bit Pattern | SAE DTC Type | Binary Bit Pattern | SAE DTC Type |
|---|---|---|---|
| 0000 | P0 | 1000 | B0 |
| 0001 | P1 | 1001 | B1 |
| 0010 | P2 | 1010 | B2 |
| 0011 | P3 | 1011 | B3 |
| 0100 | C0 | 1100 | U0 |
| 0101 | C1 | 1101 | U1 |
| 0110 | C2 | 1110 | U2 |
| 0111 | C3 | 1111 | U3 |
ISO 14229 sends two additional bytes of information with each DTC, a failure type byte and a status byte.
| DTC Byte 1 | DTC Byte 2 | Failure Type Byte | Status Byte | ||||
|---|---|---|---|---|---|---|---|
| 0000 | 0100 | 0010 | 0000 | 0000 | 0000 | 1111 | 0101 |
| P0 | 4 | 2 | 0 | 0 | 0 | F | 9 |
All ISO 14229 DTCs are four bytes long instead of three or two bytes long. Additionally, the status byte for ISO 14229 DTCs is defined differently than the status byte for previous applications with three byte DTCs.
DTC Status Bit Definitions
Refer to the following status bit descriptions
Bit 7
- 0 - The ECU is not requesting warning indicator to be active
- 1 - The ECU is requesting warning indicator to be active
Bit 6
- 0 - The DTC test completed this monitoring cycle
- 1 - The DTC test has not completed this monitoring cycle
Bit 5
- 0 - The DTC test has not failed since last code clear
- 1 - The DTC test failed at least once since last code clear
Bit 4
- 0 - The DTC test completed since the last code clear
- 1 - The DTC test has not completed since the last code clear
Bit 3
- 0 - The DTC is not confirmed at the time of the request
- 1 - The DTC is confirmed at the time of the request
Bit 2
- 0 - The DTC test completed and was not failed on the current or previous monitoring cycle
- 1 - The DTC test failed on the current or previous monitoring cycle
Bit 1
- 0 - The DTC test has not failed on the current monitoring cycle
- 1 - The DTC test failed on the current monitoring cycle
Bit 0
- 0 - The DTC is not failed at the time of request
- 1 - The DTC is failed at the time of request
For DTCs that illuminate the malfunction indicator lamp (MIL), a confirmed DTC means the PCM has stored a DTC and has illuminated the MIL. If the fault has corrected itself, the MIL may no longer be illuminated but the DTC still shows a confirmed status for 40 warm up cycles at which time the DTC is erased.
For DTCs that do not illuminate the MIL, a confirmed DTC means the PCM has stored a DTC. If the fault has corrected itself, the DTC still shows a confirmed status for 40 warm up cycles at which time the DTC is erased.
To determine if a test has completed and passed, for example, after a repair, information can be combined from two bits as follows
If bit 6 is 0 (the DTC test completed this monitoring cycle), and bit 1 is 0 (the DTC test has not failed on the current monitoring cycle), then the DTC has been evaluated at least once this drive cycle and was a pass.
If bit 6 is 0 (the DTC test completed this monitoring cycle) and bit 0 is 0 (the DTC test is not failed at the time of request), then the most recent test result for that DTC was a pass.
The status byte bits can be decoded as a two digit hexadecimal number, and can be displayed as the last two digits of the DTC, for example for DTC P0110:1C-AF, AF represents the status byte info.
| Status Byte | |||||||
|---|---|---|---|---|---|---|---|
| A equals 1010 | F equals 1111 | ||||||
| Bit 7 equals 1 | Bit 6 equals 0 | Bit 5 equals 1 | Bit 4 equals 0 | Bit 3 equals 1 | Bit 2 equals 1 | Bit 1 equals 1 | Bit 0 equals 1 |
Permanent Diagnostic Trouble Code (DTC)
The software stores a permanent DTC in non-volatile random access memory (NVRAM) whenever a DTC is set and the MIL has been illuminated. Permanent DTCs can only be cleared by the module strategy itself. After a permanent DTC is stored, three consecutive test passed monitoring cycles must complete before the permanent DTC can be erased. The PCM clears the permanent DTCs after one monitoring cycle if a request to clear DTCs is sent by the scan tool and the test subsequently runs and passes. A permanent DTC cannot be erased by clearing the keep alive memory (KAM). The intended use of the permanent DTC is to prevent vehicles from passing an in use inspection simply by disconnecting the battery or clearing the DTCs with a scan tool prior to the inspection. The presence of the permanent DTCs at an inspection without the MIL illuminated is an indication that a correct repair was not verified by the on board monitoring system.