Está en la página 1de 6

AUTO ELÉCTRICO

Interpretación de Comandos OBD


Monitoreo del BUS en un Escaner OBD
Algunos vehículos usan el bus OBD para la
transferencia de información durante el fun -
cionamiento normal del vehículo, transmi -
tiendo una gran cantidad de información.
Se puede aprender mucho si tiene la suerte
de conectarse a uno de estos vehículos y
puede descifrar el contenido de los mensa -
jes. En esta sección estamos desarrollando
un “curso” para aprender la estructura de
comandos OBD, a efectos de poder utilizar -
los en el diseño de un escaner con el cir -
cuito integrado ELM327, que pueda ser
empleado en todos los vehículos para poder obtener los códigos de error frente a una even -
tual falla. En esta edición veremos cómo usa el bus un escaner con ELM327.

Por Luis Horacio Rodríguez

Introducción lo que esté haciendo el CI cuando se recibe el carácter.


El CI siempre terminará una tarea que esté en progreso
Para ver cómo usa el bus OBD su vehículo, puede (por ejemplo, imprimir una línea) antes de volver a espe-
ingresar al modo “Monitor All” del ELM327 enviando el rar una entrada, de modo que siempre debe esperar el
comando AT MA desde su programa de la terminal. Esto “prompt” (“>”) o que la línea Busy pase a bajo, antes de
hará que el CI muestre cualquier información que ve en comenzar a enviar un comando.
el bus OBD, sin importar las direcciones del transmisor Puede ocurrir un resultado inesperado si hace que
o receptor (mostrará todo). Note que el ELM327 perma- se habilite la característica de búsqueda automática de
nece en silencio mientras monitorea, de modo que no se protocolo, y Ud. le dice al ELM 327 que comience a
envían mensajes periódicos de “despertar” (si tiene un monitorear. Si el bus está quieto, el CI comenzará a bus-
bus ISO 9141 o ISO 14230 que había sido inicializado car un protocolo activo que puede no ser lo que estaba
anteriormente, puede “ir a dormir”), no se envían IFRs, esperando. Tenga en cuenta también que los protocolos
y el módulo CAN no reconoce mensajes. ISO 9141 e ISO 14230 aparentan ser idénticos cuando
El modo de monitoreo puede detenerse poniendo un se monitorea, de modo que el CI parará de buscar con
0 lógico en la pata RTS, o enviando un solo carácter RS el ISO 9141 aunque el protocolo real sea ISO 14230.
232 al ELM 327. Se puede usar cualquier carácter con- Con la habilitación de la búsqueda automática, debería
veniente para interrumpir al CI y no hay restricciones autocorregirse cuando se haga un pedido OBD más
acerca de si es imprimible, etc. Note que el caracter que tarde.
Ud. envía será descartado, y no tendrá ningún efecto en Si el comando “Monitor All” proporciona demasiada
cualquier comando subsiguiente. El tiempo que le lleva información (realmente lo hace para la mayoría de los
responder a este carácter de interrupción dependerá de sistemas CAN), entonces Ud. puede restringir el rango

Saber Electrónica

76
Interpretación de Comandos OBD
de datos que se ha de mostrar. Quizás sólo quiere ver los 2xx's, use el comando “AT MR 02”, y para ver todos
mensajes que están siendo transmitidos por el ECU con los 7xx's, debe usar “AT MR 07”.
dirección 10. Para hacer eso, simplemente tipee: El ELM327 se puede poner para que envíe automá-
ticamente el comando Monitor All a sí mismo después
> AT MT 10 del encendido, si PP 00 se pone en 0 y se habilita.

y se mostrarán todos los mensajes que contengan


10 en el 3º byte del encabezamiento.
El uso de este comando con sistemas CAN de 11 bits Mensajes CAN Y Filtrado
puede ser un poco confuso al principio. Recuerde la
forma en que se almacenan todos los bytes de encabe-
zamiento dentro del ELM 327. Un CAN ID de 11 bits Los comandos de monitoreo del ELM327 permiten
realmente se almacena como los 11 bits menos signifi- algún filtrado de la información (con AT MR y MT ) pero
cativos en la posición “almacenamiento de encabeza- esos comandos sólo permiten que se defina un byte de
miento” de 3 bytes. Se almacenará con 3 bits en la ubi- todos los bits del encabezamiento. En los sistemas
cación de la dirección del receptor y los 8 bits restantes CAN, el gran volumen de información presente significa
en la ubicación de la dirección del transmisor. Para este que esto no es suficientemente preciso, y tiene que
ejemplo, hemos pedido que todos los mensajes creados haber un medio mejor de más selectividad.
por el transmisor “10” sean impresos, de modo que El módulo CAN interno del ELM 327 tiene un “filtro”
todos los CAN IDs de 11 bits que terminen en 10 serán que se puede usar para seleccionar todos los bits de ID,
mostrados (o sea, todos los que aparenten ser “x10”). no sólo un byte. La forma más fácil de usar este filtro es
El otro comando de monitoreo que es muy útil es el con el comando CRA. Por ejemplo, si sólo los mensajes
comando AT MR, que busca direcciones específicas en que Ud. desea ver son los que tienen el CAN ID 7E9,
el byte del medio del encabezamiento. Usando este entonces simplemente envíe:
comando Ud. puede buscar todos los mensajes que se
envían a una dirección particular. Por ejemplo, para > AT CRA 7E9
usarlo para buscar mensajes que se envíen al ECU con
dirección 10, simplemente envíe y el CI ajustará los valores internos de modo que
todo lo que se muestre sean mensajes con ID 7E9.
> AT MR 10 Si no quiere definir todos los 11 o 29 bits, también se
puede definir un rango de valores, pero eso requiere
y se mostrarán todos los mensajes que contengan establecer un “máscara”, además del filtro.
10 en el 2º byte del encabezamiento. Como ejemplo, considere una aplicación donde Ud.
El uso de este comando con sistemas CAN de 11 trata de monitorear mensajes de diagnóstico CAN de 29
bits nuevamente necesitará mayor explicación. Puede bits, exactamente como hace el ELM 327. Por definición,
ser útil ver al número hexadecimal “10” del ejemplo ante- estos mensajes se enviarán a la herramienta de explo-
rior como el número binario “0001 0000”. Recuerde de ración en la dirección F1, de modo que de la ISO 15765-
antes que los CAN IDs de 11 bits realmente se almace- 4, Ud. sabe que la posición ID de la respuesta debe ser
nan como los 11 bits menos significativos en la ubica- de la forma:
ciones del “almacenamiento del encabezamiento” de 3
bytes, y sólo se almacenan 3 bits en el byte del medio DA F1 xx
(dirección del receptor). Cuando se compara el CAN ID donde xx es la dirección del módulo que envía el
recibido con la dirección que Ud. suministra con el mensaje.
comando MR, sólo los 3 bits más a la derecha de su Para usar el filtro, ingrese lo que tenga, poniendo
dirección MR son los que se consideran y los otros bits cualquier cosa en la parte desconocida (Ud. verá por
se ignoran. En este ejemplo, el AT MR 10 efectivamente qué en un momento). El comando para poner el filtro
se convierte en AT MR 0 para sistemas CAN de 11 bits CAN es AT CF:
y realmente se mostrarán todos los mensajes que
comiencen con “0” como primer dígito. > AT CF 18 DA F1 00
A fin de usar el comando AT MR con identificadores
CAN de 11 bits, siempre debe tratar de usar el formato ¿Cómo le dice al ELM 327 que ignore esos últimos
“AT MR 0x”, dónde “x” es el dígito con el que Ud. quiere dos ceros?
que comiencen los identificadores. Para buscar todos Ud. lo hace con la máscara. La máscara es un dia-

Saber Electrónica

77
Auto Eléctrico
grama de bits que le dice al CI qué bits del filtro son rele- beneficio extra de que mientras están en efecto, el CI
vantes. Si el bit de la máscara es 1, ese bit de filtro es permanecerá quieto, sin enviar reconocimiento o seña-
relevante, y se requiere que coincida. Todos los bits del les de error, de modo que cualquier cosa que haga
mensaje anterior son relevantes, excepto los de los dos mientras monitorea no debe perturbar a otros dispositi-
últimos dígitos. Para establecer esta máscara, necesita vos que están conectados al bus.
usar el comando CAN Mask: Note que si se ha puesto un filtro, se usará para
todos los mensajes CAN, de modo que establecer filtros
> AT CM 1F FF FF 00 y máscaras puede hacer que sean ignorados los pedi-
dos OBD normales, y Ud. puede comenzar a ver “NO
Los CAN IDs de 11 bits se tratan de la misma mane- DATA” como respuesta. Si eso es lo que sucede, y no
ra. Recuerde que se almacenan internamente en los 11 está seguro de por qué, Ud. puede querer reinicializar
bits más a la derecha de las posiciones usadas para todo a sus valores por defecto (con AT D) y comenzar de
CAN de 29 bits, las cuales deben considerarse cuando nuevo.
se crea un filtro o máscara. Como ejemplo, suponga que
queremos mostrar todos los mensajes que tienen un 6
como el primer dígito del ID de 11 bits. Necesitamos Respuesta Multilínea
establecer un filtro que busque 6:
A veces, un vehículo debe responder con más infor-
> AT CF 00 00 06 00 mación que la que un “mensaje” puede mostrar. En
estos casos, responde con varias líneas que deben
El ID de 11 bits se almacena en las últimas 3 ubica- armarse en un mensaje completo.
ciones, de modo que el 6 aparece donde se muestra. Un ejemplo de esto es un pedido del número de serie
Ahora para hacer que ese dígito sea relevante, creamos de un vehículo (modo 09, PID 02). Esta es una respues-
la máscara: ta multilínea que necesita unirse. En estas situaciones,
debe asegurarse que toda la respuesta ha sido recibida
> AT CM 00 00 0F 00 y está en el orden correcto antes de armar el mensaje.
La respuesta real tiene un byte que muestra la secuen-
El sistema sólo usa los bits más a la derecha en este cia de los datos. Aquí está un ejemplo para un vehículo
caso, de modo que podemos ser perezosos e ingresar típico SAE J1850:
la F como se muestra (el primer bit de la F será ignora-
do, y se tratará como si hubiéramos ingresado un 7). >0902
Claramente, esto puede ser bastante complicado si 49 02 01 00 00 00 31
se usan sistemas CAN de 11 bits en forma rutinaria. 49 02 02 44 34 47 50
Para ayudar con eso, el ELM327 ofrece algunas versio- 49 02 03 30 30 52 35
nes más cortas de los comandos CF y CM. Para usarlos 49 02 04 35 42 31 32
en el ejemplo anterior, sólo ingrese argumentos de 3 49 02 05 33 34 35 36
dígitos:
Note que todos los vehículos compatibles con OBD
> AT CF 600 no necesariamente proveen esta información. Los más
y viejos no, pero como regla los más nuevos sí. Si su vehí-
AT CM F00 culo no soporta este parámetro, sólo verá una respues-
ta “NO DATA”.
Como en las versiones de 29 bits, sólo se usan real- Los primeros 2 bytes (49 y 02) en cada línea de la
mente los 11 dígitos menos significativos (más a la dere- respuesta anterior no muestran ninguna información del
cha), de modo que no tiene que tener cuidado especial vehículo. Sólo muestran que esta es una respuesta a un
con el 1er. bit. pedido 09 02. El siguiente byte en cada línea muestra el
Con un poco de práctica, estos comandos son fáci- orden en el cual deben armarse los datos. El armado del
les de aprender. Inicialmente, intente ingresar los valo- resto de los datos en ese orden, ignorando los primeros
res del filtro y la máscara, luego use un comando tal pocos 00's, da:
como AT MA para ver cuáles son los resultados. El ELM
327 sabe que Ud. está tratando de filtrar, y combina los 31 44 34 47 50 30 30 52 35 35 42 31 32 33 34 35 36
efectos de ambos comandos (hará eso para MR y MT
también). Los comandos MA, MR y MT todos tienen el Usando una tabla ASCII para convertir esos dígitos

Saber Electrónica

78
Interpretación de Comandos OBD
hexadecimales da el siguiente número de serie del vehí- >AT H1
culo : OK

1 D 4 G P 0 0 R 5 5 B 1 2 3 4 5 6 >01 00
48 6B 10 41 00 BE 3E B8 11 FA
Los sistemas CAN mostrarán esta información en 48 6B 18 41 00 80 10 80 00 C0
una forma un poco diferente. Aquí tenemos una res-
puesta típica de un vehículo CAN: Ahora, si Ud. analiza el encabezamiento, puede ver
que el 3º byte muestra que ECU 10 (el controlador del
>0902 motor) y ECU 18 (la transmisión) ambos están respon-
014 diendo con una respuesta que es válida para ellos. Este
0 : 49 02 01 31 44 34 tipo de respuesta ocurre a menudo, y debe estar prepa-
1 : 47 50 30 30 52 35 35 rado para ello.
2 : 42 31 32 33 34 35 36 Un ejemplo final muestra cómo a veces se pueden
“mezclar” mensajes similares en un sistema CAN.
El Formateo CAN ha sido activado haciendo que la Pedimos al vehículo el ID de Calibración (09 04) y se
lectura de los datos sea más fácil. Con el formateo acti- presentan con la siguiente respuesta:
vado, los números de secuencia se muestran con dos
puntos (“:”) después de cada uno, de modo que puedan >09 04
destacarse claramente (0:, 1:, etc.). Los sistemas CAN 013
agregan este dígito hexadecimal (va de 0 a F y luego se 0 : 49 04 01 35 36 30
repite), para ayudar a rearmar los datos, tal como lo 1 : 32 38 39 34 39 41 43
hacía el vehículo J1850. 013
La primera línea de esta respuesta dice que hay 014 0 : 49 04 01 35 36 30
bytes de información que siguen. Esto es 14 en hexade- 1 : 32 38 39 34 39 41 43
cimal, o 20 en decimal, lo cual coincide con los 6 + 7 + 7 2 : 00 00 00 00 00 00 00
bytes mostrados en las 3 líneas. Los números de serie
son de 17 dígitos, de modo que ¿cómo armamos el que es bastante confuso. El primer grupo (el grupo
número a partir de 20 dígitos?. La segunda línea mostra- 013, 0:, 1:) parece tener algún sentido, pero el grupo
da comienza con el familiar 49 02, dado que ésta es una siguiente es muy confuso.
respuesta a un pedido 09 02. Claramente no son parte de
un número de serie. Ocasionalmente CAN agregará un 3º ¿Por qué hay dos segmentos con 2? ¿A cuál perte -
byte a la respuesta que vemos a continuación (el “01”), necen?
que muestra el número de ítems de datos que siguen (el La única forma de saber es activar los encabeza-
vehículo sólo puede tener un VIN, de modo que la res- mientos, y repetir su pedido:
puesta dice que sólo hay un ítem de datos). Ese 3º byte
se puede ignorar, de modo que esto deja 17 bytes de >AT H1
datos que constituyen el número de serie (a propósito OK
elegido idéntico al del ejemplo anterior). Todo lo que se
necesita es una conversión a ASCII, a fin de leerlo como >09 04
antes. Lo siguiente muestra un ejemplo de un tipo dife- 7E8 10 13 49 04 01 35 36 30
rente de respuesta multilínea que puede ocurrir cuando 2 7E8 21 32 38 39 34 39 41 43
o más ECUs responden a un pedido. Aquí tenemos una 7E9 10 13 49 04 01 35 36 30
respuesta típica a un pedido 01 00: 7E8 22 00 00 00 00 00 00 31
7E9 21 22 38 39 35 34 41 43
>01 00 7E9 22 00 00 00 00 00 00 00
41 00 BE 3E B8 11
41 00 80 10 80 00 Esta vez el orden parece ser el mismo, pero tenga
en cuenta que puede no ser. Por eso es que la norma
Esto es difícil de descifrar sin saber un poco más de requiere que se transmitan códigos de secuencia con
información. Necesitamos activar los encabezamientos las respuestas multilínea. Mirando los primeros dígitos
para ver realmente “quién” está haciendo la conversa- de estas respuestas, Ud. puede ver que algunos
ción: comienzan con 7E8 y algunos comienzan con 7E9.

Saber Electrónica

79
Auto Eléctrico
Estos son los CAN
IDs especiales que
representan a ECU
# 1 y ECU # 2, res-
pectivamente.
Agrupando las res-
puestas de los dos
ECUs da:

De aquí, los
mensajes se pue-
den agrupar en el
orden correcto.
Para hacerlo, mire-
mos al byte que
sigue al CAN ID. Se
conoce como el
byte PCI, y se usa
para decir qué tipo
de datos sigue. En Figura 1
este caso, el byte
PCI comienza con 1 (para un mensaje de “Primer gramas de uso libre que se consiguen por Internet.
Cuadro”), o un 2 (para los “Cuadros Consecutivos”). La La computadora, a través de su puerto de serie (9
2da. mitad del byte PCI muestra el orden en el cual se pines), interroga o recibe información del coche.
debe agrupar la información (o sea el número de seg- La interfase ejerce una función de conversión de la
mento). En este caso, los números de segmento ya información entre la PC y el coche.
están en orden, pero si no lo estuvieran, habría sido Lo he probado con el programa ScanTool.ner versión
necesario reordenar los mensajes para ponerlos en 1.08, figura 2, y he conseguido algunos reportes como
orden. para “comenzar a investigar” aunque dista mucho de ser
Cada norma OBD tiene algunas peculiaridades un circuito profesional.
menores. Esperamos que esto le haya ayudado con
algunas de las más difíciles. Si todavía tiene problemas, Recomiendo su armado para aprender sobre códi -
le decimos que compre la norma relevante y estúdiela. gos OBD. ✪

Cable Interfase Serial a OBD

El circuito de la figura 1 representa una


interfase para conectar un vehículo con una
computadora a través de su puerto serial. Se
trata de un esquema sencillo que emplea tres
transistores. Los componentes de dicho circui-
to son los siguientes:

R1,2,6,7,9,10 - 560 ohm


R3,4,5,8 - 4k7
T1 - BC556 or 2N3906
T2,T3 - BC546 or 2N3904

Se trata de un circuito experimental que


puede ser utilizado con culaquiera de los pro- Figura 2

Saber Electrónica

80
Auto Eléctrico

Saber Electrónica

81

También podría gustarte