Entschlüsselung von Daten in der CAN-Bus VW Polo Limousine

Heute werden wir am Beispiel eines VW Polo Limousine von 2019 über Methoden zum Entschlüsseln von CAN-Bus-Daten sprechen. Im Internet werden solche Artikel oft als CAN-Bus-Hacks bezeichnet, aber dieser Name gefällt mir nicht.

Der Artikel beschreibt die Methoden zum Auffinden der notwendigen Daten im CAN-Bus des Autos, Beispiele für die Anwendung dieser Techniken auf die VW Polo Limousine. Vega MTX wird als Ausrüstung für den Anschluss an einen CAN-Bus verwendet. Lassen Sie uns etwas mehr über Telematik sprechen. Unter dem Schnitt viele Bilder zum Thema, mehrere Gifs und Videos.

Ein paar Worte über dich.

Mein Name ist Alexey Fokin, im Moment arbeite ich für Vega Absolutevega_absolute. Die Zentrale in Nowosibirsk, aber ich arbeite in Moskau. Eine unserer Richtungen ist die Telematik. Wir stellen Geräte zur Verfolgung von Nutzfahrzeugen, Carsharing, Taxis usw. her. Meine Aufgabe ist es, Daten von Autos zu sammeln und sie in Einstellungen für unsere Ausrüstung umzuwandeln.

Nun zum Auto.

Die Verbindung zum CAN-Bus wurde an zwei Stellen hergestellt: hinter dem Armaturenbrett (500-Kbit / s-Bus) und hinter dem Radio (100-Kbit / s). Es gibt auch eine redundante Verbindung - die Verbindung zum OBDII-Anschluss direkt am Anschluss (500 Kbit / s).

Aus den verwendeten Werkzeugen: Vega MTX Fahrzeugüberwachungseinheit mit CAN-Scanner. Um es auf einem PC zu konfigurieren, verwenden Sie das Programm Configurator 1.27.14.

Weitere Informationen zum Anschließen an ein Auto und MTX finden Sie im Video am Ende des Artikels.

Bei Verbindung mit allen CAN-Bussen sehen wir das folgende Bild:



In diesem Datenstrom müssen Sie die Bits und Bytes finden, die für die von uns benötigten Parameter verantwortlich sind.

Der folgende Screenshot zeigt, wie viele Sensoren derzeit im Telematikblock registriert sind. Dies ist keine vollständige Liste. Sie können noch tiefer gehen und nach noch mehr Sensoren suchen. Einige dieser Sensoren senden in Echtzeit Messwerte an den Server, sodass Sie jederzeit den Status Ihres Autos anzeigen können.

Telematik ist ein Thema für einen separaten Artikel, daher werden wir hier nicht im Detail darauf eingehen.



Es stellt sich sofort die Frage: Warum muss ich in einem Stream nach Daten suchen, wenn ich sie über ELM327 oder andere Diagnosegeräte sehen kann?

Die Frage hier ist, warum wir diese Daten brauchen. In unserem Fall benötigen wir die Daten für die Telematik. Um den CAN-Bus nicht zu stören und keine Daten an ihn zu senden, suchen wir sie im Stream. Vega MTX verfügt über einen speziellen Modus für die Arbeit mit dem CAN-Bus - den „Listening“ -Modus. Der Modus spricht für sich selbst, die Ausrüstung hört nur auf den Bus und sendet nichts an ihn, wodurch die Auswirkungen auf das normale Fahrzeugsystem minimiert werden.

Zum Beispiel ein Sensor zum Öffnen einer Tür. Wenn wir ihn um eine Anfrage bitten, können wir dies nur bei eingeschalteter Zündung tun. Nach dem Ausschalten der Zündung und dem Einschlafen des CAN-Busses steht uns dieser Sensor nicht mehr zur Verfügung. Wenn wir diesen Sensor im CAN-Stream finden, sehen wir ihn die ganze Zeit, wenn der CAN-Bus funktioniert. Und wenn Sie die Tür öffnen, wird CAN automatisch aktiviert.

Es versteht sich auch, dass alle folgenden Beispiele nur für die Polo Sedan Connect relevant sind. In anderen Fällen sind in der Ausrüstung möglicherweise keine der Sensoren aufgeführt, bei anderen Automarken und Automodellen sind die Daten jedoch in völlig anderen IDs angegeben.

Ich mache Sie darauf aufmerksam, dass im Konfigurator standardmäßig Werte im HEX-Format angezeigt werden. In Zukunft müssen wir Daten aus dem HEX-Format mehrmals in Dezimalwerte übersetzen. Der einfachste Weg, dies zu tun, ist die Verwendung der in Windows 10 integrierten Calculator-Anwendung. Wir übersetzen es in den "Programmier" -Modus und haben die Wahl, in welches Zahlensystem Daten eingegeben werden sollen, und sie werden in anderen Zahlensystemen dupliziert.

Durch die Suchmethode teile ich alle Sensoren im Auto in verschiedene Typen ein:

  1. Binäre Sensoren.
  2. Schnell wechselnde Sensoren.
  3. Temperatursensoren.
  4. Kilometerstand.
  5. Füllstandsensoren.
  6. Anzeigesensoren
  7. Sensoren mit Anfragen.

Kommen wir nun zu den Methoden, mit denen Sie jeden Sensortyp finden können.

1. Binäre Sensoren


Beginnen wir mit den einfachsten binären Sensoren.

Diese Sensoren umfassen Türsensoren, Sicherheitsgurte, Bremse (unabhängig davon, ob die Bremslichter leuchten), Handbremse, gedrückte Tasten usw. Ihr Wert wird in 1 Bit gesetzt, dh er kann 0 (die Tür ist geschlossen) oder 1 (die Tür ist offen) sein.

Sie zu finden ist einfach, erfordert aber Sorgfalt. Um nach einer Fahrertür zu suchen, öffnen / schließen Sie die Tür und beobachten Sie, was sich im CAN-Bus ändert.

Der Konfigurator markiert die Daten, bei denen in den letzten Sekunden Änderungen vorgenommen wurden, rot.



In unserem Fall ist die Fahrertür für das Nullbit des ersten Bytes der Nachricht mit der ID 470 verantwortlich.
Im selben Byte befinden sich die Sensoren aller anderen Türen + Kofferraumsensor.

2. Schnell wechselnde Sensoren


Schnell wechselnde Sensoren ähneln binären Sensoren, nur dass ihr Wert mehr als 1 Bit beträgt. Wir können auf diese Sensoren einwirken und sofort Änderungen im CAN-Bus erkennen.
Diese Sensoren umfassen die meisten Positionssensoren: Gaspedalposition, Glasposition, Automatikgetriebeposition, Zündschlüsselposition. Darüber hinaus sind dies Sensoren für Geschwindigkeit, Umdrehungen, Sensoren für die Beschleunigung des Lenkrads, die Beschleunigung des Gaspedals usw.

Zunächst werden Positionssensoren am Beispiel des Gaspedal-Positionssensors behandelt.

Dazu schalten wir das Auto aus, schalten die Zündung ein und drücken, ohne den Motor zu starten, das Gaspedal und überwachen die Änderung im CAN-Bus.

Wenn das Gaspedal losgelassen wird, ist der Wert dieses Sensors in der Regel 0, und wenn Sie das Gaspedal drücken, steigt er auf einen bestimmten Wert an. Wir sehen einen solchen Parameter im ersten CAN in ID 280. Das fünfte Byte wechselt von 0 (das Pedal wird losgelassen) zu FA (das Pedal wird „auf den Boden“ gedrückt).



Wenn wir FA von HEX nach DEC übertragen, erhalten wir die Zahl 250. Um das Gaspedal in Prozent (von 0 auf 100) zu drücken, müssen wir unseren Wert mit 0,4 multiplizieren.

Kommen wir nun zu Sensoren, die nicht in ein Byte passen, z. B. zur Motordrehzahl. Wir erhöhen und verringern die Motordrehzahl schrittweise, während wir beobachten, was sich im CAN-Bus ändert. Die Motordrehzahl hat dieselbe ID wie das Gaspedal.



Nachdem Sie mit dem Gaspedal gearbeitet haben, können Sie verstehen, dass die Daten hier in umgekehrter Reihenfolge sind. Das heißt, der älteste Teil befindet sich im 3. Byte (Anzahl Bytes von Null) und der jüngste im zweiten Byte.

Als nächstes müssen Sie die Daten von HEX nach DEC übertragen.



Als nächstes müssen wir die tatsächlichen Umdrehungen mit dem Drehzahlmesser oder mit diagnostischen Instrumenten bewerten. In meinem Fall hatte die Nadel am Drehzahlmesser eine Drehzahl von ca. 1600 U / min.

Als nächstes teilen wir die Daten von CAN im Dezimalformat (6508) durch die Motordrehzahl vom Drehzahlmesser (1600), wir erhalten 4,0675. Runden Sie den Teiler angesichts des Fehlers bei der Bestimmung der Umdrehungen mit dem Auge auf 4 ab. Danach müssen Sie die Messwerte an mehreren Stellen überprüfen. Stellen Sie dazu die Motordrehzahl auf unterschiedliche Drehzahlen ein und überprüfen Sie diese mit Daten vom CAN-Bus.

Im Konfigurator können Sie alle Koeffizienten in den Sensoreinstellungen ersetzen und die Geschwindigkeitsänderungen in Echtzeit beobachten.

Daher wird eine große Anzahl von Sensoren gesucht: Bremskräfte, Lenkradposition, Lenkradbeschleunigung, Fahrzeuggeschwindigkeit usw.

3. Temperatursensoren


Es war sehr schwierig, die Temperatur in der Polo-Limousine zu finden. Zunächst wurde ein Byte gefunden, das sich beim Aufheizen des Autos langsam nach oben änderte. Danach begann die Suche nach den notwendigen Koeffizienten.

Wir schließen die Diagnose an, wählen die Motortemperatur aus und vergleichen die Messwerte des CAN-Busses und die Daten aus der Diagnose. Wir erstellen eine Entsprechungstabelle und wählen die Koeffizienten aus.
Als Ergebnis der Auswahl der Koeffizienten erschien eine Formel zur Berechnung der Temperatur.

XX * 0,75 - 48
wobei XX der Wert von 1 Byte von ID 288 im DEC ist.



Nach der Formel kann berechnet werden, dass der Screenshot eine Temperatur von

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

Dabei ist 179 die Dezimalzahl B3 aus dem ersten Byte von ID 288.

Dies ist jedoch ein schwieriger Fall. In vielen Autos ist die Temperatur viel leichter zu ermitteln.

Da es schwierig ist, eine negative Zahl im Bus zu übertragen, akzeptieren die Hersteller den Wert -40 ° C, -48 ° C oder -58 ° C als 0-Messungen. Daher schließen wir die Diagnose an und sehen, wie hoch die Temperatur jetzt ist. Fügen Sie 40 (48 oder 58) hinzu und übersetzen Sie es in HEX. Wir suchen nach der resultierenden Nummer im Stream. Wir warten darauf, dass sich die Temperatur der Maschine um ein Grad ändert, und überprüfen den gefundenen Wert. Wenn sich sein Wert ebenfalls um 1 erhöht, ist dies der Sensor, den wir brauchen.

Es ist wichtig, die Werte vom CAN-Bus nicht mit den Werten der Diagnoseabfragen zu verwechseln. Wenn Sie gleichzeitig auf dem Bus nach Messwerten suchen und das Diagnosetool angeschlossen ist, werden auch Antworten auf Diagnoseanfragen im Bus angezeigt. Sie können anhand der ID identifiziert werden. Normalerweise sind mehr als 700 IDs Diagnoseanfragen und -antworten.

Auch die Temperatur des Kühlmittels kann jederzeit angefragt werden, über diese Methode wird weiter unten im Abschnitt über Sensoren mit Anfragen beschrieben.

Sie können eine andere Methode verwenden, um nach der Temperatur zu suchen: Physisch finden wir den Kühlmitteltemperatursensor (DTOZH) am Motor, schalten ihn aus und schließen einen variablen Widerstand an die Fahrzeugverkabelung an. Wenn Sie dann den Widerstand drehen und dem CAN-Bus gemäß der Methode zum Suchen nach sich schnell ändernden Daten folgen, können Sie die Motortemperaturwerte ermitteln.

In der Praxis habe ich diese Methode nicht verwendet, da ALT immer entweder im Stream war oder die Maschine um eine Anfrage gebeten hat.

4. Kilometerstand


Einer der wichtigsten Parameter für die Telematik.

Zuerst müssen Sie bewerten, welche Größe wir für eine Zahl suchen. Wenn Sie 2 Bytes (16 Bit) Daten aufnehmen, passt die maximale Anzahl FF FF = 65.535 in diese. Das Auto kann eindeutig mehr als 65.000 fahren, was bedeutet, dass das Fahrzeug mindestens 24 Bit lang sein muss. Es werden bereits 16 Millionen km passen, was eindeutig für einen Lauf ausreicht.

Aber andererseits in verschiedenen Autos auf unterschiedliche Weise. In der Polo-Limousine wird der Kilometerstand in km angegeben, in einigen französischen mit einer Genauigkeit von 100 Metern. dann kann die Zahl 32 und mehr Bits belegen.

Für die Suche sollten Sie den Kilometerstand vom Armaturenbrett des Autos nehmen und an HEX übertragen.



In unserem Fall sind es 5732 km. Wir übersetzen es in HEX und erhalten 16 64. Als nächstes suchen Sie, um die Zeile zu finden, in der diese Kombination auftreten wird. Sie müssen nach einem Byte suchen, dh zuerst nach 16 suchen und dann in den gefundenen Optionen prüfen, ob sich neben der Nummer 16 auch die Nummer 64 befindet. Die Nummer 64 kann entweder links oder rechts von der Nummer 16 stehen. Da der Kilometerstand in diesem Auto nicht ist groß, dann wird es höchstwahrscheinlich neben der Zahl 64 auch 00 sein. Im Konfigurator gibt es eine bequeme Suche (STRG + F). Wenn Sie ein anderes Werkzeug verwenden, müssen Sie manuell nach diesen Daten suchen.

In unserem Fall wurde der Kilometerstand in 520 ID



00 16 64 = 5732 km gefunden.

Zur Überprüfung ist es ratsam, noch einige Kilometer zu fahren und den Wert des gefundenen Sensors zu überprüfen.

Auf die gleiche Weise wird der Kilometerstand vor dem Auftanken gesucht. In diesem Auto überträgt das Armaturenbrett den Kilometerstand nicht zur Tankstelle auf den Reifen, daher erfolgt dies auf Anfrage.

6. Füllstandsensoren


Der zweitwichtigste Sensor für die Telematik ist der Kraftstoffstandsensor. Sie finden es entweder im Stream, der vorzuziehen ist, oder auf Anfrage (weniger vorzuziehen, aber in einigen Autos funktioniert es nicht anders).

Zuerst müssen Sie die Kraftstoffstandwerte im Diagnosetool ermitteln. Mein Kraftstoffstand wurde im Kombiinstrument (17 Block) gefunden. Im Kombiinstrument sind die Messwerte vom Füllstandsensor in Litern angegeben.

Jetzt hat das Auto 21 Liter Kraftstoff.



Wir übersetzen 21 von DEC nach HEX und erhalten die Nummer 15. Durch die Suche versuchen wir, sie zu finden. Der Stream enthält die angegebene Nummer in ID 320. Wenn die Nummer nicht gefunden wird, sollten Sie versuchen, nach einem oder mehreren Werten zu suchen. In einigen Autos hat der Kraftstoff eine Genauigkeit von einem halben Liter. Sie müssen also nach einem Wert suchen, der doppelt so groß ist.



Sobald der Kraftstoffstand gefunden ist, müssen einige Liter Kraftstoff in das Auto gegossen und das Ergebnis überprüft werden.

Sie können den Gastank auch zerlegen, den FLS aus dem Tank ziehen und gemäß den CAN-Bus-Werten bewegen. Oder ziehen Sie den Stecker vom FLS ab und schließen Sie dort einen variablen Widerstand an. Wenn Sie ihn drehen und den Änderungen folgen, finden Sie den Kraftstoffstandsensor. Wenn Sie sich für eine Demontage entscheiden, sollte der Kraftstoffstand anhand der Methode zur Suche nach sich schnell ändernden Sensoren ermittelt werden.

Bei der Suche sollten auch Daten mit IDs über 700 nicht berücksichtigt werden. Dies sind Diagnoseabfragen. Nach dem Trennen des Diagnosegeräts verschwinden diese Daten. Wir werden uns im Folgenden ausführlicher mit den Anfragen befassen.

So sieht beispielsweise die Antwort auf die Fragen der Diagnosegeräte zum Kraftstoffstand vom Armaturenbrett aus aus.



Der Kraftstoffstand (in Prozent) ist auch in Standard-OBDII-Abfragen enthalten, in der VAG-Gruppe werden jedoch nicht immer die richtigen Daten angezeigt. Beim Skoda Rapid und Skoda Oktavia mit vollem Tank zeigt die Diagnose einen Kraftstoffstand von 85%.



6. Anzeigesensoren


Anzeigesensoren sind binären Sensoren sehr ähnlich und sollten mit derselben Methode durchsucht werden. Diese Sensoren enthalten eine Vielzahl von Symbolen im Dashboard. Beispielsweise befindet sich der Status des Check Engine-Symbols im ersten Byte von ID 480. Wenn die Zündung in diesem Sensor 2C eingeschaltet ist.



Nach dem Start, wenn sich das Check Engine (CE) -Symbol ausschaltet, befindet sich 00 in diesem Sensor.



Nun bleibt die Frage, welches Bit für das CE-Symbol verantwortlich ist. Wir übersetzen 2C in BIN und erhalten die Nummer 0010 1100.

Kopieren Sie anschließend die gesamte 480-ID, ändern Sie das erste Byte in 2C (0010 1100) und versuchen Sie, dieses Paket an das Auto zu senden.

Beachtung!Wenn Sie Daten an das Auto senden, ist dies nicht immer sicher. Sie können etwas beschädigen oder den Kilometerstand erhöhen. Es lohnt sich nur, auf diese Methode zurückzugreifen, wenn der Sensor nicht durch die Suche nach binären Sensoren gefunden werden konnte.

In meinem Fall habe ich an ein abgewickeltes Auto gesendet (was nicht empfohlen wird) und mein CE- und EPC-Symbol blinkt auf meiner Aufräumaktion.



Dann senden wir anstelle von 2C (0010 1100) 08 (0000 1000). Bei ordentlichem CE blinkt. Daher sind 3 Bits für dieses Symbol verantwortlich.



Wenn Sie 04 (0000 0100) senden, blinkt das EPC-Symbol.

7. Sensoren mit Anfragen


Nicht alle Daten können im Stream gefunden werden. In einem Diesel-VW-Transporter T4 befindet sich beispielsweise keine Motortemperatur im Strom. Sie ist nicht aufgeräumt. Daher müssen Sie das Auto nach diesen Parametern fragen. Gleiches gilt für den Kraftstoffstand des Rio \ Solaris.

In diesem Beispiel versuchen wir, den Kraftstoffstand der Polo-Limousine zu erfragen. Wir gehen zu Block 17, wie wir es im Absatz über die Suche nach dem Kraftstoffstand getan haben, und fragen das Armaturenbrett. Nach der Analyse der Anfragen sehen wir, dass die Diagnose mit dem folgenden Befehl nach dem Kraftstoffstand fragt:



Und als Antwort kommt sie zu ihr:



Kopieren Sie als nächstes die ID 714, schalten Sie das Diagnosetool aus und versuchen Sie, eine Anfrage an das Auto zu senden. Wenn die ID 77E dieselbe Antwort erhält wie beim Anschließen der Diagnose, haben wir ein Paket mit einem Kraftstoffstand (4 Byte. HEX 15 = DEC 21) von 21 Litern erhalten.

Vega MTX verfügt über integrierte Tools für die Arbeit mit Sensoren bei Abfragen. Dort können Sie konfigurieren, dass Anforderungen gesendet werden, nachdem die Zündung in einem bestimmten Intervall oder unter bestimmten Bedingungen eingeschaltet wurde.

Dies schließt mit der Methode zum Suchen von Daten im CAN-Bus. Wenn jemand weiß, mit welchen Methoden er die erforderlichen Daten auf dem CAN-Bus findet oder seine Erfahrungen teilt, werde ich ihnen gerne zuhören.

Bevor ich diesen Artikel schrieb, habe ich ein Video zu diesem Thema gemacht. Das Video enthält weitere Informationen zum Herstellen einer Verbindung zum CAN-Bus des Fahrzeugs in Verbindung mit dem Konfigurator und dem Dateiserver


Link zum Konfigurator

Der Server verfügt über Einstellungen für einige Autos, Lastwagen und landwirtschaftliche Maschinen. Alle Dateien sind verschlüsselt. Sie können sehen, welche Sensoren im CAN des Fahrzeugs sichtbar sind. Wenn eine Verbindung hergestellt ist, werden die Sensorwerte angezeigt, die Adressen werden jedoch nicht angezeigt.

Fortsetzung folgt.

All Articles