Handshake
Der Handshake ist für eine Operation gedacht, die länger als etwa 1 s dauern kann oder die ein Client starten
muss, ohne auf sie zu warten. Client und Modul wechseln sich auf zwei Knoten ab, ready und request. Niemand
wartet innerhalb eines Aufrufs: Der Client pollt, und das Modul antwortet über Knoten.
Cam Driver, AI Object Matching und Calibration bieten Handshakes an.
Adressen
| Adresse | Typ | Bedeutung |
|---|---|---|
|
bool, schreibgeschützt |
vom Modul gesetzt: |
|
bool, beschreibbar |
vom Client gesetzt, um die Funktion zu starten |
|
int32, schreibgeschützt |
der Status des Moduls, einer für alle seine Funktionen. Siehe Statuscodes und Ergebnisse |
|
string, schreibgeschützt |
dasselbe als Text, für Menschen - verwenden Sie in der Programmlogik den Code |
|
beschreibbar |
die Eingaben der Funktion, vor dem Request geschrieben |
|
schreibgeschützt |
ihre Ergebnisse |
|
schreibgeschützt |
zählt abgeschlossene Operationen: Ein neuer Wert bedeutet neue Ausgaben |
<module> ist hdvisionsystems/<app>/<module name>, zum Beispiel
hdvisionsystems/lumiscan-calibration/plane1/control/transform/request.
Der Ablauf
-
Warten Sie, bis
control/<function>/readytrueist. -
Schreiben Sie die Eingaben der Funktion.
-
Setzen Sie
control/<function>/requestauftrue. -
Warten Sie, bis
readyfalseist: Das Modul hat den Request erkannt. -
Setzen Sie
requestauffalse. -
Warten Sie, bis
readywiedertrueist: Die Funktion ist abgeschlossen. -
Lesen Sie
control/status/codeund die Ergebnisse unteroutput/.output/package-identifierist um eins gestiegen.
Pollen Sie im Abstand von 50 bis 100 ms.
Was das Modul anzeigt
So, wie Calibration ihn ausführt:
| Schritt | ready |
request |
status/code |
|---|---|---|---|
Leerlauf |
|
|
|
Der Client fordert an |
|
|
|
Das Modul quittiert |
|
|
|
Der Client bestätigt; die Funktion läuft |
|
|
|
Fertig |
|
|
|
Regeln
-
Nur ein Programm schreibt einen
request-Knoten. Schreiben zwei Programme ihn unabhängig voneinander, kann ein Request verloren gehen. Ein Programm, das sich nicht mit anderen abstimmen kann, verwendet die Execute-Methode, die einen zweiten Aufruf ablehnt, solange einer läuft. -
Das Modul wartet darauf, dass
requestzurückfällt, so lange es dauert. Es gibt kein Timeout: Einrequest, das danach nochtrueist, würde als neuer Request gelesen. -
Ein Handshake und eine Execute-Methode desselben Moduls teilen sich eine Sperre. Während ein Handshake läuft, antwortet ein Execute-Aufruf desselben Moduls, dass es belegt ist.
Unterschiede zwischen den Apps
Calibration folgt dem Ablauf genau. Cam Driver und AI Object Matching weichen in Punkten ab, die ein SPS-Programm kennen muss:
| App | Unterschied |
|---|---|
Cam Driver |
|
AI Object Matching |
|
Um den Ausgang eines Cam-Driver-capture oder einer AI-inference direkt zu lesen, verwenden Sie die zugehörige
Execute-Methode: Der Status behält dann den eigenen Code der Operation.