Fehlerbehandlung
Bei Verwendung des MODICON®*-Plugins werden grundsätzlich zwei Felder im SPS-Speicher verwendet, um auf das Vorhandensein von Fehlern hinzuweisen: „GMV_ERRORCODE“ und „GMV_ERRORCAUSE“. Die Standardeinstellung ist 0 (keine Fehler aufgetreten).
Beim Start des Plugins wird das Feld „GMV_ERRORCODE“ auf 1 festgelegt (kein Fehler vorhanden). Sobald ein Fehler auftritt, werden die beiden Felder „GMV_ERRORCODE“ und „GMV_ERRORCAUSE“ der Fehlerbedingung entsprechend aktualisiert. Die SPS muss den Fehler quittieren, indem sie „AcknowledgeError“ anfordert, d. h. indem „GMV_REQCOMMANDCODE“ auf den betreffenden Befehlscode festgelegt wird. Eine Liste der verfügbaren Befehlscodes finden Sie unter Kommunikation zwischen Plugin und SPS.
Als Reaktion legt das Plugin „GMV_ACKCOMMANDCODE“ ebenfalls auf den gleichen Befehlscode fest. Nachdem die SPS „GMV_REQCOMMANDCODE“, „GMV_ERRORCODE“ und „GMV_ERRORCAUSE“ zurückgesetzt hat, setzt das Plugin auch „GMV_ACKCOMMANDCODE“ auf 0 zurück. Durch diesen Handshaking-Mechanismus weiß die SPS, dass die Fehlerfelder aktualisiert wurden.
Wenn ein neuer Fehler auftritt, während in „GMV_ERRORCODE“ und „GMV_ERRORCAUSE“ noch ein früherer Fehler angezeigt wird, werden die Felder nicht mit den neuen Fehlerinformationen überschrieben. Stattdessen wird zuerst der frühere Fehler verarbeitet. Nachdem „GMV_ACKCOMMANDCODE“ auf 0 zurückgesetzt wurde, wird der zweite Fehler in die Fehlerfelder geschrieben. Wenn der Wert in „GMV_ERRORCODE“ unverändert bleibt, nachdem „GMV_ACKCOMMANDCODE“ zurückgesetzt wurde, weist dies darauf hin, dass derselbe Fehler erneut aufgetreten ist. Der Befehl „AcknowledgeError“ muss dann ein zweites Mal ausgeführt wurden, um auch den zweiten Fehler zu quittieren. Wenn in der Zwischenzeit keine weiteren Fehler aufgetreten sind, wird der Wert des Felds „GMV_ERRORCODE“ auf 1 zurückgesetzt. Dies weist darauf hin, dass alle Fehler quittiert wurden.
GMV_ERRORCODE
Wenn ein Fehler auftritt, enthält dieses Feld eine vorzeichenlose 32-Bit-Ganzzahl, die den Fehlercode darstellt. Der Fehlercode liefert Informationen zum Schweregrad, zur betroffenen Komponente und zur Art des Fehlers gemäß den Fehlerdefinitionen der Communicator-API.
Der Schweregrad des Fehlers wird durch die 4 höchstwertigen Bits im Fehlercode dargestellt. Es werden die folgenden Schweregrade unterschieden:
|
Wert |
Schweregrad |
|---|---|
|
1 |
Kritisch |
|
2 |
Fehler |
|
4 |
Warnung |
Die betroffene Komponente, in der der Fehler aufgetreten ist, wird durch die nächsten vier geringerwertigen Bits dargestellt. Die folgende Tabelle veranschaulicht die möglichen Komponenten:
|
Wert |
Betroffene Komponente |
|---|---|
|
1 |
Bildverarbeitungssystem (MERLIC) |
|
2 |
MVApp/Rezept |
|
4 |
Communicator |
|
8 |
MODICON®*-Plugin |
Die niederwertigsten 8 Bit geben die Art des Fehlers gemäß den MV_CODE_*-Definitionen der Communicator-API an. Sie finden die Definitionen in der Dokumentation des API-Headers mv_error_def.h in der Communicator-Referenzdokumentation.
Wenn das Feld „GMV_ERRORCODE“ beispielsweise den hexadezimalen Fehlercode 0x2139 enthält, weisen die entsprechenden Bits darauf hin, dass ein Fehler (0x2000) im Bildverarbeitungssystem (0x0100) aufgrund eines Bildeinzugsfehlers (0x39) aufgetreten ist.
GMV_ERRORCAUSE
Dieses Feld gibt den Befehl an, der den Fehler verursacht hat. Er weist daher den gleichen numerischen Wert wie die Felder „GMV_REQCOMMANDCODE“ und „GMV_ACKCOMMANDCODE“ auf. Eine Übersicht über die verfügbaren Befehle und deren Codes finden Sie unter Kommunikation zwischen Plugin und SPS.
Fehler können manchmal auch spontan auftreten und werden nicht durch einen Befehl verursacht, z. B. wenn die Verbindung zu einer Kamera verloren geht. In solchen Fällen nimmt „GMV_ERRORCAUSE“ den Wert 0 an, der „NoCommand“ darstellt. Es werden nur Fehler, die durch Befehle verursacht wurden, die von der gleichen Instanz des MODICON®*-Plugins ausgelöst wurden, sowie spontane Fehler verarbeitet. Fehler, die durch einen Befehl einer anderen Plugin-Instanz verursacht wurden, werden daher ignoriert.
* Modicon® is a registered trademark of Schneider Electric USA, Inc.