Operation CHARM: Car repair manuals for everyone.

Mode $06 Data



Mode $06 Data

Functional Description

The purpose of mode $06 is to allow access to the results for on-board diagnostic monitoring tests of specific components / systems that are continuously monitored (e.g. misfire monitoring) and non-continuously monitored (e.g. catalyst system).

The request message for test values, consists of two bytes, byte #1 specifies what service is to respond e.g. $06 for Mode $ 06 request.
Byte #2 specifies which On-Board Diagnostic Monitor ID (OBDMID) information is being requested i.e. any supported On-Board Diagnostic Monitor ID from $00 to $FF (see table 5).





Reporting of On-Board Diagnostic Monitor ID test values in response to $06 $00 request.
Message response for $06 $00 will differ to that of any $01 to $FF request. This is due to ID $00 being a bit-encoded value that indicates which On-Board Diagnostic Monitor IDs are supported by any receiving Mode $06 compliant control module. CM(s) must respond to all supported ranges if requested. A range is defined as a block of 32 On-Board Diagnostic Monitor IDs.





Reporting of On-Board Diagnostic Monitor ID test values in response to $06 $01 - $FF request.
A minimum of 10 bytes will be returned in response to this type of request. The maximum amount of bytes is dependant on how many Test IDs are supported within the On-Board Diagnostic Monitor ID.








When more than one TID is to be reported, the returning data will be continuous, only displaying $46 once (first 10 bytes). The following TIDs will be displayed in 9 bytes, omitting the Response ID $46, Therefore, starting with the On-Board Diagnostic Monitor ID requested. For example, $06 $01 will return the following:





Unit and Scaling ID definition





The Unit and Scaling ID is a one (1) byte identifier. This references the scaling and units to be used by external test equipment when calculating and displaying the test values (results). This includes the minimum test limit and the maximum test limit for the standardised and manufacturer defined Test ID requested.

All unit and scaling IDs used are specified in Table 4.





Test Result Description





The latest test results are retained, even over multiple ignition OFF cycles, until replaced by more recent test results. Test results are requested by On-Board Diagnostic Monitor ID. Test results are always reported with the Minimum and Maximum Test Limits as shown in Table 5.

The Test Limit is a two byte unsigned numeric value $00-$FFFF (0 -65535 Dec). With exception to Misfire (On-Board Diagnostic Monitor ID A2-A9), all specific Max Test limits shall be $7FFF (32767 Dec). Test values less than or equal to the Max test limit will be show as $00, indicating a pass. Test values greater than Max test limit will be show as actual counted value above threshold i.e.





If an On-Board Diagnostic Monitor has not been completed at least once since Clear/reset emission-related diagnostic information or battery disconnect, then the parameters Test Results, Minimum Test Limit, and Maximum Test Limit shall be set to zero ($00) value, indicating test has not been completed.

Using Table 5

Table 5 contains specific Mode $06 related data. This table is to be used as a tool to cross reference any data received by a generic scan tool and identify any On-Board Diagnostic Monitor ID, PCODE, TID, Min, Max Values and scaling information.




Table 5 - Part 1:




Table 5 - Part 2:





Example for Use of Standardised Test IDs for Misfire Monitor

OBD regulations require reporting the number of misfire events detected during the current driving cycle (Test ID $OC) and the average number of misfire events detected during the last 10 driving cycles (Test ID $0B) for each cylinder. Therefore, for a 4-cylinder engine, eight pieces of data must be reported for both Test IDs.

The purpose of the misfire data is to help identify which cylinders are currently misfiring ($0C) and identify which cylinders have been consistently misfiring in the past 10 driving cycles ($0B). The actual misfire event counts will depend on how the vehicle was driven, how long it was driven, etc. Misfire counts for cylinders are only to be compared relative to each other. If some cylinders have many more misfire events than other cylinders, troubleshooting should begin with the cylinders that have the highest number misfire events.

The Test ID $0B registers contain the EWMA (Exponential Weighted Moving Average) value for misfire events counted during the last 10 driving cycles. The EWMA value is only re-calculated once per driving cycle. This calculation is done every power-down sequence due to the control module having a short stay alive period after the ignition key is turned off. The EWMA value uses the misfire event counts collected during the last/current driving cycle. The value of the $0C counters, after the driving cycle ends, is the number of misfire events counted during the current/last driving cycle. The software takes the contents of the $0B register (this is the previous average) multiply by 0.9 and adds the contents of the $0C register (this is the current misfire event counts) multiplied by 0.1. This becomes the new EWMA value.

The Test ID $0C counters counts misfire events for each cylinder and save them in Keep Alive or Non- Volatile Memory. They update continuously, in 200 or 1000 revolution increments, as a minimum. When the engine starts, the $0C misfire counters are reset to zero. Prior to engine start-up, the last value from the previous driving cycle is retained, so that the number of misfire events that occurred during the last drive cycle can be displayed. If a vehicle has constant misfire in one or more cylinders, Test ID $0C can be used to monitor the misfire event counters whilst the vehicle is being driven, up to a maximum of 65,535 events.

There are no minimum or maximum misfire monitor threshold limits for misfire counts. Test IDs $0B and $0C just accumulate the number of misfires that occur. These counts should accumulate with or without a misfire DTC. If there was a small misfire, but not enough to store a DTC, Test ID $0B and $0C values for each cylinder should still show the number of misfire events that occurred.

OBD MID A1 - A9: