- Startseite
- Forum
- Auto
- Volvo
- S60, S80, V70 2, XC70, XC90
- Der CAN-Bus im Volvo
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.
Ähnliche Themen
277 Antworten
Vielen Dank Hr. Professor H.C.
Mit vergleichsweise simpler Technik und geringem Aufwand lassen sich leicht Nachrichten lesen und eigene Meldungen in den CAN-BUS senden. Somit sind viele Erweiterungen machbar oder eine Fahrzeugdiagnose wird erleichtert...
Board für Erweiterungen
Auf Wunsch kann das Thema in diese Richtung fortgeführt werden oder zu Fragen über die Datenübertragung genutzt werden.
Das CAN-BUS System gab es motorenabhängig bereits ab dem Modelljahr 99 im S/V/C 70.
Danke an DR_V70 für den Einblick in das Nervensystem unserer Elche!
Grüße vom Ostelch
Da hier immer wieder Fragen ums Klimabedienteil auftauchen möchte ich den ausbaubedingten Funktionsausfall weiterer Funktionen wie auch das Zustandekommen des SRS-Airbagfehlers kurz erläutern.
In der letzten Grafik des ersten Beitrags wurde der CAN-Bus als zweiteilig dargestellt, auf welchem alle Geräte direkt auf einer Leitung liegen, in der Realität ist dies aber wieder ein wenig anders, Volvo verbaut die Geräte in einem sternförmigen Netzwerk mit mehreren Knoten, auf denen einzelne Geräte liegen und den CAN-Bus vollständig oder nur gefiltert an andere Geräte weitergeben.
Wer dem Freundlichen etwa bei der Diagnose mal über die Schulter geschaut wird diese Grafik in etwa kennen.
Link zur Grafik
Das CCM (Klimabedienteil) liegt dabei auf einem Knoten, bei einem Ausbau wird an dieser Stelle also auch die Verbindung getrennt, somit wird das SWM (Steering wheel module), das SRS Modul, das Upper electronic module und das Passenger door modul vom Rest des CAN-Bus abgetrennt.
Damit fällt auch die mindestens alle 15ms erfolgende Statusmeldung der Geräte weg und der entstandene Fehler wird direkt vom CEM dedektiert.
Hallo DR_V70,
das ist echt schön zu lesen. Wollte mich selber so langsam mit dem Thema auseinandersetzten.
Ich habe vor einiger Zeit in meinen Wagen KISI nachgerüstet und alles funktioniert soweit auch. Ich kann die Tür über das REM ansteuern, das CCM erkennt den Schalter. Das Problem dabei ist, das die Kommunikation von CCM zum REM nicht Funktioniert (CAN-low ).
Jetzt würde ich gerne wissen ob ich den flash vom CCM lesen kann, ändern und neu aufspielen kann?
Gruß Martin
Danke, Ziel war es das ganze Thema ziemlich leicht mit seinen Zusammenhängen verständlich zu machen, geplant ist eventuell noch die Vorstellung eines Eigenbauprojekts zur Alternative eines bereits kommerziell angebotenen Extenders. Die Kombination Arduino und fertiger Quelltext sollte doch für viele eine gute Hilfe sein, ich weiß allerdings nicht wie das Thema hier so ankommt.
Du meinst wahrscheinlich den Knopf bei wessen Betätigung, beide inneren Schlösser der hinteren Türen verrigelt werden. Die einfache Lösung wäre es die Software beim Freundlichen installieren zu lassen, oder ist der Preis wieder unmöglich, oder die Funktion garnicht vorhanden? Kann mir eigentlich nicht vorstellen, dass die Software sonst mehr als 15Euro kostet.
Programmiertechnisch ist da vieles möglich, bin nur nicht sicher ob sich der Aufwand für diese Funktion lohnt. Bin grad selbst alle möglichen Steuergeräte über Ebay am sammeln, um mir daraus die Elektronik in der Garage nachzubauen, eine Programmierung von Steuergeräten sollte mit Xprog oder Carprog möglich sein, jenachdem wie fit man in sowas ist, habe auch noch vor mich in kommender Zeit mit dem Thema zu befassen. (Erste Versuche sollen mein Motorsteuergerät clonen)
Die allereinfachste Lösung wäre es anstelle der Programmierung der Steuergeräte, einfach auf das CAN-Signal des Schalters zu warten und darauf mit einem Schließsignal der hinteren Türen zu reagieren. Es müsste eigentlich die Diagnosefunktionen in Vadis geben um die hinteren Türen einzeln zu verriegeln oder sich ein Signal welches zum schließen der Türen verwendet wird im Auto finden lassen.
Volvo könnte das aufspielen und gut wäre es aber SIE machen es nicht. Nicht für Geld und gute Worte.
Meine idee war, ein baugleiches auto zu suchen, da das programm vom ccm laden und bei mir aufspielen. Doch weis ich nicht ob das programm verschlüsselt ist oder nicht und sogelesen werden kann oder nicht?
Ja, ich kann die Türen mit dem Tester ansteuern, wie gesagt es fehlt das sigal vom ccm zum schließen an das rem.
Weist du woher man die Programme zum laden bekommt?
Woher hast du den Schlüssel fur den id code?
Ps: vw ist in der hinsicht um weiten besser, da kann man mit einen einfach Tester schon Änderungen vornehmen.
Hab ich mir fast gedacht, dass Volvo sich da wieder so anstellt...
Zitat:
Woher hast du den Schlüssel fur den id code?
Welchen Code meinst du? Das REM ist wohl FIN codiert, deshalb müsste das Programm aus einem REM ausgelesen werden und dann im HEX Editor die FIN gegen deine ausgetauscht werden und dann könnte ein Aufspielen auf dein Fahrzeug gelingen. In der Theorie zumindest, habe es noch nicht ausprobieren können, da mir noch ein CEM für meinen Testaufbau fehlt.
Zu der anderen Variante, es gibt im Diagnosprogramm den Punkt Aktivierungen, diese lassen viele Dinge so ansteuern. Wenn gleichzeitig die Meldungen mit einem CAN-Logger mitgelesen werden, lassen sich auch diese Codes schnell rausfinden, da deren ID immer 000FFFFE ist.
Zwei Beispiele hierzu:
Sendet man dem Fahrzeug:
ID: 000FFFFE Datensatz: CD 40 A6 1A 02 01 00 00
Erhält man als Antwort:
ID: 00800003 Datensatz: CD 40 E6 1A 02 60 00 00
Die sechste stelle codiert dabei für die Batteriespannung: 60 steht in diesem Fall für 12V.
Die 60 in Hex ergibt 96 in Dezimal, eine Teilung durch 8 ergibt dann anscheinend die Batteriespannung.
Will man die Nebelscheinwerfer alleine aktivieren, müssen zwei Meldungen in einem Abstand von 15ms einmalig gesendet werden.
ID: 00FFFFE Datensatz: 8F 40 B1 1A 21 01 00 40
Pause 15ms
ID: 00FFFFE Datensatz: 4E 00 00 00 40 00 00 00
Eine Deaktiverung erfolgt durch:
ID: 00FFFFE Datensatz CD 40 B1 1A 21 00 00 00
Wenn im Diagnosmenü die von dir gewnünschte Funktion steht sollte ein Umsetzung problemlos möglich sein, etwas anderes tut der CANBus-Extender auch nicht. Habe mich bis jetzt nicht um diese Meldungen gekümmert, da ich die Funktion bis jetzt noch nicht brauchte...
Zu einem schnellen Aufbau würde genügen ein Arduino Uno und ein CAN-Bus Shield, dann sind nur noch ca. 20 einfache Lötpunkte nötig und ein universeller Extender für etwa 70Euro wäre komplett. Dazu aber bei Interresse mehr...
Gut, der 000ffffe ist doch der netzwerk id oder? Ich meine den host id.
Fin codierung, müsste man doch eigentlich bei jedem Steuergerät finden, da ja jedes im auto angemeldet ist.
Sicher bekannt ist, dass das Radio, der Spiegel welcher für die Verrieglung verantwortlich ist, das Motorsteuergerät und das CEM mit der FIN codiert ist. Bei den anderen Teilen ist mir nichts bekannt, gehe davon aus, dass das REM wegen dem CEM auch codiert ist, beim Tacho bin ich mir nicht sicher. Zwischen den Modelljahren wurden ansonsten nur die CAN-Bus Signale geändert, desshalb verstehen sich Geräte aus anderen Jahren nicht. Die Diagnosemeldungen mit 0xFFFFE werden hingegen von jedem Gerät aus der Baureihe unabhängig vom Modelljahr akzeptiert.
Die ID ist der Identifier und gibt den Inhalt bzw. die Herkunft des Datensatzes an. Die ID 000FFFFE ist in diesem Fall für das Diagnosegerät reserviert, dies hat den Vorteil, dass es zu keiner Kollision mit Daten aus einem anderen Gerät mit gleicher ID kommt (wie oben beschrieben, eine ID sollte nur einfach vergeben sein).
Ach so, ich dachte der aufbau ist wie der einer ip aber das hattest du ja oben schon beschrieben. Was ich mit host id meine war der Datensatz.
Hast du die genaue Aufschlüsselung vom Datensatz?
Welche Geräte nimmst du zum lesen? Überlege gerade jetzt mit anzufangen!
Der CAN-Bus wurde von Bosch entwickelt und dessen Übertragungsverfahren ist lizenzrechtlich geschützt. Somit muss für Bauteile die dieses Protokoll nutzen immer eine geringe Lizenzgebühr an Bosch gezahlt werden. Dies hat für den Nutzer in diesem Fall den Vorteil, dass das Protokoll sehr genau definiert wird und eigens für den Datentransfer spezielle Controller entwickelt wurden.
Ein gängiger Controller ist der mcp2515 von Mikrochip, mit dessen Erwerb von etwa 2 Euro ist die Lizenzgebühr bereits durch den Hersteller beglichen. Dieser Chip ist für die gesamte Protokollumsetzung verantwortlich. So wird dem Nutzer der Datentransfer in und aus dem Netzwerk enorm erleichtert, da der Chip zum größten Teil selbständig arbeitet.
Schematisch läuft die Nutzung wie folgt ab: Grafik hierzu
Der Chip wird konfiguriert, dabei werden wichtige Eckdaten gesetzt wie die Geschwindigkeit des Netzwerkes, der Standby-Modus, Filter für Nachrichten (welche IDs gelesen werden), der Sendemodus, wie das Verhalten bei einem Fehler.
Nach Konfiguration ist der Chip betriebsbereit und nimmt Nachrichten in seinem internen Puffer auf.
Falls der Puffer voll ist werden alte Nachrichten überschrieben, oder es können keine neuen mehr aufgenommen werden (je nach Konfiguration). Die Daten können nun einfach durch einen Steuerbefehl von einem Mikrocontroller abgerufen werden. Die Übertragung der Daten vom CAN-Controller zum Mikrocontroller läuft über eine serielle Schnittstelle (SPI) ab.
Soll eine Nachricht in das Netzwerk übermittelt werden, überträgt der Mikrocontroller diese in einfacher serieller Form an den CAN-Controller, dieser legt diese Nachricht zunächst in seinen Speicher ab und sendet sie anschließend unter Beachtung aller Standards (teilweise oben erläutert) weiter an den CAN-Transceiver (mcp2551), welcher hauptsächlich für die Pegel und Spannungsanpassung zuständig ist, bevor die Meldung in das Netzwerk gelangt.
Somit muss der Nutzer nur noch wissen was gelesen oder gesendet werden soll um die Einhaltung der Standards, der Fehlerkorrektur, der Prioritäten etc. kümmert sich der CAN-Controller.
Im Bereich der Mikrocontroller ist der Atmega momentan sehr populär, besonders im Bezug auf die Entwicklungsplatform Arduino. Für etwa 20 Euro ist ein Mikrocontroller mit 32kb Speicher, 2kb Ram, Entwicklungsplatine, USB-Programmer und Entwicklungsumgebung samt großer Unterstützung aus der Community zu bekommen. Aufgrund der großen Nutzerzahl werden für diesen auch besonders viele Erweiterungsboards (als Shield bezeichnet) angeboten, hier gibt es alles vom mp3-player übers Handy bis hin zum CAN-Shield. Auf dem CAN-Shield von Sparkfun wurde der vorherig erwähnte Controller mit dem entsprechenden Transceiver verbaut.
Diese Komponenten eigenen sich für einen schnell und kostengünstigen Aufbau besonders gut, hiermit lässt sich beispielsweise mithilfe der Software CanHacker im Netzwerk mitlesen oder senden. Aber auch 32kb Speicher bieten genug Platz zum realisieren sämtlicher Funktionen, wie CommingHome, Comfort-Blinker etc. . Auf dem CAN-Shield selbst ist schon ein Spannungswandler vorhanden, welcher zwar nicht optimal ist sich aber dennoch im Auto einsetzen lässt (Eine Erweiterung mit Drossel, Kondensator und Schutzdiode wäre sinnvoll).
Das CAN-Shield selbst kommt leider ohne angelötete Steckerleisten, diese müssen mitbestellt und nachher angelötet werden. Gleiches ist fürs Strom- und CAN-Bus Kabel erforderlich. Dazu müssen 4 kabel an einen D-Sub Stecker 9-polig gelötet werden.
Einige Bilder vom Zusammenbau gibt es unter diesem Link.
Alternativ bietet sich auch unter tausenden anderer Möglichkeiten der komplette Selbstaufbau an, dabei ist mit etwas unter 20 Euro für alle Komponenten zusammen bei Reichelt zu rechnen (Arduino dient bei mir nur zum testen).
Habe damals alles zusammen bei EXP-Tech bestellt, geht natürlich auch überall anders, haben aber nicht so viele:
2x EXP-R05-016 Arduino Stackable Header - 6 Pin
2x EXP-R05-017 Arduino Stackable Header - 8 Pin
1x EXP-R05-034 Sparkfun CAN-BUS Shield DEV-10039
1x EXP-R08-002 Arduino Uno R3 1
zusätlich wird noch benötigt kurzes Stück Kabel mit Steckern welche auch in Computergehäusen Anwendung finden, wie etwa
Kabel
und ein 9-poliger D-Sub Stecker (Gegenstück zum Shield)