CAN-Bus – Controller Area Network Bus
Abkürzung: CAN-Bus
Der CAN-Bus ist ein Feldbus, der 1983 bei Bosch für die Vernetzung von Steuergeräten im Kraftfahrzeug entwickelt und 1986 veröffentlicht wurde. Das Ziel war, die wachsende Zahl einzelner Signalleitungen im Fahrzeug durch ein gemeinsames Buskabel zu ersetzen.
Dort ist er bis heute Standard, aber längst nicht mehr nur dort. CAN steckt in Landmaschinen und Baumaschinen, in Aufzügen, in Medizingeräten, in Schiffselektronik und in industriellen Anlagen — überall, wo eine überschaubare Zahl von Geräten zuverlässig und mit kurzen Nachrichten zusammenarbeiten muss.
Nachrichten statt Adressen
Der wichtigste Unterschied zu Modbus oder PROFIBUS liegt darin, dass ein CAN-Telegramm keinen Empfänger nennt.
Jede Nachricht trägt stattdessen einen Identifier, der beschreibt, was in ihr steht — etwa „Motordrehzahl" oder „Bremsdruck". Die Nachricht geht an alle Teilnehmer, und jeder entscheidet für sich, ob sie ihn angeht. Diese Entscheidung trifft ein Akzeptanzfilter im Baustein, noch bevor der Prozessor beteiligt wird.
Daraus folgen zwei praktische Eigenschaften. Ein zusätzliches Gerät, das einen Wert mitlesen will, lässt sich anschließen, ohne an den vorhandenen Geräten etwas zu ändern — die Grundlage jedes Diagnosegeräts. Und ein Wert wird nur einmal gesendet, auch wenn fünf Steuergeräte ihn brauchen.
Der Identifier bestimmt zugleich die Priorität: Je kleiner sein Zahlenwert, desto wichtiger die Nachricht. Diese Zuordnung wird beim Entwurf einer Anlage festgelegt und ist später nur schwer zu ändern.
Arbitrierung: Mithören statt Zusammenstoßen
Das Zugriffsverfahren heißt CSMA/CR — Carrier Sense Multiple Access with Collision Resolution. Es löst den gleichzeitigen Zugriff mehrerer Sender, ohne dass dabei eine Nachricht verlorengeht.
Möglich wird das durch zwei Pegel, die sich nicht symmetrisch verhalten. Eine logische 0 ist dominant, eine logische 1 rezessiv: Legt ein Teilnehmer den dominanten Pegel an, setzt er sich gegen alle rezessiv sendenden durch. Der Bus verhält sich damit wie ein logisches UND.
Beim Senden des Identifiers hört jeder Teilnehmer gleichzeitig mit, was tatsächlich auf der Leitung steht:
- Sendet er rezessiv und liest rezessiv, läuft alles weiter.
- Sendet er rezessiv und liest dominant, ist ein anderer mit einem kleineren Identifier dabei. Er bricht sofort ab und wird zum Empfänger.
Nach dem letzten Identifier-Bit ist genau ein Sender übrig, und der sendet seine Nachricht ohne Unterbrechung weiter. Es geht keine Zeit durch Kollisionen verloren und keine Nachricht durch Wiederholung — der unterlegene Teilnehmer versucht es nach dem Ende des laufenden Telegramms erneut.
Der Preis: Die Zuteilung ist fest. Eine Nachricht mit niedriger Priorität kann bei hoher Buslast lange warten, im Grenzfall beliebig lange. CAN ist deshalb für die wichtigen Nachrichten echtzeitfähig, nicht für alle.
Elektrische Ebene
CAN überträgt differenziell über ein verdrilltes Adernpaar mit den Leitungen CAN_H und CAN_L — in der verbreiteten Hochgeschwindigkeitsvariante nach ISO 11898-2.
Im rezessiven Zustand liegen beide Leitungen bei etwa 2,5 V, die Differenz ist null. Im dominanten Zustand wird CAN_H auf rund 3,5 V angehoben und CAN_L auf rund 1,5 V abgesenkt, die Differenz beträgt etwa 2 V. Dass der dominante Zustand aktiv getrieben und der rezessive nur passiv gehalten wird, ist die physikalische Grundlage der Arbitrierung.
An beiden Enden der Linie sitzt ein Abschlusswiderstand von 120 Ohm, wie bei RS485. Daraus ergibt sich ein verbreiteter Prüfgriff: Wer bei spannungsfreiem Bus zwischen CAN_H und CAN_L misst, muss etwa 60 Ohm sehen, weil beide Abschlüsse parallel liegen. 120 Ohm bedeuten einen fehlenden Abschluss, 40 Ohm einen zu viel.
Länge und Datenrate hängen zusammen, weil die Arbitrierung voraussetzt, dass ein Pegel innerhalb einer Bitzeit den gesamten Bus erreicht und zurückwirkt:
| Datenrate | Maximale Länge |
|---|---|
| 1 Mbit/s | etwa 40 m |
| 500 kbit/s | etwa 100 m |
| 125 kbit/s | etwa 500 m |
| 50 kbit/s | etwa 1.000 m |
Die Kodierung ist NRZ. Damit der Empfänger seinen Takt nachführen kann, fügt der Sender nach fünf gleichen Bits automatisch ein gegenteiliges ein (Bit Stuffing); der Empfänger entfernt es wieder.
Der Rahmen
Ein Datentelegramm enthält im Wesentlichen:
| Feld | Inhalt |
|---|---|
| Identifier | 11 Bit (Standard) oder 29 Bit (Extended) |
| Control | unter anderem die Datenlänge |
| Daten | 0 bis 8 Byte |
| CRC | 15 Bit Prüfsumme |
| ACK | Quittungsbit |
Acht Byte Nutzdaten sind wenig und waren eine bewusste Entscheidung: Kurze Telegramme halten die Wartezeit für höher priorisierte Nachrichten klein.
Bemerkenswert ist das Quittungsbit. Der Sender sendet es rezessiv, und jeder Teilnehmer, der das Telegramm fehlerfrei empfangen hat, überschreibt es dominant. Der Sender erfährt dadurch, dass mindestens einer es korrekt gelesen hat — nicht aber, wer. Hängt ein einzelnes Gerät allein am Bus, bleibt die Quittung aus, und es wiederholt endlos. Das ist der übliche Befund, wenn ein Steuergerät isoliert auf dem Prüftisch liegt.
Fehlerbehandlung
Hier liegt die eigentliche Stärke des Verfahrens. Erkennt ein Teilnehmer einen Fehler, sendet er sofort einen Error Frame aus dominanten Bits. Der zerstört das laufende Telegramm für alle, sodass niemand mit halben Daten weiterarbeitet; der Sender wiederholt anschließend.
Damit ein einzelnes defektes Gerät den Bus nicht dauerhaft blockiert, führt jeder Teilnehmer zwei Fehlerzähler und durchläuft drei Zustände:
- Error Active — der Normalzustand, Fehler werden aktiv gemeldet.
- Error Passive — ab 128 Fehlern meldet das Gerät nur noch zurückhaltend und stört die anderen nicht mehr.
- Bus Off — ab 256 Fehlern schaltet es seinen Sender ab und nimmt nicht mehr teil.
Ein Gerät mit gestörter Verkabelung nimmt sich damit selbst aus dem Verkehr, während der Rest weiterläuft. Diese Selbstabschaltung ist der Grund, warum CAN in sicherheitsrelevanten Anwendungen eingesetzt wird.
CAN FD
Acht Byte und 1 Mbit/s wurden mit wachsender Datenmenge knapp. CAN FD (Flexible Data Rate, ISO 11898-1:2015) behält die Arbitrierung unverändert bei, schaltet aber nach deren Abschluss für den Datenteil auf eine höhere Rate um — der Bus gehört dann ohnehin schon einem Sender. Die Nutzdaten wachsen auf 64 Byte.
Alte und neue Geräte lassen sich nicht beliebig mischen: Ein reiner CAN-Baustein hält ein CAN-FD-Telegramm für fehlerhaft und sendet einen Error Frame. Ein gemischter Bus braucht deshalb Bausteine, die FD-Telegramme zumindest tolerieren.
Was auf CAN aufsetzt
CAN regelt den Transport, nicht die Bedeutung. Welcher Identifier welchen Wert trägt und wie er skaliert ist, legen aufsetzende Protokolle oder der Hersteller fest:
- CANopen — in der Industrie- und Gerätetechnik verbreitet, mit einem Objektverzeichnis, das Geräte selbstbeschreibend macht.
- SAE J1939 — Nutzfahrzeuge, Land- und Baumaschinen, mit festgelegten Parametergruppen.
- OBD-II / UDS — Diagnose im Fahrzeug, die Grundlage jedes Auslesegeräts.
- DeviceNet und NMEA 2000 — Automatisierung beziehungsweise Schiffselektronik.
Ohne eine solche Festlegung oder eine Beschreibungsdatei ist ein mitgelesener CAN-Verkehr nicht deutbar — dieselbe Lage wie bei Modbus ohne Registertabelle.
Sicherheit
CAN hat keine Authentisierung und keine Verschlüsselung. Jeder Teilnehmer darf jeden Identifier senden, und niemand kann prüfen, ob eine Nachricht vom vorgesehenen Gerät stammt. Wer Zugang zum Bus hat, kann beliebige Werte einspeisen und durch dominante Bits sogar fremde Telegramme gezielt zerstören.
Für ein geschlossenes Fahrzeugnetz der 1980er Jahre war das vertretbar. Mit Fahrzeugen, die über Mobilfunk erreichbar sind, ist es das nicht mehr, weshalb heutige Architekturen den CAN-Bus hinter Gateways segmentieren und sicherheitsrelevante Funktionen trennen.
Abgrenzung
RS485 ist nur die elektrische Schnittstelle und überlässt Buszugriff und Fehlerbehandlung dem Protokoll. CAN bringt beides mit.
LIN ist der günstigere kleine Bruder im Fahrzeug: eine Ader, bis 20 kbit/s, ein Leitgerät, das die anderen abfragt — für Fensterheber und Sitzverstellung.
FlexRay arbeitet mit festen Zeitschlitzen und garantiert dadurch auch niedrig priorisierten Nachrichten eine Zustellzeit. Es ist aufwendiger und blieb auf wenige Anwendungen beschränkt.
Automotive Ethernet löst CAN dort ab, wo große Datenmengen anfallen — Kameras, Assistenzsysteme —, ersetzt es aber nicht bei kurzen Steuerbefehlen.
Normen und Quellen
- ISO 11898-1 – Datenverbindungsschicht und physikalische Signalisierung, einschließlich CAN FD
- ISO 11898-2 – Hochgeschwindigkeits-Buszugriffseinheit (High-Speed Medium Access Unit)
- ISO 11898-3 – Fehlertolerante Übertragung mit niedriger Geschwindigkeit (Low-Speed, Fault-Tolerant)
- SAE J1939 – Kommunikation in Nutzfahrzeugen
- EN 50325-4 – CANopen