El mensaje con identificador hexadecimal 0x140 (320 en decimal) es uno de los cuatro mensajes del CAN BUS del toyobaru, que presenta una frecuencia de 100 Hz (es decir, se envía cada centésima de segundo).
Tiene 8 bytes de longitud, con la siguiente estructura:
Empecemos por los bytes D2 y D3, que nos ofrecen el valor de las revoluciones del motor (en revoluciones por minuto) y un par de flags.
Las revoluciones tienen su parte menos significativa en D2, y su parte más significativa en los seis primeros bits de D3. De este modo, para calcular el valor decimal de las mismas hay que operar de la siguiente forma:
RPM = (D3 & 0x3F) * 256 + D2
Además presenta dos bits (el 6 y el 7) a modo de flags.
El bit 7 sólo lo he visto con el valor 0. No se por tanto si se usa o no.
Pero el bit 6 ofrece una información interesante, pues nos dice si el acelerador está pisado (bit 6 = 0) o no está pisado (bit 6 = 1), y esta es una información importante para entender algunas otras cosas.
Los bytes D4 y D5 nos ofrecen la posición (en %) del acelerador. En las medidas que he realizado los valores que obtengo son siempre los mismos. Es decir, si resto ambos valores siempre obtengo cero. Mi suposición es que es cada byte ofrece la posición de cada uno de los dos sensores que tiene el pedal de acelerador. Lamentablemente no he podido encontrar la hoja de características del sensor del pedal de acelerador que monta el toyobaru, pero lo normal en un coche actual, es que el pedal disponga de dos sensores, montados en paralelo, que mandan su posición a la centralita. De este modo, la centralita compara los dos valores que recibe y, en caso de que sean divergentes, entiende que el pedal está mal y entra en modo de avería. Así que estoy suponiendo que este es el comportamiento que sigue nuestro coche.
El byte D0 contiene prácticamente la misma información que los bytes D4 y D5 cuando el acelerador está pisado (es decir, cuando el bit 6 del byte 3 es cero). Hay alguna pequeña diferencia de valor durante algunas centésimas de segundo en algún caso puntual, pero casi siempre el valor coincide con los mismos que los de los bytes D4 y D5.
Mi suposición es que D0 es el valor que usa el sistema como posición del acelerador, y que calcula a partir de los valores de D4 y D5 (si son iguales entre si) y añadiendo alguna pequeña corrección por alguna consideración que la ECU realice (y que no he podido determinar). Cuando el acelerador no está pisado, he visto valores diferentes en D0 a los que adoptan D4 y D5 (0, si el acelerador no está pisado), pero no se a que obedecen esos valores.
El byte D6 es la posición (en %) de la apertura de la mariposa, que es, en definitiva, la que regula el caudal de aire que llega al motor. En condiciones normales coincide con la consigna que le manda el pedal del acelerador, coincidiendo normalmente con el valor de D0, D4 y D5, pero hay condiciones donde no es así. Por ejemplo, es muy ilustrativo como, al arrancar el coche, la ECU abre la mariposa (un 12-13%) -aunque no pises el acelerador- y pone el coche a unas 1.600 rpms, y poco a poco va cerrando la mariposa, y como consecuencia van cayendo las revoluciones (hasta llegar aun 8% de apertura y unas 800 rpm).
El byte D1 tiene dos partes diferenciadas. La primera parte (bits 0-3) es un contador entre 0 y 15 (0xF). Cada trama que se transmite va incrementando ese valor entre 0 y 15 y al llegar a 15, vuelve a empezar en 0. Y así continuamente. Entiendo que se usa por algunas ECUs que leen el bus con una frecuencia menor a los 100 Hz, y comparando el valor leído, con el valor anterior que manejaban, pueden saber cuanto tiempo hay entre las dos lecturas. Realmente no se si se usa para eso, pero es para lo que yo lo usaría (y no se me ocurre que otra utilidad pueda tener).
La segunda parte del byte D1 (bits 4-7) son flags, de los cuales sólo he visto cambiar al bit 7, que toma valores 0 y 1 (el resto, sólo han tomado el valor 0 en mis pruebas). No tengo claro aun que puede ser. Sospecho que pueda estar relacionado con el pedal del embrague, pero tengo que hacer más comprobaciones antes de ratificarlo. De momento sólo es una sospecha.
Finalmente el byte D7, también entiendo que son flags. Sólo he visto en mis pruebas valores en los bits 0 y 1. El bit 0 está relacionado con el bit 6 del byte 3, es decir, el que nos indica si el acelerador está pulsado o no, pues tiene transiciones en los mismos momentos de tiempo -con algunas centésimas de diferencia- pero aun no tengo claro lo que es. El bit 1, también toma valores 0 y 1, pero no he podido interpretar aun que significa. El resto de bits solo presentan el valor 0 en mis pruebas.
Aunque trataré de sacar tiempo para avanzar en el entendimiento de la información que me falta, he considerado que la información que ya tengo contrastada podía ser lo suficientemente interesante como para compartirla con vosotros. Así que ya podéis leer e interpretar estos valores del bus CAN de nuestros toyobarus ...