Controller Area Network
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.
![](http://upload.wikimedia.org/wikipedia/commons/thumb/4/4d/Canbus_levels.svg/220px-Canbus_levels.svg.png)
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
![](http://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/CAN-Bus_Elektrische_Zweidrahtleitung.svg/330px-CAN-Bus_Elektrische_Zweidrahtleitung.svg.png)
Das 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 weiter entwickelte CAN FD Standard 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 vorher bestimmt 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.[1]
Frame-Aufbau
![](http://upload.wikimedia.org/wikipedia/commons/thumb/5/54/CAN-bus-frame-with-stuff-bit-and-correct-CRC.png/660px-CAN-bus-frame-with-stuff-bit-and-correct-CRC.png)
![](http://upload.wikimedia.org/wikipedia/commons/thumb/6/6f/CAN_telegramm_2.0A.svg/440px-CAN_telegramm_2.0A.svg.png)
![](http://upload.wikimedia.org/wikipedia/commons/thumb/8/85/Extended_can-dataframe.png/440px-Extended_can-dataframe.png)
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
Ein Daten-Frame ist logisch wie folgt aufgebaut:
- Start of Frame (SOF) = ein dominantes Bit
- Arbitrierungsfeld, bestehend aus einem Identifier-Segment (11 Bit oder 29+2 Bit) plus einem RTR-Bit (Remote Transmission Request, siehe unten)
- Steuerungsfeld (CTRL) = 6 Bit
- Identifier Extension (IDE) = 1 Bit
- reserved = 1 Bit
- Data Length Code (DLC) = 4 Bit (Anzahl der Bytes im Datenfeld, 0 bis 8 Bytes, Werte 9 bis 15 werden nicht unterstützt)
- Datenfeld (DATA) = 0 bis 8 mal 8 Bit
- Prüfsummenfeld (CRC) = 15 Bit (Generatorpolynom ) gefolgt von einem rezessiven CRC-Delimiter-Bit
- Bestätigungsfeld (ACK) = 2 Bit, bestehend aus einem ACK-Slot (siehe untenstehende Erläuterung) plus einem rezessiven ACK-Delimiter
- End of Frame (EOF) = 7 Bit (rezessiv)
- Intermission (IFS – Intermission Frame Space) = 3 Bit (= min. Anzahl der Bits, die aufeinanderfolgende Botschaften trennt)
Remote-Frame
Ein gesetztes RTR-Bit (Remote Transmission Request) kennzeichnet einen Remote-Frame (rezessiv). Mit Hilfe eines Remote-Frames kann ein Teilnehmer einen anderen auffordern, seine Daten zu senden.
Im Falle eines „Extended Identifiers“ (siehe oben) wird das RTR-Bit durch das SRR-Bit (Substitute Remote Request) ersetzt und ebenfalls rezessiv gesendet. In diesem Fall wird das nachfolgende IDE-Bit ebenfalls rezessiv gesendet, wodurch ein „Extended Identifier“ signalisiert wird. Im Anschluss werden die restlichen 18 Bit des Identifiers und anschließend das eigentliche RTR-Bit gesendet. Das IDE-Bit zählt dabei logisch zum „Arbitrierungsfeld“, wobei das Steuerungsfeld aber weiterhin aus 6 Bit besteht.
Die Datenlänge muss entsprechend der zu erwartenden Datenlänge gesetzt werden (Fehlerquelle: Viele Entwickler setzen die Datenlänge = 0 – dies ist falsch; ebenso sind CAN-Controller am Markt, welche RTR-Frames nur mit der Datenlänge 0 senden können). Der Objektidentifier ist derselbe wie der der angeforderten Nachricht.
Error-Frame
Der Error-Frame besteht aus zwei Feldern:
Das erste Feld wird bestimmt durch die Überlagerung von ERROR FLAGS, die von den verschiedenen Stationen erzeugt werden können.
Das folgende Feld ist der ERROR DELIMITER (8 rezessive Bits) .
Es gibt zwei Typen von Error Flags:
- Active Error Flag
- 6 dominante Bits, gesendet von einem Knoten, der einen Fehler im Netzwerk entdeckt hat und im Fehler-Status „error active“ ist.
- Passive Error Flag
- 6 rezessive Bits, gesendet von einem Knoten, der einen Fehler im Netzwerk entdeckt hat und im Fehler-Status „error passive“ ist.
Overload-Frame
Der Overload-Frame ist eine Zwangspause zwischen Daten- und Remote-Frames.
Er beinhaltet zwei Felder: Overload Flag und Overload Delimiter.
Es gibt zwei Arten von Überlastung, die zur Generierung des Overload-Flag führen:
- Die Elektronik des Empfängers erfordert eine Verzögerung der Übertragung des nächsten Datenframes oder Remoteframes (bspw. aufgrund eines vollen Empfangspuffers).
- Erkennung eines dominanten Bits auf dem Bus während einer Übertragungspause des eigenen Sendevorganges.
Ein Overload-Frame, verursacht aufgrund des ersten Falls, darf nur im ersten Bitintervall einer erwarteten Sendepause erzeugt werden, während ein Overload-Frame, bedingt durch Fall 2, einen Takt nach der Erkennung des dominanten Bits gesendet wird.
- Das Overload-Flag besteht aus sechs dominanten Bits.
- Die allgemeine Form korrespondiert zu der des Active-Error-Flags: Die Form des Overload-Flags zerstört die festgelegte Übertragungsform, da das Bitstuffing verletzt wird. Als Konsequenz erkennen alle anderen Geräte ebenfalls die Überlastung und generieren selber wiederum auch ein Overload-Flag.
- Der Overload-Delimiter besteht aus acht rezessiven Bits und entspricht der Form des Error-Delimiters.
ACK-Slot
Der Acknowledge-Slot wird verwendet, um den Empfang eines korrekten CAN-Frames zu quittieren. Jeder Empfänger, der keinen Fehler feststellen konnte, setzt einen dominanten Pegel an der Stelle des ACK-Slots und überschreibt somit den rezessiven Pegel des Senders. Im Falle einer negativen Quittung (rezessiver Pegel) muss der fehlererkennende Knoten nach dem ACK-Delimiter ein Error-Flag auflegen, damit erstens der Sender vom Übertragungsfehler in Kenntnis gesetzt wird und zweitens, um netzweite Datenkonsistenz sicherzustellen. Wird der rezessive Pegel von einem Empfänger durch einen dominanten überschrieben, kann der Absender jedoch nicht davon ausgehen, dass das Telegramm von allen anderen Empfängern erhalten wurde.
Bit Stuffing
Bitfolgen mit mehr als fünf gleichen Bits werden im CAN-Protokoll für Steuerungszwecke z. B. „End of Frame“ benutzt. Es dürfen also innerhalb des CAN-Frames nicht mehr als fünf Bits mit dem gleichen Pegel hintereinander vorkommen. Um dies zu verhindern, wird nach fünf Bits mit dem gleichen Pegel ein Bit mit dem inversen Pegel eingefügt. Dieses Bit nennt man „Stopf-Bit“ oder „stuff bit“. Im Bild (oben) sind die Stopfbits lila eingefärbt. Bitstopfen (bit stuffing) kann die physische Länge eines Frames vergrößern. Bit stuffing wirkt auf Start of frame (SOF) bis einschließlich Prüfsummenfeld (CRC) von Daten- sowie Remote-Frames und dient der Nachsynchronisation der Teilnehmer innerhalb eines Frames.
Datensicherung
Erkennt ein Empfänger eine Fehlerbedingung, sendet er einen Error-Frame und veranlasst so alle Teilnehmer, den Frame zu verwerfen. Sollten andere Teilnehmer diese Fehlerbedingung erkannt haben, senden sie ihrerseits direkt im Anschluss ein weiteres Error-Frame. Damit wird eine weitere Sicherheitsfunktion des CAN-Protokolls möglich. Um zu vermeiden, dass einzelne Teilnehmer durch irrtümlich erkannte Fehlerbedingungen dauerhaft den Nachrichtentransport blockieren, enthält jeder Teilnehmer Fehlerzähler. Diese Zähler erlauben nach den Regeln der Spezifikation, einen fehlerhaft arbeitenden Teilnehmer in zwei Stufen des Betriebszustands vom Bus zu trennen, wenn er wiederholt Fehler erkennt, die andere Teilnehmer nicht erkennen, oder wiederholt fehlerhafte Frames versendet. Die Zustände nennen sich error active (normal), error passive (Teilnehmer darf nur noch passive – das heißt rezessive – Error-Frames senden) und bus off (Teilnehmer darf nicht mehr senden).
Der Sender wiederholt nach dem Error-Frame seine Datenübertragung. Auch der Sender kann durch die zuvor erwähnten Fehlerzähler vom Bus getrennt werden, wenn die Datenübertragung dauerhaft fehlschlägt. Verschiedene Fehlerfälle führen zu einer unterschiedlich großen Erhöhung des Fehlerzählers.
Bit-Timing
Alle CAN-Knoten müssen mit derselben Bitrate arbeiten, was aufgrund von technischen Begebenheiten, wie Phasenverschiebungen durch Laufzeiten, Unterschiede in den Taktraten der einzelnen Oszillatoren und anderen äußeren Einwirkungen erschwert wird.[2] Da kein allgemeiner Taktgeber vorhanden ist, müssen sich die einzelnen Knoten selber synchronisieren. Die Synchronisation ist wichtig, damit die Knoten sowohl die eigenen gesendeten Daten, als auch empfangene Daten korrekt einlesen können. Sind sie nicht synchronisiert kann es zu ungewollten Busfehlern kommen.
Die Synchronisierung beginnt mit einer Synchronisierung beim ersten rezessiv-zu-dominanten Übergang nach einem Inter Frame Space (dem Startbit). Eine Resynchronisation erfolgt bei jedem rezessiv-zu-dominanten Übergang während des Frames. Der CAN-Controller erwartet, dass der Übergang zu einem Vielfachen der nominalen Bitzeit erfolgt. Ist dies nicht der Fall, passt er die nominale Bitzeit entsprechend an.
![](http://upload.wikimedia.org/wikipedia/commons/thumb/8/8a/CAN_Bit_Timing2.svg/680px-CAN_Bit_Timing2.svg.png)
Die Anzahl an verwendeten Quanten kann auf dem Mikrocontroller selber konfiguriert werden. Sie hängt ab von der tatsächlichen Bitrate und Qualität des Netzwerkes.
Kommt ein Bitwechsel früher oder später als erwartet, kann der CAN-Controller die Differenz berechnen und die Länge der Phasensegemente 1 und 2 verlängern oder verkürzen. Eine Resynchronisierung wird bei jedem rezessiv-zu-dominanten Bitwechsel durchgeführt, damit Empfänger und Sender synchron bleiben. Dies hat eine verringerte Störanfälligkeit durch Rauschen zur Folge. Ein Knoten, der die Synchronisierung verloren hat, kann sich somit jederzeit selber synchronisieren.
Security
Das CAN-Protokoll unterstützt standardmäßig keine Sicherheitsfunktionen. Die Botschaften auf dem Bus werden ohne Verschlüsselung übertragen und sind für jeden Busteilnehmer einsehbar. Schon jetzt sind diverse Angriffe auf CAN-Bus Systeme bekannt, unter anderem:[3]
- Bus Flood Attack
- Simple Frame Spoofing
- Adaptive Spoofing
- Error Passive Spoofing Attack
- Double Receive Attack
- Bus-Off Attack
- Freeze Doom Loop Attack
Obwohl einige Systeme zwar unabhängig des Kommunikationsmediums geschützt sind (z. B. über Challenge Response Sicherheitsverfahren), zeigt ein Jeep Hack aus dem Jahre 2015, dass Angriffe auf den CAN-Bus durchaus gravierende Folgen haben kann.[4]
Analysiert man den CAN-Bus hinsichtlich der gängigsten Sicherheitsziele, lassen sich einige Schwachstellen erkennen:
- Vertraulichkeit: Der CAN-Bus bietet keine Vertraulichkeit, da Botschaften im Klartext übertragen werden.[5]
- Integrität: Eine gewisse Integrität wird über den Cycle Redundancy Check zwar gewährleistet, diesen kann ein Angreifer allerdings auch ohne Probleme ändern. Daher ist sie ebenfalls nicht gewährleistet.[5]
- Verfügbarkeit: Da das Arbitrierungsverfahren auf Prioritäten der einzelnen Nachrichten setzt, kann es vorkommen, dass eine niederpriore Nachricht nicht gesendet werden kann. Auch dieses Sicherheitsziel ist nicht gewährleistet.[5]
- Authentizität: Ähnlich der Verfügbarkeit, gibt es hier ebenfalls ein Feld (Identifier), welches in der Theorie eine Authentizität bietet, allerdings kann diese durch einen Angreifer einfach geändert werden.[3]
- Verbindlichkeit: Sobald eine Nachricht empfangen wird, landet sie im Empfangspuffer des Empfängers. Beim Empfang einer weiteren Nachricht wird dieser überschrieben und ist nicht mehr vorhanden. Der Empfang dieser Botschaft kann somit abgestritten werden.[4]
Keine der fünf gängigen Sicherheitsziele kann also durch den CAN-Bus erfüllt werden.
Standards
- ISO 11898-1:2015 Road vehicles — Controller area network — Part 1: Data link layer and physical signalling
- ISO 11898-2:2016 Road vehicles — Controller area network — Part 2: High-speed medium access unit
- ISO 11898-3:2006 Road vehicles — Controller area network — Part 3: Low-speed, fault-tolerant, medium dependent interface
- ISO 11898-4:2004 Road vehicles — Controller area network — Part 4: Time-triggered communication
- ISO 11898-5:2007 Road vehicles — Controller area network — Part 5: High-speed medium access unit with low-power mode
- ISO 11898-6:2013 Road vehicles — Controller area network — Part 6: High-speed medium access unit with selective wake-up functionality
- SAE J2284-1:2016 High Speed CAN for Vehicle Applications at 125 kbps
- SAE J2284-2:2016 High Speed CAN for Vehicle Applications at 250 kbps
- SAE J2284-3:2016 High Speed CAN for Vehicle Applications at 500 kbps
- SAE J2284-4:2016 High Speed CAN for Vehicle Applications at 500 kbps with CAN FD Data at 2 Mbps
- SAE J2284-5:2016 High Speed CAN for Vehicle Applications at 500 kbps with CAN FD Data at 5 Mbps
Weiterentwicklung
2012 wurde von Bosch ein Vorschlag zur Erhöhung der verfügbaren Bandbreite namens CAN FD (Flexible Data Rate) vorgestellt.[6] Dies wird durch Verkürzung der Bit-Zeiten in der Datenphase und Vergrößerung des Datenfeldes auf bis zu 64 Byte erreicht. Insgesamt verspricht man sich zurzeit durch das „improved CAN“[7] genannte Verfahren einen bis zu 8-fach höheren Datendurchsatz. Das CAN-FD-Protokoll kann wie das Classical-CAN-Protokoll alle einfachen (single) Bitfehler erkennen. Außerdem werden mehrfache (multiple) Bitfehler mit einer noch höheren Wahrscheinlichkeit entdeckt.
CAN FD wurde international normiert und ist nun Bestandteil von ISO 11898-1:2015.
Im Volkswagen-Konzern wurde der CAN-FD erstmals in den Fahrzeugen des MQB-Baukastens ab 2019 eingesetzt.
Anwendungsbereiche
CAN-Protokolle haben sich in verschiedenen, vor allem sicherheitsrelevanten Bereichen etabliert, bei denen es auf hohe Datensicherheit ankommt. Beispiele:
- Automobilindustrie (Vernetzung unterschiedlicher Steuergeräte, Sensoreinheiten und Multimediaeinheiten)
- Automatisierungstechnik (zeitkritische Sensoren im Feld, Überwachungstechnische Einrichtungen)
- Aufzugsanlagen (Vernetzung der Steuerung mit verschiedenen Sensoren, Aktoren und Aufzugsanlagen untereinander innerhalb einer Aufzugsgruppe)
- Medizintechnik (Magnetresonanz- und Computertomographen, Blutgewinnungsmaschinen, Laborgeräte, Elektro-Rollstühle, Herzlungen-Maschinen)[8]
- Flugzeugtechnik (Vernetzung innerhalb von Kabinen- und Flugführungssystemen)
- Raumfahrttechnik (vermehrte Verwendung in parallelen Busarchitekturen)
- Beschallungsanlage (wird für die Steuerung von digitalen Endstufen verwendet)
- Schienenfahrzeuge
- Schiffbau (Die DGzRS lässt in die neue Generation ihrer Seenotrettungskreuzer Bus-Systeme einbauen.)
- Pyrotechnik (Vernetzung von Zündsystemen)
- Agrartechnik (Vernetzung unterschiedlicher Steuergeräte, Sensoreinheiten und Aktoreinheiten)
- Sicherheitstechnik (Vernetzung intern in Anlagen, extern bei einzelnen Bauelementen)
Höhere Protokolle
ISO-TP
ISO 15765-2, auch kurz ISO-TP ermöglicht den Transport von Botschaften, deren Länge die maximal 8 Bytes Nutzdaten eines CAN-Frames überschreiten. Im OSI-Modell deckt es die Schichten 3 (Network Layer) und 4 (Transport Layer) ab und kann bis zu 4095 Bytes Nutzdaten pro Telegramm transportieren. ISO-TP segmentiert längere Botschaften auf mehrere Frames und ergänzt die Datenpakete um Metadaten, die eine Interpretation der einzelnen Frames durch den Empfänger ermöglichen.
CANopen
CANopen ist ein auf CAN basierendes Schicht-7-Kommunikationsprotokoll, welches anfänglich in der Automatisierungstechnik verwendet wurde, mittlerweile aber vorwiegend in Embedded Systemen eingesetzt wird.
CANopen wurde vorwiegend von deutschen klein- und mittelständischen Firmen initiiert und im Rahmen eines ESPRIT-Projektes unter Leitung von Bosch erarbeitet. Seit 1995 wird es von der CAN in Automation gepflegt und ist inzwischen als Europäische Norm EN 50325-4 standardisiert. Der Einsatz erfolgt vorwiegend in Europa, gefolgt von Asien.
DeviceNet
DeviceNet ist ein auf CAN basierendes Schicht-7-Kommunikationsprotokoll, welches hauptsächlich in der Automatisierungstechnik verwendet wird.
DeviceNet ist vorwiegend in Amerika verbreitet. Es wurde von Allen-Bradley (gehört zu Rockwell Automation) entwickelt und später als offener Standard an die ODVA (Open DeviceNet Vendor Association) übergeben.
J1939 sowie die Erweiterungen NMEA2000 und ISOBUS
J1939 ist ein auf CAN basierendes Protokoll im Nutzfahrzeugbereich. Es wird von der Society of Automotive Engineers (SAE) gepflegt. Eine Einführung in J1939 findet sich in Application Note Introduction J1939[9]
NMEA 2000 ist eine Erweiterung von SAE J1939 für den maritimen Bereich. Das Protokoll der NMEA-Organisation breitet sich zunehmend aus. Vorgänger ist NMEA 0183. NMEA2000 ist ein IEC Standard: IEC61162-3.
In der Landwirtschaft und Kommunaltechnik kommt der ISOBUS (ISO 11783), der eine Erweiterung des J1939 darstellt, zur Steuerung und Überwachung von Anbaugeräten zum Einsatz.
CleANopen
Eine Arbeitsgruppe der CAN in Automation, die CANopen Special Interest Group (SIG) „Municipal Vehicles“, entwickelt das CANopen-Anwendungsprofil für Abfallsammelfahrzeuge: CleANopen (DIN EN 50325-4).
CANopen-Lift
Eine 2001 gegründete Arbeitsgruppe der CAN in Automation, die CANopen Special Interest Group (SIG) „Lift Control“, entwickelt das CANopen-Anwendungsprofil (CANopen CiA-417) für Aufzüge. Die erste Version von CiA 417 wurde im Sommer 2003 veröffentlicht. Die Version 2.0 steht seit Februar 2010 auf der CiA-Webseite frei zur Verfügung. Die Arbeitsgruppe arbeitet an der Erweiterung des CANopen-Lift-Funktionsumfangs, verfeinert technische Inhalte und sorgt um die Einhaltung aktueller, gesetzlich vorgeschriebener Normen für Aufzüge in CiA-417. Die Version 2.1.0 ist im Juli 2012 und die Version 2.2.0 (verfügbar für CiA-Mitglieder) ist im Dezember 2015 als Draft Standard Proposal verabschiedet worden. Im Jahre 2016 wurde an der Version 2.3.0 (verfügbar für CiA-Mitglieder) gearbeitet.
Jörg Hellmich (ELFIN GmbH) ist der Vorsitzende dieser Arbeitsgruppe und betreibt unabhängig vom CiA ein Wiki der CANopen-Lift-Anwendergemeinschaft mit Inhalten zu CANopen Lift.
SafetyBUS p
SafetyBUS p ist ein auf CAN basierendes sicheres Kommunikationsprotokoll, welches hauptsächlich in der Automatisierungstechnik zur Übertragung sicherheitsgerichteter Daten verwendet wird. Alle Busteilnehmer sind zwei- oder sogar dreikanalig aufgebaut und prüfen die Datenintegrität. Das Übertragungsmedium selbst ist nicht sicher, die Sicherheit wird durch das SafetyBUS p-eigene Datenprotokoll erreicht. Der SafetyBUS p kann bis SIL3 eingesetzt werden.
TTCAN
Time-Triggered Communication on CAN setzt auf dem CAN-Bus auf und ermöglicht über höhere Protokollebenen eine Echtzeitsteuerung. TTCAN ist in ISO 11898-4 genormt.
CANaerospace
CANaerospace ist ein Open-Source-Kommunikationsprotokoll, welches 1998 insbesondere für den Einsatz in der Luftfahrt mit ihren besonderen Zuverlässigkeits- und Leistungsanforderungen konzipiert wurde. Im Jahr 2000 hat die amerikanische NASA CANaerospace als eigenen Standard übernommen. CANaerospace wird in zahlreichen Forschungsflugzeugen weltweit eingesetzt und hat sich als De-facto-Standard in der militärischen Flugsimulationstechnik etabliert.
ARINC 825
ARINC 825 ist ein internationaler Luftfahrt-Kommunikationsstandard, welcher in einer Technischen Arbeitsgruppe (bestehend aus mehreren Luftfahrtunternehmen, darunter Boeing und Airbus) auf der Basis von CANaerospace entwickelt wurde.
EnergyBus
![](http://upload.wikimedia.org/wikipedia/commons/thumb/4/4c/Energybus_unbeschriftet.svg/220px-Energybus_unbeschriftet.svg.png)
EnergyBus ist ein Kommunikations- und Energieübertragungs-Bus und dazugehöriges Steckersystem für Leicht-Elektrofahrzeuge wie Pedelecs und E-Bikes. EnergyBus wird von einem eingetragenen Verein, dem EnergyBus e. V. mit Sitz in Tanna gemeinsam mit dem CAN in Automation e. V. spezifiziert. Mitglieder sind sowohl Einzelpersonen wie auch Hersteller von Steckern, Batterien, Steuerungen und Antriebseinheiten (darunter Bosch, Panasonic, Sanyo, Deutsche Bahn AG, Philips und Varta).[10]
Das Kommunikationsprotokoll ist im CANopen-Applikationsprofil 454 „energy management systems“ definiert.
FireCAN
FireCAN wurde durch Zusammenarbeit österreichischer und deutscher Feuerwehraufbauhersteller im Jahr 2006 gegründet und ist mittlerweile als Norm DIN 14700 vorhanden. Ursprünglich wurde FireCAN als freie Übereinkunft der wesentlichen am Markt befindlichen Hersteller, die redaktionelle Betreuung der gemeinsamen Spezifikation wird dabei durch die Firma Rosenbauer ausgeübt. Die Vorstellung erfolgte im Zuge der DIN-Sitzung des Ausschusses NA 031-02-02 AA „Elektrische Betriebsmittel“ am 29. Oktober 2009 in Berlin. Diese Datenbusfestlegung basiert auf einem vereinfachten CANopen-Standard und regelt sowohl die physischen Eigenschaften (Stecker, Leitungen, Anschlussbelegung), die Art und Anzahl der Teilnehmer, sowie die verwendeten Datenformate und Dateninhalte. Als wesentlicher Vorgänger ist der in der Landwirtschaft erfolgreich eingeführte ISOBUS zu verstehen.[11]
Unified Diagnostic Services
In Personenkraftwagen sehr verbreitet ist mittlerweile Unified Diagnostic Services gemäß der ISO 14229. In älteren Modellen verwendeten viele Hersteller eigene Standards, oft basierend auf der letztlich nicht standardisierten Norm für KWP on CAN (Normentwurf ISO/DIS 15765).
Siehe auch
- FlexRay
- Local Interconnect Network (LIN)
- SocketCAN CAN-Treiber und Netzwerkschicht innerhalb des Linux-Kernels
- can4linux
Literatur
- Eine Liste über veröffentlichte CAN-Bücher[12], ist auf der Webseite des CiA zu finden.
- Wolfhard Lawrenz (Hrsg.): CAN Controller Area Network – Grundlagen und Praxis., 5. Auflage, VDE, Berlin/Offenbach 2011, ISBN 978-3-8007-3332-3.
- Konrad Etschberger (Hrsg.): CAN Controller Area Network – Grundlagen, Protokolle, Bausteine, Anwendungen. Hanser, München 1994, ISBN 3-446-19431-2.
- Horst Engels: CAN-Bus – Technik einfach, anschaulich und praxisnah vorgestellt. Franzis, Poing 2002, ISBN 3-7723-5146-8.
- Werner Zimmermann und Ralf Schmidgall: Bussysteme in der Fahrzeugtechnik – Protokolle, Standards und Softwarearchitektur. 5. Auflage, Springer Vieweg, Wiesbaden 2014, ISBN 978-3-658-02418-5.
- Kai Borgeest: Elektronik in der Fahrzeugtechnik. 3. Auflage, Springer-Vieweg, Wiesbaden 2013, ISBN 978-3-8348-1642-9.
- Konrad Reif: Batterien, Bordnetze und Vernetzung. Vieweg + Teubner Verlag, Wiesbaden 2010, ISBN 978-3-8348-1310-7.
- Gerhard Schnell und Bernhard Wiedemann: Bussysteme in der Automatisierungs- und Prozesstechnik.Vieweg + Teubner Verlag, Wiesbaden 2008, ISBN 978-3-8348-0425-9.
- Mathias Rausch: Kommunikationssysteme im Automobil – LIN, CAN, CAN FD, CAN XL, FlexRay, Automotive Ethernet. Hanser, München 2022, ISBN 978-3-446-47035-4.
Weblinks
- Firmenneutrale Einführung der CiA in den CAN-Bus
- Einführung in den CAN-Bus von VECTOR
- Unabhängige Diskussionsplattform CANLIST
- Wiki zur CAN-Technologie und Produkten
- CANopen-Lift.org Wiki der CANopen-Lift Community
- Einführung in die CAN-Bus-Grundlagen anhand eines Modell-Autos (CANBASIC) mit CAN-Bus
- CAN-Protokoll-Tutorial (engl.)
- Fehlersuche in CAN Netzwerken
Einzelnachweise
- ↑ 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).
- ↑ Pat Richards: Understanding Microchip’s CAN Module Bit Timing. In: michrochip.com. Microchip Technology Inc., 2001, abgerufen am 3. Mai 2023 (englisch).
- ↑ a b Ken Tindell: CAN Bus Security. In: Canis Automotive Labs. Canis Automotive Labs, 14. Februar 2020, abgerufen am 19. Mai 2023 (englisch).
- ↑ a b MILLER, Charlie; VALASEK, Chris. Remote exploitation of an unaltered passenger vehicle. Black Hat USA, 2015, 2015. Jg., Nr. S 91, S. 1–91.
- ↑ a b c Mehmet Bozdal, Mohammad Samie, Sohaib Aslam, Ian Jennions: Evaluation of CAN Bus Security Challenges. In: Sensors. Band 20, Nr. 8, Januar 2020, ISSN 1424-8220, S. 2364, doi:10.3390/s20082364 (mdpi.com [abgerufen am 19. Mai 2023]).
- ↑ 13. iCC Conference Paper. (PDF; 215 KiB) Archiviert vom Original am 13. Dezember 2016; abgerufen am 17. Juni 2017.
- ↑ CAN FD Specification Version 1.0. (PDF; 313 KiB) Archiviert vom Original am 2. Juli 2017; abgerufen am 20. Juni 2017.
- ↑ http://www.can-cia.org/can-knowledge/
- ↑ Eine Protokolleinführung: Application Note Introduction J1939 (PDF; 284 kB)
- ↑ The EnergyBus e. V. members. EnergyBus, abgerufen am 14. November 2023 (englisch).
- ↑ (alte) Webseite FireCAN (Memento vom 4. März 2016 im Internet Archive)
- ↑ Liste mit veröffentlichten CAN-Büchern. In: can-newsletter.org. Abgerufen am 24. August 2016.