De acuerdo con informaciones que he encontrado al respecto, en foros de otros vehículos Toyota y Lexus, esta ECU es la responsable del cuadro de mandos. Y en el toyobaru parece que también es así.
Para empezar, elaboramos la tabla de identificadores disponibles bajo el servicio 0x21 tal y como hemos hecho en entradas anteriores.
>> 7C0: 02 21 00 00 00 00 00 00
<< 7C8: 06 61 00 00 00 60 01 00
Empezamos mandando el PID 0x00, y en función de su respuesta vamos obteniendo que PIDs son soportados por la ECU.
Una vez obtenidos los PIDs soportados, los solicitamos uno a uno y vamos obteniendo de la respuesta, la longitud de la misma, con lo cual podemos elaborar la siguiente tabla:
PID | Longitud (bytes) | Unidades | Cálculo | Descripción | Status |
0x00 | 4 | - | Evaluación de bits | PIDs soportados [0x01...0x20] | Confirmado |
0x12 | 3 | Desconocido | |||
0x13 | 1 | Desconocido | |||
0x20 | 4 | - | Evaluación de bits | PIDs soportados [0x21...0x40] | Confirmado |
0x21 | 1 | Desconocido | |||
0x22 | 1 | Desconocido | |||
0x23 | 1 | Desconocido | |||
0x29 | 1 | Desconocido | |||
0x40 | 4 | - | Evaluación de bits | PIDs soportados [0x41...0x60] | Confirmado |
0x60 | 4 | - | Evaluación de bits | PIDs soportados [0x61...0x80] | Confirmado |
0x64 | 1 | Desconocido | |||
0x68 | 1 | Desconocido | |||
0x69 | 1 | Desconocido | |||
0x80 | 4 | - | Evaluación de bits | PIDs soportados [0x81...0xA0] | Confirmado |
0xA0 | 4 | - | Evaluación de bits | PIDs soportados [0xA1...0xC0] | Confirmado |
0xA1 | 1 | Desconocido | |||
0xA7 | 1 | Desconocido | |||
0xAD | 1 | Desconocido | |||
0xC0 | 4 | - | Evaluación de bits | PIDs soportados [0xC1...0xE0] | Confirmado |
0xE0 | 4 | - | Evaluación de bits | PIDs soportados [0xE1...0x100] | Confirmado |
0xE1 | 7 | Desconocido | |||
0xE2 | 5 | Desconocido |
Bien, pero ¿ como sabemos que esta ECU es la responsable de la gestión de la información ?
Encontré una entrada sobre un Lexus que afirmaba que esta ECU era la "ComboMeter ECU' y que tenía descrita una solicitud a esta ECU bajo el servicio 0x21, en particular el PID 0x29. Según dicha información, esta solicitud devolvía el depósito que restaba en el depósito en fracciones de medio litro. Esto era fácil de comprobar. Así que realicé la petición:
>> 7C0: 02 21 29 00 00 00 00 00
<< 7C8: 03 61 29 20 00 00 00 00
El servicio devolvía 0x20, es decir 32. Que en fracciones de medio litro quería decir que tenía 16 litros en el depósito. Así que me fui para la gasolinera para llenar el depósito.
He repostado multitud de veces en esa gasolinera, siempre en la modalidad de autoservicio, pero ese día salió presto el gasolinero diciéndome: "No se preocupe,déjeme a mi". Ese día precisamente quería repostar yo, pero me dio la impresión de que el gasolinero quería ver el coche de cerca.
Le pedí que llenara el depósito y entré a pagar a su compañero. Nada más salir del surtidor con el coche, aparqué en la misma gasolinera, conecté el ordenador al puerto OBDII y reinvoqué al servicio.
>> 7C0: 02 21 29 00 00 00 00 00
<< 7C8: 03 61 29 5F 00 00 00 00
El servicio devolvió 0x5F, es decir, 95. En unidades de medio litro eso supone 47,5 litros. Se supone que el depósito del toyobaru es de 50 litros, y estando lleno debería devolver 0x64 (100 decimal).
Entonces miré el ticket, el cual decía que había repostado 31,75 litros.
Si originalmente tenía 16 litros y había repostado 31,75 litros entonces tenía en el depósito 47,75 litros. Eso, teniendo en cuenta los redondeos, ya cuadraba más.
Así que tiene toda la pinta de que la solicitud que funcionaba en aquel Lexus también funciona en nuestro toyobaru. Y me alegro un montón de ello, pues conocer con más precisión la cantidad de combustible que queda en el depósito es algo que siempre he buscado en los datos que circulan por el bus CAN, pero no lo he encontrado.
Pero con este servicio ya puedo obtenerlo.
Y además, podemos empezar a completar la tabla:
PID | Longitud (bytes) | Unidades | Cálculo | Descripción | Status |
0x29 | 1 (A) | litros | A / 2 | Combustible en depósito | Confirmado |