Décryptage des données dans le bus CAN VW Polo berline

Aujourd'hui, nous parlerons des méthodes de décryptage des données du bus CAN en utilisant l'exemple d'une voiture VW Polo Sedan 2019. Sur Internet, ces articles sont souvent appelés CAN Bus Hacks, mais je n'aime pas ce nom.

L'article décrit les méthodes de recherche des données nécessaires dans le bus CAN de la voiture, des exemples d'application de ces techniques sur la VW Polo Sedan. Le Vega MTX est utilisé comme équipement pour la connexion à un bus CAN. Parlons un peu plus de télématique. Sous la coupe beaucoup de photos sur le sujet, plusieurs gifs et vidéos.

Quelques mots sur vous.

Je m'appelle Alexey Fokin, en ce moment je travaille pour Vega Absolutevega_absolute. Le bureau central de Novossibirsk, mais je travaille à Moscou. Une de nos directions est la télématique. Nous fabriquons des équipements pour suivre les véhicules commerciaux, le covoiturage, les taxis, etc. Mon travail consiste à collecter des données sur les voitures et à les transformer en paramètres pour notre équipement.

Maintenant à la voiture.

La connexion au bus CAN s'est faite à deux endroits: derrière le tableau de bord (bus à 500 Kbit / s) et derrière la radio (100 Kbit / s). Il existe également une connexion redondante - la connexion au connecteur OBDII directement sur le connecteur (500 Kbit / s).

Parmi les outils utilisés: Unité de surveillance de véhicule Vega MTX équipée d'un scanner CAN. Pour le configurer sur un PC, le programme Configurator 1.27.14.

Vous trouverez plus d'informations sur la connexion à une voiture et au MTX dans la vidéo à la fin de l'article.

Une fois connecté à tous les bus CAN, nous verrons l'image suivante:



Dans ce flux de données, vous devez trouver les bits et octets qui sont responsables des paramètres dont nous avons besoin.

La capture d'écran ci-dessous montre combien de capteurs sont actuellement enregistrés dans le bloc télématique, et ce n'est pas une liste complète. Vous pouvez aller encore plus loin et rechercher encore plus de capteurs. Certains de ces capteurs envoient en temps réel des relevés au serveur, ce qui vous permet de voir à tout moment l'état de votre voiture.

La télématique est un sujet pour un article séparé, nous ne nous attarderons donc pas là-dessus en détail.



La question se pose immédiatement - pourquoi dois-je rechercher des données dans un flux si je peux les voir via ELM327 ou d'autres appareils de diagnostic?

La question ici est de savoir pourquoi nous avons besoin de ces données. Dans notre cas, nous avons besoin des données pour la télématique, et afin de ne pas interférer avec le fonctionnement du bus CAN et de ne pas lui envoyer de données, nous les recherchons dans le flux. Le Vega MTX dispose d'un mode spécial pour travailler avec le bus CAN - le mode «écoute». Le mode parle de lui-même, l'équipement n'écoute que le bus et ne lui envoie rien, minimisant ainsi tout impact sur le système de voiture ordinaire.

Par exemple, un capteur pour ouvrir une porte. Si nous lui demandons une demande, nous ne pouvons le faire qu'avec le contact. Une fois le contact coupé et le bus CAN endormi, ce capteur ne sera plus disponible. Si nous trouvons ce capteur dans le flux CAN, nous le verrons tout le temps lorsque le bus CAN fonctionne. Et, lorsque vous ouvrez la porte, CAN se réveille automatiquement.

Il faut également comprendre que tous les exemples ci-dessous ne concernent que la Polo Sedan connect. Dans d'autres, l'équipement ne peut avoir aucun des capteurs répertoriés, mais pour d'autres marques et modèles de voitures, les données seront sous des ID complètement différents.

J'attire votre attention sur le fait que par défaut dans le configurateur il y a un affichage des valeurs au format HEX. À l'avenir, nous devrons traduire les données du format HEX en valeurs décimales plus d'une fois. La façon la plus simple de le faire est d'utiliser l'application Calculatrice intégrée à Windows 10. Nous le traduisons en mode «programmeur» et nous avons le choix dans quel système numérique pour saisir les données, et ils sont dupliqués dans d'autres systèmes numériques.

Par la méthode de recherche, je divise tous les capteurs de la voiture en plusieurs types:

  1. Capteurs binaires.
  2. Capteurs à changement rapide.
  3. Capteurs de température.
  4. Kilométrage en voiture.
  5. Capteurs de niveau.
  6. Capteurs d'indication
  7. Capteurs avec demandes.

Passons maintenant aux méthodes avec lesquelles vous pouvez trouver chaque type de capteur.

1. Capteurs binaires


Commençons par les capteurs binaires les plus simples.

Ces capteurs incluent les capteurs de porte, les ceintures de sécurité, le frein (si les feux de freinage sont allumés), le frein à main, les boutons sont enfoncés, etc. Leur valeur est placée sur 1 bit, c'est-à-dire qu'elle peut être 0 (la porte est fermée) ou 1 (la porte est ouverte).

Les trouver est simple, mais nécessite des soins. Pour rechercher une porte conducteur, ouvrez / fermez la porte et regardez ce qui change dans le bus CAN.

Le configurateur met en évidence en rouge les données dans lesquelles des modifications ont été apportées au cours des dernières secondes.



Dans notre cas, la porte conducteur est responsable du bit zéro du premier octet du message avec l'ID 470.
Dans le même octet se trouvent les capteurs de toutes les autres portes + capteur de coffre.

2. Capteurs à changement rapide


Les capteurs à changement rapide sont similaires aux capteurs binaires, seule leur valeur est supérieure à 1 bit. Nous pouvons agir sur ces capteurs et voir immédiatement les changements dans le bus CAN.
Ces capteurs incluent la plupart des capteurs de position: position de la pédale d'accélérateur, position du verre, position de la transmission automatique, position de la clé de contact. En plus de ceux-ci, ce sont des capteurs de vitesse, de révolutions, des capteurs d'accélération du volant, d'accélération de la pédale d'accélérateur, etc.

Pour commencer, nous traiterons des capteurs de position en utilisant l'exemple du capteur de position de la pédale d'accélérateur.

Pour ce faire, on éteint la voiture, on met le contact et, sans démarrer le moteur, on appuie sur la pédale d'accélérateur et on surveille le changement dans le bus CAN.

En règle générale, lorsque la pédale d'accélérateur est relâchée, la valeur de ce capteur est 0 et, lorsque vous appuyez sur la pédale d'accélérateur, elle augmente jusqu'à une certaine valeur. Nous voyons un tel paramètre dans le premier CAN de l'ID 280. Le cinquième octet passe de 0 (la pédale est relâchée) à FA (la pédale est enfoncée «au sol»).



Si nous traduisons FA de HEX en DEC, nous obtenons alors le nombre 250. Par conséquent, pour obtenir la pédale d'accélérateur enfoncée en pourcentage (de 0 à 100), nous devons multiplier notre valeur par 0,4.

Passons maintenant aux capteurs qui ne correspondent pas à un octet, par exemple, au régime moteur. Nous augmentons et diminuons progressivement le régime moteur, tout en observant les changements dans le bus CAN. Les régimes du moteur ont le même ID que la pédale d'accélérateur.



Après avoir travaillé avec la pédale d'accélérateur, vous pouvez comprendre que les données ici sont dans l'ordre inverse. Autrement dit, la partie la plus ancienne se trouve dans le 3e octet (compter les octets à partir de zéro) et la plus jeune dans le deuxième octet.

Ensuite, vous devez transférer les données de HEX vers DEC.



Ensuite, nous devons évaluer les révolutions réelles par le tachymètre ou par des instruments de diagnostic. Dans mon cas, l'aiguille était à environ 1600 tr / min sur le tachymètre.

Ensuite, nous divisons les données de CAN au format décimal (6508) par le régime moteur du tachymètre (1600), nous obtenons 4,0675. Étant donné l'erreur de déterminer les révolutions à l'œil, arrondissez le diviseur à 4. Après cela, vous devez vérifier les lectures à plusieurs points. Pour ce faire, réglez le régime moteur à différentes vitesses et vérifiez-les avec les données du bus CAN.

Dans le configurateur, vous pouvez remplacer tous les coefficients dans les paramètres du capteur et observer les changements de vitesse en temps réel.

Ainsi, un grand nombre de capteurs sont recherchés: forces de freinage, position du volant, accélération du volant, vitesse du véhicule, etc.

3. Capteurs de température


Il était très difficile de trouver la température dans Polo Sedan. Pour commencer, un octet a été trouvé, qui a lentement changé vers le haut lorsque la voiture a été chauffée. Après cela, la recherche des coefficients nécessaires a commencé.

Nous connectons les diagnostics, sélectionnons la température du moteur et comparons les lectures du bus CAN et les données des diagnostics. Nous construisons une table de correspondance et sélectionnons les coefficients.
À la suite de la sélection des coefficients, une formule de calcul de la température est apparue.

XX * 0,75 - 48
où XX est la valeur de 1 octet de l'ID 288 dans le DEC.



Selon la formule, on peut calculer que la capture d'écran avait une température de

179 * 0,75 - 48 = 86,25 ° C.

où 179 est le nombre décimal B3 du premier octet de l'ID 288.

Mais c'est un cas difficile, dans de nombreuses voitures, la température est beaucoup plus facile à trouver.

Comme il est difficile de transmettre un nombre négatif dans le bus, les fabricants acceptent la valeur -40 ° C, -48 ° C ou -58 ° C comme 0 mesure. Par conséquent, nous connectons les diagnostics et voyons quelle est la température actuelle. Ajoutez 40 (48 ou 58) à cela et traduisez-le en HEX. Nous recherchons le nombre résultant dans le flux. Nous attendons que la température de la machine change d'un degré et vérifions la valeur trouvée. Si sa valeur a également augmenté de 1, c'est le capteur dont nous avons besoin.

Il est important de ne pas confondre les valeurs du bus CAN avec les valeurs des requêtes de diagnostic. Si vous recherchez simultanément des relevés sur le bus et que l'outil de diagnostic est connecté, les réponses aux demandes de diagnostic apparaîtront également dans le bus. Ils peuvent être identifiés par ID. Habituellement, tout ce qui dépasse 700 ID sont des demandes de diagnostic et des réponses.

De plus, la température du liquide de refroidissement peut toujours être demandée, cette méthode sera décrite ci-dessous dans la section sur les capteurs avec des demandes.

Vous pouvez utiliser une autre méthode pour rechercher la température: physiquement, nous trouvons le capteur de température du liquide de refroidissement (DTOZH) sur le moteur, l'éteignons et connectons une résistance variable au câblage de la voiture. Ensuite, en faisant tourner la résistance et en suivant le bus CAN selon la méthode de recherche de données changeant rapidement, vous pouvez trouver les relevés de température du moteur.

En pratique, je n'ai pas utilisé cette méthode, car ALT était toujours soit dans le flux, soit ils demandaient à la machine une demande.

4. Kilométrage en voiture


L'un des paramètres les plus importants pour la télématique.

Vous devez d'abord évaluer la taille que nous recherchons. Si vous prenez 2 octets (16 bits) de données, le nombre maximal FF FF = 65 535 pourra y entrer. La voiture peut clairement parcourir plus de 65 000, ce qui signifie que le véhicule doit avoir un minimum de 24 bits. Il y aura déjà 16 millions de kilomètres., Ce qui est clairement suffisant pour une course.

Mais là encore, dans différentes voitures de différentes manières. Dans Polo Sedan, le kilométrage est écrit en km, dans certains français il est transmis avec une précision de 100 mètres. alors le nombre peut occuper 32 bits et plus.

Plus loin pour la recherche, vous devez prendre le kilométrage du tableau de bord de la voiture et le transférer vers HEX.



Dans notre cas, c'est 5732 km. Nous le traduisons en HEX et obtenons 16 64. Ensuite, recherchez, vous devez trouver la ligne où cette combinaison se produira. Vous devez rechercher par un octet, c'est-à-dire d'abord rechercher 16, puis dans les options trouvées, regardez s'il y a aussi le nombre 64 à côté du nombre 16. Le nombre 64 peut être à gauche ou à droite du nombre 16. Étant donné que le kilométrage dans cette voiture n'est pas grand, puis très probablement, à côté du nombre 64, il sera également 00. Dans le configurateur, il existe une recherche pratique (CTRL + F), si vous utilisez un autre outil, vous devrez rechercher manuellement ces données.

Dans notre cas, le kilométrage a été trouvé en 520 ID



00 16 64 = 5732 km.

Pour vérifier, il est conseillé de parcourir encore quelques kilomètres et de vérifier la valeur du capteur trouvé.

De la même manière, le kilométrage est recherché avant de faire le plein. Dans cette voiture, le tableau de bord ne transfère pas le kilométrage à la station-service au pneu, il est donc fait sur demande.

6. Capteurs de niveau


Le deuxième capteur le plus important pour la télématique est le capteur de niveau de carburant. Vous pouvez le trouver soit dans le flux, ce qui est préférable, soit sur demande (moins préférable, mais dans certaines voitures, cela ne fonctionnera pas différemment).

Vous devez d'abord trouver les relevés de niveau de carburant dans l'outil de diagnostic. Mon niveau de carburant a été trouvé dans le combiné d'instruments (bloc 17). Dans le combiné d'instruments, les relevés du capteur de niveau sont en litres.

Maintenant, la voiture a 21 litres de carburant.



Nous traduisons 21 de DEC en HEX et obtenons le nombre 15. En recherchant, nous essayons de le trouver. Le flux contient le numéro donné dans l'ID 320. Si le numéro n'est pas trouvé, vous devez essayer de rechercher une ou plusieurs valeurs. Dans certaines voitures, le carburant est livré avec une précision d'un demi-litre, vous devez donc rechercher une valeur 2 fois plus grande.



Une fois le niveau de carburant trouvé, il est nécessaire de verser quelques litres de carburant dans la voiture et de regarder le résultat.

Vous pouvez également démonter le réservoir d'essence, retirer le FLS du réservoir et le déplacer, en suivant les lectures du bus CAN. Ou retirez le connecteur du FLS et connectez-y une résistance variable. En le faisant tourner et en suivant les changements, vous pouvez trouver le capteur de niveau de carburant. Si vous décidez de démonter, le niveau de carburant doit être recherché par la méthode de recherche de capteurs à changement rapide.

De plus, lors de la recherche, les données dont l'ID est supérieur à 700 ne doivent pas être prises en compte. Il s'agit de requêtes de diagnostic. Après avoir déconnecté l'équipement de diagnostic, ces données disparaîtront. Nous traiterons les demandes plus en détail ci-dessous.

Par exemple, la réponse aux demandes de l'équipement de diagnostic pour le niveau de carburant du tableau de bord ressemble à ceci.



En outre, le niveau de carburant (en pourcentage) peut être trouvé dans les requêtes OBDII standard, mais sur le groupe VAG, elles ne montrent pas toujours les données correctes. Sur les Skoda Rapid et Skoda Oktavia avec un réservoir plein, les diagnostics montrent un niveau de carburant de 85%.



6. Capteurs d'indication


Les capteurs d'indication sont très similaires aux capteurs binaires et doivent être recherchés par la même méthode. Ces capteurs incluent une variété d'icônes sur le tableau de bord. Par exemple, l'état de l'icône Check Engine se trouve dans le premier octet de l'ID 480. Lorsque le contact est mis sur ce capteur 2C.



Après le démarrage, lorsque l'icône Check Engine (CE) s'éteint, il y aura 00 dans ce capteur.



Maintenant, la question reste, quel bit est responsable de l'icône CE. Nous traduisons 2C en BIN et obtenons le numéro 0010 1100.

Ensuite, copiez l'ID 480 entier, changez le premier octet en 2C (0010 1100) et essayez d'envoyer ce paquet à la voiture.

Attention!, l'envoi de données à la voiture n'est pas toujours sûr, vous pouvez casser quelque chose ou liquider le kilométrage. Il vaut la peine de recourir à cette méthode uniquement si le capteur n'a pas pu être trouvé en recherchant des capteurs binaires.

Dans mon cas, j'ai envoyé vers une voiture liquidée (ce qui n'est pas recommandé) et mon icône CE et EPC clignote sur mon rangement.



Ensuite, nous envoyons au lieu de 2C (0010 1100) 08 (0000 1000). Le CE bien rangé clignote. Par conséquent, 3 bits sont responsables de cette icône.



Si vous envoyez 04 (0000 0100), l'icône EPC clignote.

7. Capteurs avec demandes


Toutes les données ne peuvent pas être trouvées dans le flux. Par exemple, dans un VW Transporter T4 diesel, il n'y a pas de température du moteur dans le flux. Elle n'est pas en ordre. Par conséquent, vous devez interroger la voiture sur ces paramètres. Il en va de même pour le niveau de carburant sur le Rio \ Solaris.

Dans cet exemple, essayons de demander le niveau de carburant de la Polo Sedan. Nous allons au bloc 17, comme nous l'avons fait dans le paragraphe sur la recherche du niveau de carburant, et demandons au tableau de bord. Après avoir analysé les demandes, nous voyons que le diagnostic demande le niveau de carburant avec la commande suivante:



Et en réponse, cela lui vient:



Ensuite, copiez l'ID 714, désactivez l'outil de diagnostic et essayez d'envoyer une demande à la voiture. Si l'ID 77E reçoit la même réponse que lors de la connexion des diagnostics, alors nous avons reçu un paquet avec un niveau de carburant (4 octets. HEX 15 = DEC 21) 21 litres.

Vega MTX dispose d'outils intégrés pour travailler avec des capteurs avec des requêtes. Vous pouvez y configurer l'envoi de demandes après la mise du contact à un certain intervalle ou sous certaines conditions.

Ceci se termine par la méthodologie de recherche de données dans le bus CAN. Si quelqu'un d'autre connaît les méthodes pour trouver les données nécessaires sur le bus CAN ou partager son expérience, je les écouterai avec plaisir.

Avant d'écrire cet article, j'ai fait une vidéo sur ce sujet. La vidéo contient plus d'informations sur la connexion au bus CAN du véhicule, en collaboration avec le configurateur et le serveur de fichiers


Lien vers le configurateur

Le serveur a des paramètres pour certaines voitures, camions et machines agricoles. Tous les fichiers sont cryptés, vous pouvez voir quels capteurs sont visibles dans le CAN du véhicule. Une fois connecté, les valeurs du capteur seront visibles, mais cela ne fonctionnera pas pour voir les adresses.

À suivre.

All Articles