Descifrado de datos en el bus CAN VW Polo sedán

Hoy hablaremos sobre los métodos para descifrar los datos del bus CAN utilizando el ejemplo de un auto VW Polo Sedan 2019. En Internet, estos artículos a menudo se llaman CAN Bus Hacks, pero no me gusta este nombre.

El artículo describe los métodos para encontrar los datos necesarios en el bus CAN del automóvil, ejemplos de la aplicación de estas técnicas en el VW Polo Sedan. Vega MTX se utiliza como equipo para conectarse a un bus CAN. Hablemos un poco más sobre telemática. Debajo del corte muchas fotos sobre el tema, varios gifs y videos.

Unas pocas palabras acerca de ti.

Mi nombre es Alexey Fokin, en este momento trabajo para Vega Absolutevega_absolute. La oficina central en Novosibirsk, pero yo trabajo en Moscú. Una de nuestras direcciones es la telemática. Fabricamos equipos para el seguimiento de vehículos comerciales, vehículos compartidos, taxis, etc. Mi trabajo es recopilar datos de automóviles y convertirlos en configuraciones para nuestros equipos.

Ahora al auto.

La conexión al bus CAN se realizó en dos lugares: detrás del tablero de instrumentos (bus de 500 Kbit / s) y detrás de la radio (100 Kbit / s). También hay una conexión redundante: la conexión al conector OBDII directamente en el conector (500 Kbit / s).

De las herramientas utilizadas: Unidad de monitoreo de vehículos Vega MTX equipada con un escáner CAN. Para configurarlo en una PC, el programa Configurator 1.27.14.

Puede encontrar más información sobre cómo conectarse a un automóvil y MTX en el video al final del artículo.

Cuando esté conectado a todos los buses CAN, veremos la siguiente imagen:



En este flujo de datos, necesita encontrar los bits y bytes que son responsables de los parámetros que necesitamos.

La captura de pantalla siguiente muestra cuántos sensores están actualmente registrados en el bloque telemático, y esta no es una lista completa. Puede profundizar aún más y buscar aún más sensores. Algunos de estos sensores en tiempo real envían lecturas al servidor, lo que le permite ver el estado de su automóvil en cualquier momento.

La telemática es un tema para un artículo separado, por lo que no nos detendremos en esto aquí en detalle.



La pregunta surge de inmediato: ¿por qué necesito buscar datos en una secuencia si puedo verlos a través de ELM327 u otros dispositivos de diagnóstico?

La pregunta aquí es por qué necesitamos estos datos. En nuestro caso, necesitamos los datos para telemática, y para no interferir con el funcionamiento del bus CAN y no enviarle ningún dato, los buscamos en la transmisión. Vega MTX tiene un modo especial para trabajar con el bus CAN: el modo de "escucha". El modo habla por sí solo, el equipo solo escucha el autobús y no le envía nada, lo que minimiza cualquier impacto en el sistema normal del automóvil.

Por ejemplo, un sensor para abrir una puerta. Si le hacemos una solicitud, entonces solo podemos hacer esto con la ignición encendida. Después de apagar el encendido y el bus CAN se duerme, este sensor no estará disponible para nosotros. Si encontramos este sensor en la transmisión CAN, lo veremos todo el tiempo cuando el bus CAN esté funcionando. Y, cuando abre la puerta, CAN se activará automáticamente.

También debe entenderse que todos los ejemplos a continuación solo son relevantes para la conexión Polo Sedan. En otros, el equipo puede no tener ninguno de los sensores enumerados, pero para otras marcas y modelos de automóviles, los datos estarán en identificaciones completamente diferentes.

Le llamo la atención sobre el hecho de que, por defecto, en el Configurador hay una visualización de valores en formato HEX. En el futuro, tendremos que traducir datos del formato HEX a valores decimales más de una vez. La forma más fácil de hacer esto es usar la aplicación Calculadora integrada en Windows 10. Lo traducimos al modo "programador" y tenemos la opción de elegir en qué sistema numérico ingresar datos, y se duplican en otros sistemas numéricos.

Mediante el método de búsqueda, divido todos los sensores del automóvil en varios tipos:

  1. Sensores binarios.
  2. Cambio rápido de sensores.
  3. Sensores de temperatura.
  4. Kilometraje del coche.
  5. Sensores de nivel.
  6. Sensores de indicación
  7. Sensores con peticiones.

Ahora pasemos a los métodos con los que puede encontrar cada tipo de sensor.

1. Sensores binarios


Comencemos con los sensores binarios más simples.

Estos sensores incluyen sensores de puerta, cinturones de seguridad, freno (si las luces de freno están encendidas), freno de mano, botones presionados, etc. Su valor se coloca en 1 bit, es decir, puede ser 0 (la puerta está cerrada) o 1 (la puerta está abierta).

Encontrarlos es simple, pero requiere cuidado. Para buscar la puerta del conductor, abra / cierre la puerta y observe los cambios en el bus CAN.

El configurador resalta en rojo aquellos datos en los que ha habido cambios en los últimos segundos.



En nuestro caso, la puerta del conductor es responsable del bit cero del primer byte del mensaje con ID 470.
En el mismo byte están los sensores de todas las otras puertas + sensor de maletero.

2. Cambio rápido de sensores


Los sensores que cambian rápidamente son similares a los sensores binarios, solo su valor es más de 1 bit. Podemos actuar sobre estos sensores e inmediatamente ver cambios en el bus CAN.
Estos sensores incluyen la mayoría de los sensores de posición: posición del pedal del acelerador, posición del vidrio, posición de la transmisión automática, posición de la llave de encendido. Además de estos, estos son sensores de velocidad, revoluciones, sensores de aceleración del volante, aceleración del acelerador, etc.

Para empezar, trataremos los sensores de posición utilizando el ejemplo del sensor de posición del pedal del acelerador.

Para hacer esto, apagamos el automóvil, activamos el encendido y, sin arrancar el motor, presionamos el pedal del acelerador y monitoreamos el cambio en el bus CAN.

Como regla general, cuando se suelta el pedal del acelerador, el valor de este sensor es 0 y, al presionar el pedal del acelerador, aumenta a algún valor. Vemos dicho parámetro en el primer CAN en ID 280. El quinto byte cambia de 0 (se suelta el pedal) a FA (el pedal se presiona "al piso").



Si transferimos FA de HEX a DEC, entonces obtenemos el número 250. Por lo tanto, para presionar el pedal del acelerador en porcentaje (de 0 a 100), necesitamos multiplicar nuestro valor por 0.4.

Ahora pasemos a los sensores que no caben en un byte, por ejemplo, a la velocidad del motor. Gradualmente aumentamos y disminuimos la velocidad del motor, mientras observamos los cambios en el bus CAN. Las revoluciones del motor están en la misma identificación que el pedal del acelerador.



Después de haber trabajado con el acelerador, puede comprender que los datos aquí están en el orden inverso. Es decir, la parte más antigua está en el tercer byte (cuenta bytes desde cero), y la más joven en el segundo byte.

A continuación, debe transferir los datos de HEX a DEC.



A continuación, debemos evaluar las revoluciones reales con el tacómetro o con instrumentos de diagnóstico. En mi caso, la aguja estaba a aproximadamente 1600 rpm en el tacómetro.

Luego, dividimos los datos de CAN en formato decimal (6508) por la velocidad del motor desde el tacómetro (1600), obtenemos 4.0675. Dado el error en la determinación de las revoluciones a simple vista, redondee el divisor a 4. Después de esto, debe verificar las lecturas en varios puntos. Para hacer esto, configure la velocidad del motor a diferentes velocidades y verifíquelas con los datos del bus CAN.

En el configurador, puede sustituir todos los coeficientes en la configuración del sensor y observar los cambios de velocidad en tiempo real.

Por lo tanto, se busca una gran cantidad de sensores: fuerzas de frenado, posición del volante, aceleración del volante, velocidad del vehículo, etc.

3. sensores de temperatura


Fue muy difícil encontrar la temperatura en Polo Sedan. Para empezar, se encontró un byte, que cambió lentamente hacia arriba cuando el automóvil se calentó. Después de eso, comenzó la búsqueda de los coeficientes necesarios.

Conectamos los diagnósticos, seleccionamos la temperatura del motor y comparamos las lecturas del bus CAN y los datos de los diagnósticos. Construimos una tabla de correspondencia y seleccionamos los coeficientes.
Como resultado de la selección de coeficientes, apareció una fórmula para calcular la temperatura.

XX * 0.75 - 48
donde XX es el valor de 1 byte de ID 288 en el DEC.



Según la fórmula, se puede calcular que la captura de pantalla tenía una temperatura de

179 * 0.75 - 48 = 86.25 ° C.

donde 179 es el número decimal B3 del primer byte de ID 288.

Pero este es un caso difícil, en muchos automóviles la temperatura es mucho más fácil de encontrar.

Dado que es difícil transmitir un número negativo en el bus, los fabricantes aceptan el valor -40 ° C, -48 ° C o -58 ° C como 0 mediciones. Por lo tanto, conectamos los diagnósticos y vemos cuál es la temperatura ahora. Agregue 40 (48 o 58) a esto y traduzca a HEX. Estamos buscando el número resultante en la transmisión. Estamos esperando que la temperatura de la máquina cambie un grado y verifiquemos con el valor encontrado. Si su valor también aumentó en 1, entonces este es el sensor que necesitamos.

Es importante no confundir los valores del bus CAN con los valores de las consultas de diagnóstico. Si busca simultáneamente lecturas en el bus y la herramienta de diagnóstico está conectada, las respuestas a las solicitudes de diagnóstico también aparecerán en el bus. Se pueden identificar por identificación. Por lo general, todo lo que supera las 700 ID son solicitudes y respuestas de diagnóstico.

Además, la temperatura del refrigerante siempre se puede hacer una solicitud, sobre este método se describirá a continuación en la sección sobre sensores con solicitudes.

Puede usar otro método para buscar temperatura: físicamente encontramos el sensor de temperatura del refrigerante (DTOZH) en el motor, lo apagamos y conectamos una resistencia variable al cableado del automóvil. Luego, girando la resistencia y siguiendo el bus CAN de acuerdo con el método de búsqueda de datos que cambian rápidamente, puede encontrar las lecturas de temperatura del motor.

En la práctica, no utilicé este método, ya que ALT siempre estaba en la transmisión o pedían una solicitud a la máquina.

4. kilometraje del coche


Uno de los parámetros más importantes para la telemática.

Primero debe evaluar qué tamaño estamos buscando para un número. Si toma 2 bytes (16 bits) de datos, entonces el número máximo FF FF = 65,535 encajará en ellos. El automóvil puede viajar claramente más de 65 mil, lo que significa que el vehículo debe tener un mínimo de 24 bits de largo. Ya caben 16 millones de km., Lo cual es claramente suficiente para una carrera.

Pero, de nuevo, en diferentes autos de diferentes maneras. En Polo Sedan, el kilometraje se escribe en km, en algunos franceses se transmite con una precisión de 100 metros. entonces el número puede ocupar 32 y más bits.

Además de la búsqueda, debe tomar el kilometraje del tablero del automóvil y transferirlo a HEX.



En nuestro caso, son 5732 km. Lo traducimos a HEX y obtenemos 16 64. A continuación, busque para encontrar la línea donde se producirá esta combinación. Debe buscar por un byte, es decir, primero buscar 16, luego en las opciones encontradas, ver si también está el número 64 al lado del número 16. El número 64 puede estar a la izquierda o a la derecha del número 16. Dado que el millaje en este automóvil no es grande, lo más probable, al lado del número 64 también será 00. En el Configurador hay una búsqueda conveniente (CTRL + F), si usa otra herramienta, deberá buscar manualmente estos datos.

En nuestro caso, el kilometraje se encontró en 520 ID



00 16 64 = 5732 km.

Para verificar, es recomendable conducir unos pocos kilómetros más y verificar el valor del sensor encontrado.

Del mismo modo, se busca el kilometraje antes de repostar. En este automóvil, el tablero no transfiere el kilometraje a la estación de servicio al neumático, por lo que se realiza a pedido.

6. Sensores de nivel


El segundo sensor más importante para la telemática es el sensor de nivel de combustible. Puede encontrarlo en la transmisión, que es preferible, o por solicitud (menos preferible, pero en algunos automóviles no funcionará de manera diferente).

Primero necesita encontrar las lecturas de nivel de combustible en la herramienta de diagnóstico. Mi nivel de combustible se encontró en el grupo de instrumentos (bloque 17). En el grupo de instrumentos, las lecturas del sensor de nivel están en litros.

Ahora el auto tiene 21 litros de combustible.



Traducimos 21 de DEC a HEX y obtenemos el número 15. Al buscar, tratamos de encontrarlo. La secuencia contiene el número dado en ID 320. Si no se encuentra el número, entonces debe intentar buscar valores uno o más. En algunos automóviles, el combustible viene con una precisión de medio litro, por lo que debe buscar un valor 2 veces mayor.



Una vez que se encuentra el nivel de combustible, es necesario verter unos pocos litros de combustible en el automóvil y ver el resultado.

También puede desmontar el tanque de gasolina, extraer el FLS del tanque y moverlo, siguiendo las lecturas del bus CAN. O retire el conector del FLS y conecte una resistencia variable allí. Girándolo y siguiendo los cambios puede encontrar el sensor de nivel de combustible. Si decide desmontar, el nivel de combustible debe buscarse mediante el método de búsqueda de sensores que cambian rápidamente.

Además, al buscar, no se deben tener en cuenta los datos con ID superiores a 700. Estas son consultas de diagnóstico. Después de desconectar el equipo de diagnóstico, estos datos desaparecerán. Trataremos las solicitudes con más detalle a continuación.

Por ejemplo, la respuesta a las consultas del equipo de diagnóstico del nivel de combustible desde el tablero se ve así.



Además, el nivel de combustible (en porcentaje) se puede encontrar en consultas OBDII estándar, pero en el grupo VAG no siempre muestran los datos correctos. En el Skoda Rapid y Skoda Oktavia con el tanque lleno, los diagnósticos muestran un nivel de combustible del 85%.



6. Sensores de indicación


Los sensores de indicación son muy similares a los sensores binarios, y deben buscarse por el mismo método. Estos sensores incluyen una variedad de íconos en el tablero. Por ejemplo, el estado del icono Check Engine está en el primer byte de ID 480. Cuando se activa el encendido en este sensor 2C.



Después de comenzar, cuando se apaga el ícono Check Engine (CE), habrá un 00 en este sensor.



Ahora queda la pregunta, qué bit es responsable del ícono CE. Traducimos 2C a BIN y obtenemos el número 0010 1100.

Luego, copie la ID 480 completa, cambie el primer byte a 2C (0010 1100) e intente enviar este paquete al automóvil.

¡Atención!, enviar datos al automóvil no siempre es seguro, puede romper algo o aumentar el kilometraje. Vale la pena recurrir a este método solo si no se puede encontrar el sensor buscando sensores binarios.

En mi caso, envié a un automóvil arrollado (que no se recomienda) y mi ícono CE y EPC parpadea en mi orden.



Luego enviamos en lugar de 2C (0010 1100) 08 (0000 1000). En ordenado CE parpadea. Por lo tanto, 3 bits son responsables de este icono.



Si envía 04 (0000 0100), el ícono EPC parpadea.

7. Sensores con peticiones


No todos los datos se pueden encontrar en la secuencia. Por ejemplo, en un VW Transporter T4 diesel no hay temperatura del motor en la corriente. Ella no está ordenada. Por lo tanto, debe preguntarle al automóvil sobre estos parámetros. Lo mismo se aplica al nivel de combustible en Rio \ Solaris.

En este ejemplo, intentemos preguntar el nivel de combustible del Polo Sedan. Vamos al bloque 17, como hicimos en el párrafo sobre la búsqueda del nivel de combustible, y preguntamos al tablero. Después de analizar las solicitudes, vemos que el diagnóstico solicita el nivel de combustible con el siguiente comando:



Y en respuesta se trata de ella:



A continuación, copie la ID 714, apague la herramienta de diagnóstico e intente enviar una solicitud al automóvil. Si el ID 77E recibe la misma respuesta que cuando se conectó el diagnóstico, recibimos un paquete con un nivel de combustible (4 bytes. HEX 15 = DEC 21) 21 litros.

Vega MTX tiene herramientas integradas para trabajar con sensores con consultas. Allí puede configurar que las solicitudes se envíen después de que se active el encendido en un intervalo determinado o bajo ciertas condiciones.

Esto concluye con la metodología para buscar datos en el bus CAN. Si alguien más sabe qué métodos encontrar los datos necesarios en el bus CAN o compartir su experiencia, entonces los escucharé con gusto.

Antes de escribir este artículo, hice un video sobre este tema. El video contiene más información sobre la conexión al bus CAN del vehículo, trabajando con el Configurador y el servidor de archivos


Enlace al Configurador

El servidor tiene configuraciones para algunos automóviles, camiones y maquinaria agrícola. Todos los archivos están encriptados, puede ver qué sensores son visibles en el CAN del vehículo. Cuando esté conectado, los valores del sensor serán visibles, pero no funcionará para ver las direcciones.

Continuará.

All Articles