Der CAN-Bus im Volvo

Volvo V70 2 (S)

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 weitere Antworten
277 Antworten

Ich bin mir hinsichtlich der Arduino Umgebung noch unsicher. Wenn es damit klappt, prima. Dann kann ich hoffentlich die USB Sachen fuer den ATMega32U4 mit benutzen. Falls nicht (Interrupts), werd ich den Chip auch mit AVR programmieren. Eine von beiden Varianten wird sicher gehen, da bin ich zuversichtlich 🙂

Was das Navi betrifft weiss ich auch nur, dass es da ein Mono Signal ins HU rein gibt. Ob bzw. was das RTI noch mehr tut (vermutlich Master holen und das HU anweisen, die Lautstaerke anzupassen?) kann ich aber sniffen, hab eins verbaut.

Das mit dem SAT ist natuerlich eine schlechte Nachricht, da ich S60 EZ03 habe (ich weiss aber nicht 100% sicher ob MY03 oder MY04) und das Display gerne sinnvoll verwenden wuerde. Haette echt gedacht, dass das "immer" geht. Hast du da vielleicht zum Protokoll mehr Details?

Hallo, mal eine ganz blöde Frage: Wo hat man den besten Zugang zu einer Can-Bus-Leitung im Volvo XC60? Ich möchte nämlich eine entsprechende Alarmanlage nachrüsten und möglichst wenig Gehäuseteile demontieren müssen!
Beste Grüße aus Berlin

Sumamale

Das Radio hängt am CAN-Bus. Wenn man weiß wie, geht es relativ leicht raus, und du kannst die Alarmanlage dran hängen (wenn sie nicht zu groß ist; weiß nicht wieviel Platz da ist). Ein Dieb hätte da sicherlich mehr Probleme, die "mal eben" auszubauen, wenn er nicht gerade selber Elch-Bastler ist.
Vom Radio aus kommt man auch sehr einfach mit Leitungen ans Handschuhfach, dahinter ist wohl auch etwas Platz.
Die PIN Belegung des Radios müßte irgendwo im Forum rumfliegen, Ausbauvideos gibt es auf Youtube.
Wenn du keinen SRS Fehler möchtest, bei der Aktion entweder an der Batterie den Minus-Pol abklemmen, oder aufpassen, dass du dein CCM (Klimamodul) nicht trennst ;-)
[Sorry, falls du das alles schon weißt, will nur auf Nummer sicher gehen]

Aber ich kenne mich mit dem Auto und seinen Leitungen nicht sooo gut aus, vielleicht gibt es einen besseren Platz.
Vielleicht sind bei eingebautem Radio auch nur wenige mm Luft! Warte besser noch eine andere Antwort ab 😉

Zitat:

@DR_V70 schrieb am 17. November 2015 um 21:21:33 Uhr:



Der Text auf dem Radio ist nur möglich, wenn man ein neueres Radio hat, welches auch SAT unterstützt, die X03er tun das soweit ich weiß nicht.

BIst du da sicher wegen dem SAT? Das HU-603 hat meines Wissens auch eine MD-CHGR-Unterstützung, und MD konnte schon immer Textanzeige.

Uli

Ähnliche Themen

Ja ein Text über den MD Wechsler ist möglich, ABER: sehe dies nicht als wirkliche Lösung, wenn man ständig den Push MEM Knopf drücken muss um den jeweiligen Titel zu sehen.

https://www.youtube.com/watch?v=9HVG6tHxXG0

Ok, das ist natürlich blöd. Ich reg mich schon jedesmal auf, wenn ich FM lange drücken muss, um den Radiotext zu sehen. Die HU-Firmware gehört wirklich mal überarbeitet ;.)

Uli

Das wird sicher nicht mehr passieren 😉

Die Krücke mit den 10 Ordnern (=CDs) ist ja eh nichts, auf dem Smartphone habe ich deutlich mehr als 10 Alben dabei.

Hiho, hat jemand noch ein Volvo Radio mit MELBUS über, das er verleihen würde?

Ich arbeite ja an einer Open Source Implementierung eines MELBUS Emulators für Arduino.
Der derzeitige Stand ist auf https://github.com/archi/melbus zu finden.

Bisher kann man den Emulator verwenden, um das Radio dazu zu bringen, das Audio Signal eines Klinke-Anschlusses durch zu schleifen (da hängt bei mir eine billige Bluetooth -> AUX/Klinke Freisprecheinrichtung dran).
Aber Tastendrücke erkennen geht noch nicht. Ich würde sie aber gerne nutzbar machen. Entweder als Pseudo-Keyboard Device (z.B. für Raspberry Pi CarPC), oder um sie an einen Bluetooth Audio Transceiver weiter zu reichen (oder beides).

Da ich aber wenig motiviert bin an einem Mini Tablet Keyboard im Auto zu Programmieren und auch keine Garage habe, würde ich mir gerne ein HU 603 oder 850 (oder ähnliches Modell, hauptsache MELBUS) auf den Schreibtisch stellen.

Wer also eines über hat und eine Weile entbehren kann -> Ich würde mich freuen, und da der Quellcode frei verfügbar ist, haben sogar alle etwas davon :-)

Zeitlich weiß ich leider nicht wie lange es dauert, sollte also für mehr als nur einen Monat sein (ich arbeite und studiere "nebenbei" noch).

Natürlich sind auch alle Bastler herzlich eingeladen, den Code selbstständig zu verbessern.

Hallo, ich könnte ein hu 605 aus einem v40 anbieten wenn das was nützt.

Hi, ich wollte mich nur kurz bedanken, dass mir so schnell HUs angeboten worden. Super Community hier 🙂
Ich hab eins (Danke nochmal an DR_V70!) bei mir liegen und komme hoffentlich demnächst dazu, meinen Testaufbau auf dem Schreibtisch zusammen zu basteln (einzige Sorge: Das HU klappt nicht ohne CAN-Bus/nur an 12V).

Derzeit habe ich zwar mit einem Uniprojekt (Compilerbau) mehr zu tun, als ich erwartet hätte, aber ich hoffe, dass ich dann wenigstens nebenbei ein wenig weiter programmieren kann 🙂

Hallo zusammen,

Ich überlege mir eine Start/Stopp Automatik rein CAN-bus basiert nachzurüsten. Ich möchte hier keine Pro/Kontra Diskussion über die Start/Stopp Automatik lostreten, das gibt es andernorts schon zur genüge.

Infos zur Steuerung sollten auf dem Bus alle vorhanden sein. Den Motor zu starten sollte über Schlüssel messages auch möglich sein. Die einzige Hürde ist momentan wie ich den Motor ausschalten könnte. Dazu habe ich bisher keine Lösung gefunden. Hat wer eine Idee? In Vida habe ich nichts gefunden was helfen könnte, keine Diagnosefunktion.

Gruss,

Reto

Hallo Bohne2002,

über Sinn und Unsinn so einer Funktion läßt sich im Nachrüstfalle natürlich streiten...
Doch die Kernfrage ist, hast ein Schaltgetriebe oder eine Automatic ?
Beim Schaltgetriebe wird es möglicherweise machbar sein, doch bei Automatic kannst du es voll vergessen, da du im Falle des Startens immer den Wählhebel auf P schalten müßtest und die Bremse getreten werden muß. (da käme dann an der Ampel maximale Freude auf...)

Automatik. Aber ich dachte mir die Funktion vielleicht wie folgt. Hebel auf "P", Bremse loslassen => Motor aus.
Bremse drücken => Motor an. Zurück in "D" und weiter geht die Reise.
Nix für Stop and Go aber an der Ampel vielleicht gar nicht übel...

...wäre für mich keine Option, bedenke bitte, du hast möglicherweise die Klimaanlage an, die Sitzheizung, volles Licht und ggf. noch den Sound aufgedreht und das Navi läuft auch noch, alles auf Zündung bzw. auf Batterie.
Den Rest muß man da nicht erklären, oder ? Und ob man dann wirklich Benzin spart, steht mal als Frage im Raum, da gerade der T5 nun wirklich beim Stop auf D extrem kleine Umdrehungen macht.

Vorallem schadet es der Automatik... Die mag es nämlich nicht so gern wenn man da hin und her schaltet

Deine Antwort
Ähnliche Themen