In sicherheitskritischen Systemen gibt es keinen sicheren Zustand (engl. fail safe). In solchen Systemen ist eine hohe Verfügbarkeit gefordert. Zum Beispiel muss ein Schiff immer manövrierfähig sein, d.h., die Geschwindigkeit des Schiffes muss höher sein als die Strömungsgeschwindigkeit des Wassers. Ähnliches gilt für Flugzeuge: Wenn sie fliegen, gibt es keinen sicheren Zustand, die Verfügbarkeit der Motoren und der Steuerklappen ist unabdingbar. Kommunikationssysteme in solchen sicherheitskritischen Systemen müssen deshalb redundant ausgelgt sein. Die Busleitungen werden getrennt verlegt, um bei einer Havarie auf der Backbordseite noch die Kabel auf der Steuerbordseite nutzen zu können. Es darf also keine Funktion nur einmal vorhanden sein. In CAN-open-Netzwerken ist das Netzwerkmanagement (NMT) normalerweise nur in einem Gerät implementiert. Um CANopen-Netzwerke in sicherheitskritischen Anwendungen einsetzen zu können, reicht es also nicht aus, die Busleitungen redundant auszulegen. Deshalb wurde das Konzept des \’Flying NMT master\‘ entwickelt: Es gibt mehrere Geräte mit NMT-Master-Funktion im Netzwerk, aber nur einer ist jeweils aktiv. Um die Übergabe der NMT-Master-Funktion bei permanentem und temporärem Ausfall abwickeln zu können, sind spezielle Kommunikationsprotokolle notwendig, die im folgenden beschreiben werden.
Sicheres CAN
Das CAN-Protokoll der Verbindungsschicht stellt bereits ein hohes Maß an sicherer Datenübertragung bereit: Eine Hamming-Distanz von 6 (fünf beliebig im Bitstrom verteilte Bitfehler werden erkannt) bei einer Nachrichtenlänge zwischen 44 und 108bit führt im ungünstigsten Fall zu einer Restfehlerwahrscheinlichkeit von P= 9*10-7. Bei entsprechender physikalischer Auslegung des CAN-Netzwerkes ist sichergestellt, dass die Verfügbarkeit des Bussystems erhalten bleibt, auch wenn einzelne Geräte ausfallen sollten. Neben einem Protokoll für sicherheitsgerichtete Datenübertragung (auch unter der Bezeichnugn CANopen-Safety bekannt) und einem Protokoll für die redundante Datenübertragung wurde von CAN in Automation (CiA) für CANopen das Konzept des \’Flying NMT Master\‘ entwickelt, welches in der Spezifikation CiA 302-7 definiert ist. Vier Dienste und Protokolle stellen sicher, dass immer genau ein NMT-Master im CANopen-Netzwerk aktiv ist. Die Dienste sind in Tabelle 1 aufgeführt.
Protokoll für \’NMT master detection\‘
Der Dienst \’NMT master detection\‘ kann von jedem potentiellen CANopen-NMT-Master oder selbst startendem CANopen-Gerät gesendet werden. Das Protokoll zu diesem Dienst sieht wie folgt aus: Es wird eine CAN-Nachricht ohne Dateninhalt von dem anfordernden CANopen-Gerät versandt. Diese Nachricht nutzt den CAN-Identifier 75h. Jeder potentielle CANopen-Master antwortet daraufhin zeitversetzt mit einer definierten CAN-Nachricht, welche den CAN-Identifier 74h nutzt. Der Dienst \’Active NMT-Master detection\‘ wird genutzt, um zu ermitteln, ob es im System einen aktiven NMT-Master gibt. In diesem Fall sendet der aktive NMT-Master seine Priorität und Knotennummer als Antwort. Diese Antwort-Nachricht nutzt den CAN-Identifier 71h. Der Dienst \’NMT flying master negotiation\‘ fordert alle potentiellen NMT-Masters auf, am Flying Master Prozess teilzunehmen. Jeder potentielle NMT-Master berechnet für sich eine Antwortzeit, welche abhängig von seiner Priorität und seiner Node-ID ist. Nach Ablauf dieser Zeit sendet der potentielle NMT-Master seine Antwort. Diese Antwort ist eine CAN-Nachricht, welche zusätzlich seine Priorität und Node-ID enthält.
Designregel
Grund für die zeitliche Verzögerung der Antwort ist die Designregel, dass verschiedene Teilnehmer nicht zur selben Zeit eine CAN-Nachricht mit verschiedenem Inhalt und dem selben CAN-Identifier senden dürfen. Die Reihenfolge der CAN-Nachrichten ist ein Kriterium dafür, wer als Sieger aus dem Verfahren hervortritt: Der NMT-Master, welcher sich zuerst meldet, hat gewonnen, das Verfahren kann dann abgebrochen werden. Durch entsprechende Bestimmung der zeitlichen Konstanten ist gewährleistet, dass es nicht zu zeitlichen Überschneidungen kommt. CANopen erlaubt maximal 127 CANopen-Geräte pro Netzwerk. Im ungünstigsten Fall antwortet ein NMT-master nach 4,27s. Im günstigsten Fall ist das Auswahlverfahren nach 10ms beendet. Der unbestätigte Dienst \’Force NMT flying master negotiation\‘ forciert das Ausführen des Dienstes \’NMT flying master negotiation\‘.