ELM327
Setting the Headers
The emissions related diagnostic trouble codes
byte. You may find that some requests, being of a low
priority, may not be answered immediately, possibly
causing a ‘NO DATA’ result. In these cases, you may
want to adjust the timeout value, perhaps first trying
the maximum (ie use AT ST FF). Many vehicles will
simply not support these extra addressing modes.
The other, and more common method of obtaining
information is by physical addressing, in which you
direct your request to a specific device, not to a
functional group. To do this, you again need to
construct a set of header bytes that direct your query
to the physical address of the processor, or ECU. If
you do not know the address, recall that the sender of
information is usually shown in the third byte of the
header. By monitoring your system for a time with the
headers turned on (AT H1), you can quickly learn the
main addresses of the senders. The SAE document
J2178 assigns address ranges to these devices if you
are unsure of which might be most appropriate.
When you know the address that you wish to
‘speak to,’ simply use it for the second byte in the
header (assume an address of 10 for this example).
Combine that with your knowledge of SAE J2178 to
choose a priority/type byte (assume a value of E4 for
this example, as if the vehicle is J1850 PWM). Finally,
you need to identify yourself to the target, so that
responses can be returned to you. As is customary for
diagnostic tools, we’ll use an address of F1. As before,
these three bytes are then assigned to the header with
the set header command:
that most people are familiar with are described in the
SAE J1979 standard (ISO15031-5). They represent
only a portion of the data that a vehicle may have
available – much more can be obtained if you are able
to direct the requests elsewhere.
Accessing most OBDII diagnostics information
requires that requests be made to what is known as a
a ‘functional address.’ Any processor that supports the
function will respond to the request (and theoretically,
many different processors can respond to a single
functional request). In addition, every processor (or
ECU) will also respond to what is known as their
physical address. It is the physical address that
uniquely identifies each module in a vehicle, and
permits you to direct more specific queries to only one
particular module.
To retrieve information beyond that of the OBDII
requirements then, it will be necessary to direct your
requests to either a different functional address, or to
an ECU’s physical address. This is done by changing
the data bytes in the message header.
As an example of functional addressing, let us
assume that you want to request that the processor
responsible for Engine Coolant provide the current
Fluid Temperature. You do not know its address, so
you consult the SAE J2178 standard and determine
that Engine Coolant is functional address 48. SAE
standard J2178 also tells you that for your J1850 VPW
vehicle, a priority byte of A8 is appropriate. Finally,
knowing that a scan tool is normally address F1, you
have enough information to specify the three header
bytes (A8 48 and F1). To tell the ELM327 to use these
new header bytes, all you need is the Set Header
command:
>AT SH E4 10 F1
OK
From this point on, all messages that the ELM327
sends will use these three bytes for the header. All that
needs to be done now is to request data from the
vehicle. For physical addressing, this is often done
using mode 22:
>AT SH A8 48 F1
OK
The three header bytes assigned in this manner
will stay in effect until changed by the next AT SH
command, a reset, or an AT D.
>22 11 6B
62 11 6B 00 00
Having set the header bytes, you now need only
send the secondary ID for fluid temperature (10) at the
prompt. If the display of headers is turned off, the
conversation could look like this:
The response to this command is of the same
format to those seen for ‘standard’ OBD requests. The
request has been repeated (with 40 added to the
mode value in order to show that this is a response),
and this is followed by the actual data (00 00 in this
case). The PIDs used with mode 22 are usually
proprietary to each manufacturer and are generally not
published widely, so you may have difficulty in
determining the ones to use with your vehicle. Elm
>10
10 2E
The first byte in the response echoes the request,
as usual, while the data that we requested is the 2E
ELM327DSI
Elm Electronics – Circuits for the Hobbyist
www.elmelectronics.com
38 of 82