Você está na página 1de 6

AUTO ELCTRICO

Interpretacin de Comandos OBD

Monitoreo del BUS en un Escaner OBD


Algunos vehculos usan el bus OBD para la transferencia de informacin durante el fun cionamiento normal del vehculo, transmi tiendo una gran cantidad de informacin. Se puede aprender mucho si tiene la suerte de conectarse a uno de estos vehculos y puede descifrar el contenido de los mensa jes. En esta seccin estamos desarrollando un curso para aprender la estructura de comandos OBD, a efectos de poder utilizar los en el diseo de un escaner con el cir cuito integrado ELM327, que pueda ser empleado en todos los vehculos para poder obtener los cdigos de error frente a una even tual falla. En esta edicin veremos cmo usa el bus un escaner con ELM327. Por Luis Horacio Rodrguez

Introduccin Para ver cmo usa el bus OBD su vehculo, puede ingresar al modo Monitor All del ELM327 enviando el comando AT MA desde su programa de la terminal. Esto har que el CI muestre cualquier informacin que ve en el bus OBD, sin importar las direcciones del transmisor o receptor (mostrar todo). Note que el ELM327 permanece en silencio mientras monitorea, de modo que no se envan mensajes peridicos de despertar (si tiene un bus ISO 9141 o ISO 14230 que haba sido inicializado anteriormente, puede ir a dormir), no se envan IFRs, y el mdulo CAN no reconoce mensajes. El modo de monitoreo puede detenerse poniendo un 0 lgico en la pata RTS, o enviando un solo carcter RS 232 al ELM 327. Se puede usar cualquier carcter conveniente para interrumpir al CI y no hay restricciones acerca de si es imprimible, etc. Note que el caracter que Ud. enva ser descartado, y no tendr ningn efecto en cualquier comando subsiguiente. El tiempo que le lleva responder a este carcter de interrupcin depender de

lo que est haciendo el CI cuando se recibe el carcter. El CI siempre terminar una tarea que est en progreso (por ejemplo, imprimir una lnea) antes de volver a esperar una entrada, de modo que siempre debe esperar el prompt (>) o que la lnea Busy pase a bajo, antes de comenzar a enviar un comando. Puede ocurrir un resultado inesperado si hace que se habilite la caracterstica de bsqueda automtica de protocolo, y Ud. le dice al ELM 327 que comience a monitorear. Si el bus est quieto, el CI comenzar a buscar un protocolo activo que puede no ser lo que estaba esperando. Tenga en cuenta tambin que los protocolos ISO 9141 e ISO 14230 aparentan ser idnticos cuando se monitorea, de modo que el CI parar de buscar con el ISO 9141 aunque el protocolo real sea ISO 14230. Con la habilitacin de la bsqueda automtica, debera autocorregirse cuando se haga un pedido OBD ms tarde. Si el comando Monitor All proporciona demasiada informacin (realmente lo hace para la mayora de los sistemas CAN), entonces Ud. puede restringir el rango

Saber Electrnica
76

Interpretacin de Comandos OBD


de datos que se ha de mostrar. Quizs slo quiere ver mensajes que estn siendo transmitidos por el ECU con direccin 10. Para hacer eso, simplemente tipee: > AT MT 10 y se mostrarn todos los mensajes que contengan 10 en el 3 byte del encabezamiento. El uso de este comando con sistemas CAN de 11 bits puede ser un poco confuso al principio. Recuerde la forma en que se almacenan todos los bytes de encabezamiento dentro del ELM 327. Un CAN ID de 11 bits realmente se almacena como los 11 bits menos significativos en la posicin almacenamiento de encabezamiento de 3 bytes. Se almacenar con 3 bits en la ubicacin de la direccin del receptor y los 8 bits restantes en la ubicacin de la direccin del transmisor. Para este ejemplo, hemos pedido que todos los mensajes creados por el transmisor 10 sean impresos, de modo que todos los CAN IDs de 11 bits que terminen en 10 sern mostrados (o sea, todos los que aparenten ser x10). El otro comando de monitoreo que es muy til es el comando AT MR, que busca direcciones especficas en el byte del medio del encabezamiento. Usando este comando Ud. puede buscar todos los mensajes que se envan a una direccin particular. Por ejemplo, para usarlo para buscar mensajes que se enven al ECU con direccin 10, simplemente enve > AT MR 10 y se mostrarn todos los mensajes que contengan 10 en el 2 byte del encabezamiento. El uso de este comando con sistemas CAN de 11 bits nuevamente necesitar mayor explicacin. Puede ser til ver al nmero hexadecimal 10 del ejemplo anterior como el nmero binario 0001 0000. Recuerde de antes que los CAN IDs de 11 bits realmente se almacenan como los 11 bits menos significativos en la ubicaciones del almacenamiento del encabezamiento de 3 bytes, y slo se almacenan 3 bits en el byte del medio (direccin del receptor). Cuando se compara el CAN ID recibido con la direccin que Ud. suministra con el comando MR, slo los 3 bits ms a la derecha de su direccin MR son los que se consideran y los otros bits se ignoran. En este ejemplo, el AT MR 10 efectivamente se convierte en AT MR 0 para sistemas CAN de 11 bits y realmente se mostrarn todos los mensajes que comiencen con 0 como primer dgito. A fin de usar el comando AT MR con identificadores CAN de 11 bits, siempre debe tratar de usar el formato AT MR 0x, dnde x es el dgito con el que Ud. quiere que comiencen los identificadores. Para buscar todos los 2xx's, use el comando AT MR 02, y para ver todos los 7xx's, debe usar AT MR 07. El ELM327 se puede poner para que enve automticamente el comando Monitor All a s mismo despus del encendido, si PP 00 se pone en 0 y se habilita.

Mensajes CAN Y Filtrado

Los comandos de monitoreo del ELM327 permiten algn filtrado de la informacin (con AT MR y MT ) pero esos comandos slo permiten que se defina un byte de todos los bits del encabezamiento. En los sistemas CAN, el gran volumen de informacin presente significa que esto no es suficientemente preciso, y tiene que haber un medio mejor de ms selectividad. El mdulo CAN interno del ELM 327 tiene un filtro que se puede usar para seleccionar todos los bits de ID, no slo un byte. La forma ms fcil de usar este filtro es con el comando CRA. Por ejemplo, si slo los mensajes que Ud. desea ver son los que tienen el CAN ID 7E9, entonces simplemente enve: > AT CRA 7E9 y el CI ajustar los valores internos de modo que todo lo que se muestre sean mensajes con ID 7E9. Si no quiere definir todos los 11 o 29 bits, tambin se puede definir un rango de valores, pero eso requiere establecer un mscara, adems del filtro. Como ejemplo, considere una aplicacin donde Ud. trata de monitorear mensajes de diagnstico CAN de 29 bits, exactamente como hace el ELM 327. Por definicin, estos mensajes se enviarn a la herramienta de exploracin en la direccin F1, de modo que de la ISO 157654, Ud. sabe que la posicin ID de la respuesta debe ser de la forma: DA F1 xx donde xx es la direccin del mdulo que enva el mensaje. Para usar el filtro, ingrese lo que tenga, poniendo cualquier cosa en la parte desconocida (Ud. ver por qu en un momento). El comando para poner el filtro CAN es AT CF: > AT CF 18 DA F1 00 Cmo le dice al ELM 327 que ignore esos ltimos dos ceros? Ud. lo hace con la mscara. La mscara es un dia-

Saber Electrnica
77

Auto Elctrico
grama de bits que le dice al CI qu bits del filtro son relevantes. Si el bit de la mscara es 1, ese bit de filtro es relevante, y se requiere que coincida. Todos los bits del mensaje anterior son relevantes, excepto los de los dos ltimos dgitos. Para establecer esta mscara, necesita usar el comando CAN Mask: > AT CM 1F FF FF 00 Los CAN IDs de 11 bits se tratan de la misma manera. Recuerde que se almacenan internamente en los 11 bits ms a la derecha de las posiciones usadas para CAN de 29 bits, las cuales deben considerarse cuando se crea un filtro o mscara. Como ejemplo, suponga que queremos mostrar todos los mensajes que tienen un 6 como el primer dgito del ID de 11 bits. Necesitamos establecer un filtro que busque 6: > AT CF 00 00 06 00 El ID de 11 bits se almacena en las ltimas 3 ubicaciones, de modo que el 6 aparece donde se muestra. Ahora para hacer que ese dgito sea relevante, creamos la mscara: > AT CM 00 00 0F 00 El sistema slo usa los bits ms a la derecha en este caso, de modo que podemos ser perezosos e ingresar la F como se muestra (el primer bit de la F ser ignorado, y se tratar como si hubiramos ingresado un 7). Claramente, esto puede ser bastante complicado si se usan sistemas CAN de 11 bits en forma rutinaria. Para ayudar con eso, el ELM327 ofrece algunas versiones ms cortas de los comandos CF y CM. Para usarlos en el ejemplo anterior, slo ingrese argumentos de 3 dgitos: > AT CF 600 y AT CM F00 Como en las versiones de 29 bits, slo se usan realmente los 11 dgitos menos significativos (ms a la derecha), de modo que no tiene que tener cuidado especial con el 1er. bit. Con un poco de prctica, estos comandos son fciles de aprender. Inicialmente, intente ingresar los valores del filtro y la mscara, luego use un comando tal como AT MA para ver cules son los resultados. El ELM 327 sabe que Ud. est tratando de filtrar, y combina los efectos de ambos comandos (har eso para MR y MT tambin). Los comandos MA, MR y MT todos tienen el beneficio extra de que mientras estn en efecto, el CI permanecer quieto, sin enviar reconocimiento o seales de error, de modo que cualquier cosa que haga mientras monitorea no debe perturbar a otros dispositivos que estn conectados al bus. Note que si se ha puesto un filtro, se usar para todos los mensajes CAN, de modo que establecer filtros y mscaras puede hacer que sean ignorados los pedidos OBD normales, y Ud. puede comenzar a ver NO DATA como respuesta. Si eso es lo que sucede, y no est seguro de por qu, Ud. puede querer reinicializar todo a sus valores por defecto (con AT D) y comenzar de nuevo.

Respuesta Multilnea A veces, un vehculo debe responder con ms informacin que la que un mensaje puede mostrar. En estos casos, responde con varias lneas que deben armarse en un mensaje completo. Un ejemplo de esto es un pedido del nmero de serie de un vehculo (modo 09, PID 02). Esta es una respuesta multilnea que necesita unirse. En estas situaciones, debe asegurarse que toda la respuesta ha sido recibida y est en el orden correcto antes de armar el mensaje. La respuesta real tiene un byte que muestra la secuencia de los datos. Aqu est un ejemplo para un vehculo tpico SAE J1850: >0902 49 02 49 02 49 02 49 02 49 02

01 02 03 04 05

00 44 30 35 33

00 34 30 42 34

00 47 52 31 35

31 50 35 32 36

Note que todos los vehculos compatibles con OBD no necesariamente proveen esta informacin. Los ms viejos no, pero como regla los ms nuevos s. Si su vehculo no soporta este parmetro, slo ver una respuesta NO DATA. Los primeros 2 bytes (49 y 02) en cada lnea de la respuesta anterior no muestran ninguna informacin del vehculo. Slo muestran que esta es una respuesta a un pedido 09 02. El siguiente byte en cada lnea muestra el orden en el cual deben armarse los datos. El armado del resto de los datos en ese orden, ignorando los primeros pocos 00's, da: 31 44 34 47 50 30 30 52 35 35 42 31 32 33 34 35 36 Usando una tabla ASCII para convertir esos dgitos

Saber Electrnica
78

Interpretacin de Comandos OBD


hexadecimales da el siguiente nmero de serie del vehculo : 1 D 4 G P 0 0 R 5 5 B 1 2 3 4 5 6 Los sistemas CAN mostrarn esta informacin en una forma un poco diferente. Aqu tenemos una respuesta tpica de un vehculo CAN: >0902 014 0 : 49 02 01 31 44 34 1 : 47 50 30 30 52 35 35 2 : 42 31 32 33 34 35 36 El Formateo CAN ha sido activado haciendo que la lectura de los datos sea ms fcil. Con el formateo activado, los nmeros de secuencia se muestran con dos puntos (:) despus de cada uno, de modo que puedan destacarse claramente (0:, 1:, etc.). Los sistemas CAN agregan este dgito hexadecimal (va de 0 a F y luego se repite), para ayudar a rearmar los datos, tal como lo haca el vehculo J1850. La primera lnea de esta respuesta dice que hay 014 bytes de informacin que siguen. Esto es 14 en hexadecimal, o 20 en decimal, lo cual coincide con los 6 + 7 + 7 bytes mostrados en las 3 lneas. Los nmeros de serie son de 17 dgitos, de modo que cmo armamos el nmero a partir de 20 dgitos?. La segunda lnea mostrada comienza con el familiar 49 02, dado que sta es una respuesta a un pedido 09 02. Claramente no son parte de un nmero de serie. Ocasionalmente CAN agregar un 3 byte a la respuesta que vemos a continuacin (el 01), que muestra el nmero de tems de datos que siguen (el vehculo slo puede tener un VIN, de modo que la respuesta dice que slo hay un tem de datos). Ese 3 byte se puede ignorar, de modo que esto deja 17 bytes de datos que constituyen el nmero de serie (a propsito elegido idntico al del ejemplo anterior). Todo lo que se necesita es una conversin a ASCII, a fin de leerlo como antes. Lo siguiente muestra un ejemplo de un tipo diferente de respuesta multilnea que puede ocurrir cuando 2 o ms ECUs responden a un pedido. Aqu tenemos una respuesta tpica a un pedido 01 00: >01 00 41 00 BE 3E B8 11 41 00 80 10 80 00 Esto es difcil de descifrar sin saber un poco ms de informacin. Necesitamos activar los encabezamientos para ver realmente quin est haciendo la conversacin: >AT H1 OK >01 00 48 6B 10 41 00 BE 3E B8 11 FA 48 6B 18 41 00 80 10 80 00 C0 Ahora, si Ud. analiza el encabezamiento, puede ver que el 3 byte muestra que ECU 10 (el controlador del motor) y ECU 18 (la transmisin) ambos estn respondiendo con una respuesta que es vlida para ellos. Este tipo de respuesta ocurre a menudo, y debe estar preparado para ello. Un ejemplo final muestra cmo a veces se pueden mezclar mensajes similares en un sistema CAN. Pedimos al vehculo el ID de Calibracin (09 04) y se presentan con la siguiente respuesta: >09 04 013 0 : 49 04 01 35 36 30 1 : 32 38 39 34 39 41 43 013 0 : 49 04 01 35 36 30 1 : 32 38 39 34 39 41 43 2 : 00 00 00 00 00 00 00 que es bastante confuso. El primer grupo (el grupo 013, 0:, 1:) parece tener algn sentido, pero el grupo siguiente es muy confuso. Por qu hay dos segmentos con 2? A cul perte necen? La nica forma de saber es activar los encabezamientos, y repetir su pedido: >AT H1 OK >09 7E8 7E8 7E9 7E8 7E9 7E9 04 10 21 10 22 21 22

13 32 13 00 22 00

49 38 49 00 38 00

04 39 04 00 39 00

01 34 01 00 35 00

35 39 35 00 34 00

36 41 36 00 41 00

30 43 30 31 43 00

Esta vez el orden parece ser el mismo, pero tenga en cuenta que puede no ser. Por eso es que la norma requiere que se transmitan cdigos de secuencia con las respuestas multilnea. Mirando los primeros dgitos de estas respuestas, Ud. puede ver que algunos comienzan con 7E8 y algunos comienzan con 7E9.

Saber Electrnica
79

Auto Elctrico
Estos son los CAN IDs especiales que representan a ECU # 1 y ECU # 2, respectivamente. Agrupando las respuestas de los dos ECUs da: 6 De aqu, los mensajes se pueden agrupar en el orden correcto. Para hacerlo, miremos al byte que sigue al CAN ID. Se conoce como el byte PCI, y se usa para decir qu tipo de datos sigue. En este caso, el byte PCI comienza con 1 (para un mensaje de Primer Cuadro), o un 2 (para los Cuadros Consecutivos). La 2da. mitad del byte PCI muestra el orden en el cual se debe agrupar la informacin (o sea el nmero de segmento). En este caso, los nmeros de segmento ya estn en orden, pero si no lo estuvieran, habra sido necesario reordenar los mensajes para ponerlos en orden. Cada norma OBD tiene algunas peculiaridades menores. Esperamos que esto le haya ayudado con algunas de las ms difciles. Si todava tiene problemas, le decimos que compre la norma relevante y estdiela.

Figura 1 gramas de uso libre que se consiguen por Internet. La computadora, a travs de su puerto de serie (9 pines), interroga o recibe informacin del coche. La interfase ejerce una funcin de conversin de la informacin entre la PC y el coche. Lo he probado con el programa ScanTool.ner versin 1.08, figura 2, y he conseguido algunos reportes como para comenzar a investigar aunque dista mucho de ser un circuito profesional. Recomiendo su armado para aprender sobre cdi gos OBD. !

Cable Interfase Serial a OBD El circuito de la figura 1 representa una interfase para conectar un vehculo con una computadora a travs de su puerto serial. Se trata de un esquema sencillo que emplea tres transistores. Los componentes de dicho circuito 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 Electrnica
80

Auto Elctrico

Saber Electrnica
81

Você também pode gostar