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
danke, habe zwar keine Liste gefunden, aber zumindest Bilder, also muß ich mir das alles selbst ergoogeln.
Seite 1: Ganz unten der letzt post. Da ist die Liste welche teile benötigt werden.
Seite 2: Relativ mittig schreibt DR_V70 über die Benötigte Software inklusve links zu denen
Zitat:
@Svenson112 schrieb am 3. Januar 2015 um 15:04:31 Uhr:
Hab ihn grade mal zerlegt. Es ist kein echter. Da befindet sich kein ELM chip drauf. Auf jedenfall so wie es im Internet beschrieben ist.Aber Pin 6 u 14 sind BELEGT zur platine.
Würde das dann nach der Anleitung funktionieren?
Ja der in der Anleitung sieht auch nicht unbedingt echt aus, aber wir benutzen ja alle echte, auch ein unechter, sollte funktionieren, da ein unechter ja einen echten nur emulieren sollte.
Also Anleitung klappt immer.
Komme leider gerade nicht dazu mit meinem echten zu testen 😁
Ähnliche Themen
Alles klar. Ich versuche das dann mal.
Mal sehen wann ich da zu komme😁
Hallo Svenson112,
danke, jetzt wird es etwas klarer, nun muß ich mir nur noch den Compiler zulegen...
Heute mal einen Versuch gemacht und gescheitert.
Ich hab hier ein UEM liegen.
Strom drauf, Masse drauf und Can-Bus ran an den ELM.
Putty nach der Anleitung fertig gemacht und geöffnet.
Dann Masse auf's UEM gegeben, aber ich bekomme keine gesendeten Nachrichten.
Oder Sendet das UEM von alleine nichts?
Im Auto sind bereits Widerstände im UEM und REM verbaut, der CAN Bus braucht einen Widerstand zwischen CAN-H und CAN-L auf dem Tisch gehen 100Ohm immer ganz gut...
CAN-L ------ 100OHM ------ CAN-L
Die Geräte werden vom CEM wach gehalten, fehlt dies, gehen die in den Standby und hören auf zu senden...
Wenn man dann neu Strom anschließt kommt wieder kurz was.
Wenn man die Meldung ID 0xFFFFE D8 00 00 00 00 00 00 00
sendet sollten die Geräte sich dann wieder zurück melden, ist öfter alles frustrierend am Anfang wenn man noch nicht viel sieht...
Ach der ELM besit ja keinen Widerstand.
So Teile sind bestellt und ich hab kurzfristig 2 wochen Urlaub. Mal sehen ob sich zeit findet :-)
Gibt es eigentlich schon ID's für die 2003 - 2004 modelljahr?
Oder fange ich dann von ganz vorne an?
Bin beim C70 bezüglich Dämmerungssensor noch einen Schritt weiter gekommen.
Code:
Spannungswert des Dämmerungssensors abrufen:
000FFFFE | CD 40 A6 2F 60 01 00 00
Antwort des Dämmerungssensors:
00600005 | CE 40 E6 2F 60 XX XX 00
Dabei habe ich folgende Werte für XX XX gesehen:
4.75V 03CC
4.76V 03CD
1.55V 013E
2.53V 0208
4.67V 03BC
Der obige Hex-Wert kann durch ca. 204.7 geteilt werden und so erhält man den Spannungswert.
Die Helligkeit wird aber auch ohne Diagnosemeldung dauernd auf dem Bus übertragen. Es handelt sich hierbei nicht um den Spannungswert, sondern um einen gefilterten Helligkeitswert. Der Wert findet sich in
Code:
1A621000 0C XX 00 00 00 00 00 00
Ich habe Werte zwischen 24 (dunkel) und 3B gesehen (hell). Das DIM scheint die Hintergrundbeleuchtung bei 24 einzuschalten und bei 2B auszuschalten. Es besteht ausserdem eine zeitliche Verzögerung von 5 Sekunden.
Eigenartig scheint mir, dass das DIM erst beim tiefsten von mir festgestellten Wert die Hintergrundbeleuchtung einschaltet. Eventuell werden aber ab einer gewissen Dunkelheit einfach keine tieferen Werte mehr ausgegeben? Ich werde in den nächsten Tagen meinen Arduino mit Code versehen um eine LED parallel zum DIM ein- und auszuschalten. Dann wird sich zeigen ob ich richtig liege oder nicht...
Hallo Bohne2002,
danke, danke, um mal den wirkungsvollsten Wert zu finden habe ich einen Hinweis. Ich habe ein kleines Stück 30% Scheibenabdunklungsfolie draugeklebt, damit funktioniert das Tacholicht/Radiolicht optimal. Der stufenlose Regler (nach meiner Ansicht auch so ein Fehleinbau) ist dabei voll aufgedreht.
Bei der Einschaltschwelle liege ich bei 4sec., war aber zuvor auch schon so.
Kannst ja mal bitte testen, wie sich die Werte dann bei dir mit Folie darstellen ! Der kleine Sensor ist mittig in dem schwarzen Scheibenbereich oben zu finden, ist ca. 3mm im Durchmesser neben dem Regensensor.
Moin Bohne 2002.
Welches Modelljahr ist dein C70II?
Ich Fertige da grade was an und breuchte das Modelljahr für die ID zuordung.
@newc70: hast Du einen Pre-Facelift C70? Bei mir funktioniert der Dämmerungssensor perfekt und befindet sich im Armaturenbrett...
@Svenson112: Mein C70 ist von 2011, einer der ersten Facelift.
Ich habe mir auch überlegt mal den Regensensor auszulesen. Aber da verschiedene Werte zu simulieren wird wohl schwierig...
Was mich schon immer ärgert ist, dass kein Auto-Hersteller fähig ist ein DCF77 Modul zu verbauen. Das kann doch nicht so schwierig sein... Sieht wer eine Möglichkeit die Uhrzeit über CAN zu setzen? Wird wohl schwierig weil es dazu keine Diagnosefunktion gibt...