CAN
Das Controller Area Network ist das erste Class-C und somit das erste Hochgeschwindigkeits-Bussystem, das in Kraftfahrzeugen verwendet wurde.
CAN – Controller Area Network |
Es ist eine Entwicklung der Firma Bosch und wurde 1991 mit der damals neuen Mercedes S-Klasse eingeführt. Die ersten Halbleiter stammten von Intel. Das Bussystem ist heute das Standardbussystem in Kraftfahrzeugen. Ursprünglich nur für den Antriebsstrang konzipiert, ist es heute in praktisch allen Bereichen des Fahrzeugs, wie Karosserie, Fahrwerks etc. vertreten.
Allgemeines
Die Boschspezifikation stellt bis heute praktisch unverändert die Grundlage des Bussystems dar. Sie wurde 1994 als ISO 11898 in die offizielle Standardisierung übernommen.
CAN wurde 1994 als ISO 11898 standardisiert |
Beim Data-Link-Layer gibt es zwei Varianten: Die für die die Adressierung und Arbitrierung nötigen so genannten Message-Identifier (CAN-ID) gibt es mit 11 und 29 Bit Länge. Beide Versionen können auf demselben Bussystem koexistieren, können also parallel betrieben werden.
Beim Physical-Layer gibt es drei Varianten, die nicht miteinander kompatibel sind: High-Speed-CAN, Low-Speed-CAN und eine, von General Motors getrieben, in den USA standardisierte Variante mit nur einer Datenleitung (Single-Wire-CAN). Außerdem gibt es noch eine Version für Nutzfahrzeuge, standardisiert in der SAE J1939 und eine ganze Reihe von Ausführungsformen für die Industrieautomatisierung. Die bekannteste davon ist CAN in Automation (CANopen, DeviceNet).
CAN selbst ist ein Bussystem, das auf der Ebene von Layer-1 und Layer-2 des ISO/OSI-Schichtenmodells standardisiert ist. Die übergeordneten Ebenen waren ursprünglich nicht standardisiert. Mittlerweile gibt es aber mit der ISO 14229 und der ISO 15765 zumindest für den Bereich der Diagnose auch Standards auf Anwendungsebene.
Physical-Layer und Bus-Topologie
CAN verwendet ein bitstrombasiertes Übertragungsverfahren mit einer bidirektionalen Zweidrahtleitung in der Standardausführung. Die Steuergeräte sind über kurze Stichleitungen an diesen Linienbus angeschlossen, siehe Abbildung links. Die zulässige Länge einer Stichleitung hängt von der Bitrate ab. Bei 1 Mbit/s gilt, dass die Stichleitungen nicht länger als ungefähr 30 Zentimeter sein sollten. Der High-Speed-CAN unterstützt Bitraten bis zu 1 Mbit/s. Wird aber typischerweise nur mit 500 kbit/s betrieben. Seine Busleitungen sollten an den beiden Busenden mit einem Abschlusswiderstand abgeschlossen sein. Buslänge und Bitrate stehen in einem inversen Zusammenhang. Als Faustformel gilt: bei 1 Mbit/s eine Buslänge von maximal 40 bis 50 Metern, bei niedrigerer Bitrate entsprechend länger.
CAN – Physical Layer und Bus-Topologie |
In der Abbildung rechts sind die Signale und die Pegel für die drei verschiedenen Physical-Layer von CAN gegenübergestellt. Aufgrund der unterschiedlichen Signalpegel sind die Physical-Layer inkompatibel und können nicht gleichzeitig auf einem Bus betrieben werden.
Der Low-Speed-CAN wurde aus zwei Gründen eingeführt. Zum einen ist er bei der Implementierung etwas einfacher, da man keine Abschlusswiderstände benötigt und die Stichleitungen etwas länger sein dürfen. Zum anderen und dies ist der entscheidende Vorteil, ist der Low-Speed-CAN in eingeschränktem Maß fehlertolerant. Unterbrechungen einer einzelnen Leitung oder Kurzschlüsse einer Leitung nach Masse, Batteriespannung oder zu anderen Leitungen kann dieses Bussystem tolerieren.
Data Link Layer
Das CAN Bussystem befindet sich im Ruhezustand auf logisch-High. Dies ist gleichzeitig das rezessive Signal. Sobald ein Steuergerät für mindestens drei Bitzeiten erkannt hat, dass das Bussystem in Ruhe ist, kann es zu jedem beliebigen Zeitpunkt beginnen einen CAN-Frame zu senden, siehe Abbildung. Der CAN-Frame beginnt mit einem Null-Bit, dem so genannten Start-Of-Frame Bit – Null ist bei CAN das dominante Signal. Dann kommt der 11 oder 29 Bit lange CAN-Identifier, der den Inhalt der Botschaft eindeutig kennzeichnet und der gleichzeitig für die Arbitrierung verwendet wird. Beim CAN-Identifier wird das höchstwertigste Bit als erstes gesetzt. Kommt es auf dem Bus zu einer Kollision, gewinnt somit immer die Botschaft, deren CAN-ID am niedrigsten ist oder anders gesagt, deren CAN-ID die meisten führenden Nullen aufweist.
CAN-Frame Botschaftsformat |
Nach dem CAN-Identifier folgen sieben Steuerbits, die als wichtigste Information die Datenlänge des folgenden Nutzdatenfelds enthalten. Die Nutzdaten können zwischen 0 und 8 Byte lang sein. Am Ende folgt ein 25 Bit langer Trailer. Er enthält vor allem eine 15 Bit lange CRC-Prüfsumme. Außerdem enthält er das so genannte Acknowledge-Bit. Dies ist ein Bit für die Bestätigung, dass der oder die Empfänger die Botschaft korrekt empfangen haben. Weiterhin sind im Trailer noch einige Steuerbits vorhanden, die den Frame abschließen.
CAN selbst stellt ein Broadcast-System dar. Das heißt, jeder Empfänger kann alle Botschaften empfangen. Über den Message-Identifier wählt er die Botschaften aus, die ihn interessieren. Typischerweise wird diese Auswahl innerhalb des Kommunikationscontrollers realisiert. Man bezeichnet diese Auswahlfilter, in denen definiert wird, welche CAN-Identifier empfangen werden sollen, als Akzeptanzfilter.
Die maximale Übertragungsdauer einer CAN-Botschaft liegt mit einer Bitrate von 500 kbit/s bei ungefähr 220 Mikrosekunden für 11 Bit-IDs und 260 Mikrosekunden für 29 Bit-IDs. Daraus errechnet sich eine Nutzdatenrate von ca. 33 kByte/s. Bei 29 Bit-IDs sind es 10% weniger.
Das Botschaftsformat, das hier im Bild dargestellt wird, ist nicht exakt das Botschaftsformat, das sich auf der physikalischen Ebene wieder findet. Der Kommunikationscontroller streut innerhalb der Botschaft noch eine Reihe weiterer Bits ein, die so genannten Stuff-Bits. Stuff-Bits sind komplementäre Bits, die eingefügt werden, wenn sich für 5 Bitzeiten das Signal nicht verändert. Sie dienen der Synchronisation von Sender und Empfänger und können somit die Anzahl der zu übertragenden Bits um bis zu 20% vergrößern. Davon sieht jedoch der Anwender, wenn er nicht gerade einem Oszilloskop auf der Busleitung misst, nichts. Die Stuff-Bits werden beim Senden vom Kommunikationscontroller automatisch eingefügt und beim Empfangen auch wieder automatisch heraus genommen.
CAN ist ein sehr fehlersicheres Übertragungssystem. Es ist in der Lage, busweit Datenkonsistenz sicher zu stellen. Das heißt, wenn ein Steuergerät einen Fehler feststellt, dann sendet es den so genannten Error-Frame. Damit wissen alle anderen Steuergeräte, dass diese Botschaft in irgendeiner Form nicht gültig ist. Der Sender der Botschaft wiederholt dann automatisch das Versenden dieser Botschaft. Dasselbe gilt für eine verlorene Arbitrierung. Der Sender wiederholt automatisch. Dis ist alles Aufgabe des Bus-Controllers. Der Anwender muss sich nicht darum kümmern. Falls ein Bus-Controller häufiger Fehler feststellt, dann schaltet er sich sukzessive außerdem ab. In der ersten Fehlerstufe stellt er sich auf passiv, das heißt, der Controller kann dann zwar noch Botschaften empfangen, aber nicht mehr aktiv senden. In der nächsten Stufe kann er sich sogar völlig Abschalten. Dieser Fehlermechanismus vermeidet ein „zumüllen“ des Busses durch fehlerhafte Bus-Controller, so genannte „Babbling Idiots". Umgekehrt kann ein Bus-Controller, wenn ein Fehler wieder verschwindet, auch automatisch seine Arbeit wieder aufnehmen. Auf diese Weise übernimmt der Kommunikationscontroller eine ganze Reihe von Aufgaben, die sonst durch Software ausgeführt werden müssten.
Siehe auch
LIN - Local Interconnect Network