ELM320
Monitoring the Bus
Some vehicles use the OBD bus for information
who is sending to whom, you will need to first turn
headers on (AT H1) before beginning to monitor (AT
MA). Either way, you may end up with an
overwhelming amount of information that you may
want to filter, showing only specific messages.
If, for example, you find that the engine controller’s
address seems to be 10, you may want to restrict the
data displayed to only messages from that ECU. To do
so, you would monitor only for messages transmitted
from address 10, by issuing AT MT 10 from your
terminal program. Only messages with 10 in the third
byte of the header will be displayed. Similarly, you may
wish to only see messages which are being sent to
address 3B. To monitor for these, send AT MR 3B and
only messages with 3B as the second header byte will
be shown.
There are a few limitations to the current
monitoring modes that you should be aware of. First,
there is no internal buffering of OBD messages as
data is being sent on the RS232 connection, so
information may be missed while the IC is busy. If
under computer control, you may want to consider the
‘packed data’ mode to reduce the chance of this. The
second limitation is that the data being printed only
extends up to the End Of Data symbol, and does not
include any In-Frame Response bytes that may be
present. However, for most users this will not be of
consequence.
transfer during normal vehicle operation, passing a
great deal of information over it. A lot can be learned if
you have the good fortune to connect to one of these
vehicles, and are able to decipher the contents of the
messages. By the same token, you can do a lot of
harm if you are careless, so be very careful.
To see how your vehicle uses the OBD bus, you
will have to enter one of the ELM320’s monitoring
modes. The simplest is the “Monitor All” mode which is
entered into by simply sending the command AT MA
from your terminal program. Once received, the IC will
continually display any information it sees on the OBD
bus, regardless of transmitter or receiver addresses.
Monitoring modes can only be stopped by sending
something over the RS232 connection to the ELM320.
It is not critical what you send - any single character
will interrupt the processor, and return it to the
command mode waiting for an input. Note that the
character you send is discarded and has no effect on
any subsequent commands. The IC will always finish a
task in progress (printing a line, for example) before
returning to wait for input, so always wait for the
prompt character (‘>’) before continuing to issue other
commands.
If the headers are not currently displayed, simply
typing ATMA shows only the contents of messages,
not the transmitter and receiver addresses. To show
Computer Control – Using Packed Data
If a person is simply asking a vehicle for the
current Diagnostic Trouble Codes, speed is normally
not an issue, as data is displayed (essentially) as
quickly as it can be read. If interfaced to a computer,
however, speed may be important.
when in this mode – if the headers are to be displayed,
they are sent, if in monitoring mode, data is continually
sent, etc. The only difference is in the format in which
the OBD responses are returned to the controlling
computer.
The packed data mode is a convenient means to
effectively triple the ELM320’s data transfer rate while
maintaining the connection at 9600 baud. Once
entered (with AT PD), all OBD messages will be
returned as a single length byte followed by the actual
data bytes. There are no space characters sent
between bytes, no carriage returns or linefeeds – the
data is retransmitted exactly as received from the
vehicle (except for the change to 9600 baud). While no
Often there is no response from the vehicle for a
particular request. When in the default (formatted data)
mode, this is shown with ‘NO DATA’ being printed, but
while in the packed data mode you will only receive a
single length byte of value 0 (zero).
While rare, errors may occasionally be detected in
the vehicle’s data. Normally, a ‘<DATA ERROR’ would
be printed for this, but in the Packed Data mode, the
checksum (CRC) errors are identified by setting the
most significant bit of the length byte. Because of this,
one should always check the length byte for a value of
128 or greater before processing the remainder of the
message.
longer readable on
a
terminal, computers will
understand the information just the same, and will gain
speed through both reduced transfer and conversion
times. The ELM320 does not function any differently
ELM320DSC
Elm Electronics – Circuits for the Hobbyist
< http://www.elmelectronics.com/ >
12 of 16