OBD-II
Introduction
This page is for software developers and people who would like to
learn more about the technical side of OBD communications. To the best
of our knowledge, the information presented on this page is accurate.
However, please remember that ScanTool.net does not accept
responsibility for its accuracy or usefulness for your particular
purpose.
Communication between PC and ElmScan
Open your favorite terminal (if you don't have a favorite terminal
software, use HyperTerminal - it comes with every copy of Windows).
Configure it to use 9600, 8, N, 1, and no flow control.
Also, make sure your program adds line feeds to line ends, otherwise you
may see the received data overwriting itself. If you're unsure how to do
these things, check out our page on
configuring the Hyperterminal.
01 : show current data
02 : show freeze frame data
03 : show stored trouble codes
04 : clear trouble codes and stored values
05 : test results, oxygen sensors
06 : test results, non-continuosly monitored
07 : show pending trouble codes
08 : special control mode
09 : request vehicle information
However, all of these modes are not required to be supported by every
vehicle, and the manufacturer is allowed to implement "custom" modes
above mode 09. Below are examples of some of the more commonly used
requests:
|
Mode
|
PID
|
Description
|
Min
|
Max
|
Formula
|
|
01
|
00
|
PID's supported |
Bit encoded* |
|
01
|
01
|
Number of trouble codes |
Data A**, bit 7: MIL commanded
on by the module. Bits 6-0: number of trouble codes stored in the
module. |
|
01
|
04
|
Calculated load value |
0%
|
100% |
=(X*100/255)% |
|
01
|
05
|
Engine coolant temperature |
0°F
|
255°F |
=((X - 40)*9/5 + 32) °F |
|
01
|
0C
|
Engine RPM (2 bytes) |
0 rpm
|
16,383.75 rpm |
=(X*1/4) rpm |
|
01
|
0D
|
Vehicle speed |
0 mph
|
255 mph |
= (X/1.609) mph |
|
01
|
0E
|
Ignition timing advance |
-64°
|
63.5° |
= (X/2 - 64)° |
|
01
|
0F
|
Intake air temperature |
0°F
|
255°F |
= ((X - 40)*9/5 + 32) °F |
|
01
|
11
|
Absolute throttle position sensor |
0%
|
100% |
=(X*100/255)% |
|
01
|
1C
|
OBD standard the vehicle conforms to |
01h : OBD II (California ARB)
02h : OBD (Federal EPA)
03h : OBD and OBD II
04h : OBD I
05h : not intended to meet any requirements
06h : EOBD (Europe)
|
| 03 |
|
Report all trouble codes |
|
| 04 |
|
Clear all trouble codes, freeze frame data, oxygen
sensor data, and reset status of system monitoring tests |
* For example, if you receive 41 00 BE 3E B8 10, you would take the
data bytes (BE 3E B8 10), and
convert them to binary.
You will get 1011 1110 0011 1110 1011 1000 0001 0000, with 1's
indicating supported modes. In this example, the vehicle supports
PID's 01, 03, 04, 05, 06, 07, 11, 12, ...
** Data A is the 3rd byte in the returned message (excluding the
header):
| |
Data Bytes (Hex) |
|
#1
|
#2
|
#3
|
#4
|
#5
|
#6
|
#7
|
| Request Powertrain
Diagnostic Data |
01
|
PID
|
|
|
|
|
|
| Report Powertrain
Diagnostic Data |
41
|
PID
|
data A
|
data B
|
data C
(opt)
|
data D
(opt)
|
|
If you need help with anything explained on this page, you may
contact us via our
|