LumiScan in Ihre Anwendung integrieren
Am Ende nimmt Ihr eigenes Programm mit dem Cam Driver ein Bild auf und liest ein Ergebnis des Template Finder. Sieben Schritte; jeder endet mit Erledigt, wenn und verweist auf den nächsten.
Die Beispiele setzen voraus, dass die Apps installiert sind und eine Kamera konfiguriert ist - die Schritte 1 bis 4 von Ihre erste industrielle Vision-Anwendung. Die LumiScan-Apps haben kein eigenes SDK: Jede Funktion ist ein Knoten des Data Layer, daher kann jeder Client sie nutzen, der Data-Layer- oder OPC-UA-Knoten lesen, schreiben und aufrufen kann.
Schritt 1 von 7 - Schnittstelle wählen
1 Schnittstelle · 2 Knoten · 3 Verbinden · 4 Aufruf · 5 Handshake · 6 Ergebnisse · 7 Fehler
| Ihr Programm läuft | Schnittstelle | Hinweise |
|---|---|---|
auf dem ctrlX-Gerät (als eigene App) |
ctrlX-Data-Layer-Client |
wie jede ctrlX-App, zum Beispiel mit dem ctrlX AUTOMATION SDK gebaut |
auf einem PC oder einem anderen Rechner im Netzwerk |
OPC UA, über den LumiScan OPC UA Connector |
jede OPC-UA-Client-Bibliothek, jede Sprache; die Apps laufen auf einem PC mit LumiScan Keryx |
in einem Skript oder Test |
|
|
Knotenadressen und Aufrufmuster sind auf ctrlX OS und auf dem PC gleich; Ihre Logik hängt also nicht von der Plattform ab. Siehe ctrlX Data Layer und LumiScan Keryx.
Erledigt, wenn: Sie wissen, welchen Client Ihr Programm verwendet.
Weiter: Schritt 2 - Knoten finden
Schritt 2 von 7 - Knoten finden
1 Schnittstelle ✓ · 2 Knoten · 3 Verbinden · 4 Aufruf · 5 Handshake · 6 Ergebnisse · 7 Fehler
Jede Adresse hat dieselbe Form:
hdvisionsystems/<app>/<module>/<folder>/... die Knoten eines Moduls (eine Kamera, ein Finder-Modul, ...) hdvisionsystems/<app>/system/... was die ganze App betrifft types/hdvisionsystems/<app>/<type> die FlatBuffers-Typen, die die App veröffentlicht
<folder> ist control/ (die Funktionen und der Status des Moduls), input/, output/ oder
setting/. Eine Execute-Methode hält ihre eigenen Ein- und Ausgaben unter ihrer Funktion, zum
Beispiel hdvisionsystems/lumiscan-template-finder/module-1/find-template/input/… und …/output/result.
Die Knoten einer App stehen in der Data-Layer-Referenz ihres Handbuchs; den aktuellen Baum sehen
Sie in der Data-Layer-Ansicht der Weboberfläche von ctrlX OS oder auf dem PC unter
http://127.0.0.1:7555/. Siehe Adressen und Module.
Erledigt, wenn: Sie hdvisionsystems/lumiscan-cam-driver/camera1/control/capture/execute und
hdvisionsystems/lumiscan-template-finder/module-1/find-template/execute im Baum gefunden haben.
Weiter: Schritt 3 - Verbinden
Schritt 3 von 7 - Verbinden
1 Schnittstelle ✓ · 2 Knoten ✓ · 3 Verbinden · 4 Aufruf · 5 Handshake · 6 Ergebnisse · 7 Fehler
-
OPC UA: Starten Sie den OPC UA Connector nach den Apps. Endpunkt
opc.tcp://<pc>:4840, Security Policy None, anonym. Ermitteln Sie den Namespace-Index vonurn:hdvisionsystems:keryxaus demNamespaceArraydes Servers - nie fest einprogrammieren. Die NodeId eines Knotens ist seine Data-Layer-Adresse:ns=<n>;s=hdvisionsystems/lumiscan-cam-driver/camera1/control/status/code. -
krxclient: verbindet sich mit dem Broker unter
tcp://127.0.0.1:5555; einen anderen setzen Sie mit--keryx-urloderHDV_KERYX_URL. -
ctrlX-Data-Layer-Client: Verbinden Sie sich mit dem Data Layer des Geräts, wie Ihr SDK es beschreibt.
| Der OPC UA Connector hat weder Authentifizierung noch Verschlüsselung. Betreiben Sie ihn in einem vertrauenswürdigen Netzwerk und öffnen Sie TCP 4840 in der Firewall nur für die Adresse Ihres Clients. Siehe Sicherheit. |
Erledigt, wenn: Ihr Programm hdvisionsystems/lumiscan-cam-driver/camera1/control/status/code liest.
Weiter: Schritt 4 - Eine Funktion aufrufen
Schritt 4 von 7 - Eine Funktion aufrufen
1 Schnittstelle ✓ · 2 Knoten ✓ · 3 Verbinden ✓ · 4 Aufruf · 5 Handshake · 6 Ergebnisse · 7 Fehler
Operationen, die in etwa 1 s fertig sind, sind Execute-Methoden: Eingaben schreiben (eigene Knoten),
dann execute aufrufen; der Aufruf kehrt zurück, wenn die Operation fertig ist.
krxclient execute hdvisionsystems/lumiscan-cam-driver/camera1/control/capture/execute
krxclient read hdvisionsystems/lumiscan-cam-driver/camera1/control/status/code
krxclient write hdvisionsystems/lumiscan-template-finder/module-1/find-template/input/template-name screw
krxclient execute hdvisionsystems/lumiscan-template-finder/module-1/find-template/execute
krxclient read hdvisionsystems/lumiscan-template-finder/module-1/find-template/output/status-code
Mit OPC UA rufen Sie die Methode mit dem Dienst Call auf: objectId ist die übergeordnete Adresse
(…/camera1/control/capture), methodId der execute-Knoten. Stellen Sie den Call-Timeout Ihres
Clients höher als Ihre langsamste Methode; der Connector wartet bis zu 60 s.
Prüfen Sie beide Ergebnisse: Das Ergebnis des Aufrufs sagt, ob die Operation überhaupt laufen konnte, der Statusknoten, ob sie erfolgreich war. Siehe Execute-Methoden.
Erledigt, wenn: Ihr Programm ein Bild aufnimmt und eine Suche ausführt.
Weiter: Schritt 5 - Eine lange Operation als Handshake ausführen
Schritt 5 von 7 - Eine lange Operation als Handshake ausführen
1 Schnittstelle ✓ · 2 Knoten ✓ · 3 Verbinden ✓ · 4 Aufruf ✓ · 5 Handshake · 6 Ergebnisse · 7 Fehler
Operationen, die länger dauern können - eine Kamera verbinden, ein Reset, eine Inferenz - sind
Handshakes, damit nichts blockiert: auf ready = true warten, request = true setzen, auf
ready = false warten, request wieder auf false setzen, dann Status und Ausgaben prüfen. Fragen
Sie alle 50 bis 100 ms ab.
In einem Skript führt krxclient handshake diesen Ablauf für Sie aus, siehe
krxclient.
Welches Muster eine Funktion verwendet, steht in der Data-Layer-Referenz der App; die Regeln stehen unter Ein Muster wählen und Handshake.
Erledigt, wenn: Ihr Programm die Kamera selbst verbindet (hdvisionsystems/lumiscan-cam-driver/camera1/device-info/is-connected
= true).
Weiter: Schritt 6 - Ergebnisse lesen und jedes Bild empfangen
Schritt 6 von 7 - Ergebnisse lesen und jedes Bild empfangen
1 Schnittstelle ✓ · 2 Knoten ✓ · 3 Verbinden ✓ · 4 Aufruf ✓ · 5 Handshake ✓ · 6 Ergebnisse · 7 Fehler
-
Einfache Werte - Zahlen, Boolesche Werte, Strings, Arrays - lesen Sie direkt. Bauen Sie Ihre Logik auf ihnen auf.
-
Strukturierte Ergebnisse und Bilder sind FlatBuffers; ihre Schemata liegen auf dem Data Layer unter
types/hdvisionsystems/<app>/…. Dekodieren Sie sie mit der FlatBuffers-Bibliothek Ihrer Sprache. -
Jedes Bild, ohne Aufruf pro Bild: Lassen Sie die Verarbeitungs-App den Stream der Kamera abonnieren und abonnieren Sie mit Ihrem Programm den Ergebnisknoten der App (OPC UA: eine Subscription auf diesen Knoten):
krxclient write hdvisionsystems/lumiscan-template-finder/module-1/control/subscribe/input/address hdvisionsystems/lumiscan-cam-driver/camera1/control/publish/output/stream krxclient write hdvisionsystems/lumiscan-template-finder/module-1/control/subscribe/input/enable true krxclient execute hdvisionsystems/lumiscan-template-finder/module-1/control/subscribe/execute krxclient subscribe hdvisionsystems/lumiscan-template-finder/module-1/control/subscribe/output/stream/result --count 5
Bild-Streams sind in den aktuellen Versionen experimentell. Siehe Streams und Adressen und Module.
Erledigt, wenn: Ihr Programm das Ergebnis des Template Finder für ein Bild liest.
Weiter: Schritt 7 - Fehler behandeln
Schritt 7 von 7 - Fehler behandeln
1 Schnittstelle ✓ · 2 Knoten ✓ · 3 Verbinden ✓ · 4 Aufruf ✓ · 5 Handshake ✓ · 6 Ergebnisse ✓ · 7 Fehler
-
Ein abgelehnter Aufruf (
Rejectedbei LumiScan Keryx,DL_INVALID_VALUEbeim ctrlX Data Layer, ein OPC-UA-Statuscode über den Connector) bedeutet: Die Operation ist nicht gelaufen - nichts wurde eingereiht. -
Ein Aufruf, der gelaufen ist, kann trotzdem fehlschlagen: Lesen Sie nach jedem Aufruf den
control/status/codedes Moduls bzw. den<method>/output/status-codedes Finders. -
Ein Modul führt eine Operation zur Zeit aus: Ein Aufruf, während eine andere läuft, wird als belegt abgelehnt (
TooManyOperations, ctrlXDL_TOO_MANY_OPERATIONS). Wiederholen Sie ihn, sobald die laufende Operation fertig ist.
Die Codes und ihre Bedeutung: Statuscodes und Ergebnisse; wenn etwas nicht funktioniert: Fehlerbehebung.
Erledigt, wenn: Ihr Programm auf einen abgelehnten Aufruf und auf eine fehlgeschlagene Operation reagiert - es ist integriert.
Wie es weitergeht
-
Alle Knoten einer App: die Data-Layer-Referenz in ihrem Handbuch, verlinkt von der Übersichtsseite.
-
Alles über die Schnittstelle: LumiScan Keryx.