CANopen Netzwerkmanagement – NMT

Die CANopen Netzwerkmanagement (NMT) – Dienste umfassen Funktionen um die CANopen-Slave-Zustandsmaschine zu steuern und um die Zustände der Geräte zu überwachen.

Die CANopen-Slave-Zustandsmaschine

CANopen NMT Slave State Maschine
Ein CANopen-Slave-Geräte geht selbstständig nach der Initialisierung – sofern das Geräte eine Knotennummer hat – in den Zustand „Pre-Operational“. Beim Zustandsübergang nach „Pre-Operational“ wird vom Gerät eine Boot-Up-Nachricht gesendet. Im Zustand Pre-Operational sind alle CANopen-Dienste außer PDOs möglich und dieser Zustand dient vorrangig zur Konfiguration des Geräts. Durch Kommandos vom NMT-Master wird ein Gerät dann in den Zustand „Operational“ gesetzt. Im Zustand „Operation“ können alle CANopen-Dienste genutzt werden und dieser Zustand ist der übliche Betriebszustand eines CANopen-Geräts. Im Zustand „Stopped“ sind dagegen nur NMT-Kommandos und NMT Error Control-Nachrichten erlaubt.
CANopen-Slave-Geräte können selbstständig im Fehlerfall aus dem Zustand Operational in Pre-Operational oder Stopped gehen. Andere automatische Zustandsübergänge sind nur für selbststartende Geräte (self starting devices) erlaubt.

NMT-Kommandos des Masters

Der NMT-Master im Netzwerk kann Kommandos zu den einzelnen oder allen CANopen-Slave-Geräten im Netzwerk schicken um die entsprechenden Zustandsübergänge anzuweisen.
Die NMT-Kommandos haben mit der CAN-ID 0x000 die höchste Priorität im CANopen-Netzwerk und bestehen aus 2 Datenbytes. Im ersten Byte ist das Kommando und im zweiten Byte die Zielknotennummer kodiert. Dabei bedeutet eine Knotennummer 0, dass alle Knoten angesprochen werden.
Die möglichen Kommandos sind:

  • 1 – start node
  • 2 – stop node
  • 128 – enter pre-operational
  • 129 – reset application
  • 130 – reset communication

NMT Error Control

NMT Error Control ist der Überbegriff für die NMT Dienste, welche den jeweiligen Zustand eines Knotens anzuzeigen und zu überwachen. Dabei können NMT-Master den Zustand oder Ausfall eines Slaves überwachen, jedoch ist auch eine Überwachung des Master durch einen Slave möglich. Beispielsweise könnte ein Antrieb stoppen, wenn ein Master nicht mehr verfügbar ist.

Boot-up und Heartbeat-Nachrichten

Die Bootup- und Heartbeat-Nachrichten werden jeweils mit der CAN-ID 0x700+Knotennumer des jeweiligen Gerätes gesendet und übertragen nur 1 Datentyp.
Für einen Boot-up-Nachricht ist der Wert des Datenbytes 0x00 und für Heartbeat-Nachrichten beinhaltet das Datentyp den jeweiligen NMT-Zustand. Gültige Werte sind:

  • 0 – bootup
  • 4 – stopped
  • 5 – operational
  • 127 – pre-operational

Die Heartbeat-Nachrichten werden zyklisch gesendet. Die Zykluszeit des Heartbeats kann für jedes Gerät im Objekt 0x1017 eingestellt werden.

Node Guarding und Life Guarding

Die Verwendung dieser CANopen-Dienste ist für neue Geräte nicht mehr empfohlen, da diese auf CAN-RTR-Telegrammen aufbauen, deren Verwendung nach CiA AN802 nicht mehr empfohlen ist.

Interpretation und Analyse

Für die Analyse solcher NMT-Nachrichten ist ein CAN Analyse Tool nötig, welches eine vollständige Interpretationsmöglichkeit für das CANopen-Protokoll beinhaltet. Diese Funktionalität ist u.a. im CANinterpreter mit der optional CANopen-Interpretation und im CANopen DeviceExplorer von emotas enthalten.
detailed CANopen interpretation

Implementierung

Die NMT-Funktionalitäten sowie Heartbeat und auch NodeGuarding ist in den CANopen Stacks der Firma emotas embedded communication GmbH implementiert.