Kommunikation zwischen Plugin und SPS
- MELSEC iQ-F-Serie
- MELSEC iQ-R-Serie
- MELSEC-L-Serie
- MELSEC-Q-Serie
Nachdem eine Verbindung zwischen dem Plugin und der SPS hergestellt wurde, ist das Protokoll im Plugin und in der SPS verfügbar, um Befehle, Ergebnisse und weitere Informationen zu übertragen.
Das Protokoll umfasst mehrere Felder, die die verschiedenen Typen von Informationen enthalten. Einige Felder werden von der SPS verwendet, um Befehlsanforderungen, z. B. eine Einzelausführung, zu senden oder um zusätzliche Argumente für den angeforderten Befehl anzugeben, z. B. die ID des Rezepts, wenn das Rezept geändert wurde. Demgegenüber werden andere Felder vom Plugin zum Schreiben von Informationen verwendet, die vom Bildverarbeitungssystem bereitgestellt wurden, z. B. allgemeine Informationen zum Bildverarbeitungssystem oder Ergebnisse einer Ausführung. Die SPS kann die Informationen, die vom Plugin in die Felder geschrieben wurden, lesen und verarbeiten (das gilt auch umgekehrt). Um einen Handshaking-Prozess zu erreichen, beantwortet MERLIC angeforderte Befehle mit demselben Befehlscode, der von der SPS gesendet wurde.
Dazu muss die SPS den gewünschten Befehl übergeben, indem der Wert für das entsprechende „gMV_ReqCommandCode“-Feld festgelegt wird. Sobald MERLIC den Befehl erkennt, wird der Wert des Felds „gMV_AckCommandCode“ auf den gleichen Wert festgelegt, um den Empfang des Befehls zu bestätigen. MERLIC startet auch die Ausführung des entsprechenden Befehls und wartet dann darauf, dass die SPS den Befehlscode zurücksetzt. Wenn MERLIC erkennt, dass die SPS den Wert des Felds „gMV_ReqCommandCode“ zurückgesetzt hat, und MERLIC die Ausführung des Befehls bereits beendet hat, wird auch der Wert für das Feld „gMV_AckCommandCode“ zurückgesetzt.
Verfügbare Befehle
Die Möglichkeit, das Verhalten von MERLIC über die SPS zu steuern, wird über zwei Felder realisiert:
- gMV_ReqCommandCode (requested command code)
- gMV_AckCommandCode (acknowledged command code)
Das „gMV_ReqCommandCode“-Feld gehört zum Datenabschnitt, in den die SPS schreiben soll. Das „gMV_AckCommandCode“-Feld gehört dagegen zum Datenabschnitt, in den das Plugin schreibt und aus dem die SPS lediglich lesen soll. Beide Felder müssen ganzzahlige Werte des Datentyps INT enthalten, die die folgenden zulässigen Befehle codieren:
|
Befehl |
Code |
|---|---|
|
NoCommand |
0 |
|
SelectModeAutomatic |
1 |
|
PrepareRecipe |
2 |
|
UnprepareRecipe |
3 |
|
StartSingleJob |
4 |
|
StartContinuous |
5 |
|
Halt |
6 |
|
Reset |
7 |
|
Stop |
8 |
|
Abort |
9 |
|
DequeueResult |
10 |
|
AcknowledgeError |
11 |
Neben den „Aktionen“, die zum Steuern des Zustands des Bildverarbeitungssystems verwendet werden, enthält die obige Liste die neutrale Option „NoCommand“ sowie die Befehle „DequeueResult“ und „AcknowledgeError“.
Weitere Informationen zu den verfügbaren Zuständen von MERLIC und den jeweiligen Übergängen finden Sie unter MERLIC-Zustände.
Synchronisierung über Handshake
Wenn die SPS einen Befehl an das Bildverarbeitungssystem sendet, wird mit dem folgenden Handshake sichergestellt, dass beide Seiten ordnungsgemäß synchronisiert werden:
Die Werte von „gMV_ReqCommandCode“ und „gMV_AckCommandCode“ sind anfänglich auf 0 festgelegt. Das bedeutet, dass ein Befehl weder angefordert wurde noch derzeit ausgeführt wird. Um einen Befehl zu senden, schreibt die SPS den entsprechenden Befehlscode zuerst in das Feld „gMV_ReqCommandCode“. Das Plugin fragt das Feld „gMV_ReqCommandCode“ kontinuierlich ab, um festzustellen, ob dessen Wert geändert wurde. Wenn das Plugin einen neuen Befehlscodewert liest, wird der gleiche Befehlscode in das Feld „gMV_AckCommandCode“ geschrieben, und die Ausführung des Befehls wird gestartet. Anhand des Werts von „gMV_AckCommandCode“ erkennt die SPS, dass der Wert gespiegelt wurde. Sie geht davon aus, dass der angeforderte Befehl erkannt wurde und die Ausführung des Befehls vom Plugin gestartet wurde. Der Wert von „gMV_ReqCommandCode“ kann jetzt gefahrlos auf 0 zurückgesetzt werden.
Das Plugin stellt dann fest, dass das Feld „gMV_ReqCommandCode“ zurückgesetzt wurde. Der Wert des derzeit ausgeführten Befehls bleibt jedoch so lange im Feld „gMV_AckCommandCode“, bis die Ausführung des Befehls beendet wurde. Beachten Sie, dass die Befehle „StartSingleJob“ und „StartContinuous“ als erfolgreich ausgeführt betrachtet werden, sobald der tatsächliche Job gestartet wurde. Das bedeutet, dass die konfigurierten Bildquellen die asynchrone Erfassung gestartet haben und empfangsbereit für das Triggersignal sind. Darüber hinaus wurde der Zustand in „SingleExecution“ bzw. „ContinuousExecution“ geändert.
Wenn die Ausführung des Befehls beendet wurde und die SPS das Feld „gMV_ReqCommandCode“ bereits auf 0 zurückgesetzt hat, wird das Feld „gMV_AckCommandCode“ ebenfalls auf 0 zurückgesetzt. Die SPS kann jetzt davon ausgehen, dass der Befehl ausgeführt wurde und das Bildverarbeitungssystem den nächsten Befehl empfangen kann. Die folgende Grafik veranschaulicht den Handshake-Prozess mit den Befehlen „StartSingleJob“ und „Halt“ als Beispiel.
Um den Befehl für „StartSingleJob“ zu senden, schreibt die SPS den Befehlscode 4 in das Feld „gMV_ReqCommandCode“. Wenn das Plugin den Befehlscode 4 liest, wird der Befehl durch Schreiben des Werts 4 in das Feld „gMV_AckCommandCode“ quittiert, und die Ausführung des Befehls „StartSingleJob“ wird gestartet. Sobald die SPS den Wert 4 im Feld „gMV_AckCommandCode“ liest, wird der Wert von „gMV_ReqCommandCode“ zurück auf 0 gesetzt. Wenn die Ausführung des Befehls „StartSingleJob“ gestartet und der Zustand in SingleExecution geändert wurde, setzt das Plugin den Wert von „gMV_AckCommandCode“ auf 0 zurück, um der SPS mitzuteilen, dass der nächste Befehl empfangen werden kann.
Im vorliegenden Beispiel wird als Nächstes der Befehl „Halt“ angefordert. Die SPS schreibt den entsprechenden Befehlscode 6 in das Feld „gMV_ReqCommandCode“. Das Plugin liest den neuen Befehlscode, startet die Ausführung des Befehls „Halt“ und legt „gMV_AckCommandCode“ auf 6 fest, um mitzuteilen, dass der Befehl ausgeführt wird. Lassen Sie uns dieses Mal annehmen, dass der Befehl sehr schnell ausgeführt wurde, bevor die SPS reagieren konnte. In diesem Fall wartet das Plugin, bis die SPS „gMV_ReqCommandCode“ auf 0 zurückgesetzt hat, bevor das Feld „gMV_AckCommandCode“ auf 0 zurückgesetzt wird. In dieser Zeit finden keine weiteren Ausführungen des Befehls „Halt“ statt. Wenn die SPS „gMV_ReqCommandCode“ schließlich auf 0 zurücksetzt, setzt das Plugin auch „gMV_AckCommandCode“ zurück, um mitzuteilen, dass es für den nächsten Befehl bereit ist.