Der CAN-Bus (Controller Area Network) ist ein serielles Bussystem und gehört zu den Feldbussen.
Er wurde 1983 vom Unternehmen Bosch entwickelt und 1986 zusammen mit Intel vorgestellt. Sein Zweck ist es, Kabelbäume zu reduzieren und hiermit Kosten und Gewicht zu sparen. Zur damaligen Zeit konnte die Gesamtlänge aller Kabel in Kraftfahrzeugen beispielsweise ohne CAN bis zu 2 km betragen.
CAN ist in ISO 11898-1 international standardisiert und definiert Layer 2 (Datensicherungsschicht) im ISO/OSI-Referenzmodell. Die beiden gängigsten Realisierungen der physischen Schichten sind nach ISO 11898-2 (Highspeed physical layer) und ISO 11898-3 (Fault tolerant physical layer) definiert. Sie unterscheiden sich in zahlreichen Eigenschaften und sind nicht zueinander kompatibel.
Funktion
Übertragungsverfahren Der CAN-Bus arbeitet nach dem „Multi-Master-Prinzip“, d. h. er verbindet mehrere gleichberechtigte Steuergeräte. Ein CSMA/CR-Verfahren löst Kollisionen (gleichzeitiger Buszugriff) auf, ohne dass die gewinnende, höher priorisierte Nachricht beschädigt wird. Dazu sind die Bits – je nach Zustand – dominant bzw. rezessiv (ein dominantes Bit überschreibt ein rezessives). Die logische 1 ist rezessiv, kann sich auf dem Bus also nur durchsetzen, solange kein Teilnehmer logisch 0 sendet, logisch entspricht dies einer UND-Verknüpfung, obwohl bei Betrachtung einer der Leitungen für die Spannungspegel eine Wired-OR-Verknüpfung gilt. Die Daten sind NRZ-codiert, mit Bitstopfen zur fortlaufenden Synchronisierung auch von Busteilnehmern mit wenig stabilem Oszillator. Zur Erhöhung der Übertragungssicherheit wird die zyklische Redundanzprüfung eingesetzt.
mini|Spannungspegel im Highspeed-CAN-Bus
Im Falle von Kupferleitungen arbeitet der CAN-Bus mit zwei verdrillten Adern, CAN_HIGH (CAN_H) und CAN_LOW (CAN_L) (symmetrische Signalübertragung). CAN_GND (Masse) als dritte Ader ist optional, jedoch oft zusammen mit einer vierten Ader zur 5-V-Stromversorgung vorhanden.
Bei höheren Datenraten (Highspeed-CAN) ist der Spannungshub zwischen den beiden Zuständen relativ gering: Im rezessiven Ruhezustand ist die Differenzspannung null (beide Adern etwa 2,5 V über Masse), im dominanten Zustand beträgt sie mindestens 2 V (CAN_HIGH > 3,5 V, CAN_LOW < 1,5 V).
Beim für größere Distanzen geeigneten Lowspeed-CAN kommt ein Spannungshub von 5 V zum Einsatz, indem die rezessiven Ruhepegel auf 5 V (CAN_LOW) und 0 V (CAN_HIGH) gelegt sind. Bei Ausfall einer der beiden Leitungen kann die Spannung der anderen Leitung gegen Masse ausgewertet werden. Bei langsameren Bussen („Komfort-Bus“ z. B. zur Betätigung von Elementen durch den Benutzer) kann ein Eindrahtsystem mit der Karosserie als Masse deshalb reichen. Praktisch wird es meistens doch als Zweidrahtsystem ausgeführt, verwendet aber im Fall eines Aderbruchs den Eindrahtbetrieb als Rückfallebene, um den Betrieb weiterführen zu können. Das nennt sich dann „Limp-Home-Modus“ (Deutsch: „nach-Hause-humpeln-Modus“).
Topologie mini|hochkant=1.5|Linearer CAN-BusDas CAN-Netzwerk wird als Linienstruktur aufgebaut. Stichleitungen sind in eingeschränktem Umfang zulässig, auch ein sternförmiger Bus (z. B. bei der Zentralverriegelung im Auto) ist möglich. Diese Varianten haben allerdings im Vergleich zum linienförmigen Bus Nachteile: Der sternförmige Bus wird meist von einem Zentralrechner gesteuert, da diesen alle Informationen passieren müssen, mit der Folge, dass bei einem Ausfall des Zentralrechners keine Informationen weitergeleitet werden können. Beim Ausfall eines einzelnen Steuergeräts funktioniert der Bus weiter. Für Stichleitungen und sternförmige Busarchitektur ist der Leitungswellenwiderstand etwas aufwendiger zu bestimmen. Die Anzahl der Stichleitungen und ihre Gesamtlänge wird durch empirische Richtformeln abgeschätzt. Der lineare Bus hat den Vorteil, dass alle Steuergeräte parallel an einer zentralen Leitung liegen. Nur wenn diese ausfällt, funktioniert der Bus nicht mehr. Diese Topologie wird häufig in Kraftfahrzeugen eingesetzt.
An jedem Leitungsende sollte sich je ein Abschlusswiderstand von 120 Ohm befinden. Für einen einzelnen CAN-Bus-Teilnehmer an einer Stichleitung wirkt dies genauso wie ein einzelner 60-Ohm-Widerstand, der am Ort der Abzweigung eingefügt ist. Dieser Wert ist die zentrale Impedanz einer Sternarchitektur.
Synchronisierung und Zeitquanten Die nominale Datenübertragungsrate im Netzwerk muss allen Teilnehmern bekannt sein, ggf. durch automatische Detektion – CAN in Automation hat dazu eine Application-Note herausgegeben, CiA 801. Die Synchronisation auf den genauen Beginn einer Nachricht erfolgt mit dem Wechsel vom rezessiven Idle-Pegel des Busses zum dominanten Synchronisations-Bit, mit dem jede Nachricht beginnt. Jeder weitere Pegelwechsel von rezessiv zu dominant kann zur dynamischen Nachsynchronisierung der Empfänger verwendet werden. Die Nachsynchronisierung gleicht Phasenrauschen und -drift zwischen den lokalen Oszillatoren aus. Eine Nachsynchronisierung findet auch während der Arbitrierungsphase statt, wenn ein Sender eine Nachricht mit höherer Priorität zu senden beginnt. Dies bewirkt meist ebenfalls einen Phasensprung in Bezug zur vorherigen Nachricht.
Maximale Übertragungsrate und Leitungslänge Es wird zwischen einem Highspeed-Bus mit einer Datenrate von bis zu 1 Mbit/s und einem Lowspeed-Bus mit bis zu 125 kbit/s unterschieden. Diese Raten gelten jedoch nur bei Leitungslängen bis zu 40 m. Darüber hängt die maximal zulässige Datenrate von der Leitungslänge ab. Mit niedrigeren Datenraten sind längere Leitungen möglich: bei 500 kbit/s bis zu 100 m und bei 125 kbit/s bis zu 500 m.
Diese Maximalwerte beruhen darauf, dass die Zeit, die ein Signal am Bus anliegt (Bitzeit, Sekunde/Bit), umso kürzer ist, je höher die Übertragungsrate ist. Mit zunehmender Leitungslänge steigt jedoch die Zeit, die ein Signal braucht, bis es am anderen Ende des Busses angekommen ist (Ausbreitungsgeschwindigkeit). Zu beachten ist, dass sich das Signal nicht nur ausbreitet, sondern der Empfänger auch innerhalb einer begrenzten Zeit auf den Sender reagieren muss (siehe ACK). Der Sender muss wiederum die eventuelle Buspegeländerung des oder der Empfänger mitbekommen (siehe auch Arbitrierung). Deshalb ist die maximale Leitungslänge etwas komplexer zu berechnen. Es müssen Verzögerungszeiten auf der Leitung, des Transceivers (Sender und Empfänger), des Controllers (Sender und Empfänger), Oszillatortoleranzen und der gesetzte Abtastzeitpunkt (Sender und Empfänger) berücksichtigt werden.
Der weiterentwickelte CAN‑FD‑Standard (FD steht für engl. flexible data rate) erlaubt es, die Datenrate nach der Verbindungsaushandlung zu erhöhen. Damit kann die Übertragungsgeschwindigkeit des Datenabschnitts um den Faktor 10 oder mehr gesteigert werden.
Als Busmedium werden nach ISO 11898-2 (High-Speed Medium Access Unit) Twisted-Pair-Kabel ursprünglich mit einem Wellenwiderstand von 108–132 Ohm empfohlen. In der derzeit gültigen Ausgabe der ISO 11898-2 aus dem Jahr 2016 ist die Toleranz der Abschlusswiderstände, die an beiden Enden angeschlossen werden müssen, mit 100–130 Ohm angegeben.
Die maximale Teilnehmeranzahl auf physischer Ebene hängt von den verwendeten Bustreiberbausteinen (Transceiver, physische Anschaltung an den Bus) ab. Mit gängigen Bausteinen sind 32, 64 oder bis zu 110 (mit Einschränkungen bis zu 128) Teilnehmer pro Leitung möglich (Erweiterungsmöglichkeit über Repeater oder Bridge).
Objekt-Identifier Der Objekt-Identifier kennzeichnet den Inhalt der Nachricht, nicht das Gerät. Zum Beispiel kann in einem Messsystem den Parametern Temperatur, Spannung und Druck jeweils ein eigener Identifier zugewiesen sein. Es können mehrere Parameter unter einem Identifier vereint sein, solange die Summe der Daten die maximal mögliche Länge des Datenfeldes nicht überschreitet. Die Empfänger entscheiden anhand des Identifiers, ob die Nachricht für sie relevant ist oder nicht.
Zudem dient der Objekt-Identifier auch der Priorisierung der Nachrichten.
Die Spezifikation definiert zwei Identifier-Formate:
11-Bit-Identifier, auch „Base frame format“ genannt (CAN 2.0A) 29-Bit-Identifier, auch „Extended frame format“ genannt (CAN 2.0B).
Ein Teilnehmer kann Empfänger und Sender von Nachrichten mit beliebig vielen Identifiern sein, aber umgekehrt darf es zu einem Identifier immer nur maximal einen Sender geben, damit die Arbitrierung funktioniert.
Der 29-Bit-Identifier ist in erster Linie für das Umfeld von Nutzfahrzeugen, Schiffen, Schienenfahrzeugen und Landmaschinen definiert. Der CAN-Standard fordert, dass eine Implementierung das „Base frame format“ akzeptieren muss, dagegen das „Extended frame format“ akzeptieren kann, es aber zumindest tolerieren muss.
Die Liste der Objekt-Identifier einschließlich Sender und Empfänger ist Bestandteil der sog. Kommunikationsmatrix oder K-Matrix.
Arbitrierung, Priorität Der Buszugriff wird verlustfrei mittels der bitweisen Arbitrierung auf Basis der Identifier der zu sendenden Nachrichten aufgelöst. Dazu überwacht jeder Sender den Bus, während er gerade den Identifier sendet. Senden zwei Teilnehmer gleichzeitig, so überschreibt das erste dominante Bit eines der beiden das entsprechend rezessive des anderen, was dieser erkennt und seinen Übertragungsversuch beendet. Verwenden beide Teilnehmer den gleichen Identifier, wird nicht sofort ein Error-Frame erzeugt (siehe Frame-Aufbau), sondern erst bei einer Kollision innerhalb der restlichen Bits, was durch die Arbitrierung ausgeschlossen sein sollte. Daher empfiehlt der Standard, dass ein Identifier auch nur von maximal einem Teilnehmer verwendet werden soll.
Durch dieses Verfahren ist auch eine Hierarchie der Nachrichten untereinander gegeben. Die Nachricht mit dem niedrigsten Identifier darf immer übertragen werden. Für die Übertragung von zeitkritischen Nachrichten kann also ein Identifier hoher Priorität (= niedrige ID, z. B. 0x001; 0x000 für Netzmanagement – NMT) vergeben werden, um ihnen so Vorrang bei der Übertragung zu gewähren. Dennoch kann selbst bei hochprioren Botschaften der Sendezeitpunkt zeitlich nicht genau vorherbestimmt werden, da gerade in Übertragung befindliche Nachrichten nicht unterbrochen werden können und den Startzeitpunkt einer Sendung so bis zur maximalen Nachrichtenlänge verzögern können (nichtdeterministisches Verhalten). Lediglich die maximale Sendeverzögerung für die höchstpriore Nachricht kann bei bekannter maximaler Nachrichtenlänge errechnet werden. Für niederpriore Nachrichten ist im Allgemeinen keine Aussage über den Sendezeitpunkt möglich.
Sollte ein Teilnehmer kontinuierlich Nachrichten mit einer hohen Priorität versenden, kann dies zur Blockade des Busses führen, da die Nachrichten der anderen Teilnehmer jeweils die Arbitrierung verlieren. Dieses Verhalten wird als Babbling idiot beschrieben. Sollte dieses Verhalten auf einer Fehlfunktion basieren, kann es nur durch zusätzliche Hardware – sogenannte Buswächter (Bus Guardians) – gelöst werden.Giuseppe Buja, Juan R. Pimentel, Alberto Zuccollo: Overcoming Babbling-Idiot Failures in the FlexCAN Architecture. A Simple Bus-Guardian. In: Emerging Technologies and Factory Automation. 2005, ISBN 0-7803-9401-1, S. 461–468 (PDF-Datei).
Frame-Aufbau mini|rechts|hochkant=3|CAN-Daten-Frame mit elektrischen Pegeln mini|hochkant=2|CAN-Datentelegramm im Base Frame Format mini|hochkant=2|CAN-Datentelegramm im Extended-Frame-Format Die Kommunikation erfolgt mit Telegrammen. Innerhalb eines Telegramms gibt es Steuerbits und Nutzbits (roter Bereich). Der genormte Aufbau eines solchen Telegrammrahmens wird als Frame bezeichnet.
Es gibt vier verschiedene Arten von Frames: Daten-Frame, dient dem Transport von Daten Remote-Frame, dient der Anforderung eines Daten-Frames von einem anderen Teilnehmer Error-Frame, signalisiert allen Teilnehmern eine erkannte Fehlerbedingung in der Übertragung Overload-Frame, dient als Zwangspause zwischen Daten- und Remote-Frames
Daten-Frame