Fehlerbehandlung

Bei Verwendung des MELSEC Communication-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. Weitere Informationen zu den verfügbaren Befehlscodes finden Sie unter Kommunikation zwischen Plugin und SPS.

Als Reaktion legt das Plugin „gMV_AckCommandCode“ 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 Handshake-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.

Das MELSEC Communication-Plugin unterstützt auch einen Heartbeat-Modus. Dieser ermöglicht es der SPS, die Verbindung zu MERLIC zu überwachen und bei einem unerwarteten Verbindungsverlust entsprechend zu reagieren. Weitere Informationen finden Sie im Abschnitt gMV_Heartbeat.

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 Plugin-Entwicklungs-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

Plugin-Host 

8

MELSEC Communication-Plugin

Die niederwertigsten 8 Bit geben die Art des Fehlers gemäß den MV_CODE_*-Definitionen der Plugin-Entwicklungs-API an. Sie finden die Definitionen in der Dokumentation des API-Headers mv_error_def.h im Handbuch für die Entwicklung von Kommunikations-Plugins.

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. Weitere Informationen zu den verfügbaren Befehlen und den entsprechenden Codes finden Sie unter Kommunikation zwischen Plugin und SPS.

Fehler können manchmal 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 MELSEC Communication-Plugins ausgelöst wurden, sowie spontane Fehler verarbeitet. Fehler, die durch einen Befehl einer anderen Plugin-Instanz verursacht wurden, werden daher ignoriert.

gMV_Heartbeat

Dieses Feld enthält eine Variable, die für den Heartbeat-Modus verwendet wird. Es bietet die Möglichkeit festzustellen, ob die Verbindung zwischen MERLIC und der SPS noch aktiv ist. Das Feld kann von der SPS überwacht werden, um die Verbindung ständig zu überprüfen. Die SPS kann entsprechend konfiguriert werden, um bei einem unerwarteten Verbindungsverlust geeignet zu reagieren.

Die Variable stellt einen Zähler in Form einer vorzeichenlosen 16-Bit-Ganzzahl dar. Dieser Zähler wird aktualisiert, solange eine Verbindung zu MERLIC besteht. Dies ist der Fall, wenn MERLIC RTE und das Plugin ausgeführt werden. Der Zähler weist zu Beginn den Wert 0 auf, d. h. MERLIC ist nicht verbunden, z. B. weil das Plugin noch nicht gestartet oder gestoppt wurde. Wenn MERLIC verbunden ist, wird der Wert im festgelegten Heartbeat-Intervall hochgezählt. Wenn der Zähler das Limit für WORD-Werte erreicht, wird er auf 1 zurückgesetzt und die Zählung wird fortgesetzt.

Wenn die Verbindung zu MERLIC verloren geht, z. B. aufgrund von Netzwerkproblemen, wird der Zähler nicht mehr aktualisiert. Damit die SPS einen unerwarteten Verbindungsverlust erkennen und entsprechend reagieren kann, sollte das Feld „gMV_Heartbeat“ überwacht werden.