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.
Hinweis | |
Werten Sie die Emergency-Objekte aus! 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 |
Legende
Parameter | Erläuterung | |
---|---|---|
EC0 | Error Code Low-Byte: 0x00 oder 0x30* | |
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. |
*) Wenn EC0 den Wert 0x30 hat, dann sind nur die ersten vier Byte des Emcy-Telegramms und eventuell das Emcy Trigger Byte auszuwerten. Die Daten von DevErr und Info0 und Info1 haben dann keine Bedeutung und sind zu ignorieren.
Parameter | Erläuterung | |
---|---|---|
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 | |
0x10 | Klemmenfehler | |
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 bis 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 Bit 7 gesetzt, das CAN Warning Limit ist weiterhin überschritten. Im Bitfeld 1 (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 Bitfeld 1 (0x01) ist der Klemmenfehler weiterhin vorhanden. Der EMCY Trigger (0x01) gibt das Rücksetzen des CAN Warning Limits als Sendegrund an, in Info 0 und Info 1 wird 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