ELM322
Talking to the Vehicle
The ELM322 cannot be directly connected to a
vehicle as it is, but needs support circuitry as shown in
the Example Applications section. Once incorporated
into such a circuit, you only need to use a terminal
program to send bytes to, and receive them from, the
vehicle.
SAE standards specify that command bytes sent
to the vehicle must adhere to a set format. The first
byte (known as the ‘mode’) always describes the type
of data being requested, while the second, third, etc.
bytes specify the actual information required (given by
a ‘parameter identification’ or PID number). The
modes and PIDs are described in detail in the SAE
standard documents J1979 and J2190, and may also
be expanded on by the vehicle manufacturers.
Normally, one is only concerned with the nine
diagnostic test modes described in J1979 (although
there is provision for more). Note that it is not a
requirement for all of them to be supported. These are
the nine modes:
01 : show current data
02 : show freeze frame data
03 : show diagnostic trouble codes
04 : clear trouble codes and stored values
05 : test results, oxygen sensors
06 : test results, non-continuously monitored
07 : test results, continuously monitored
08 : special control mode
09 : request vehicle information
Within each mode, PID 00 is normally reserved to
show which PIDs are supported by that mode. Mode
01, PID 00 is required to be supported by all vehicles,
and can be accessed as follows…
Ensure that the ELM322 is properly connected to
your vehicle, and powered. Most vehicles will not
respond without the ignition key in the ON position, so
turn the ignition on, but do not start the vehicle. At the
prompt, issue the mode 01 PID 00 command:
>01 00
A typical response could be as follows:
41 00 BE 1F B8 10
The 41 00 signifies a response (4) from a mode 1
request with PID 00 (a mode 2, PID 00 request is
answered with a 42 00, etc.). The next four bytes (BE,
1F, B8, and 10) represent the requested data, in this
case a bit pattern showing which of PIDs 1 through 32
are supported by this mode (1=supported, 0=not).
Although this information is not very useful for the
casual user, it does serve to show that you are
communicating with the vehicle.
Another example requests the current engine
coolant temperature (ECT). This is PID 05 in mode 01,
and is requested as follows:
>01 05
The response will be of the form:
41 05 7B
This shows a mode 1 response (41) from PID 05,
with value 7B. Converting the hexadecimal 7B to
decimal, one gets 7 x 16 + 11 = 123. This represents
the current temperature in degrees Celsius, with the
zero value offset by 40 degrees to allow operation at
subzero temperatures. To convert to the actual coolant
temperature, simply subtract 40 from the value. In this
case, then, the ECT is 123 - 40 = 83 degrees Celsius.
A final example shows a request for the OBD
requirements to which this vehicle was designed. This
is PID 1C of mode 01, so at the prompt, type:
>01 1C
A typical response would be:
41 1C 01
The returned value (01) shows that this vehicle
conforms to OBDII (California ARB) standards. The
presently defined responses are:
01 : OBDII (California ARB)
02 : OBD (Federal EPA)
03 : OBD and OBDII
04 : OBD I
05 : not intended to meet any OBD requirements
06 : EOBD (Europe)
Some modes may provide multi-line responses
(09, if supported, can display the vehicle’s serial
number). The ELM322 will attempt to display all
responses in these cases, but only if it is allowed
sufficient time to process each. There may be
occasions when the vehicle responds too quickly to
allow time for reprocessing, and lines could be lost.
Hopefully this has shown how typical requests
proceed. It has not been meant to be a definitive
source on modes and PIDs – this information can be
obtained from the manufacturer of your vehicle, from
the SAE (www.sae.org), ISO (www.iso.org), or from
various other sources on the web.
ELM322DSF
Elm Electronics – Circuits for the Hobbyist
< http://www.elmelectronics.com/ >
9 of 18