CAN / CANopen
CAN ist ein robuster 2-Draht-Bus, auf dem die wichtigste Nachricht per Priorität immer zuerst durchkommt.
Mehrere Knoten hängen an einem einzigen Bus. Jede Nachricht trägt eine ID (die Priorität), aber keine Empfänger-Adresse.
In 30 Sekunden
CAN (Controller Area Network, also Steuergeräte-Netzwerk) ist ein Bus-System aus der Fahrzeugtechnik, entwickelt ab 1983 bei Bosch und genormt als ISO 11898. Ein Bus ist eine gemeinsame Leitung, an der viele Teilnehmer gleichzeitig hängen, hier nur zwei verdrillte Drähte. Der Clou: CAN adressiert keine Geräte, sondern Nachrichten. Jede Nachricht trägt eine Kennung (eine Zahl, die ID), und diese ID ist zugleich ihre Priorität. Jede Nachricht geht an alle Knoten, und jeder Knoten entscheidet selbst, was ihn interessiert. Wollen zwei Knoten gleichzeitig senden, regelt das die sogenannte Arbitrierung (das automatische Aushandeln, wer darf): Die kleinere ID gewinnt, ohne dass etwas kaputtgeht. Der Verlierer merkt das sofort, zieht sich zurück und sendet gleich danach. Zusätzlich prüft eine Prüfsumme (CRC) jede Nachricht, deshalb ist CAN extrem robust und wird in Autos (OBD-II-Diagnose), Maschinen und Medizintechnik eingesetzt. In der Praxis spart das viel Kabel und Kosten, weil viele Geräte über nur zwei Drähte statt dutzender Einzelleitungen reden. CANopen ist eine Schicht obendrauf (eine sogenannte Anwendungsschicht): Sie legt fest, wie die reinen Zahlenwerte zu verstehen sind, also was eine Zahl wie 1500 bedeutet, zum Beispiel 1500 Umdrehungen pro Minute.
Stell dir eine Telefon-Konferenz vor, bei der viele Leute auf einer einzigen Leitung mithören. Es gibt keine Namen und keine Anrufe an einzelne Personen. Stattdessen ruft jeder seine Nachricht laut in die Runde, versehen mit einer Dringlichkeits-Nummer: je kleiner die Nummer, desto dringender. Alle hören alles. Aber jeder achtet nur auf die Themen, die ihn betreffen, und überhört den Rest, so wie man in einer lauten Runde erst aufhorcht, sobald der eigene Fachbereich fällt.\n\nJetzt wollen zwei gleichzeitig sprechen. Statt dass beide durcheinanderreden und man nichts versteht, gilt eine simple Regel: Man vergleicht die Dringlichkeits-Nummern Ziffer für Ziffer (technisch nicht Ziffern, sondern die einzelnen Bits der ID). Sobald einer merkt, dass die Nummer des anderen kleiner (dringender) ist, hört er sofort auf und wartet. Der Dringlichere redet ungestört weiter, seine Nachricht bleibt vollständig heil. Nichts geht verloren, es muss nichts wiederholt werden.\n\nGenau so arbeitet CAN. Die Dringlichkeits-Nummer ist die Nachrichten-ID. Das Aufhören, sobald ein Dringlicherer spricht, ist die zerstörungsfreie Arbitrierung. Und weil der Zurückgetretene sofort danach drankommt, verliert er nur Millisekunden. Der Bremsbefehl im Auto hat eine kleine ID und kommt so immer vor der Info für die Klimaanlage durch.
Wo trifft man CAN / CANopen an?
Fahrzeuge und OBD-II-Diagnose
CAN ist der Standard-Datenbus im Auto, der Steuergeräte wie Motor, Bremsen und Airbag verbindet. Über die OBD-II-Buchse (die genormte Diagnose-Schnittstelle) läuft die Fehlerauslese, in den USA seit Modelljahr 1996 Pflicht.
Maschinen- und Anlagenbau
In Maschinen verbindet CAN Sensoren, Antriebe und Ventile über eine einzige Leitung. Das spart viel Kabel und ist unempfindlich gegen elektrische Störungen, wie sie in der Fabrik überall vorkommen.
Medizintechnik
Geräte wie Kranken-Betten, Behandlungsstühle oder Bildgebung nutzen CAN, weil die eingebaute Prüfsumme (CRC) verfälschte Nachrichten sofort erkennt, bevor ein falscher Wert eine Fehlfunktion auslösen könnte.
Nutzfahrzeuge und Landmaschinen
Lastwagen, Busse und Traktoren setzen auf CAN als Grundlage für Aufbau-Protokolle wie J1939 (die Norm für Nutzfahrzeuge) und ISOBUS (die Norm für Landtechnik), damit Geräte verschiedener Hersteller zusammenarbeiten.
Aufzüge und Gebäudetechnik
Über die Anwendungsschicht CANopen steuern viele Aufzüge und Türen ihre Antriebe und Sensoren. CANopen definiert dabei fertige Geräte-Profile, etwa für Antriebe (CiA 402).
Bahn, Schiff und Automatisierung
Überall, wo es robust, störsicher und schnell genug für sofortige Reaktionen (echtzeitfähig) sein muss, ist CAN verbreitet, oft mit CANopen als einheitlicher Geräte-Sprache darüber.
Gut geeignet für
- Sicherheitskritische Steuerung mit Vorrang: Wichtige Befehle kommen garantiert zuerst durch, denn die dringendste Nachricht (kleinste ID) hat immer Vorrang. Ein Bremsbefehl wartet so nie hinter Nebensächlichem.
- Störreiche Umgebungen: Wenn es im Auto oder in der Fabrik elektrisch stört, weil CAN das Signal über zwei verdrillte Drähte als Differenz der beiden überträgt; eine Störung trifft beide Drähte gleich und hebt sich dadurch auf.
- Viele Knoten an einer Leitung: Wenn viele Steuergeräte günstig verbunden werden sollen, weil alle an einem Bus hängen und jede Nachricht automatisch alle erreicht.
- Zuverlässige kurze Nachrichten: Wenn kleine Statuswerte fehlerfrei fliessen sollen, weil jede CAN-Nachricht per Prüfsumme (CRC) gesichert und ein Fehler sofort erkannt wird.
- Herstellerübergreifende Geräte: Wenn Geräte verschiedener Firmen zusammenspielen sollen, weil CANopen mit Objektverzeichnis und Profilen eine gemeinsame Sprache liefert.
Weniger geeignet für
- Grosse Datenmengen: Für Video, Kamera-Bilder oder Firmware-Downloads ungeeignet, weil eine klassische CAN-Nachricht nur 8 Byte (also 8 Zeichen an Nutzdaten) trägt und maximal 1 Megabit pro Sekunde schafft. Dafür passt Industrial Ethernet besser, das sind schnelle Fabrik-Netze wie PROFINET oder EtherCAT.
- Weite Strecken bei hohem Tempo: Für lange Kabel bei voller Geschwindigkeit ungeeignet, weil 1 Megabit pro Sekunde nur bis etwa 40 Meter geht und die Rate mit der Länge stark fällt. Für Distanzen ist Ethernet die bessere Wahl.
- Direktes Ansprechen eines einzelnen Geräts: Wenn du gezielt genau ein Gerät adressieren willst, ist CAN unpassend, weil es Nachrichten statt Geräte adressiert und jeder selbst filtert. Ein Master-Slave-Bus wie Modbus RTU trifft das besser.
- Bürowelt und IT-Anbindung: Für die Verbindung zu PCs, Cloud oder Web ungeeignet, weil CAN eine eigene Welt für die Maschinen-Ebene ist (ein sogenannter Feldbus). Dafür nimmt man Ethernet mit MQTT oder OPC UA, das sind verbreitete Sprachen zur Anbindung an PCs und Cloud.
Fakten
- CAN steht für Controller Area Network (Steuergeräte-Netzwerk)
- ISO 11898 (Teil 1: Datenverbindung, Teil 2/3: Physik), von Bosch ab 1983 entwickelt, 1986 vorgestellt
- Bus-System (alle Teilnehmer hängen an einer gemeinsamen Leitung), Multi-Master (jeder Knoten darf von sich aus senden), zwei verdrillte Drähte CAN_H und CAN_L
- message-basiert: keine Geräte-, sondern Nachrichten-IDs mit 11 Bit (Standard) oder 29 Bit (Extended)
- zerstörungsfrei: kleinste ID gewinnt und darf senden, der Verlierer sendet gleich danach; das passiert ohne Kollision
- maximal 8 Byte Nutzdaten pro klassischer Nachricht, gesichert durch Prüfsumme (CRC)
- bis 1 Megabit pro Sekunde (bis ca. 40 Meter), langsamer bei längeren Leitungen; Abschluss mit 120-Ohm-Widerständen
- Anwendungsschicht über CAN, gepflegt von CAN in Automation (CiA 301); Objektverzeichnis, PDO für Prozessdaten, SDO für Parameter, Knoten-IDs 1-127
Im Detail
Nachrichten statt Adressen: der Bus, der an alle spricht
Die wichtigste Idee von CAN ist ungewohnt: Es gibt keine Empfänger-Adresse. In einem normalen Netzwerk schickst du ein Paket an ein bestimmtes Gerät. Bei CAN ruft ein Knoten seine Nachricht einfach in den Bus, und jede Nachricht erreicht jeden Teilnehmer gleichzeitig. Das nennt man message-basiert.
Woher weiss dann ein Knoten, was ihn angeht? Jede Nachricht trägt vorne eine Kennung, die ID. Das kann eine 11-Bit-Zahl sein (Standard-Format) oder eine längere 29-Bit-Zahl (Extended-Format). Diese ID sagt nicht, wer gemeint ist, sondern worum es geht, zum Beispiel Drehzahl oder Kühlwasser-Temperatur.
Jeder Knoten hat einen eingebauten Filter und fängt nur die IDs auf, die er braucht. Der Rest rauscht an ihm vorbei. Der grosse Vorteil: Du kannst ein neues Gerät an den Bus hängen, ohne allen anderen etwas beizubringen. Es hört einfach mit und sucht sich die passenden Nachrichten.
Zerstörungsfreie Arbitrierung: wie zwei Sender ohne Crash auskommen
Weil alle auf derselben Leitung senden, können zwei Knoten im selben Moment loslegen. In den meisten Netzwerken gäbe das eine Kollision, beide Nachrichten wären Schrott und müssten wiederholt werden. CAN löst das eleganter, ganz ohne Verlust.
Der Trick steckt in den Bus-Pegeln. Eine 0 ist dominant, eine 1 ist rezessiv. Dominant heisst: Sendet auch nur ein einziger Knoten eine 0, setzt sich diese 0 auf dem Bus durch und überschreibt jede 1. Während beide Sender ihre ID Bit für Bit ausgeben, hören sie zugleich mit, was tatsächlich auf dem Bus steht.
Sobald ein Knoten eine 1 senden will, aber eine 0 auf dem Bus liest, weiss er: Ein anderer hat eine kleinere, dringendere ID. Er hört sofort auf zu senden und wird zum Zuhörer. Der Gewinner merkt von alldem nichts und sendet seine Nachricht ohne Unterbrechung zu Ende. Deshalb heisst es zerstörungsfrei: Die wichtigste Nachricht (kleinste ID) kommt garantiert und unbeschädigt durch. Der Verlierer versucht es gleich danach erneut.
Robustheit: warum CAN im Auto und in der Fabrik überlebt
CAN ist für harte Umgebungen gebaut. Die Daten laufen über zwei verdrillte Drähte, CAN_H und CAN_L, im sogenannten Differenz-Verfahren: Nicht der einzelne Draht zählt, sondern die Differenz zwischen beiden. Eine Störung trifft meist beide Drähte gleich und fällt bei der Differenz heraus. Darum übersteht CAN das elektrische Chaos in einem Motorraum.
Zusätzlich trägt jede Nachricht eine Prüfsumme, die CRC (zyklische Redundanzprüfung). Der Sender rechnet aus dem Inhalt eine Kontrollzahl und hängt sie an. Jeder Empfänger rechnet nach. Stimmt es nicht überein, wird die Nachricht verworfen und der Fehler gemeldet. So schleicht sich kein verfälschter Wert unbemerkt ein.
Der Preis für diese Robustheit ist die Datenmenge: Eine klassische CAN-Nachricht trägt höchstens 8 Byte, und die Geschwindigkeit liegt bei bis zu 1 Megabit pro Sekunde, mit längeren Leitungen weniger. Für kurze, wichtige Steuerwerte ist das ideal. Für grosse Datenströme ist es bewusst nicht gedacht.
CANopen: die gemeinsame Sprache über dem Bus
CAN selbst regelt nur, wie Bits sicher über den Draht kommen. Was die Werte bedeuten, lässt es offen. Genau diese Lücke füllt CANopen, eine Anwendungsschicht obendrauf, gepflegt von der Organisation CAN in Automation (Grundnorm CiA 301). Eine Anwendungsschicht legt fest, wie die reinen Daten zu verstehen und zu ordnen sind.
Herzstück ist das Objektverzeichnis: eine Art Tabelle in jedem Gerät, in der jeder Wert unter einer festen Adresse aus Index und Subindex steht, etwa Zielgeschwindigkeit oder Fehlerstatus. Wer den Index kennt, findet den Wert. Beispiel: Ein Motor-Antrieb legt seine Zielgeschwindigkeit unter einer festen Adresse ab. Eine Steuerung eines beliebigen Herstellers kann dort schreib 1500 Umdrehungen hinterlegen, ohne den Motor im Detail zu kennen.
Für den Datenaustausch gibt es zwei Wege. PDO (Process Data Object, Prozessdaten-Objekt) transportiert schnell die laufenden Betriebswerte wie Drehzahl oder Position. SDO (Service Data Object, Dienstdaten-Objekt) dient dem gezielten Lesen und Schreiben von Einstellungen, etwa beim Einrichten. Weil viele Geräte-Typen fertige Profile haben, zum Beispiel CiA 402 für Antriebe, sprechen Produkte verschiedener Hersteller dieselbe Sprache. Knoten bekommen dabei eine Knoten-ID von 1 bis 127.
