Der CAN-Bus im Volvo
Um Kabelbäume unter anderem in Fahrzeugen zu vereinfachen entwickelte Bosch im Jahre 1983 das Controller Area Network. Seit dem Jahr 2000 findet dieses System in vielen Fahrzeugen Anwendung (bei Volvo ab V70II S80 S60 XC70 XC90).
Grundprinzip ist, dass der gesamte Datenaustausch auf zwei Leitungen stattfindet. Diese werden um Reflexionen an beiden Enden zu vermeiden jeweils mit einem 120 Ohm Widerstand terminiert. Die Signalübertragung erfolgt differenziell mit einer Spannungsdifferenz von 2V zwischen CAN-H und CAN-L. Da im KFZ die Datenleitung vielen Störfeldern ausgesetzt ist werden beide Kabel miteinander verdrillt ,damit beide Leitungen den Störungen gleichermaßen ausgesetzt sind und eine Spannungsdifferenz von 2V erhalten bleibt.
Link zur Grafik
Bei einem dominanten Zustand (logisch 0) liegen beide Leitung auf einer Spannung von 2,5 volt. Im rezessiven Zustand (logisch 1) wird die Spannung der Leitung CAN-H(igh) um 1V auf 3,5V angehoben und die Spannung auf der Leitung CAN-L(ow) um 1V auf 1,5V abgesenkt.
Link zur Grafik
Alle im Netzwerk befindlichen Geräte können auf dieser Leitung mithören und abwechselnd senden. Damit sichergestellt wird, dass immer nur ein einzelnes Gerät sendet ist das Übertragungsverfahren streng definiert. Eine Darstellung aller Mechanismen würden den Inhalt des Forums jedoch sprengen, somit ist es an dieser Stelle sinnvoll die wesentlichen Spezifikationen zu erläutern.
Ein Gerät muss immer auf eine Lücke warten, bis es anfangen darf, Daten in das Netzwerk zu senden. Gleichzeitig muss das sendende Gerät im Netzwerk mithören und vergleichen ob jeder einzelne Spannungszustand erfolgreich in das Netzwerk übertragen wird. Da bei einer 1 der Pegel als hoch und einer 0 der Pegel als tief definiert ist, kommt es dazu, dass wenn zwei Geräte gleichzeitig senden, das Gerät mit dem dominanten Bit das Netzwerk auf Null zieht und somit den rezessiven Zustand überschreibt. Weil jedes Gerät die zu sendende Meldung mit dem Zustand des Netzwerkes vergleicht, stellt das Gerät, welches zum eigentlichen Zeitpunkt eine 1 gesendet hat einen Fehler fest und stoppt die eigene Sendung. Infolgedessen haben Meldungen mit einer vorausgehenden 0 eine höhere Priorität als Meldungen mit einer vorausgehenden 1.
Zur Identifikation besteht jede gesendete Meldung aus einer ID und einem Datensatz.
Zum Beispiel die Meldung welche vom Lenkradmodul gesendet wird, um den Zustand des Blinker- und Wischerhebels wiederzugeben:
ID: 0111300A Daten: C0 00 00 27 80 8E 00 C0
Da Volvo den erweiterten J1939-CAN-Frame nutzt besteht die ID aus 4 Bytes “01 11 30 0A” welche einerseits die Priorität der Meldung festlegen und andererseits der Identifikation dienen. Jede ID in einem Netzwerk darf nur einmal vergeben sein. Die ID hat den Nutzen für andere Geräte, dass diese dadurch selektieren können, welche Informationen für sie wichtig sein können. Das Radio beispielsweise achtet auf IDs, welche vom CEM kommen und die Geschwindigkeit und Beleuchtungseinstellung enthalten, wie auch auf IDs welche vom Lenkradmodul kommen und eine Änderung der Lenkradtasten enthalten.
Ein Gerät darf auch über mehrere IDs verfügen, da es auch verschiedene Informationen versenden kann.
Die ID bei Volvo wird gefolgt von einem 8 Byte Datensatz “C0 00 00 27 80 8E 00 C0” in diesem sind die Informationen enthalten, welche das Gerät dem Netzwerk mitteilt.
In Beispiel des Lenkradmoduls codiert die 5te Stelle (Byte 4) für:
5te Stelle:
80: Nichts gedrückt
84: Blinkhebel in rechter Stellung
88: Blinkhebel in linker Stellung
C0: Resettaste am Blinkhebel wird betätigt (Boardcomputerversion)
A0: Read Taste am Blinkhebel wird betätigt
Die 6te Stelle "8E" gibt an, dass der Wischerhebel in 0 Stellung ist.
Die Gesamte Meldung wird etwa alle 15ms in das Datennetzwerk gesendet (nach Priorität häufiger oder seltener), damit jegliche Geräte über den Zustand Bescheid wissen und entsprechend reagieren können. Erhält das CCM die Meldung 84 aktiviert es das Relais für den Blinker der rechten Seite.
Link zum Datendiagramm
Im Datendiagramm ist zu erkennen, dass die gesamte Meldung (als Frame bezeichnet) aus mehr als der ID und dem Datensatz besteht. Es sind noch einige Zusätze nötig, damit eine Meldung erfolgreich übertragen werden kann, diese sind aber bei alleiniger Betrachtung der Meldungen hier nicht von Bedeutung und werden in der realen Anwendung von Controllern automatisch errechnet und durchgeführt.
Kommt es trotz aller Mechanismen dazu, dass ein Fehler auftritt, weil beispielsweise eine ID doppelt im Netzwerk auftritt, unterbricht das Gerät mit gleicher ID die Sendung sofortig und versucht zu einem weiteren Zeitpunkt seine Meldung in das Netzwerk zu senden. Kommt es weiterhin hintereinander zum selbigen Fehler, klinkt sich das Gerät für eine vergleichsweise längere Zeit (ca. 10s) aus dem Netzwerk aus und versucht den Datentransfer erneut. Dies kann jedoch gravierend sein, wenn beispielsweise für etwa 10s der Blinker nicht mehr funktioniert.
Im Volvo gibt es zwei verschiedene CAN-Netzwerke:
Link zur Grafik
Das Motor High-Speed CAN mit einer Datenrate von 250kb/s und das Comfort-Low-Speed-CAN mit einer Datenrate von 125kb/s. Beide Netzwerke laufen voneinander unabhängig, das CEM ist das einzige Gerät welches in Kontakt mit beiden Netzwerken steht und somit Daten zwischen diesen austauschen kann wie beispielsweise die Drehzahl.
Volvo hat die Codierung jeglicher Daten in jedem Baujahr geändert, was zur Folge hat, das sich Geräte aus unterschiedlichen Baujahren nicht über den CAN-Bus unterhalten können, das sie ihre Meldungen nicht mehr verstehen.
Dazu ein Beispiel für die Datenwörter, welche unter anderem für die Tasten des Lenkrades zuständig sind:
Fahrzeug aus 2001
ID: 00200066 Daten: C0 00 00 01 1F 40 40 7F
Fahrzeug aus 2002:
ID: 0261300A Daten: 80 00 00 27 80 C2 00 CF
Beide Meldungen erfüllen genau die gleiche Funktion, können aber nicht von Geräten aus anderen Baujahren interpretiert werden.
Durch diese Zusammenhänge lassen sich nicht nur Funktionen im Fahrzeug ergründen sondern auch Erweiterungen wie die eines CAN-Extenders aufbauen. Durch ein einfaches Senden einer Meldung in dieses Netzwerk lässt sich somit etwa eine Coming-Home Funktion mit zusätzlich aktivierten Nebelscheinwerfen realisieren oder es können Tastendrücke oder Fahrzeugdaten jeglicher Art erfasst werden.
Beste Antwort im Thema
Um Kabelbäume unter anderem in Fahrzeugen zu vereinfachen entwickelte Bosch im Jahre 1983 das Controller Area Network. Seit dem Jahr 2000 findet dieses System in vielen Fahrzeugen Anwendung (bei Volvo ab V70II S80 S60 XC70 XC90).
Grundprinzip ist, dass der gesamte Datenaustausch auf zwei Leitungen stattfindet. Diese werden um Reflexionen an beiden Enden zu vermeiden jeweils mit einem 120 Ohm Widerstand terminiert. Die Signalübertragung erfolgt differenziell mit einer Spannungsdifferenz von 2V zwischen CAN-H und CAN-L. Da im KFZ die Datenleitung vielen Störfeldern ausgesetzt ist werden beide Kabel miteinander verdrillt ,damit beide Leitungen den Störungen gleichermaßen ausgesetzt sind und eine Spannungsdifferenz von 2V erhalten bleibt.
Link zur Grafik
Bei einem dominanten Zustand (logisch 0) liegen beide Leitung auf einer Spannung von 2,5 volt. Im rezessiven Zustand (logisch 1) wird die Spannung der Leitung CAN-H(igh) um 1V auf 3,5V angehoben und die Spannung auf der Leitung CAN-L(ow) um 1V auf 1,5V abgesenkt.
Link zur Grafik
Alle im Netzwerk befindlichen Geräte können auf dieser Leitung mithören und abwechselnd senden. Damit sichergestellt wird, dass immer nur ein einzelnes Gerät sendet ist das Übertragungsverfahren streng definiert. Eine Darstellung aller Mechanismen würden den Inhalt des Forums jedoch sprengen, somit ist es an dieser Stelle sinnvoll die wesentlichen Spezifikationen zu erläutern.
Ein Gerät muss immer auf eine Lücke warten, bis es anfangen darf, Daten in das Netzwerk zu senden. Gleichzeitig muss das sendende Gerät im Netzwerk mithören und vergleichen ob jeder einzelne Spannungszustand erfolgreich in das Netzwerk übertragen wird. Da bei einer 1 der Pegel als hoch und einer 0 der Pegel als tief definiert ist, kommt es dazu, dass wenn zwei Geräte gleichzeitig senden, das Gerät mit dem dominanten Bit das Netzwerk auf Null zieht und somit den rezessiven Zustand überschreibt. Weil jedes Gerät die zu sendende Meldung mit dem Zustand des Netzwerkes vergleicht, stellt das Gerät, welches zum eigentlichen Zeitpunkt eine 1 gesendet hat einen Fehler fest und stoppt die eigene Sendung. Infolgedessen haben Meldungen mit einer vorausgehenden 0 eine höhere Priorität als Meldungen mit einer vorausgehenden 1.
Zur Identifikation besteht jede gesendete Meldung aus einer ID und einem Datensatz.
Zum Beispiel die Meldung welche vom Lenkradmodul gesendet wird, um den Zustand des Blinker- und Wischerhebels wiederzugeben:
ID: 0111300A Daten: C0 00 00 27 80 8E 00 C0
Da Volvo den erweiterten J1939-CAN-Frame nutzt besteht die ID aus 4 Bytes “01 11 30 0A” welche einerseits die Priorität der Meldung festlegen und andererseits der Identifikation dienen. Jede ID in einem Netzwerk darf nur einmal vergeben sein. Die ID hat den Nutzen für andere Geräte, dass diese dadurch selektieren können, welche Informationen für sie wichtig sein können. Das Radio beispielsweise achtet auf IDs, welche vom CEM kommen und die Geschwindigkeit und Beleuchtungseinstellung enthalten, wie auch auf IDs welche vom Lenkradmodul kommen und eine Änderung der Lenkradtasten enthalten.
Ein Gerät darf auch über mehrere IDs verfügen, da es auch verschiedene Informationen versenden kann.
Die ID bei Volvo wird gefolgt von einem 8 Byte Datensatz “C0 00 00 27 80 8E 00 C0” in diesem sind die Informationen enthalten, welche das Gerät dem Netzwerk mitteilt.
In Beispiel des Lenkradmoduls codiert die 5te Stelle (Byte 4) für:
5te Stelle:
80: Nichts gedrückt
84: Blinkhebel in rechter Stellung
88: Blinkhebel in linker Stellung
C0: Resettaste am Blinkhebel wird betätigt (Boardcomputerversion)
A0: Read Taste am Blinkhebel wird betätigt
Die 6te Stelle "8E" gibt an, dass der Wischerhebel in 0 Stellung ist.
Die Gesamte Meldung wird etwa alle 15ms in das Datennetzwerk gesendet (nach Priorität häufiger oder seltener), damit jegliche Geräte über den Zustand Bescheid wissen und entsprechend reagieren können. Erhält das CCM die Meldung 84 aktiviert es das Relais für den Blinker der rechten Seite.
Link zum Datendiagramm
Im Datendiagramm ist zu erkennen, dass die gesamte Meldung (als Frame bezeichnet) aus mehr als der ID und dem Datensatz besteht. Es sind noch einige Zusätze nötig, damit eine Meldung erfolgreich übertragen werden kann, diese sind aber bei alleiniger Betrachtung der Meldungen hier nicht von Bedeutung und werden in der realen Anwendung von Controllern automatisch errechnet und durchgeführt.
Kommt es trotz aller Mechanismen dazu, dass ein Fehler auftritt, weil beispielsweise eine ID doppelt im Netzwerk auftritt, unterbricht das Gerät mit gleicher ID die Sendung sofortig und versucht zu einem weiteren Zeitpunkt seine Meldung in das Netzwerk zu senden. Kommt es weiterhin hintereinander zum selbigen Fehler, klinkt sich das Gerät für eine vergleichsweise längere Zeit (ca. 10s) aus dem Netzwerk aus und versucht den Datentransfer erneut. Dies kann jedoch gravierend sein, wenn beispielsweise für etwa 10s der Blinker nicht mehr funktioniert.
Im Volvo gibt es zwei verschiedene CAN-Netzwerke:
Link zur Grafik
Das Motor High-Speed CAN mit einer Datenrate von 250kb/s und das Comfort-Low-Speed-CAN mit einer Datenrate von 125kb/s. Beide Netzwerke laufen voneinander unabhängig, das CEM ist das einzige Gerät welches in Kontakt mit beiden Netzwerken steht und somit Daten zwischen diesen austauschen kann wie beispielsweise die Drehzahl.
Volvo hat die Codierung jeglicher Daten in jedem Baujahr geändert, was zur Folge hat, das sich Geräte aus unterschiedlichen Baujahren nicht über den CAN-Bus unterhalten können, das sie ihre Meldungen nicht mehr verstehen.
Dazu ein Beispiel für die Datenwörter, welche unter anderem für die Tasten des Lenkrades zuständig sind:
Fahrzeug aus 2001
ID: 00200066 Daten: C0 00 00 01 1F 40 40 7F
Fahrzeug aus 2002:
ID: 0261300A Daten: 80 00 00 27 80 C2 00 CF
Beide Meldungen erfüllen genau die gleiche Funktion, können aber nicht von Geräten aus anderen Baujahren interpretiert werden.
Durch diese Zusammenhänge lassen sich nicht nur Funktionen im Fahrzeug ergründen sondern auch Erweiterungen wie die eines CAN-Extenders aufbauen. Durch ein einfaches Senden einer Meldung in dieses Netzwerk lässt sich somit etwa eine Coming-Home Funktion mit zusätzlich aktivierten Nebelscheinwerfen realisieren oder es können Tastendrücke oder Fahrzeugdaten jeglicher Art erfasst werden.
277 Antworten
Endlich war das Wetter mal gut für die ersten Tests.
Ich bin mit meinen Kabel direkt ans AEM, der Vorteil dabei war das beide CAN, Plus und Masse Leitungen gleich abgreifbar waren.
Der CanHack ging ohne Probleme dafür kam die Ernüchterung bei den Test mit Diagnosecodes. Der Gong war der einzige der ging und dafür auch nur für 10s ohne Deaktivierung.
Kann man irgendwie die rolling counter heraus Filtern? Ich meine, ich habe 32 Codes ID wo sich bei ca 24 immer wieder was ändert, da verliert man echt die Übersicht
Welche Bedeutung hat DLC?
Gruß Martin
Also den Gong und den Blinker wie auch sonst alle einteiligen Codes sollten sich unten in CanHacker eingeben lassen und auch per Single-Shot gesendet werden.
Es kann sein das in anderen Modelljahren auch der Gong mit einer Alive-Message etwa alle 4 Sekunden erhalten werden muss.
Bei den zweiteiligen Codes ist es wichtig die Zeitabstände einzuhalten (meist 15ms), dies ist leicht möglich in dem eine Trace-Datei von CanHacker bearbeitet wird, so dass nachher nur diese beiden Meldungen mit der entsprechenden Zeit drin stehen.
DLC steht für Data Length Code ist bei Volvo immer 8-Bit, also die länge des Datensatzes.
Eine Methode Counter zu filtern ist mir da mit CanHacker nicht begannt, klar gibts da auch besseres, dies erfordert aber auch teure Hardware, oder das jemand ein Protokoll für den Arduino umsetzt.
Wenn man es auf eine ID abgesehen hat, bringt das Setzten eines Filter schon viel bei der Betrachtung im Tracer.
Denke insesamt lässt sich damit arbeiten, nach einiger Zeit gewöhnt man sich aber auch an die Codes...
Denke das morgen noch ein Teil zum Telefon folgt...
Text auf dem DIM-Display darstellen:
Dies ist nur eine kurze Darstellung, die lediglich die Grundlage der Textdarstellung erläutert.
Viele wichtige Funktionen, wie beispielsweise das Update einzelner Zeilen, das Stummschalten des Radios sind noch nicht enthalten.
Das Telefon besitzt zwei IDs unter welchen es verschiedene Informationen sendet. In einer ID wird der Textinhalt an das Display gesendet in der anderen sind Steuerbefehle enthalten. Diese können das Radio lautlos stellen, schalten das Display ein oder aus oder geben dem Fahrzeug bekannt das ein Telefon derzeitig im Fahrzeug verbaut ist.
Dazu ein Beispiel von einem 2001er Telefon:
ID: 00C0200E Datensatz: C0 00 00 00 00 00 00 05
Dies ist die ID welche der Steuerung dient, hiermit wird das Display aktiviert.
ID: 00400008 Datensatz: A7 00 48 65 6C 6C 6F 20
Diese ID enthält den Text
Es ist der erste Datensatz, welcher an das Display gesendet wird
A7 00 markiert immer den Anfang der Meldung, der Text beginnt mit der 48 in HEX
48 H 65 e 6C l 6C l 6F o 20 Leerzeichen
ID: 00400008 Datensatz: 21 57 6F 72 6C 64 20 20
21 Steht für die zweite Meldung welche an das Display gerichtet ist, der Zähler ist dabei fortlaufend
22 23 ...
Bei 57 geht der text weiter: 57 W 6F o 72 r 6C l 64 d
ID: 00400008 Datensatz: 22 20 20 20 56 65 72 73
ID: 00400008 Datensatz: 67 69 6F 6E 20 30 2E 31
Die 6 markiert die letzte Meldung aus dieser Reihe, die 7 steht für die Anzahl der Zeichen welche noch in dieser Meldung enthalten sind. In diesem Fall ist die Meldung komplett gefüllt, ist der letzte Wert etwa 00 stände am Anfang nur eine 66. Erst mit dem Erhalt dieser Meldung, kommt es zur Darstellung der Nachricht.
Der Zeitliche Abstand zwischen den Meldungen sollte immer um 30ms liegen, ansonsten kommt es zum Timeout, oder bei zu schnellem Senden kann die Nachricht nicht verarbeitet werden.
In CanHacker würde dies so aussehen:
Code:
Time ID DLC Data Comment
00,090 00C0200E 8 C0 00 00 00 00 00 00 05
00,120 00400008 8 A7 00 48 65 6C 6C 6F 20
00,150 00400008 8 21 57 6f 72 6c 64 20 20
00,180 00400008 8 22 20 20 20 56 65 72 73
00,210 00400008 8 67 69 6F 6E 20 30 2E 31
Wichtig bei CanHacker ist das in der Datei hinter dem letzten Zeichen immer ein Leerzeichen steht, ansonsten wird die letzte Meldung oft nicht abgespielt (der schwarze Balken stoppt vorher).
Nun sollte "Hello World"
"Verson 0.1"
auf dem Display erscheinen.
Das Display kann gelöscht werden mit:
ID: 00400008 Datensatz: E1 FE 00 00 00 00 00 00
Das Display lässt sich wieder ausschalten mit:
ID: 00C0200E Datensatz: 00 00 00 00 00 00 00 04
Im 2002er Modell sollte sich dies ähnlich verhalten: (Leider ungetestet)
ID: 0220200E Steuermeldungen
ID: 00C00008 Textinhalt
Code:
Time ID DLC Data Comment
00,090 0220200E 8 C0 00 00 00 00 00 00 05
00,120 00C00008 8 A7 00 48 65 6C 6C 6F 20
00,150 00C00008 8 21 57 6f 72 6c 64 20 20
00,180 00C00008 8 22 20 20 20 56 65 72 73
00,210 00C00008 8 67 69 6F 6E 20 30 2E 31
Hallo zusammen,
toller Thread!
Ich bin per Zufall mal wieder ins Forum 'geraten', nachdem lange Zeit nicht mehr wirklich Interessantes zu lesen war, und finde diesen super Thread. Ich habe auch schon ein wenig Erfahrung mit Arduinos, das passt sozusagen prima.
Ich hatte mir auch schon mal ein paar Gedanken gemacht, blieb' aber alles theoretisch - hier finde ich eine prima Anleitung für eine Realisierung - vielen Dank!
sowas wie (neben den schon angesprochenen Funktionen):
- Tasten für die Cruise-Steuerung bei Cruise=off für andere Funktionen nutzen
- Lichtsensor Instrumentenbeleuchtung (oder vielleicht besser einen 'eigenen' LichtSensor) nutzen für automatisches Einschalten des Abblendlichtes (o.ä.) z.B. für Tunnelfahrten
- wenn's kalt ist, die Sitzheizung für 'x' Minuten einschalten.
- anstelle der automatischen Zuheizerfunktion (ich habe einen D5) den Zuheizer nach 'meinen Kriterien' aktivieren
.. da fällt einem schon ein Menge ein :-)
Leider kann ich erst in einiger Zeit mitmachen - bin am Häusle-Bauen (auch schön) und damit ist 'leider' die Freizeit geblockt ..
Grüße
Rolf
Ähnliche Themen
Hi,
kann hiermit bestätigen, dass der Code
ID: 0220200E Steuermeldungen
ID: 00C00008 Textinhalt
in meinem 2002er Modell funktioniert....Vielen Dank..werde mir mal Gedanken zu einem Menü
machen....
Aufgrund der Arbeit hänge ich etwas hinterher. Ich habe ja einen S60 (MY05) und mein REM sieht etwas anders aus als in deinem Beispiel (siehe Bild). Kann mir wer sagen, wie ich rausfinde, wo bei meinem REM der CAN-Bus anliegt?
Also die Steckerbelegung, soll es in VIDA unter Information, Produktspezifikation, Spezifikationen Elektronisch geben.
Die Kabel fallen besonders auf, da ein grünes und ein weißes ineinander verdrillt sind.
Eine gute Möglichkeit stellen wahrscheinlich die Stecker oder das Kabel des AEM dar.
Aber wie erwähnt über das neuere Modell kann ich nichts genaues sagen.
Falls Sardine fürs Logging genutzt wird, sollte im Quelltext die Geschwindigkeit von 125 auf 250 angehoben werden (Achtung nur beim Modell ab 2005+).
Habe momentan leider durch die Woche auch nicht viel Zeit, hoffe ein wenig, dass sich dies zu einem Selbstläufer entwickelt, da die Grundinformationen für einen schnellen Anfang ja nun gegeben sein sollten. Weiterhin habe ich auch nur hobbymäßig mit Informatik zu tun.
Der Thread soll in keinem Fall den Augenschein erwecken, das dieser nur von mir in Anspruch genommen wird. Es wäre schön wenn andere auch Ihre Erkenntnisse, Ideen und Informationen posten würden. Das Themengebiet ist riesig, man könnte da mal schauen was andere Hersteller ihren Fahrzeugen so integrieren. Eine Idee wär beispielsweise ein Regensensor welcher die Fenster schließt.
Die Idee mit dem Licht habe ich schon im V70 umgesetzt, allerdings hat dieser nur einen Sensor im Klimabedienteil, dieser gibt seine Werte aber besonders träge ab und funktioniert somit in der Praxis ganz gut, wurde von diesem für längere Zeit Dunkelheit wahrgenommen, wird das Licht eingeschaltet und geht erst wieder nach Betätigung des Zündschlüssels auf Position I aus. Über das Tachomenü kann die Funktion auf Wunsch auch wieder deaktiviert werden. Die Sitzheizung dürfte technisch überhaupt kein Problem sein, es wird vom Fahrzeug sogar erfasst, welcher Anschnallgurt zu ist. Beim Benziner der auf die Gas-Umschaltung wartet bevorzuge ich die Funktion aber nicht.
Momentan interessiert mich die Sache mit dem Schiebedach noch, es ist mir bis jetzt nicht gelungen dem UEM eine andere Schlüsselposition vor zu geben, wenn das Fahrzeug abgeschlossen ist.
Aber ein ähnliches kommerzielles Projekt ist dazu in der Lage, deshalb sollte dies auch machbar sein...
Eigentlich genügt mir der Comfort-Blinker und der Nebelscheinwerfer, welcher sich alleinig als Tagfahrlicht einschalten lässt, aber wenn der Sommer kommt wäre die Fenster Funktion auch sehr praktisch.
Aber all dies soll mit offenen Erkenntnissen erfolgen. Die Hardware ist zwar teurer als die des kommerziellen Projektes (meine da was mit 13 Euro komplett mit Versand aus China inklusive Aluminiumgehäuse auf AliExpress gelsen zu haben), aber durch die Nutzung der Arduino Entwicklungsumgebung für viele schnell zugänglich...
Hallo,
macht nichts, mir geht es genauso.
Aber heute war gutes Wetter und ich hatte Zeit 🙂
meine Errungenschaft
_________________________________________________________________________________
Blinker
00A10408 8 00 00 00 00 00 00 00 08
Änderung nur an der letzten Stelle
08 Aus
0A Blinker links
0C Blinker rechts
0E Warnblinker
_________________________________________________________________________________
Blinker Schalter
0131726C 8 00 8C 35 D2 60 00 00 3F
Änderungen
Die Stellen 1 "00 Änderung in 80" und die Stelle 3 "35 Änderung in 37,32,39,3B und 3C..." konnte ich leider nicht identifizieren
Die Stelle 6 "00" Drehrad, Drehung gegen dem Uhrzeiger
00 Aus
03 Direkt Start Standheizung
05 Standheizung Timer 2
07 Standheizung Timer 1
09 Durchschnittsgeschwindigkeit
0B Aktueller Verbrauch
0D Durchschnittsverbrauch
0F Tank
Die Stelle 6 "00" Drehrad, Drehung mit dem Uhrzeiger
3E Tank
3C
3A
38
36
34
32
30 Aus
Die Stelle 8 "3F"
3F Aus
7F Read Taste
BF Reset Taste
_________________________________________________________________________________
Fensterheber Schalter Fahrertür
014034A2 8 00 5B 80 05 89 23 04 00
Änderungen
Stelle 3 "80" Kindersicherung der Fenster im Fond
80 An
00 Aus
Stelle 4 "05" Fenster im Fond
05 keine Betätigung
15 Fenster LH hoch
25 Fenster LH runter
45 Fenster RH hoch
85 Fenster RH runter
55 Sperrung vor Doppelbelegung
Stelle 5 "89" Kombi-Funktion des Spiegel
Spiegel Ein- und Ausklappen, Taste im CCM
89 Ruhelage
D9 Spiegel Einklappen
E9 Spiegel Ausklappen
Beifahrerspiegel Verstellung, Fensterheber Schalter Fahrertür
89 Ruhelage
B9 Spiegelglas hoch
C9 Spiegelglas runter
Danke, das ist doch mal ne übersichtliche Aufschlüsselung für das 2002er Modell 🙂
Hab mich da nochmal etwas mit dem Schiebedach befasst.
Der Motor selbst lässt sich auch bei ausgeschalteter Zündung aktivieren, momentan aber noch nicht der Schalter. Desshalb sollte die Aktivierung nach einiger Zeit wieder wiederrufen werden, wenn das Dach verschlossen oder geöffnet ist.
Ein weiteres Problem bei der Steuerung des Motors ist, dass dieser beim Schließen nicht an der Schließposition hält sondern diese überfährt und das Fenster in Kippstellung öffnet.
Beim Verschließen des Fahrzeugs wird dem Motor selbst auch der Strom entzogen.
Dieser lässt sich wieder aktivieren mit "aktiviere X-Relais im UEM".
ID: 000FFFFE Datensatz: 8F 47 B0 35 01 20 00 FF
40ms Pause
ID: 000FFFFE Datensatz: 4A FF FF 00 00 00 00 00
Damit sollte der Motor wie auch alle anderen Komponenten des UEM wieder Strom bekommen.
Der Motor lässt sich aktivieren mit:
Öffen:
ID: 000FFFFE Datensatz: CF 47 B0 10 01 04 20 00
Schließen:
ID: 000FFFE Datensatz: CF 47 B0 10 01 02 10 00
Stopp:
ID: 000FFFE Datensatz: CC 47 B0 10 00 00 00 00
Ein Comfort-Öffnen ist ohne weiteres damit möglich aber Alive-Message und der Stopp sind dazu erforderlich.
Zum Schließen habe ich bereits versucht das Fenster an der passenden Position zu stoppen, da diese im 2001er Modell
ID: 00A1102A Datensatz: 00 50 00 00 07 00 00 00
an 3ter Position steht, aber sehr ungenau ist.
00 steht für geschlossen
01 wenig geöffnet
02 weit geöffnet
Erfolgt ein Stopp genau bei 00 dauert der Stopp so lange, bis das Fenster diese Position wieder überfahren hat und der Wert bereits wieder 01 ist.
Gegebenenfalls wäre ein minimales Zurückfahren die Lösung aber leider auch nicht ideal, da es sicher schöner ist wenn das Schiebedach auf anhieb sitzt.
Die Geräte reagieren auf mehr Diagnosemeldungen als in Vadis stehen. Durch geschicktes kombinieren von Bits sollte sich eigentlich auch die Schlüsselposition im UEM zu Diagnosezwecken verändern lassen.
Eine Alternative wäre es die Schlüsselposition durch die entsprechende Meldung welche aus dem CEM kommt zu überschreiben, aber dies wäre auch nicht ideal, da hier wieder zwei gleiche IDs von unterschiedlichen Geräten kollidieren würden.
Denke, das im kommerziellen Projekt für das Schiebedach auch Diagnosemeldungen verwendet werden.
Aber vielleicht gibt es in Vadis noch die ein oder andere versteckte Diganosefunktion welche hierbei behilflich sein kann. Besonders in den Teilen der Fehlersuche sind immer wieder neue kleine Programme zu finden, welche Dinge ermöglichen, die sich über das normale Aktivierungsmenü nicht ausführen lassen.
Wenn da jemand noch was entdeckt hat, besonders wenn es mit Schiebedach oder Schlüsselposition zusammenhängt bitte melden.
Im 2001er Modell steckt die Schlüsselposition an folgender Stelle:
ID: 00513FFC Datensatz: 0D 00 1C 00 70 40 58 00
Das erste Byte wird doppelt genutzt.
Die 0 ist ein Counter welcher einfach immer durch läuft.
D hingegen steht für die Schlüsselposition Radio
steht dort eine:
0 Schlüssel raus
C Position 0
D Position 1
E Position 2
F Position 3
Wird die obige Meldung etwa 5 mal gesendet klackt ein paar mal ein Relais im REM und die neue Schlüsselposition wird vom UEM auch akzeptiert, aber diese Methode ist mir ehrlich gesagt zu unpräzise, da nicht direkt die erste Melung akzeptiert wird. Eventuell genügt es die letzte ID des Counters zu speichern und mit der folgenden fort zu fahren. Allerdings werden auch andere Geräte wie das CEM wach und versuchen die fälschliche Meldung wieder durch die richtige zu überschreiben, folglich gibt es das gleiche Problem wie mit dem Blinkhebel.
Hi Leute,
ich habe auch wie verrückt an diesem We probiert das Schiebedach aufzukriegen.....habe auch das RElais zu klacken bringen können nur leider öffnet das Schiebedach nicht 🙁
Nun habe ich gerade deinen Diagnosecode gesehen und folgendes Prog. versucht :
cantx(0xFFFFE, 0x8F, 0x47, 0xB0, 0x35, 0x01, 0x20, 0x00, 0xFF); // Schiebedach power
delay(40);
cantx(0xFFFFE, 0x4A, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00); // Power repeat
delay(40);
cantx(0xFFFFE, 0xD8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00); // Alive Message
cantx(0xFFFFE, 0xCF, 0x47, 0xB0, 0x10, 0x01, 0x01, 0x02, 0x00); // Schiebedach auf
delay(40);
delay(40);
//cantx(0xFFFFE, 0xCC, 0x47, 0xB0, 0x10, 0x00, 0x00, 0x00, 0x00); // Schiebedach stop
Nur das klappt bei mir genausowenig....Ich weiß echt nicht wo der Fehler liegt...
Das mit dem Schließen klappte ungefähr so:
Code:
cantx(0xFFFFE, 0xD8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00);
delay(15);
cantx(0xFFFFE, 0x8F, 0x47, 0xB0, 0x35, 0x01, 0x20, 0x00, 0xFF);
delay(40);
cantx(0xFFFFE, 0x4A, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00);
delay(30);
cantx(0xFFFFE, 0xCF, 0x47, 0xB0, 0x10, 0x01, 0x02, 0x10, 0x00); //Dach schließen
Wahrscheinlich ist der Unterschied alleine darin, dass die Alive-Message zuerst gesendet wird.
Schließen sollte nur gegen Öffnen getauscht werden brauchen, damit es umgekehrt auch funktioniert.
Code:
Öffen:
ID: 000FFFFE Datensatz: CF 47 B0 10 01 04 20 00
Schließen:
ID: 000FFFE Datensatz: CF 47 B0 10 01 02 10 00
Ausserdem scheint sich im Öffnen bei dir ein Tippfehler eingeschlichen zu haben...
Ausserdem scheint sich im Öffnen bei dir ein Tippfehler eingeschlichen zu haben...Ok.....Mist habe an dem Tag wohl zu viele Zahlen gesehen......habe den Code dreimal geprüft und den Fehler nicht gesehen......Naja werde es am We mal probieren....Vielen Dank
Es kam jetzt ertmal viel dazwischen, eine ordentliche Ölspülung des Automatikgetriebes mit Reiniger und das jetzige gesamte Wochenende ging bei dem Auslesen des Speichers des CEM über den Parallelport drauf. Aber die Sache hat noch Potential, Tempomat, Boardcomputer Xenon etc. könnten gratis aktiviert werden. Das CEM hat scheinbar immer den gleichen Programmcode aber einen Speicherbereich in welchem die Ausstattung gespeichert ist. Je nach Einstellung führt das Programm dann die entsprechenden Funktionen aus. Steht in der Konfiguration ein Tempomat wird der entsprechende Programmteil ausgeführt.
Aber zurück zum CAN-Bus, beim genaueren hinschauen habe ich diese Information auf Olafs Hacking Volvo blogspot gefunden.
Code:
000FFFFE CB xx B9 F0 00 00 00 00
| | | |
| | | |
| | | '---- Identify (?)
| | '----------------- Read Data Block By Offset
| '-------------------- Module id (list below)
'----------------------- Message length
A1 No Operation Performed (keep alive)
A3 Security Access Mode
A5 Read Current Data By Offset
A6 Read Current Data By Identifier
A7 Read Current Data By Address
A8 Set Data Transmission
A9 Stop Data Transmission
AA Dynamically Define Record
AB Read Freeze Frame Data By Offset
AC Read Freeze Frame
AD Read Freeze Frame By DTC
AE Read DTC
AF Clear DTC
B0 Input Output Control By Offset
B1 Input Output Control By Identifier
B2 Control Routine By Offset
B4 Define Read Write ECU data
B8 Write Data Block By Offset
B9 Read Data Block By Offset
BA Write Data Block By Address
BB Read Data Block By Address
Die meisten Aktiverungen sind auch nach diesem Schema aufgebaut. Hauptaugenmerk sollte hier das Input und Output Register darstellen.
Würden die Input und Output Register bei eingeschalteter Zündung ausgelesen und mit denen bei ausgeschalteter Zündung verglichen, sollte sich der entsprechnde Aktivierungsbefehl etwa für die Zündschlüsselposition schnell finden lassen.
Somit ließe sich im Diagnosemodus etwa das UEM aktiveren um das Schiebedach zu schließen oder zu öffen.
Weiß jemand zufällig etwas über Volvo SDA, GGD oder DHA ? Diese Programme könnten dabei von großer Hilfe sein, ich finde nicht darüber...
Da die Analyse der Messages oft ziemlich aufwendig in CAN-Hacker ist, habe ich dazu mal einen Filter geschrieben, dieser kann die trc-Dateien von Can-Hacker öffnen und auf bis zu 4 verschiedene IDs filtern und wieder exportieren (ich weiß Entwicklungsumgebung ist sehr primitiv, dafür aber sehr schnell zum Umsetzen von Ideen geeignet).
Be Interesse bitte PM ansonsten werde ich das später noch wo uploaden...