OBD diagnostic service (mode) $01 – Request Current Powertrain Diagnostic Data

The purpose of diagnostic service/mode 01 is to allow access to current emission-related data values of an internal combustion engine (ICE). The data should include analogue inputs and outputs, digital inputs and outputs, and system status information. The request for engine data includes a parameter identification (PID) value that indicates to the on-board system what information is requested. PID specifications, scaling information, and display formats are defined in part 5 of the ISO-15031 standard and SAE J 1979 standard.

For a reminder of all OBD diagnostic modes/services, please read the article On-Board Diagnostics (OBD) – introduction to the Modes of Operation (Diagnostic Services).

This article will focus on the implementation of OBD diagnostic service/mode 01 define in the standards SAE J1979 / ISO 15031-5. The main reason is that most of the new vehicles use Controller Area Network (CAN) protocol for OBD communication.

When a data request is send by the diagnostic tool, the  electronic control units (ECUs) will respond to this message by transmitting the requested data value last determined by the system. All data values returned for sensor readings will be actual readings, not default or substitute values used by the system because of a fault with that sensor. Usually, the ECUs which are mandatory to implement the OBD diagnostic services are:

  • engine/powertrain control module (PCM)
  • transmission control module (TCM)

Not all PIDs are applicable or supported by all systems. PID 00 is a bit-encoded PID that indicates, for each ECU, which PIDs that ECU supports. PID 00 shall be supported by all ECUs that respond to a service $01 request, because the external test equipment that conforms to ISO 15031-4 use the presence of a response message by the vehicle to this request message to determine which protocol is supported for diagnostic communications.

All emissions-related OBD ECUs shall support service 01 and PID 00. Service 01 with PID 00 is defined as the universal “initialization/keep alive/ping” message for all emissions-related OBD ECUs.

How does it work ?

The scantool is making a request for a parameter (PID) and the vehicle responds to the request with the data. For example, to request the engine coolant temperature, the scantool will send 0105 and the vehicle’s PCM will respond with 41054F. Please note that both request and response messages are in hexadecimal format.

The meaning of the 0105 request is:

  • 01 is the requested service, Request Current Powertrain Diagnostic Data in this case
  • 05 is the PID of the engine coolant temperature

The meaning of the 41054F response is:

  • 41 = 40 + 01 means a positive response (40) to the service/mode (01) request
  • 05 the parameter identifier for which following data will be provided
  • 4F the value of the engine coolant temperature, in hexadecimal format; to convert in physical values we need to convert in decimal numbers and subtract 40, which gives 79 – 40 = 39 °C

The general format of the $01 Read Current Diagnostic Data service/mode is:

Data bytes (HEX)
#1#2#3#4#5#6#7
Request01PID
Response41PIDdata Adata Bdata Cdata D

The request is a stream of maximum 7 bytes. The first byte represents the service/mode identifier, which for Read Current Diagnostic Data is 01. From second byte up to the seventh are the IDs of the parameters we want to read (PIDs). In one request up to 6 PIDs can be requested. The minimum number of requested PIDs is 1, the maximum is 6.

Observation: The maximum number of 4 data bytes is defined in the SAE J1979, version year 2002. Newer version of the standard allows for more data bytes.

For example, if 4 PIDs are requested: 01PID1PID2PID3PID4

the response message will have the following format: 41PID1(data)PID2(data)PID3(data)PID4(data)

where (data) can have from 1 to 4 bytes.

The length of the response stream is variable, depending on the number of requested PIDs and the number of data bytes of each PIDs. For example, let’s assume that we need to read 3 engine parameters:

Engine parameterPIDData bytesConversion rule
Engine speed [rpm]0C2((A*256)+B)/4
Absolute Throttle Position [%]111A*100/255
Time since engine start [s]1F2(A*256)+B

The request will be: 010C111F

The response could be: 410C2B7D118C1F37D2

Applying the conversion rule we get the following physical data for the engine parameters:

Engine parameterConversion
rule
Data byte A
[hex/dec]
Data byte B
[hex/dec]
Physical
value
Engine speed [rpm]((A*256)+B)/42B / 437D / 125((43*256)+125)/4 = 2783.25 rpm
Absolute Throttle Position [%]A*100/2558C / 140140*100/255 = 54.9 %
Time since engine start [s](A*256)+B37 / 55D2 / 210(55*256)+210 = 14290 s

How the information is encoded ?

The standard SAE J1979 and its European equivalent ISO 15031-5 define the OBD PIDs using a bit-encoded method. For example, if the PID uses 4 bytes of information, they’ll be defined as:

ByteABCD
BitA7A6A5A4A3A2A1A0B7B6B5B4B3B2B1B0C7C6C5C4C3C2C1C0D7D6D5D4D3D2D1D0

Bit 7 is the most significant bit (MSB) and bit 0 is the least significant bit (LSB).

Specific PIDs

PID 00

A request for this PID returns 4 bytes of data. Each bit, from MSB to LSB, represents one of the next 32 PIDs, from ID 01 to 20, and specifies whether that PID is supported.

For example, for the request 0100 if the vehicle’s response is 4100BE1FA813, the decoded information looks like:

Byte #1234
HexadecimalBE1FA813
Binary10111110000111111010100000010011
Supported?YesNoYesYesYesYesYesNoNoNoNoYesYesYesYesYesYesNoYesNoYesNoNoNoNoNoNoYesNoNoYesYes
PID number0102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F20

which means that the supported PIDs are: 01, 03, 04, 05, 06, 07, 0C, 0D, 0E, 0F, 10, 11, 13, 15, 1C, 1F and 20.

Similar PIDs are:

  • PID 20: shows which PIDs are supported between 21 and 40
  • PID 40: shows which PIDs are supported between 41 and 60
  • PID 60: shows which PIDs are supported between 61 and 80
  • PID 80: shows which PIDs are supported between 81 and A0
  • PID A0: shows which PIDs are supported between A1 and C0

PID 01

A request 0101 returns 4 bytes of data, labeled A B C and D.

The first byte(A) contains two pieces of information. Bit A7 (MSB of byte A, the first byte) indicates whether or not the MIL (check engine light) is illuminated. Bits A6 through A0 represent the number of diagnostic trouble codes currently flagged in the ECU.

The second, third, and fourth bytes(B, C and D) give information about the availability and completeness of certain on-board tests. Note that test availability is indicated by set (1) bit and completeness is indicated by reset (0) bit.

ByteMin valueMax valueEncodingEngine
ABit A0:Number of DTCs stored in this ECU
(MIN: 0, MAX:127)
SI/CI
Bit A1:
Bit A2:
Bit A3:
Bit A4:
Bit A5:
Bit A6:
0 = MIL OFF1 = MIL ONBit A7:Malfunction Indicator Lamp (MIL) statusSI/CI
B0 = NO1 = YESBit B0:Misfire monitoring supported
0 = NO1 = YESBit B1:Fuel system monitoring supported
0 = NO1 = YESBit B2:Comprehensive component monitoring supported
0 = SI1 = CIBit B3:Compression ignition monitoring supported
0 = YES1 = NOBit B4:Misfire monitoring ready
0 = YES1 = NOBit B5:Fuel system monitoring ready
0 = YES1 = NOBit B6:Comprehensive component monitoring ready
00Bit B7:ISO/SAE reserved
C0 = NO1 = YESBit C0:Catalyst monitoring supportedSI
NMHC catalyst monitoring supportedCI
Bit C1:Heated catalyst monitoring supportedSI
NOx after-treatment monitoring supportedCI
Bit C2:Evaporative system monitoring supportedSI
ISO/SAE reservedCI
Bit C3:Secondary air system monitoring supportedSI
Boost pressure system monitoring supportedCI
Bit C4:ISO/SAE reservedSI
ISO/SAE reservedCI
Bit C5:Oxygen sensor monitoring supportedSI
Exhaust gas sensor monitoring supportedCI
Bit C6:Oxygen sensor heater monitoring supportedSI
PM filter monitoring supportedCI
Bit C7:EGR and/or VVT system monitoring supportedSI
EGR and/or VVT system monitoring supportedCI
DBit D0:Catalyst monitoring readySI
NMHC catalyst monitoring readyCI
Bit D1:Heated catalyst monitoring readySI
NOx aftertreatment monitoring readyCI
Bit D2:Evaporative system monitoring readySI
ISO/SAE reservedCI
Bit D3:Secondary air system monitoring readySI
Boost pressure system monitoring readyCI
Bit D4:ISO/SAE reservedSI
ISO/SAE reservedCI
Bit D5:Oxygen sensor monitoring readySI
Exhaust gas sensor monitoring readyCI
Bit D6:Oxygen sensor heater monitoring readySI
PM filter monitoring readyCI
Bit D7:EGR and/or VVT system monitoring readySI
EGR and/or VVT system monitoring readyCI

The third and fourth bytes are to be interpreted differently depending on if the engine is spark ignition (SI, petrol/gasoline) or compression ignition (CI, diesel). In the second (B) byte, bit 3 indicates how to interpret the C and D bytes, with 0 being SI and 1 being CI.

PC Diagnostic Tools

All diagnostic services can be implemented in a software which can run on a PC or laptop, as well as on a mobile device (smart phone or tablet). The advantage of such a software is that the PIDs can be easily read, logged and saved.

Request Current Powertrain Diagnostic Data - supported PIDs

Image: Request Current Powertrain Diagnostic Data – supported PIDs

OBD 2007 diagnostic software allows to see which are the supported PIDs of the vehicle under test. By selecting the individual PIDs, their values can be monitored and logged for further time analysis. The number of supported PIDs depends on the type on engine (petrol or diesel) and the model year (MY). Newer vehicles with latest emissions standards have more PIDs supported.

OBD diagnostic service (mode) 01 - Request Current Powertrain Diagnostic Data

Image: OBD diagnostic service (mode) 01 – Request Current Powertrain Diagnostic Data

Request Current Powertrain Diagnostic Data - PID 01

Image: Request Current Powertrain Diagnostic Data – PID 01

OBD diagnostic service (mode) $01 – Request Current Powertrain Diagnostic Data can be summarised as:

  • Mode $01 provides diagnostic data, commonly known as PIDs (Parameter IDs)
  • Service technicians can use the data to troubleshoot sensors, check OBD monitor completion and MIL status
  • Test tools (scantools, diagnostic tools) specifies the request data by PID number (00 to FF)
  • PIDs are defined in part 5 of the ISO-15031 standard and SAE J 1979 standard
  • Each PID has an ID, description, unit, conversion/scaling factor or encoding and an acronym)
  • PIDs must show “raw” measured values, not substitute values if a sensor fails

Leave a Reply

Ad Blocker Detected

Dear user, Our website provides free and high quality content by displaying ads to our visitors. Please support us by disabling your Ad blocker for our site. Thank you!

Refresh