Con esa información, he estado haciendo distintas pruebas en el coche, modificando parámetros de la climatización, pasando el coche de lugares templados y oscuros (como el garaje) a luminosos y más o menos cálidos, como la calle, y tomando algunas temperaturas.
Tras registrar cada cambio, se procede a interrogar a la ECU, y por comparación entre los datos antes y después de la pruebas, se pueden llegar a algunas conclusiones. Estas son las que yo he alcanzado.
PID 0x21
Como ya sabemos, la consulta a este PID
>> 7C4: 02 21 21 00 00 00 00 00
<< 7CC: 04 61 21 08 57 00 00 00
devuelve 2 bytes (en el ejemplo A = 0x08 y B =0x57) que aplicando la formula (A*256+B)/100 se transforma en una temperatura en ºC (en el ejemplo 21,35 ºC).
Después de todas mis mediciones creo poder asegurar que ese valor se corresponde a la temperatura del interior del habitáculo.
PID 0x26
Del mismo modo, esta consulta
>> 7C4: 02 21 26 00 00 00 00 00
<< 7CC: 04 61 26 11 F8 00 00 00
devuelve 2 bytes. En el ejemplo: A = 0x11 y B=0xF8, para dar una temperatura de 46ºC.
Esta temperatura se corresponde con la del líquido refrigerante del motor. Como vimos, la temperatura del refrigerante pude obtenerse a través del servicio 0x01, con el PID 0x0F consultando a la ECU principal (0x7E0).
Como veremos también cuando escriba en el blog la reseña sobre el mensaje CAN ID 0x360, esta temperatura también está disponible en el tercer byte del mensaje CAN bus con ID 0x360.
Pues bien, en todas las pruebas realizadas, la consulta a la ECU 0x7C4 con el servicio 0x21 y PID 0x26 ha devuelto el mismo valor que el que se corresponde con la temperatura del refrigerante.
PID 0x2A
De nuevo una consulta que devuelve dos bytes
>> 7C4: 02 21 2A 00 00 00 00 00
<< 7CC: 04 61 2A 08 98 00 00 00
que pueden interpretarse como una temperatura. En el ejemplo, A = 0x08, B = 0x98 para dar una temperatura de 22,00 ºC.
En este caso, la temperatura se corresponde con la fijada en el sistema de climatización para el acompañante (del mismo modo que el PID 0x29 devuelve la temperatura fijada para el conductor, como vimos en la entrada anterior).
PID 0x3D
Otra consulta que devuelve dos bytes es
>> 7C4: 02 21 3D 00 00 00 00 00
<< 7CC: 04 61 3D 05 AF 00 00 00
En el ejemplo, A = 0x05, B = 0xAF, que permite obtener una temperatura de 14,55 ºC.
Este valor se corresponde con la temperatura exterior y coincide (con el redondeo necesario) con la que el vehículo muestra en el cuadro de mandos cuando consultamos dicha temperatura.
PID 0x24
Hay otros PIDs que devuelven dos bytes que podrían tratarse de otras temperaturas, pero aun no he logrado entender su comportamiento. Pero también hay PIDs que devuelven dos bytes que no tienen nada que ver con temperaturas. Uno de ellos es
>> 7C4: 02 21 24 00 00 00 00 00
<< 7CC: 04 61 24 03 7A 00 00 00
que devuelve dos bytes (en el ejemplo A = 0x03 y B = 0x7A) y que podríamos considerar una temperatura (en el ejemplo sería de 8,9 ºC).
Pero no he encontrado ninguna correlación que pueda indicarme que se trata de una temperatura.
Sin embargo, lo que he observado, es que cuando realizo las pruebas en la penumbra del garaje, este PID devuelve valores muy bajos (0x0002). En las pruebas realizadas durante los atardeceres los valores son un poco más elevados (0x0050) y van disminuyendo con el paso del tiempo (0x0048, 0x0040, 0x003E, 0x003D).
Por otro lado, las muestras que he tomado durante el día, pero a la sombra de un árbol los valores son mayores (0x029E), y las pruebas realizadas a pleno sol -como la del ejemplo- los valores son todavía mayores, como en el ejemplo 0x037A, que es el valor más alto que he obtenido.
Todo ello me hace pensar que este PID nos devuelve el valor del sensor de iluminación a la que está sometido el vehículo.
PID 0x3C
Además de poder entender la respuesta de algunos PIDs que devuelven dos bytes, las pruebas realizadas me han permitido comprender la respuesta de algunos de los PDIs que devuelven un solo byte.
>> 7C4: 02 21 3C 00 00 00 00 00
<< 7CC: 03 61 3C 05 00 00 00 00
En este caso, el byte devuelto es A = 0x05, y tras las pruebas realizadas puedo decir que la respuesta al PID 0x3C contiene la intensidad del ventilador entre los valores comprendidos entre 0x00 -cuando el ventilador está apagado- y 0x1F, cuando está al máximo.
PID 0x36
La solicitud del PID 0x36 también devuelve un byte
>> 7C4: 02 21 36 00 00 00 00 00
<< 7CC: 03 61 36 00 00 00 00 00
En el ejemplo, A = 0x00.
Durante las pruebas solo he obtenido dos valores. 0x00 cuando la recirculación del aire no está activa y 0xFF cuando si lo está.
PID 0x41
Otra solicitud que sólo devuelve un byte es la correspondiente al PID 0x41
>> 7C4: 02 21 41 00 00 00 00 00
<< 7CC: 03 61 41 00 00 00 00 00
De forma análoga a la anterior solicitud, solo me he encontrado dos valores como respuesta. 0x00 cuando el aire acondicionado no está activado y 0xFF cuando si lo está.
PID 0x42
Por último, la solicitud al PID 0x42 también devuelve un byte
>> 7C4: 02 21 42 00 00 00 00 00
<< 7CC: 03 61 42 00 00 00 00 00
Y del mismo modo que las dos anteriores solo he encontrado dos valores durante mis pruebas. 0x00 cuando la opción de climatización dual está desactivada y 0xFF cuando está activa.
Con toda esta información podemos ir completando nuestra tabla
PID | Longitud (bytes) | Unidades | Cálculo | Descripción | Status |
0x00 | 4 | - | Evaluación de bits | PIDs soportados [0x01...0x20] | Confirmado |
0x03 | 2 | Desconocido | |||
0x20 | 4 | - | Evaluación de bits | PIDs soportados [0x21...0x40] | Confirmado |
0x21 | 2 A,B |
ºC | (A*256+B)/100 | Temperatura del habitáculo | Confirmado |
0x24 | 2 A,B |
Por determinar | A*256+B | Sensor de iluminación | Confirmado |
0x25 | 1 | Desconocido | |||
0x26 | 2 A,B |
ºC | (A*256+B)/100 | Temperatura del refrigerante | Confirmado |
0x29 | 2 A,B |
ºC | (A*256+B)/100 | Temperatura conductor demandada A/C | Confimado |
0x2A | 2 A,B |
ºC | (A*256+B)/100 | Temperatura acompañante demandada A/C | Confirmado |
0x2B | 2 | Desconocido | |||
0x2C | 2 | Desconocido | |||
0x2D | 2 | Desconocido | |||
0x2E | 2 | Desconocido | |||
0x2F | 2 | Desconocido | |||
0x30 | 2 | Desconocido | |||
0x33 | 2 | Desconocido | |||
0x34 | 2 | Desconocido | |||
0x35 | 2 | Desconocido | |||
0x36 | 1 A |
- | 0x00 OFF 0xFF ON |
Recirculación del aire | Confirmado |
0x3C | 1 A |
- | 0x00 Mínimo 0x1F Máximo |
Velocidad del ventilador | Confirmado |
0x3D | 2 A,B |
ºC | (A*256+B)/100 | Temperatura exterior | Confirmado |
0x40 | 4 | - | Evaluación de bits | PIDs soportados [0x41...0x60] | Confirmado |
0x41 | 1 A |
- | 0x00 OFF 0xFF ON |
Aire Acondicionado | Confirmado |
0x42 | 1 A |
- | 0x00 OFF 0xFF ON |
Climatización dual | Confirmado |
0x43 | 1 | Desconocido | |||
0x44 | 1 | Desconocido | |||
0x45 | 1 | Desconocido | |||
0x46 | 1 | Desconocido | |||
0x47 | 2 | Desconocido | |||
0x48 | 2 | Desconocido | |||
0x4B | 2 | Desconocido | |||
0x4C | 2 | Desconocido | |||
0x60 | 4 | - | Evaluación de bits | PIDs soportados [0x61...0x80] | Confirmado |
0x80 | 4 | - | Evaluación de bits | PIDs soportados [0x81...0xA0] | Confirmado |
0x81 | 4 | Desconocido | |||
0x82 | 4 | Desconocido | |||
0x89 | 1 | Desconocido | |||
0xA0 | 4 | - | Evaluación de bits | PIDs soportados [0xA1...0xC0] | Confirmado |
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 |