MVApp-Ergebnisse abrufen (Hilscher)

Der Prozessintegration MERLIC kann in industriellen Bildverarbeitungssystemen, die in eine Fertigungseinrichtung integriert sind, eingesetzt werden. Die Maschinensteuerung, z. B. eine SPS (speicherprogrammierbare Steuerung), muss in der Lage sein, ein integriertes Erkennungssystem zu steuern, die Ausführung zu überwachen und die Ergebnisse abzufragen. MERLIC verfügt daher über einen Prozessintegrationsmodus, der eine Kommunikation mit einer Maschinensteuerung ermöglicht. Der Prozessintegrationsmodus kann über die Anwendung „MERLIC RTE“ gestartet werden, die mit der MERLIC-Installation bereitgestellt wird.smodus von MERLIC gibt Ergebnisse nicht automatisch aus. Stattdessen müssen Sie die Ergebnisse der jeweiligen Iteration der MERLIC-Vision-App (MVApp) abfragen. Die Übertragung der Ergebnisse kann mit dem Befehl „GetResult“ ausgelöst werden. Der entsprechende Befehlscode ist 2.

Der Befehl muss im Protokoll „FromPLCProtocol“ angegeben werden. Darüber hinaus müssen Sie die ID der Ergebnisse, die abgefragt werden sollen, im Element „Selector“ definieren. Sie finden die ID des letzten Ergebnisses, das von MERLIC generiert wurde, im Element „LastResultId“ des Protokolls „FromMerlicProtocol“.

Einschränkung

Wenn das angeforderte MVApp-Ergebnis ein Tupel enthält, wird nur der Wert des ersten Tupelelements an die Hilscher-Karte übertragen. Ein Zugriff auf die anderen Tupelelemente ist nicht möglich. Daher wird empfohlen, keine Toolergebnisse, die Tupelwerte werden können, als MVApp-Ergebnis zu definieren, wenn eine Hilscher card für die Prozessintegration verwendet wird.

Ergebnisse abrufen

Die folgenden Elemente müssen im Protokoll FromPLCProtocol entsprechend festgelegt werden, damit die Ergebnisse einer bestimmten MVApp-Iteration abgefragt werden können:

Element

Wert

Beschreibung

CommandCode

2

Definiert den Codewert 2 für den Befehl „GetResult“.

Selector

<Ergebnis-ID>

Definiert die ID des Ergebnisses, dessen Wert ausgegeben werden soll. Falls kein Ergebnis mit dieser ID existiert, wechselt MERLIC in den „Error“-Zustand.

Das Protokoll „FromPLCProtocol“, das von der SPS an MERLIC gesendet wird, kann wie im folgenden Beispiel gezeigt definiert werden:

Kopieren
TYPE
FromPLCProtocol :
STRUCT
    Preamble : 17;
    CommandCode : 2;
    Selector : 2;
END_STRUCT
END_TYPE

Der Wert von CommandCode ist auf 2 festgelegt. Daher erkennt MERLIC den Befehl „GetResult“. Die von der SPS angeforderte Ergebnis-ID wird im Element „Selector“ angegeben. In diesem Beispiel werden die Ergebnisse mit der ID 2 angefordert. MERLIC verarbeitet den Befehl, indem die Werte mit der Ergebnis-ID 2 abgerufen und die entsprechenden Werte über das Protokoll „FromMerlicProtocol“ zurück an die SPS gesendet werden.

Das folgende Beispiel veranschaulicht das Protokoll „FromMerlicProtocol“, das als Antwort von MERLIC an die SPS gesendet wird. Es enthält die Informationen über die angeforderten Ergebnisse.

Kopieren
Preamble : 17
VersionMajor : 1
VersionMinor : 0
RecipeId : 1
CommandCode : 0
ActionResponse : 1
CurrentState : 34
LastResultId : 5
LastStartedJobId : 1
Reserved : 0
ResultState : 1
BoolCount : 0
ByteCount : 1
WordCount : 0
DWordCount : 0
LWordCount : 0
SIntCount : 0
USIntCount : 0
IntCount : 0
UIntCount : 0
DIntCount : 0
UDIntCount : 0
LIntCount : 0
ULIntCount : 0
RealCount : 0
LRealCount : 0
TimeCount : 0
TimeOfDayCount : 0
LTimeCount : 0
DateCount : 0
DateAndTimeCount : 0
Str80Count: 0
TotalResultCount : 1
DataIntegrity0 : 3
Result0 : 7

Der Wert 17 für „Preamble“ gibt an, dass das Protokoll dort beginnt. Die Werte für „VersionMajor“ und „VersionMinor“ geben an, dass die erste Version des Datenprotokolls verwendet wird. Das Element „RecipeId“ enthält die Information, dass die im Rezept mit der ID 1 definierten Eingabewerte zum Parametrisieren der MVApp verwendet wurden.

Der „CommandCode“ 0 dient zum Synchronisieren von MERLIC und SPS. In diesem Beispiel bedeutet dies, dass MERLIC den Befehl, der die Ergebnisse mit der ID 2 abfragt, von der SPS erkannt und verarbeitet hat. „ActionResponse“ ist auf 1 festgelegt, d. h., der Befehl wurde erfolgreich verarbeitet. Der Wert von „CurrentState“ (34) gibt an, dass sich MERLIC derzeit im Zustand „Ready“ befindet. Das heißt, dass die Bits für die Zustände „Ready“ und „OperationalAutomaticMode“ gesetzt sind, sodass eine Einzeloperation gestartet werden kann, um die Ergebnisse der letzten Iteration abzufragen oder eine andere Rezeptdatei zu laden.

Im Beispiel weist die ID der letzten Ergebnisse, die von MERLIC berechnet wurden, den Wert 5 auf, der im Element „LastResultId“ übertragen wird. Sie wurden entweder während der Ausführung des Jobs mit der ID 1, angegeben über „LastStartedJobId“, oder im vorherigen Job berechnet, falls der letzte gestartete Job mit der ID 1 noch keine Ergebnisse geliefert hat. Von der SPS wurden jedoch die Ergebnisse mit der ID 2 angefordert. Daher wurden alle Ergebnisse, die an die SPS übertragen wurden, bei der Generierung der Ergebnisse mit der ID 2 berechnet. Der Wert 1 für „ResultState“ gibt an, dass die Verarbeitung korrekt durchgeführt wurde. Der Wert von „TotalResultCount“ enthält die Information, dass nur ein Ergebnis mit der angeforderten „LastResultId“ ausgegeben wurde. Der ausgegebene Wert weist den Datentyp „Byte“ auf, was am Wert 1 für das Element „ByteCount“ erkennbar ist. Alle anderen Zähler der anderen Datentypen sind auf 0 festgelegt.

Die eigentlichen Informationen zum Wert dieses Ergebnisses sind in den Elementen „DataIntegrity“ und „Result“ gespeichert. Der Wert 3 für „DataIntegrity“ wird durch das Byte 00000011 dargestellt. Das erste Bit gibt an, dass der Wert gültig ist. Das zweite Bit gibt an, dass der Wert in der MVApp-Iteration ermittelt wurde, die die angeforderten Ergebnisse mit der ID 2 erzeugt hat. Weitere Informationen zur Bedeutung der einzelnen Bits finden Sie unter Protokolle für den Datenaustausch. Im letzten Eintrag des Protokolls wird der Wert des Ergebnisses ausgegeben. In diesem Beispiel weist das Ergebnis den Wert 7 auf.