Hemos visto también, que el servicio 0x01 es respondido tanto desde el CAN ID 0x720 como desde el CAN ID 0x7E0, pero sorprendentemente bajo el identificador 0x720 no responde ni al servicio 0x09 ni al servicio 0x21, cosa que si hace bajo el CAN ID 0x7E0.
En este artículo del blog, vamos a explorar esta ECU, de forma análoga a como hemos hecho con la ECU 0x7B0, para obtener que PIDs están disponibles bajo el servicio 0x21 y empezar a tratar de dilucidar que información pueden ofrecer.
No detallo el método. Es análogo al comentado en la entrada anterior. Solicitamos a la ECU 0x7E0 el PID 0x00 bajo el servicio 0x21:
>> 7E0: 02 21 00 00 00 00 00 00
<< 7E8: 06 61 00 BC 00 00 01 00
y de su respuesta vamos deduciendo los PIDs disponibles.
Una vez elaborada la lista de PIDs, solicitamos uno a uno dichos PIDs a la ECU, para obtener la longitud que devuelven y poder elaborar la siguiente tabla.
PID | Longitud (bytes) |
Unidades | Cálculo | Descripción | Status |
0x00 | 4 | - | Evaluación de bits | PIDs soportados [0x01...0x20] | Confirmado |
0x01 | 29 | Desconocido | |||
0x03 | 5 | Desconocido | |||
0x04 | 12 | Desconocido | |||
0x05 | 4 | Desconocido | |||
0x06 | 13 | Desconocido | |||
0x20 | 4 | - | Evaluación de bits | PIDs soportados [0x21...0x40] | Confirmado |
0x21 | 12 | Desconocido | |||
0x22 | 3 | Desconocido | |||
0x23 | 2 | Desconocido | |||
0x25 | 6 | Desconocido | |||
0x26 | 6 | Desconocido | |||
0x33 | 7 | Desconocido | |||
0x37 | 18 | Desconocido | |||
0x39 | 5 | Desconocido | |||
0x3A | 9 | Desconocido | |||
0x3C | 16 | Desconocido | |||
0x40 | 4 | - | Evaluación de bits | PIDs soportados [0x41...0x60] | Confirmado |
0x41 | 18 | Desconocido | |||
0x42 | 10 | Desconocido | |||
0x44 | 36 | Desconocido | |||
0x45 | 4 | Desconocido | |||
0x51 | 29 | Desconocido | |||
0x52 | 8 | Desconocido | |||
0x54 | 10 | Desconocido | |||
0x55 | 8 | Desconocido | |||
0x60 | 4 | - | Evaluación de bits | PIDs soportados [0x61...0x80] | Confirmado |
0x80 | 4 | - | Evaluación de bits | PIDs soportados [0x81...0xA0] | Confirmado |
0xA0 | 4 | - | Evaluación de bits | PIDs soportados [0xA1...0xC0] | Confirmado |
0xC0 | 4 | - | Evaluación de bits | PIDs soportados [0xC1...0xE0] | Confirmado |
0xC1 | 19 | Desconocido | |||
0xC2 | 13 | Desconocido | |||
0xE0 | 4 | - | Evaluación de bits | PIDs soportados [0xE1...0x100] | Confirmado |
0xE1 | 8 | Desconocido | |||
0xE2 | 5 | Desconocido | |||
0xE3 | 2 | Desconocido |
Llama la atención la longitud de los datos devueltos con un buen número de PIDs devolviendo largas cadenas de datos (hasta 36 bytes en el caso del PID 0x44). No será fácil descodificarlos.
De momento, y con ayuda de la información que encontré en un foro sobre el Toyota Prius, he podido descodificar parcialmente el contenido de la respuesta al PID 0xC1, que contiene información sobre el modelo del coche y del motor que monta, y que parece mostrar ciertas similitudes con lo que manda la ECU de mi coche.
Si solicitamos ese PID
>> 7E0: 02 21 C1 00 00 00 00 00
<< 7E8: 10 15 61 C1 5A 23 36 23
>> 7E0: 30 00 00 00 00 00 00 00
<< 7E8: 21 23 23 38 46 41 32 30
<< 7E8: 22 20 20 04 01 57 71 01
<< 7E8: 23 00 00 00 00 00 00 00
Decodificando el mensaje de respuesta obtenemos que los datos recibidos son:
5A 23 36 23 23 23 38 46 41 32 30 20 20 04 01 57 71 01 00
Y si los representamos en ASCII tenemos:
Z # 6 # # # 8 F A 2 0 · · W q · ·
Según he leído, en un Prius este mismo servicio devuelve el identificador del modelo del coche en las 7 primeras posiciones. En mi coche devuelve: Z#6###8. Y mi coche tiene como VSD el código ZN6L81, con el cual se puede apreciar una cierta similitud. No se muy bien como codifica Toyota el modelo. Habría que hacer pruebas con más toyobarus para ver que devuelven en esa respuesta.
Los siguientes 6 caracteres identifican el motor. En este caso parece que no hay duda pues se ha recibido un claro "FA20 ". Eso si, me ha llamado la atención que tratándose mi coche de un GT86, no haya enviado "4U-GSE", que es la codificación que usa Toyota para el FA20 de Subaru.
El siguiente byte (0x04) representaría el número de cilindros del motor.
Del decimoquinto byte (0x01) no hay información. Puede ser cualquier cosa.
El siguiente byte (0x57), la información que he encontrado dice que hace referencia al destino del coche, pero no se muy bien que se refiere (supongo que será la codificación del destino, no se si será España, Europa, o algo así), así que de momento dejaremos la información en cuarentena hasta que averigüe más cosas.
El decimoséptimo byte (0x71) representaría el año de fabricación del coche, contado desde 1.900. Esto encaja, por que mi coche es del 2013, y 0x71 es 113 en decimal, que sumado a 1900 nos da 2013.
De los dos siguientes bytes no tengo información.
Así que con esta información, podemos rellenar la primera entrada de la tabla
PID | Longitud (bytes) |
Unidades | Cálculo | Descripción | Status |
0xC1 | 19 ABCDEFGHIJKLMNOPQRS |
- | ASCII ASCII N ¿? ¿? 1900 + Q ¿? ¿? |
ABCDEFG → Modelo HIJKLM → Motor N → Número de Cilindros O → ¿? P → ¿destino? Q → Año de fabricación R → ¿? S → ¿? |
Sospecha Confirmado Confirmado Desconocido Sospecha Confirmado Desconocido Desconocido |
Habrá que seguir analizando datos obtenidos e informaciones que circulan por ahí, para ir completando la tabla poco a poco ...