CAN-Bus

Der CAN-Bus, ausgeschrieben Controller Area Network, ist ein serielles Bussystem für die Kommunikation zwischen mehreren Steuergeräten. Er gehört zu den Feldbussen und wurde für Anwendungen entwickelt, in denen mehrere Teilnehmer über eine gemeinsame Leitung Nachrichten austauschen, ohne dass jedes Gerät mit jedem anderen Gerät einzeln verdrahtet werden muss.

Was ist der CAN-Bus?

CAN verbindet mehrere gleichberechtigte Teilnehmer in einem gemeinsamen Kommunikationsnetz. Jeder Teilnehmer kann Nachrichten senden und empfangen. Die Nachrichten sind nicht an ein bestimmtes Gerät adressiert, sondern über einen Identifier gekennzeichnet. Dieser Identifier beschreibt den Inhalt der Nachricht und bestimmt zugleich ihre Priorität beim Zugriff auf den Bus.

Der CAN-Bus wurde 1983 von Bosch entwickelt und 1986 zusammen mit Intel vorgestellt. Ein ursprünglicher Zweck war die Verringerung von Kabelbäumen in Kraftfahrzeugen. CAN ist in ISO 11898-1 standardisiert. Diese Norm beschreibt die Datensicherungsschicht des ISO/OSI-Modells. Physische Umsetzungen sind unter anderem in ISO 11898-2 für Highspeed-CAN und ISO 11898-3 für fehlertolerante Varianten beschrieben.

Wie funktioniert der CAN-Bus?

Der CAN-Bus arbeitet nach dem Multi-Master-Prinzip. Mehrere Steuergeräte sind gleichberechtigt an denselben Bus angeschlossen. Wenn der Bus frei ist, kann ein Teilnehmer mit der Übertragung beginnen. Greifen mehrere Teilnehmer gleichzeitig auf den Bus zu, entscheidet die bitweise Arbitrierung, welche Nachricht gesendet wird.

Die Arbitrierung nutzt dominante und rezessive Bits. Eine logische 0 ist dominant, eine logische 1 ist rezessiv. Ein dominantes Bit setzt sich auf dem Bus gegen ein rezessives Bit durch. Während ein Teilnehmer den Identifier sendet, liest er gleichzeitig den Buszustand mit. Sendet er ein rezessives Bit, liest aber ein dominantes Bit, verliert er die Arbitrierung und beendet seinen Sendeversuch. Die Nachricht mit dem niedrigeren numerischen Identifier bleibt auf dem Bus und wird ohne Beschädigung weiter übertragen.

Dieses Verfahren wird als zerstörungsfreie Arbitrierung beschrieben. Es verhindert, dass die Nachricht mit der höheren Priorität neu begonnen werden muss. Eine begonnene Nachricht wird jedoch nicht unterbrochen. Deshalb lässt sich der genaue Sendezeitpunkt auch für höher priorisierte Nachrichten nicht beliebig festlegen. Er hängt davon ab, ob gerade eine andere Nachricht übertragen wird.

Physische Übertragung

Bei Highspeed-CAN werden üblicherweise zwei verdrillte Leitungen verwendet: CAN_HIGH und CAN_LOW. Die Signalübertragung erfolgt differenziell. Im rezessiven Ruhezustand liegen beide Leitungen ungefähr bei 2,5 V gegen Masse, die Differenzspannung beträgt dann etwa 0 V. Im dominanten Zustand steigt CAN_HIGH an und CAN_LOW fällt ab, sodass eine Differenzspannung entsteht.

Lowspeed-CAN arbeitet mit anderen Pegeln und kann bei einem Leitungsfehler unter bestimmten Bedingungen über eine Leitung gegen Masse weiterarbeiten. Diese Rückfallart wird als Limp-Home-Modus bezeichnet. Highspeed-CAN und Lowspeed-CAN unterscheiden sich in der physischen Schicht und sind nicht direkt kompatibel.

Ein CAN-Netzwerk wird typischerweise als Linienbus aufgebaut. An den Leitungsenden befinden sich Abschlusswiderstände. Für Highspeed-CAN werden Abschlusswiderstände im Bereich der normativen Vorgaben eingesetzt; verbreitet sind 120 Ohm an beiden Enden der Busleitung. Stichleitungen sind nur begrenzt zulässig, weil sie das elektrische Verhalten des Busses beeinflussen.

Nachrichten, Identifier und Frames

CAN überträgt Daten in Telegrammen, die als Frames bezeichnet werden. Ein klassischer CAN-Daten-Frame enthält unter anderem:

  • Start of Frame
  • Arbitrierungsfeld mit Identifier
  • Steuerfeld
  • Datenfeld
  • Prüfsumme
  • Bestätigungsfeld
  • End of Frame

Beim klassischen CAN kann das Datenfeld 0 bis 8 Byte enthalten. Der Data Length Code gibt an, wie viele Byte im Datenfeld übertragen werden. Zur Fehlererkennung wird eine zyklische Redundanzprüfung verwendet.

CAN kennt verschiedene Frame-Arten. Daten-Frames transportieren Nutzdaten. Remote-Frames fordern Daten an. Error-Frames signalisieren erkannte Übertragungsfehler. Overload-Frames erzeugen eine Pause zwischen bestimmten Übertragungen.

Es gibt zwei Identifier-Formate. Das Base Frame Format verwendet einen 11-Bit-Identifier. Das Extended Frame Format verwendet einen 29-Bit-Identifier. Der Identifier beschreibt den Nachrichteninhalt, nicht den Absender. Ein Teilnehmer kann Nachrichten mit mehreren Identifiern empfangen oder senden. Für einen Identifier soll es jedoch nur einen Sender geben, damit die Arbitrierung eindeutig bleibt.

Wo wird CAN verwendet?

CAN wird vor allem in Systemen eingesetzt, in denen mehrere Steuergeräte zyklisch oder ereignisbezogen Daten austauschen. Ein typischer Einsatzbereich ist das Kraftfahrzeug. Dort können Steuergeräte für Motor, Bremse, Karosseriefunktionen oder Komfortfunktionen über CAN kommunizieren.

CAN wird auch in Nutzfahrzeugen, mobilen Arbeitsmaschinen, Landmaschinen, Schienenfahrzeugen, Schiffen, Messsystemen, Prüfständen und industriellen Steuerungen verwendet. Entscheidend für den Einsatz ist, dass mehrere Teilnehmer über eine gemeinsame Leitung Nachrichten austauschen und die Priorisierung über Identifier erfolgen soll.

Eigenschaften des CAN-Busses

CAN verwendet eine gemeinsame Busleitung für mehrere Teilnehmer. Dadurch sinkt der Verdrahtungsaufwand gegenüber Punkt-zu-Punkt-Verbindungen zwischen allen Geräten. Die Konnektivität zwischen Twisted Pairs wird mit einem Paar CAN-Transceiver sichergestellt, von dem mindestens einer Terminiert ist.

Die Arbitrierung erfolgt über den Identifier. Nachrichten mit niedrigerem Identifier-Wert erhalten Vorrang gegenüber Nachrichten mit höherem Identifier-Wert. Der Identifier dient deshalb gleichzeitig der Inhaltskennzeichnung und der Priorisierung.

Die maximale Datenrate hängt von der Leitungslänge ab. Für Highspeed-CAN werden bis zu 1 Mbit/s genannt, jedoch nur bei kurzen Leitungen bis etwa 40 m. Bei geringeren Datenraten sind längere Leitungen möglich, etwa 500 kbit/s bis etwa 100 m oder 125 kbit/s bis etwa 500 m. Die Grenze ergibt sich aus Signallaufzeiten, Transceiver-Verzögerungen, Controller-Verzögerungen, Oszillatortoleranzen und dem Abtastzeitpunkt.

Die Teilnehmerzahl hängt von den verwendeten Transceivern ab. Genannt werden 32, 64 oder bis zu 110 Teilnehmer pro Leitung, mit Einschränkungen auch bis zu 128. Erweiterungen können über Repeater oder Bridges erfolgen.

CAN FD als Erweiterung

CAN FD steht für CAN with Flexible Data-Rate. Es erweitert das klassische CAN-Protokoll, ohne das Grundprinzip der Identifier-basierten Arbitrierung aufzugeben. Der Unterschied liegt vor allem im größeren Datenfeld und in der möglichen Erhöhung der Bitrate während der Datenphase.

Während klassisches CAN bis zu 8 Byte Nutzdaten pro Frame unterstützt, kann CAN FD bis zu 64 Byte Nutzdaten übertragen. Die Arbitrierungsphase läuft weiterhin mit einer zur Busauslegung passenden Bitrate. Nach der Arbitrierung kann die Datenphase über Bit Rate Switching mit höherer Bitrate übertragen werden.

CAN-FD-Controller können klassische CAN-Frames verarbeiten. Klassische CAN-Controller können CAN-FD-Frames dagegen nicht verarbeiten und erzeugen bei unbekannten FD-Formaten Error-Frames. Deshalb müssen bei der Nutzung von CAN-FD-Frames alle betreffenden Netzwerkteilnehmer CAN FD unterstützen.

CAN FD unterstützt keine Remote-Frames. Außerdem enthält ein CAN-FD-Frame zusätzliche Felder, etwa zur Kennzeichnung des FD-Formats, zur Bitratenumschaltung und zum Fehlerzustand des sendenden Knotens.

Abgrenzung zu verwandten Begriffen

CAN bezeichnet das Kommunikationsverfahren und den Buszugriff einschließlich Frame-Aufbau, Identifiern, Arbitrierung und Fehlerbehandlung. Der CAN-Bus bezeichnet das konkrete Bussystem, über das die Teilnehmer verbunden sind.

Highspeed-CAN und Lowspeed-CAN sind physische Ausprägungen mit unterschiedlichen elektrischen Eigenschaften. Sie sind nicht austauschbar, weil Pegel, Verhalten bei Fehlern und physische Anforderungen abweichen.

CAN FD ist keine vollständig andere Busfamilie, sondern eine Erweiterung von CAN. Es verändert vor allem die Nutzdatenlänge und die Datenphase. Die Kompatibilität muss auf Ebene des gesamten Netzwerks betrachtet werden, weil klassische CAN-Teilnehmer FD-Frames nicht interpretieren können.

Ein Identifier ist keine Geräteadresse. Er beschreibt den Inhalt einer Nachricht. Mehrere Empfänger können dieselbe Nachricht auswerten, wenn der Identifier für sie von Bedeutung ist.

Grenzen und typische Missverständnisse

Der Bus garantiert nicht, dass jede Nachricht zu einem exakt vorgegebenen Zeitpunkt gesendet wird. Die Priorisierung legt nur fest, welche Nachricht bei gleichzeitigem Zugriff Vorrang erhält. Eine laufende Übertragung wird nicht unterbrochen.

Eine niedrige Identifier-Nummer bedeutet eine hohe Priorität. Das kann zu Fehlinterpretationen führen, weil der Zahlenwert und die Priorität gegenläufig gelesen werden müssen.

Wenn ein Teilnehmer fortlaufend Nachrichten mit hoher Priorität sendet, können Nachrichten mit niedrigerer Priorität wiederholt die Arbitrierung verlieren. Dieses Verhalten kann den Bus blockieren. In der Quelle wird dafür der Begriff Babbling idiot genannt. Bei einer entsprechenden Fehlfunktion können zusätzliche Hardware-Mechanismen wie Buswächter erforderlich sein.

Die maximale Datenrate lässt sich nicht unabhängig von der Leitungslänge festlegen. Je höher die Bitrate ist, desto kürzer ist die verfügbare Bitzeit. Mit längeren Leitungen steigen die Signallaufzeiten, die bei Arbitrierung und Bestätigung berücksichtigt werden müssen.

CAN FD erhöht die mögliche Nutzdatenmenge pro Frame, setzt bei FD-Frames aber passende Controller in allen betroffenen Teilnehmern voraus. Ein gemischtes Netzwerk aus klassischen CAN-Knoten und CAN-FD-Frames ist ohne entsprechende Planung nicht funktionsfähig.

Zurück zum Glossar