Teil 2: Sicherer Datenaustausch mit CAN Serielle Bussysteme im Automobil II

Fehlererkennungsmechanismen sorgen für hohe Datensicherheit

Die Wahrscheinlichkeit, dass verfälschte CAN-Nachrichten unerkannt bleiben, ist außerordentlich gering. Sie liegt bei 4,7 ? 10–11 [2]. Dafür verantwortlich sind die im CAN-Protokoll definierten Fehlererkennungsmechanismen. Dazu gehören auf der Empfängerseite neben dem von der Nachrichtenfilterung unabhängigen CRC, mit dem sich bis zu fünf Fehler innerhalb einer CAN-Nachricht detektieren lassen, die Überprüfung des Formats (Form Check) und die Bit-Stuffing-Regel (Stuff Check). Der Sender führt ein Bit-Monitoring durch und wertet den ACK-Slot aus.

Legt man einem CAN-Netzwerk eine Fehlerrate von 10–3 zugrunde, dann treten bei einer jährlichen Betriebsdauer von 1000 Stunden, einer Datenrate von 500 kbit/s, einer mittleren Buslast von 25 % und einer mittleren Nachrichtenlänge von 80 bit statistisch knapp alle 4000 Jahre vom CAN-Protokoll unerkannte verfälschte CAN-Nachrichten auf. Unter der Fehlerrate versteht man das Verhältnis gestörter CAN-Nachrichten zur Anzahl aller übertragenen CAN-Nachrichten.

Sobald ein Fehlererkennungsmechanismus einen Übertragungsfehler signalisiert, bricht der CAN-Knoten, der den Fehler erkannt hat, die Nachrichtenübertragung ab, indem er ein Error-Flag (sechs dominante Bits) auf den CAN-Bus auflegt. Das Error-Flag verletzt bewusst die Bit-Stuffing-Regel, so dass netzwerkweit jeder CAN-Knoten den bis dahin lokalen Fehler wahrnimmt und infolgedessen die Nachrichtenübertragung mit dem Aufschalten eines Error-Flags abbricht. Diese Methode stellt die für die Datenintegrität verteilter Anwendungen so wichtige netzweite Datenkonsistenz sicher.

Die Fehlerkorrektur besteht darin, die abgebrochene CAN-Nachricht durch denselben Sender zu wiederholen, sobald der CAN-Bus wieder frei ist (nach dem Error-Delimiter und ITM). Bei der Auslegung des Systems muss man berücksichtigen, dass es aufgrund des CSMA/CA-Buszugriffverfahrens keine Garantie für das sofortige Wiederholen gibt. Die Fehlererholzeit hängt von der Nachrichtenpriorität und der Buslast ab.

Die Fehlersignalisierung via Error-Flag versetzt jeden CAN-Knoten in die Lage, laufende Nachrichtenübertragungen abzubrechen. Da dies auch für defekte CAN-Knoten gilt, sind solche in der Lage, die gesamte CAN-Kommunikation zum Erliegen zu bringen. Um dies zu verhindern, verfügt jeder CAN-Knoten über eine Netzknotenüberwachung (Bild 5), die mittels Fehlerzähler und Regeln zur Steuerung der Fehlerzähler den defekten Knoten abschalten kann (Bus Off).

Quittierung empfangener CAN-Nachrichten

In einem CAN-Netzwerk wird unabhängig von der Nachrichtenfilterung jede Nachrichtenübertragung von allen Empfängern gleichzeitig im ACK-Slot quittiert (In-Frame-Acknowledgement). Ein dominanter Pegel entspricht einer positiven, ein rezessiver Pegel einer negativen Quittierung. Da der Sender den ACK-Slot rezessiv belegt, reicht eine positive Quittierung aus, um die Korrektheit der Nachrichtenübertragung zu bestätigen. Aufgrund dieses knotenneutralen positiven Acknowledgement werden negativ quittierende CAN-Knoten überschrieben und bleiben ungehört. Deshalb senden diese nach dem ACK-Delimiter ein Error-Flag.

Liegt keine einzige positive Quittierung vor, wird also der ACK-Slot von keinem Empfänger überschrieben, detektiert der Sender einen ACK-Fehler und bricht die laufende Nachrichtenübertragung mit dem Aufschalten eines Error-Flags ab.

Neben den für die Datenübertragung hauptsächlich eingesetzten Data-Frames (Bild 4) gibt es auch Remote-Frames zur Anforderung von Daten. Sie kommen aber kaum zur Anwendung, da die Datenübertragung im Automobil nicht auf Nachfrage, sondern im Wesentlichen auf Informationserzeugerinitiative basiert. Beide Frame-Typen sind identisch aufgebaut. Allerdings entfällt beim Remote-Frame das Data-Field.

Grundvoraussetzung für die Übertragung von Data- und Remote-Frames ist ein Gleichlauf zwischen Sender und Empfänger. Da aus Kosten- und Aufwandsgründen auf eine Taktleitung verzichtet wird, realisiert man den Gleichlauf mittels Signalflanken und einem definierten Re-Synchronisationsmechnismus. Jede Nachrichtenübertragung beginnt mit dem Übertragen des dominanten Synchronisationsbits (SOF, Start of Frame) und erzeugt so die erste Signalflanke (Bus-Idle entspricht einem rezessiven Buspegel). Der Empfänger stellt während der gesamten Übertragung durch Auswertung jeder ankommenden Signalflanke die Synchronisation sicher und passt notfalls sein eigenes Bit-Timing entsprechend an. Das Bit-Stuffing-Verfahren sorgt dafür, dass spätestens nach fünf homogenen Bits ein komplementäres Bit und somit eine Signalflanke erscheint.

Im Anschluss an das SOF folgt der ID, der entweder 11 bit (Standard-ID) oder 29 bit (Extended-ID) lang sein kann. Im Automobil dominiert das Standardformat. Das Extended-Format spielt typischerweise im Zusammenhang mit höheren Protokollen wie SAE J1939 eine Rolle. Mittels IDE-Bit (Identifier Extension) wird das ID-Format angezeigt. Ein anderer Bitschalter (RTR-Bit, Remote Transmission Request) zeigt an, ob es sich um ein Data- oder ein Remote-Frame handelt.

Zur Übertragung von Nutzinformationen steht das 64 bit breite Data-Field zur Verfügung, bei dem die genaue Anzahl der Nutzbytes mittels DLC (Data Length Code) angegeben wird. Dem Data-Field folgt die CRC-Sequence (Cyclic Redundancy Check). Anhand aller zu übertragenden Bits, eines Generatorpolynoms und eines definierten Algorithmus generiert der Sender die CRC-Sequence. Unabhängig von der Nachrichtenfilterung geschieht dasselbe empfängerseitig mit den ankommenden Bits. Es folgen der Vergleich der beiden Sequenzen und die Quittierung nach dem rezessiven CRC-Delimiter im Acknowledge-Slot (ACK-Slot). Am Ende eines Data-Fames steht nach dem rezessiven ACK-Delimiter das 7 bit lange und rezessive EOF (End of Frame).