Mensaje CAN BUS 0x63B

¿ El reloj interno del toyobaru ?

Siempre me ha intrigado el mensaje 0x63B. Desde el primer día que empecé a cacharrear con el bus CAN, uno trata de buscar datos que se incrementen o se decrementen de forma continua.

Piensas en el odómetro, que es un valor que solo debe crecer. Y si se transmite por el bus CAN puedes tratar de identificarlo con ese método. O en el nivel del depósito del combustible. Hasta el siguiente repostaje, es un valor que lo único que hace es bajar.

Así que la rutina de explorar los datos en busca de información que solo crezca, o solo decrezca, siempre la he mantenido. Sin éxito, he de decir, pues no he sido capaz de encontrar ni el odómetro ni el nivel del depósito de combustible en los datos que se trasmiten por el bus CAN de mi GT86.

Pero en esa rutina de búsqueda siempre me topaba con el mensaje 0x63B, y es que sus últimos 6 bytes forman un número que siempre crece. Siempre. Nunca manda la misma información. Siempre cambia. Y cambia para aumentar.

Si uno hace un análisis ligero, le parecerá que cada mensaje suma 5 unidades al anterior, y como el mensaje se presenta con una frecuencia de 2 Hz (o sea, dos veces por segundo), cada segundo se incrementa en 10 unidades, es decir ... mide décimas de segundo.

Y en el análisis de una única sesión de datos todo parece cuadrar. Sin embargo, cuando cogía distintos mensajes 0x63B de distintas sesiones de datos y los representaba de forma conjunta, no obtenía -para mi perplejidad- una recta.

¿ qué demonios pasaba ?

He tenido que estudiar los distintos modos del coche y sus transiciones para entender lo que realmente ocurría. Y es que no se trata de un contador de 6 bytes que siempre se incrementa. Realmente son dos contadores, uno de dos bytes (D2D3) y otro de cuatro bytes (D4D5D6D7) que siempre se incrementan.

El primer contador, compuesto por D2D3, siendo D2 el byte más significativo, se incrementa en uno cada vez que ocurre una transición a estado 'IGNITION ON' (arranques o no el motor).

Cuando eso ocurre y de forma simultánea, el contador D4D5D6D7 (con D4 como byte más significativo) se reinicia, y empieza a llevar la cuenta del número de décimas de segundo que hace que el vehículo transitó a ese estado.

Lo curioso es que puedes apagar el coche, volver días después, poner el coche en modo 'ACCESSORY' y el mensaje 0x63B vuelve a aparecer manteniendo la cuenta. Hasta que pulsas de nuevo el botón 'ENGINE START STOP' para entrar en modo 'IGNITION ON' y D2D3 se incremente y D4D5D6D7 se reinicia.

Todo esto se puede ver en los siguientes gráficos.

Aquí podemos ver como el byte D0 del mensaje 0x44D nos indica el estado del coche.

Transiciones de modo 'ACCESSORY', 'IGNITION ON' y PARADO mostradas por el byte D0 del mensaje CAN 0x44D en un GT86

Podemos ver como el vehículo se encuentra en modo 'ACCESSORY' (0x44D D0 con valor 64) hasta poco antes del segundo 100 que se pasa a modo 'IGNITION ON' (0x44D D0 con valor 108) para pocos segundos después, pulsar el botón 'ENGINE START STOP', pasar de nuevo al modo 'ACCESSORY' durante unos segundos antes de apagarse (modo APAGADO, sin actividad en el bus).

Permanece el coche sin contacto durante unas decenas de segundos y sobre el segundo 170 se vuelve a pulsar el botón 'ENGINE START STOP' para llevar el coche de nuevo a modo 'ACCESSORY', y sobre el segundo 210, pasar de nuevo a modo 'IGNITION ON', hasta poco después del segundo 250, que se vuelve a solicitar el paso a APAGADO (previo paso por 'ACCESSORY').

Si vemos ahora como se comporta el contador formado por los bytes D2D3 del mensaje 0x63B

Evolución del contador formado por los bytes D2D3 del mensaje CAN 0x63B

Vemos como coincidiendo con cada transición a modo 'IGNITION ON' el contador se incrementa en una unidad (Si, mi coche ya ha pasado -en el momento de escribir estas líneas- casi 9.000 veces al modo 'IGNITION ON')

Por otro lado, si observamos como se comporta el contador formado por los bytes D4D5D6D7 del mensaje 0x63B (represento por separado D4D5 y D6D7 por que si represento junto D4D5D6D7 me sale un valor tan alto que por problemas de escala no se aprecia como se incrementa ...)

Evolución del contador formado por los bytes D4D5D6D7 del mensaje CAN 0x63B

observamos como coincidiendo con cada transición a modo 'IGNITION ON' el contador se reinicia a 0, para a partir de ese momento incrementarse regularmente al ritmo de 5 décimas de segundo por mensaje.

Se observa también como en el inicio el valor del contador se venía incrementando desde la última vez que el coche estuvo en modo 'IGNITION ON' (hacía 47 horas ...). Y es que como se puede apreciar durante el periodo que el vehículo está sin contacto, el contador sigue manteniendo su pendiente.

Cabe señalar también que con 4 bytes, pueden llegar a representarse más de 4.294 millones de décimas de segundos ... suficiente para más de 13 años. No parece que se vaya a desbordar el contador por este motivo.

Nos queda por analizar los dos primeros bytes de este mensaje. El byte D0 siempre aparece con valor 0x00, por lo que poco podemos decir de él. El byte D1 adopta dos valores 0x00, que es el valor en el que normalmente se encuentra y 0x80, valor que adopta únicamente en el primer mensaje 0x63B que aparece en el bus CAN la primera vez se pulsa el botón 'ENGINE START STOP'.

Page top