CANopen Emergency Nachrichten

CANopen Emergency (EMCY) Nachrichten sind ein optionaler Bestandteil des CANopen Protokolls um Fehler in den Geräten zu signalieren.

CANopen Emergency Protokoll

Producer

Als Producer werden die Geräte bezeichnet, welche in der Lage sind Emergency Nachrichten zu versendet. Damit können Fehler des Gerätes selbst,des CANopen-Stacks und der CAN-Kommunikation signalisiert werden. Die CANopen Spezifikation 301 definiert eine Menge an vordefinierten Fehlercodes und jedes CANopen-Geräte- oder Applikationsprofil kann weitere Fehlercodes definieren. Darüber hinaus ist es auch möglich herstellerspezifische Fehlercodes zu definieren. Zusätzlich können in den Nachrichten bis zu 5 Bytes hersteller-spezifischer Daten übertragen werden.

Consumer

Consumer sind die Geräte, welche die EMCY-Nachrichten andere Geräte empfangen können. Dies sind meist nur CANopen-Master-Geräte oder Diagnose- und Konfigurationstools.

Telegrammaufbau und CAN-IDs

CANopen Emergency Message
Die Länge einer Emergency-Nachricht ist immer 8 Byte. In den ersten beiden Byte wird der jeweilige EMCY Error Code des Fehlers übertragen. Danach folgt der aktuelle Wert des Error Registers (0x1011) und 5 hersteller-spezifische Bytes.

Die CAN-ID ist entsprechend dem Pre-defined Connection Set 0x80 + die Knotennummer des Producers.

Inhibit Time

Das optionale Inhibit Time Objekt (0x1015) definiert eine minimale Zeitspanne zwischen 2 Fehlernachrichten. Der Defaultvalue des Objekts ist 0 (keine Inhibitzeit) und der Wert kann in Vielfachen von 100µs definitiert werden. Mit einer entsprechenden Konfiguration des Objekts kann der Netzwerk-Master oder Systemintegrator verhindern, dass das CANopen-Netzwerk mit EMCY-Telegrammen geflutet wird.

Fehlerhistorie – Objekt 0x1003

Bei jedem EMCY-Producer kann optional das Objekt 0x1003 mit 1 bis 254 Subindizes implementiert werden. Ist das Objekt vorhanden, so dient es als Fehlerhistorie, welche die Fehlercodes alle vom Gerät gesendeten. Dabei wird immer der Error Code und ersten beiden hersteller-spezifischen Bytes in die Fehlerhistorie eingetragen, so dass der jeweils neueste Fehler auf Subindex 1 abgelegt wird.
CANopen Emergency Error History

Vordefinierte Fehlercodes aus CiA 301

CANopen Emergency Errror Codes
CANopen Emergency Errror Codes

Verbreitung

Obwohl die Emergency-Funktionalität optional ist, unterstützen die meisten CANopen-Stacks die entsprechende Producer und Consumer Funktionalität. Aufgrund dessen ist die Emergency-Producer-Funktion auch in vielen CANopen-Geräten implementiert. Auf Protokollebene ist die Implementierung der Producer-Funktionalität nicht sonderlich kompiliziert. Aufwändiger ist dagegen, dass die Erkennung der unterschiedlichen möglichen Fehler in der Applikation.

Tipps

  • Implementieren Sie die Emergency-Funktionalität in Ihren CANopen-Geräten.
  • Dokumentieren Sie alle Error Codes, welches das Gerät senden kann. Ohne eine Dokumentation unterstützter Fehlercodes, weiß der Anwender z.B. nicht ob ein Fehler nicht auftrat oder nur nicht signalisiert werden kann.
  • Implentieren Sie das Inhibit Time Objekt.