ELM329
Monitoring the Bus
Some vehicles use the OBD bus for information
you are looking at a J1939 network, simply tell the
ELM329 to set the protocol to A (AT SP A), or if you
have an 11bit, 500kbps ISO15765 system, tell it
AT SP 6. The SP command description (page 21)
gives a list of all the protocols and their numbers.
If the ‘Monitor All’ command provides too much
information (it does for most CAN systems), then you
should restrict the range of data that is to be displayed.
The best way to do this is with the CAN Receive
Address command (AT CRA).
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.
To see how your vehicle uses the OBD bus, you
can enter the ELM329’s ‘Monitor All’ mode, by sending
the command AT MA from your terminal program. This
will cause the IC to display any information that it sees
on the OBD bus, regardless of transmitter or receiver
addresses (it will show all). Note that the ELM329
remains silent while monitoring, so periodic ‘wakeup’
messages are not sent, and the CAN module does not
acknowledge messages (unless CAN Silent Monitoring
has been turned off).
The monitoring mode can be stopped at any time
by putting a logic low level on the RTS pin, or by
sending a single RS232 character to the ELM329. Any
convenient character can be used to interrupt the IC
as there are no restrictions on whether it is printable,
etc. Note that any character that you send will be
discarded, and will have no effect on any subsequent
commands. The time it takes to respond to such an
interrupt will depend on what the ELM329 is doing at
the time. The IC will always finish a task that is in
progress (printing a line, for example) before printing
‘STOPPED’ and returning to wait for your input, so it is
best to wait for the prompt character (‘>’) to be sent, or
the Busy line to go low, before beginning to send a
new command.
Unexpected results occasionally occur if you have
the automatic protocol search feature enabled, and
you tell the ELM329 to begin monitoring. If the bus is
quiet, the ELM329 will begin searching for an active
protocol, but it may find something that you were not
expecting. The ELM329 may stop searching at one
protocol if the baud rate matches, or it might stop at
multiples of the actual baud rate (and then report
receive errors). If you are testing ‘on the bench’, the IC
might not even find any protocol if the silent mode is
enabled (it is by default). Be aware however, that we
do not advise setting the silent mode off (AT CSM0)
while searching for a protocol to monitor, as the
ELM329 may incorrectly interact with the CAN
network, and cause problems. In the extreme case,
the ELM329 might even have internal problems and
report an ERR94.
Perhaps you have an 11 bit system, and only want
to see messages that begin with 7. To do that, simply
type:
>AT CRA 7XX
and follow it with an AT MA command. From that point
on, all messages that begin with 7 will be displayed
(the X’s say that you do not care what those other
digits are).
Similarly, you might be working with a 29 bit CAN
system, and want to see all messages from the
engine. If the engine uses address 10, then simply
type:
>AT CRA XX XX XX 10
and follow it with an AT MA command. From that point
on, only messages with IDs that end in ‘10’ will be
displayed.
Note that the CRA filter (as well as the CF and CM
one) will reduce the amount of information seen with
the AT MA command, but there may still be times
when the rate that the information is generated by the
vehicle far exceeds that which can be handled by the
PC connection. In these cases, the internal memory
(or ‘buffer’) fills up more quickly than it is being
emptied, and you will see a BUFFER FULL error
message. If this is happening, you may wish to
consider increasing the baud rate of your connection
(see page 44).
Another way to reduce ‘BUFFER FULL’ errors is
by reducing the number of characters that are put into
the buffer. You can use AT S0 to eliminate space
characters, turn off formatting (AT CAF0) to eliminate
‘DATA ERROR’ reports, or possibly turn off the
headers (AT H0) to eliminate those bytes.
As a final note, the ELM329 can be set to begin
‘monitoring all’ automatically after power on, if PP 00 is
set to the value 00 and is enabled. This only causes
an AT MA to be sent, however - there is no facility to
automatically provide filtering of the information.
When monitoring, it is always best if you can
select the protocol for the ELM329. If you know that
ELM329DSB
Elm Electronics – Circuits for the Hobbyist
www.elmelectronics.com
41 of 76