Emergency-Objekt
Um anderen Teilnehmern am CANopen-Bus interne Gerätefehler oder CAN-Busfehler mitteilen zu können verfügen der CANopen Buskoppler über das Emergency-Objekt. Es ist mit einer hohen Priorität versehen und liefert wertvolle Informationen über den Zustand des Gerätes und des Netzes.
Es wird dringend empfohlen, die Emergency-Objekte auszuwerten - sie stellen eine wertvolle Informationsquelle dar.
Struktur der Emergency-Nachricht
Das Emergency-Objekt ist stets 8 Byte lang; es enthält zunächst den 2-Byte Error Code, dann das 1-Byte Error Register und schließlich den 5 Byte großen Additional Code. Dieser teilt sich in ein 2-Byte Bitfeld und ein 3-Byte Parameterfeld auf:
11-bit Identifier | 8 Byte Nutzdaten | |||||||
---|---|---|---|---|---|---|---|---|
0x80 (128dez) + Node-ID | EC0 | EC1 | EReg | Bitfeld0: Comm | Bitfeld1: DevErr | EMCY Trigger | Info0 | Info1 |
Parameter | Erläuterung | |
---|---|---|
EC0 | Error Code Low-Byte. Nicht genutzt (stets null) | |
EC1 | Error Code High-Byte. 0x50 = Gerätefehler, 0x81 = Kommunikationsfehler, 0x00 = Error Reset | |
EReg | Error Register. 0x81 = Gerätefehler, 0x91 = Kommunikationsfehler | |
Bitfeld 0: Comm | Bitfeld Kommunikations-Fehler: | |
0x01 | Guarding verzögert od. ausgefallen | |
0x02 | Sync verzögert oder ausgefallen | |
0x04 | Falsche PDO-Länge parametriert | |
0x08 | Timeout Event-Timer: RxPDO nicht rechtzeitig empfangen | |
0x10 | Receive Queue Overrun | |
0x20 | Transmit Queue Overrun | |
0x40 | CAN Bus OFF | |
0x80 | CAN Warning Limit überschritten | |
Bitfeld 1: DevErr | Bitfeld Geräte-Fehler: | |
0x01 | Klemmenfehler | |
0x02 | K-Bus-Fehler / IP-Link Fehler | |
0x03 | - | |
0x04 | EEPROM-Fehler | |
0x10 | Nicht unterstützte Klemme gesteckt (BK5110, LC5100) | |
0x80 | Geänderte HW-Konfiguration. | |
EMCY Trigger | Das Byte Emergency Trigger enthält jeweils den Code des Fehlers, der das Emergency-Telegramm ausgelöst hat. Wenn ein Fehler beseitigt wird, so wird ein Emergency-Telegramm mit dem Error Code 0x0000 gesendet und der Emergency Trigger enthält die Beschreibung des Fehlers, der beseitigt wurde. Dabei werden noch aktuelle Fehler in den Bitfeldern signalisiert. Nachdem der Buskoppler fehlerfrei ist, sendet er ein Emergency-Telegramm, das außer im Emergency Trigger nur Nullen enthält. | |
0x01 | CAN Warning Limit überschritten (zu viele Error Frames) | |
0x02 | CAN Bus OFF Zustand wurde erreicht. Da der Koppler dann kein Emergency mehr senden kann, wird nach Verlassen des Bus-Off Zustandes (erneute CAN Controller Initialisierung) ein Emergency mit Trigger 0x40 gesendet | |
0x03 | Transmit Queue Overrun Sende-Puffer Überlauf: CAN Nachrichten gingen verloren | |
0x04 | Receive Queue Overrun: Empfangs-Puffer Überlauf: CAN Nachrichten gingen verloren | |
0x06 | Falsche PDO-Länge parametriert (Mapping überprüfen). | |
0x07 | Sync verzögert (Time-Out nach Communication Cycle Period, Index 0x1006) oder ausgefallen | |
0x08 | Guarding bzw. Heartbeat verzögert (Time-Out nach Guard-Time x Life Time Factor bzw. nach Consumer Heartbeat Time) oder ausgefallen | |
0x09 | Geänderte HW-Konfiguration. Seit dem letzten Abspeichern wurde die Klemmenbestückung bzw. Zusammensetzung der Erweiterungsmodule geändert. | |
0x0A | Timeout Event Timer : RxPDO nicht rechtzeitig empfangen | |
0x0B | logischer" Tx-Queue Überlauf: SYNC Intervall zu kurz. | |
0x0C | Nicht unterstützte Klemme gesteckt (BK5110 oder LC5100). Info 1: Klemmennummer (1...64) | |
0x0E | EEPROM-Fehler; Beim Speichern der Konfiguration in das EEPROM ist ein Fehler aufgetreten | |
0x0F | K-Bus-Fehler 0x05: Fehler bei Register-Kommunikation | |
0x10 | Klemmenfehler Nähere Info zur Fehlerart siehe Statusregister der Klemme bzw. des Erweiterungsmoduls. | |
Info 0, Info 1 | Enthält zusätzliche Fehler-Info; Bedeutung hängt von Emergency Trigger ab (siehe oben) |
Beispiel zum Emergency-Verhalten
- Der CAN-Fehlerzähler eines Buskopplers überschreitet das Warning Limit (zu viele Error Frames). Er sendet ein Emergency-Telegramm mit dem Identifier 0x80 + Knotenadresse (Default-Einstellung) mit folgendem Inhalt:
00 81 91 80 00 01 00 00
Die ersten drei Bytes (0x00 81 91) kennzeichnen einen Kommunikationsfehler, das Bitfeld0 (0x80) signalisiert CAN Warning Limit überschritten. Der EMCY Trigger (0x01) zeigt, dass das Emergency wegen des Überschreiten des Warning Limits ausgelöst wurde. - Gleich anschließend tritt am zweiten Kanal der 4-20 mA Analogeingangsklemme, die an der zehnten Stelle gesteckt ist, ein Kabelbruch auf. Der Buskoppler sendet ein erneutes Emergency-Telegramm mit folgendem Inhalt:
00 50 91 80 01 10 0A 82
Die ersten beiden Bytes (0x00 50) zeigen einen Hardware Fehler, im Error Register (0x91) sind die Bits 0 (Generic Error), 4 (Communication) und 7 (Manufacturer Specific) gesetzt. Im Bitfeld0 (0x80) ist Bit7 gesetzt, das CAN Warning Limit ist weiterhin überschritten. Im Bitfeld1 (0x01) ist Bit 0 gesetzt, also Klemmenfehler. Der EMCY Trigger (0x10) zeigt, dass dieser Klemmenfehler das Emergency-Telegramm ausgelöst hat. Schließlich zeigt Info0 (0x0A) die Klemmennummer (10) und Info1 (0x82) mit Bit1 und Bit7, dass Kanal2 einen Fehler hat. - Wenn nun der Fehlerzähler das Warning Limit wieder unterschreitet, sendet der Koppler das folgende Emergency-Telegramm:
00 00 81 00 01 01 0A 82
Der Error Code (00 00) der ersten beiden Bytes zeigt an, dass ein Fehler zurückgesetzt wurde. Das Error Register (0x81) zeigt weiterhin einen Gerätefehler, da der Kabelbruch ja weiterhin aktuell ist. Das Bitfeld0 (0x00) zeigt, dass der Kommunikationsfehler nicht mehr ansteht. Nach Bitfeld1 (0x01) ist der Klemmenfehler weiterhin vorhanden. Der EMCY Trigger (0x01) gibt das Rücksetzen des CAN Warning Limits als Sendegrund an, in Info0 und Info1wird weiterhin der Diagnose Status Code der Klemmen angezeigt. - Nachdem der Kabelbruch behoben wurde wird auch dieser Fehler zurückgesetzt und der Koppler sendet folgendes Emergency-Telegramm:
00 00 00 00 00 00 00 00