descripción de una interfase obd ii con elm327: selección del protocolo

6
E l ELM 327 soporta varios pro- tocolos OBD diferentes, los cuales se detallan en la tabla 1. Como usuario, nunca tiene que elegir cuál debe usar dado que los ajustes de fábrica hacen que se rea- lice una búsqueda automática pero mientras está experimentando, Ud. puede querer especificar qué proto- colo hay que usar. Por ejemplo, si sabe que su vehículo usa el protocolo SAE J1850 VPW, Ud. puede querer que el ELM327 use sólo ese protocolo y ningún otro. Si eso es lo que quiere, simple- mente determine el número de pro- tocolo, luego use el comando AT “Set Protocol”: > AT SP 2 OK De aquí en más, el protocolo por defecto será el 2 (o cualquiera que haya elegido). Verifique esto pregun- tando al ELM 327 que describa el protocolo: > AT DP SAE J1850 VPW ¿Qué sucede si su amigo tiene un vehículo que usa ISO 9141-2? ¿Cómo usa ahora la interfaz del ELM 327 para ese vehículo si está fijado en el J1850? Una posibilidad es cam- biar su selección de proto- colo para permitir la bús- queda automática de otro protocolo si falla el corrien- te. Esto se hace poniendo una “A” con el número de protocolo: > AT SP A2 OK > AT DP AUTO, SAE J1850 VPW Ahora el ELM 327 comenzará intentando el protocolo 2, pero luego comenzará automáticamente a buscar otro protocolo en caso de que falle la conexión con el protocolo 2 (como sucedería cuando Ud. trata de conec- tar al vehículo de su amigo). Descripción de una Interfase OBD II con ELM327 Selección del Protocolo En esta sección estamos desarrollando un “curso” para aprender la estructura de coman - dos OBD, a efectos de poder utilizarlos en el diseño de un escaner con el circuito inte - grado ELM327, que pueda ser empleado en todos los vehículos para poder obtener los códigos de error frente a una eventual falla. En la edición anterior explicamos cómo es la secuencia de comunicación del integrado con la computadora del vehículo y en este artículo ya definiremos cómo es la estructu - ra de un comando OBD. Por Luis Horacio Rodríguez Saber Electrónica 75 AUTO ELÉCTRICO Tabla 1

Upload: diego-vallejo

Post on 12-Mar-2016

223 views

Category:

Documents


7 download

DESCRIPTION

En esta sección estamos desarrollando un “curso” para aprender la estructura de comandos OBD, a efectos de poder utilizarlos en el diseño de un escaner con el circuito integrado ELM327, que pueda ser empleado en todos los vehículos para poder obtener los códigos de error frente a una eventual falla. En la edición anterior explicamos cómo es la secuencia de comunicación del integrado con la computadora del vehículo y en este artículo ya definiremos cómo es la estructura de un comando OBD.

TRANSCRIPT

Page 1: Descripción de una Interfase OBD II con ELM327: Selección del Protocolo

El ELM 327 soporta varios pro-tocolos OBD diferentes, loscuales se detallan en la tabla

1. Como usuario, nunca tiene queelegir cuál debe usar dado que losajustes de fábrica hacen que se rea-lice una búsqueda automática peromientras está experimentando, Ud.puede querer especificar qué proto-colo hay que usar.

Por ejemplo, si sabe que suvehículo usa el protocolo SAE J1850V P W, Ud. puede querer que elELM327 use sólo ese protocolo yningún otro.

Si eso es lo que quiere, simple-mente determine el número de pro-tocolo, luego use el comando AT“Set Protocol”:

> AT SP 2OK

De aquí en más, el protocolo pordefecto será el 2 (o cualquiera quehaya elegido). Verifique esto pregun-

tando al ELM 327 que describa elprotocolo:

> AT DPSAE J1850 VPW

¿Qué sucede si su amigo tiene

un vehículo que usa ISO

9141-2? ¿Cómo usa ahora

la interfaz del ELM 327 para

ese vehículo si está fijado

en el J1850?

Una posibilidad es cam-biar su selección de proto-colo para permitir la bús-queda automática de otroprotocolo si falla el corrien-te. Esto se hace poniendouna “A” con el número deprotocolo:

> AT SP A2OK

> AT DPAUTO, SAE J1850 VPW

Ahora el ELM 327 comenzaráintentando el protocolo 2, pero luegocomenzará automáticamente a buscarotro protocolo en caso de que falle laconexión con el protocolo 2 (comosucedería cuando Ud. trata de conec-tar al vehículo de su amigo).

Descripción de una Interfase OBD II con ELM327

Selección del ProtocoloEn esta sección estamos desarrollando un “curso” para aprender la estructura de coman -

dos OBD, a efectos de poder utilizarlos en

el diseño de un escaner con el circuito inte -

grado ELM327, que pueda ser empleado en

todos los vehículos para poder obtener los

códigos de error frente a una eventual falla.

En la edición anterior explicamos cómo es

la secuencia de comunicación del integrado

con la computadora del vehículo y en este

artículo ya definiremos cómo es la estructu -

ra de un comando OBD.

Por Luis Horacio Rodríguez

Saber Electrónica

75

AUTO ELÉCTRICO

Tabla 1

Auto Ele - selecc protocoolo 3/16/10 11:40 PM Página 75

Page 2: Descripción de una Interfase OBD II con ELM327: Selección del Protocolo

El comando Set Protocol ocasio-na una escritura inmediata en laEEPROM interna, incluso antes deintentar la conexión al vehículo. Estaescritura consume tiempo, afecta elestablecimiento del siguiente arran-que, y realmente puede que no seaadecuado si el protocolo selecciona-do no es correcto para el vehículo.Para permitir una prueba antes deque ocurra una escritura, el ELM327 ofrece otro comando: TP (TryProtocol). Try Protocol es muy simi-lar a Set Protocol. Se usa exacta-mente de la misma manera que elcomando AT SP y la única diferenciaes que una escritura en la memoriainterna sólo ocurre después que seencuentra un protocolo válido y sólosi se habilita la función de memoria(M0/M1). Para el ejemplo anterior, loúnico que se necesita enviar es:

> AT TP A2OK

Muchas veces es muy difícilsaber qué protocolo probar primero.En estos casos, lo mejor es simple-mente dejar al ELM 327 que decidaqué usar. Esto se hace diciéndoleque use el protocolo 0 (con loscomandos SP o TP).

Para hacer que el ELM 327 auto-máticamente busque un protocolopara usar, simplemente envíe:

> AT SP 0OK

y cuando tenga que enviar el pró-ximo comando OBD, el ELM 327automáticamente buscará uno queresponda. Ud. verá un mensaje“SEARCHING…”, seguido de unarespuesta, después de lo cual Ud.puede preguntar al CI qué protocoloencontró (enviando AT DP). Las pri-meras versiones del ELM 327 usa-ban el orden de búsqueda recomen-dado por la SAE (protocolo 1, 2, 3,etc.), pero recientes versiones del CImodifican el orden de la búsqueda

en base a cualquier entrada queesté presente. Si Ud. necesita seguirel orden de SAE J 1978, necesitaráseleccionar cada protocolo con loscomandos SP o TP.

La búsqueda automática funcio-na bien con los sistemas OBDII,pero puede ser que no sea lo quenecesite si está experimentando.Durante una búsqueda, el ELM igno-ra cualquier encabezado o encabe-zamiento que Ud. haya definido pre-viamente (dado que siempre hayuna posibilidad de que su encabeza-miento puede que no resulte en unarespuesta), y usa los valores deencabezado OBD por defecto decada protocolo. También usará pedi-dos normales (o sea, 01 00) duran-te las búsquedas. Si esto no es loque quiere, los resultados puedenser un poco frustrantes.

Para usar sus propios valores (ydatos) de encabezado cuando inten-ta conectar a un ECU, no le diga alELM 327 que use el protocolo 0. Encambio, dígale que use sólo su pro-tocolo blanco (o sea, AT SP n), o delo contrario, dígale que use el suyocon búsquedas automáticas permi-tidas en caso de falla (o sea, AT SPAn). Luego envíe su pedido, con losencabezados asignados como serequiere. El CI intentará conectarseusando sus encabezados y susdatos, y sólo si falla (y Ud. ha elegi-do el protocolo con el método AT SPAn) buscará usando los valoresOBD por defecto. En general, el99% de todos los usuarios encuen-tra que funciona muy bien la habilita-ción de la memoria (poniendo lapata 5 en 5V) y la elección de laopción “Auto” la primera vez (laforma más fácil es decir AT S P0).Después de la búsqueda inicial, elprotocolo usado por su vehículo seconvierte en el nuevo por defecto(de modo que se prueba primerocada vez), y si se usa la interfaz enotro vehículo, sólo hay un demoramenor mientras realiza una búsque-da automática.

Formato de un Mensaje OBD

Hasta ahora hemos tratado sola-mente los contenidos (porción dedatos) de un mensaje OBD, e hici-mos una mención al pasar de otraspartes tales como encabezados ysumas verificadoras, que todos losmensajes usan en alguna medida.

Los sistemas OBD se diseñanpara que sean muy flexibles, propor-cionando un medio para quemuchos dispositivos se comuniquenentre sí. A fin de que se envíen losmensajes entre dispositivos, esnecesario agregar información quedescriba el tipo de información quese envía, el dispositivo al cual seenvía, y quizás qué dispositivo haceel envío. Además, la importancia delos mensajes adquiere relevanciatambién. Poe ejemplo, la informa-ción sobre la posición del cigüeñalen verdad es de mucha más impor-tancia para un motor en funciona-miento que un pedido del número decódigos de fallas almacenado, o elnúmero de serie del vehículo. Enconsecuencia, para dar importanciasegún el mensaje, se les asigna unaprioridad.

La información que describe laprioridad, el receptor y el transmisorusualmente son necesarios para elreceptor incluso antes de que conoz-ca el tipo de pedido que contiene elmensaje. Para asegurar que estainformación se obtiene primero, lossistemas OBD la transmiten alcomienzo (o encabezamiento) delmensaje.

Dado que estos bytes están en elencabezado, se los conoce comobytes de encabezamiento. La figura1 muestra la estructura típica delmensaje OBD que se usa en las nor-mas JAE J1850, ISO 9141-2 e ISO14230-4. Como se muestra, usa 3bytes de encabezado para propor-cionar detalles acerca de la priori-dad, el receptor y el transmisor. Noteque muchos textos llaman al recep-tor la “Dirección Blanco”, y al trans-

Saber Electrónica

76

Auto Eléctrico

Auto Ele - selecc protocoolo 3/16/10 11:40 PM Página 76

Page 3: Descripción de una Interfase OBD II con ELM327: Selección del Protocolo

misor la “Direccion Fuente”. Otrapreocupación cuando se envía cual-quier mensaje es que pueden ocu-rrir errores en la transmisión y losdatos pueden ser interpretados fal-samente. Para detectar errores, losdistintos protocolos suministranalguna forma de verificación de losdatos recibidos. Esto puede ser tansimple como un cálculo de suma detodos los valores de los bytes y seenvía al final de un mensaje. Si elreceptor también calcula una sumaa medida que se reciben los bytes,entonces se pueden comparar losdos valores y si no coinciden, elreceptor sabrá que ha ocurrido unerror. Dado que las simples sumasno podrían detectar múltiples erro-res, a menudo se usa una sumamás confiable (y más complicada)llamada Verificación deRedundancia Cíclica (“CRC”). Todoslos protocolos especifican cómo setienen que detectar los errores y lasdiversas formas de tratarlos si ocu-rren. Los bytes de datos OBD poreso se encapsulan dentro de unmensaje, con los bytes de encabe-zamiento al comienzo, y la suma deverificación al final. Los protocolosJ1850, ISO 9141-2, e ISO 14230-4todos usan esencialmente la mismaestructura, con 3 bytes de encabe-zado, un máximo de 7 bytes dedatos y un byte de suma verificado-ra. El protocolo ISO 15765-4 (CAN)

usa una estructura muy similar (veala figura 2) con la principal diferenciasolamente relacionada con laestructura del encabezamiento. Losbytes de encabezamiento CAN nose llaman así sino “bits ID”. Lanorma CAN inicial definía los bits IDcomo 11 en número, mientras que lanorma CAN más reciente ahora per-mite 11 o 29.

El ELM327 normalmente nomuestra ninguno de estos bytesextras a menos que active esacaracterística con el comandoHeaders On (AT H1). Emitiéndolo,Ud. puede ver los bytes de encabe-zamiento y el byte de suma de veri-ficación (para los protocolos J1850,ISO 9141 e ISO 14230). Para losprotocolos CAN. Ud. verá los bits ID,y otros ítems que están normalmen-te ocultos tales como el byte PCIpara la ISO 15765, o los códigos delongitud de datos (si se habilitan conPP 29 o AT D1).

Note que el CI no muestra lainformación de la suma verificadorapara los sistemas CAN, o los bytesIFR para los sistemas J 1850. No esnecesario que alguna vez tenga quefijar estos bytes de encabezamiento,o ejecutar un cálculo de suma verifi-cadora, dado que el CI siempre lohará para Ud.. Los bytes de encabe-zamiento son ajustables, no obstan-te, en caso de que desee experi-mentar usando técnicas avanzadas

tales como direccionamiento físico.La sección siguiente trata sobrecómo hacerlo.

Establecimiento

del Encabezado

En la norma SAE J 1979 se des-criben las emisiones relacionadascon los códigos de diagnóstico defallas. Representan sólo una partede los datos que puede tener unvehículo.

El acceso a la mayoría de lainformación de diagnóstico OBD IIrequiere que los pedidos se hagan alo que se conoce como “direcciónfuncional”. Cualquier procesadorque soporte la función responderá alpedido (y teóricamente, muchos pro-cesadores diferentes pueden res-ponder a un solo pedido funcional).Además, cada procesador (o ECU)también responderá a lo que seconoce como su dirección física. Esla dirección física que identifica uní-vocamente a cada módulo de unvehículo, y le permite dirigir pedidosmás específicos a un solo móduloen particular.

Para recuperar la informaciónmás allá de los requerimientos, seránecesario dirigir nuestros pedidos auna dirección funcional diferente o auna dirección física del ECU. Estose hace cambiando los bytes de

Saber Electrónica

77

Escáner OBD II con LM327

Figura 1

Figura 2

Auto Ele - selecc protocoolo 3/16/10 11:40 PM Página 77

Page 4: Descripción de una Interfase OBD II con ELM327: Selección del Protocolo

datos del encabezamiento del men-saje. Como ejemplo de direcciona-miento funcional, supongamos quequiere pedir que el procesador res-ponsable del refrigerante del motorsuministre la temperatura corrientedel fluido. Ud. no conoce su direc-ción, de modo que consulta a lanorma SAE J 2178 y determina quela dirección funcional del refrigeran-te del motor es 48. La norma SAEJ 2178 también le dice que para suvehículo J 1850 VPW es adecuadoun byte de prioridad de A 8 .Finalmente, sabiendo que unaherramienta de exploración es nor-malmente la dirección F1, Ud. tienesuficiente información para especifi-car los 3 bytes de encabezamiento(A8 48 y F1). Para decirle alELM327 que use estos nuevos bytesde encabezamiento, lo único quenecesita es el comando Set Header:

>AT SH A8 48 F1OK

Los 3 bytes de encabezamientoasignados de esta manera permane-cerán en efecto hasta que se cam-bien mediante el siguiente comandoAT SH, una reinicialización, o un ATD.

Habiendo establecido los bytesde encabezamiento, ahora sólonecesita enviar el ID secundario dela temperatura del fluido (10) ante elprompt. Si se desactiva la presenta-ción de los encabezamientos, laconversación podría ser así:

>1010 2E

El primer byte de la respuestarepite el pedido, como de costum-bre, mientras que los datos quepedimos son el byte 2E. Ud. puedeencontrar en algunos pedidos, queson de baja prioridad, no se respon-den inmediatamente, ocasionandoun “NO DATA”. En estos casos, Ud.puede querer ajustar el valor del

tiempo de exclusión, primero pro-bando el máximo (o sea, use AT STFF). Muchos vehículos simplementeno soportarán estos modos de direc-cionamiento.

El otro modo, y método máscomún de obtener información, es elde direccionamiento físico, en el cualUd. dirige su pedido a un dispositivoespecifico, no a un grupo funcional.Para hacerlo, nuevamente necesitaconstruir un conjunto de bytes deencabezamiento que dirige su pedi-do a la dirección física del procesa-dor, o ECU. Si no conoce la direc-ción, recuerde que el transmisor dela información usualmente se mues-tra en el 3er. byte del encabeza-miento. Monitoreando su sistemadurante un tiempo con los encabe-zamientos activados (AT H1), Ud.puede aprender rápidamente lasdirecciones principales de los trans-misores. La norma SAE J2178 asig-na rangos de direcciones a estosdispositivos si Ud. está inseguro decuál es el más adecuado.

Cuando Ud. conoce la direccióna la cual desea “hablar”, simplemen-te úsela en el 2do. byte del encabe-zamiento (suponga una dirección de10 para este ejemplo). Combine estocon su conocimiento de SAE J2178para elegir un byte de prioridad/tipo(suponga un valor E4 para esteejemplo, suponiendo un vehículoJ1850 PWM). Finalmente, necesitaidentificarse ante el receptor demodo que las respuestas puedanvolver a Ud. Como es costumbre enlas herramientas de diagnóstico,usaremos una dirección F1. Comoantes, estos 3 bytes entonces seasignan al encabezamiento con elcomando Set Header:

AT SH E4 10 F1OK

De aquí en más, todos los men-sajes que envíe el ELM327 usaránestos 3 bytes en el encabezamiento.Ahora lo único que hay que hacer es

pedir los datos del vehículo. En eldireccionamiento físico, esto sehace a menudo usando el modo 22:

> 22 11 6B62 11 6B 00 00

La respuesta a este comando esdel mismo formato que los vistospara pedidos OBD “normales”. Elpedido ha sido repetido (con 40agregado al valor de modo a fin demostrar que ésta es una respuesta),y a esto le siguen los datos reales(0000 en este caso).

Los PIDs usados en el modo 22usualmente pertenecen a cada fabri-cante y no se publican ampliamente,de modo que Ud. puede tener difi-cultad en determinar los que hayque usar en su vehículo. La electró-nica del ELM no mantiene listas deesta información, y no puede darlemayores detalles. El Modo 22 y losotros se describen con mayor detalleen la norma SAE J2190: “EnhancedE/E Diagnostic Test Modes”.

La norma ISO 14230-4 definesus bytes de encabezamiento demanera un poco diferente. Los expe-rimentadores avanzados tendrán encuenta que para la ISO 14230-4, el1er. byte de encabezamiento siem-pre debe incluir la longitud delcampo de datos, lo cual varía demensaje en mensaje. De aquí unopodría suponer que tendría queredefinir el encabezamiento paracada mensaje que se envíe, pero¡no es así!. El ELM327 siempredetermina el número de bytes queenvía e inserta esa longitud en ellugar apropiado del encabezamientoque está usando. Si está usando elencabezamiento de la norma ISO14230-4, la longitud se pondrá en el1er. byte del encabezamiento, y sólonecesita proveer los 2 bits más sig-nificativos de este byte cuando defi-ne el encabezamiento. Lo que Ud.ponga en el resto del byte será igno-rado por el ELM327 a menos queUd. lo ponga en 0. Si es 0, se supo-

Saber Electrónica

78

Auto Eléctrico

Auto Ele - selecc protocoolo 3/16/10 11:40 PM Página 78

Page 5: Descripción de una Interfase OBD II con ELM327: Selección del Protocolo

ne que Ud. está experi-mentando con encabe-zamientos KWP de 4bytes, y el CI entoncescrea el 4to. byte de enca-b e z a m i e n t o .Nuevamente Ud. nonecesita proveer ningu-na longitud en este byte;el CI lo hace por Ud..

El direccionamientoen los protocolos CAN(ISO 15765-4) es muysimilar en muchas for-mas. Primero, considere la norma de29 bits. El ELM327 divide los 29 bitsen un byte de Prioridad CAN y en 3bytes de encabezamiento con loscuales estamos familiarizados. Lafigura 3 muestra cómo se combinanpara que los use el ELM327.

La norma CAN dice que para losdiagnósticos, el byte de prioridad(“vv” en el diagrama) siempre será18 (este es el valor por defectousado por el CI). Dado que raramen-te se cambia, se asigna separada-mente de los otros bytes de encabe-zamiento usando el comando CP.

Sólo se requiere el cambio deeste valor si se experimenta con sis-temas J1939. El siguiente byte (“xx”)describe el tipo de mensaje y sepone en hexadecimal DB para eldireccionamiento funcional, y en DAsi se usa direccionamiento físico.Los siguientes 2 bytes se definencomo antes para las otras normas“yy” es la dirección del receptor y“zz” es la dirección del transmisor.Para los pedidos dediagnóstico funcional,el receptor siempre es33, y el transmisor esF1, lo cual es muy simi-lar a ISO 14230-4.

Los que están fami-liarizados con la normaSAE 1939 encontraránque esta estructura deencabezamiento esmuy similar (J1939 esuna norma CAN para

usar en vehículos pesados talescomo camiones y ómnibus). Usauna terminología ligeramente dife-rente, pero hay un paralelo directoentre los bytes usados por J 1939 enlos encabezamientos y los agrupa-mientos de los bytes en el ELM327.

El último formato de encabeza-miento por tratar es el que se usa enlos sistemas CAN de 11 bits.También usan una estructura deprioridad/dirección, pero la acortanen 3 nibbles en lugar de 3 bytes. ElELM 327 usa los mismos comandospara fijar esos valores como paraotros encabezamientos, salvo quesólo usa los 11 bits menos significa-tivos (“más a la derecha”) de losbytes de encabezamiento suminis-trados, e ignora los otros (como semuestra en la figura 4).Rápidamente se vuelve inconve-niente tener que ingresar 6 dígitoscuando sólo se requieren 3, demodo que hay una versión “corta”especial del comando AT SH que

sólo usa 3 dígitos hexade-cimales. En realidadopera simplemente agre-gando ceros delanteros.La norma CAN de 11 bitstípicamente hace pedidosfuncionales (ID/header =7DF), pero recibe res-puestas físicas (7En).Con los encabezamientosactivados, es un asuntofácil aprender la direccióndel módulo que está res-pondiendo, luego usa esa

información para hacer pedidos físi-cos si se desea. Por ejemplo, siestán activados los encabezamien-tos, y envía 01 00, podría ver:

01 007E8 06 41 00 BE 3F B8 13 00

El 7E8 muestra que ECU # 1era el que respondía. A fin de hablardirectamente a ese ECU, todo lo quenecesita hacer es poner el valorapropiado en el encabezamiento (es7E0 para hablar al dispositivo 7E8(- ver ISO 15765-4 para más infor-mación). De aquí en más, puedehablar directamente al ECU usandosu dirección física, como se muestraaquí:

> AT SH 7E0OK

> 01 057E8 03 41 05 46 00 00 00 00

Esperamos que esto hayaayudado para comenzar.Si está pensando en haceralguna experimentaciónseria con OBD, debe com-prar las normas relevan-tes. Sin embargo, con loque estamos describiendoes más que suficiente paraque realice sus primerosexperimentos y comprue-be las bondades de unescaner con ELM327. ✪

Saber Electrónica

79

Escaner OBD II con LM327

Figura 3

Figura 4

Auto Ele - selecc protocoolo 3/16/10 11:40 PM Página 79

Page 6: Descripción de una Interfase OBD II con ELM327: Selección del Protocolo

Saber Electrónica

80

Auto Eléctrico

Auto Ele - selecc protocoolo 3/16/10 11:40 PM Página 80