Erste Schritte mit LumiScan Keryx

In dieser Anleitung probieren Sie LumiScan Keryx auf einem Windows-PC aus, ohne Kamera und ohne SPS. LumiScan Cam Driver mit einer simulierten Kamera stellt die Knoten bereit; Sie sind der Client - zuerst von Hand auf der Keryx-Seite, dann mit dem Kommandozeilen-Client krxclient, der genau so arbeitet wie eine SPS.

Am Ende haben Sie:

  1. den Broker gestartet und den Baum angesehen,

  2. Werte gelesen und einen geschrieben,

  3. die Kamera mit einem ready/request-Handshake verbunden - von Hand und mit einem Befehl,

  4. ein Bild mit einer Execute-Methode aufgenommen und das Ergebnis geprüft,

  5. die Kamera wieder getrennt.

Was Sie hier lernen, gilt genauso für jede LumiScan-App, auf einem PC und auf ctrlX OS. Das Konzept erklärt Was ist LumiScan Keryx?.

Diese Anleitung verwendet einen Windows-PC. Auf ctrlX OS folgen Sie Anleitung: Mit Beispielbildern statt einer Kamera testen im Handbuch des Cam Drivers: Sie verbindet eine simulierte Kamera und nimmt ein Bild in der Weboberfläche von ctrlX OS auf, deren Data-Layer-Ansicht dort leistet, was hier die Keryx-Seite leistet.

Bevor Sie beginnen

  • Ein PC mit Windows 11.

  • LumiScan Keryx und LumiScan Cam Driver installiert: zuerst Keryx, jedes Installationsprogramm als Administrator. Siehe Installation unter Windows.

  • Eine Lizenz für LumiScan Cam Driver: CodeMeter Runtime installiert und der LumiScan Key eingesteckt, siehe LumiScan Lizenzierung.

  • Optional: ein paar PNG-Bilder, damit die simulierte Kamera in Schritt 6 etwas liefern kann.

Öffnen Sie nach der Installation ein neues Terminal (Eingabeaufforderung oder PowerShell), damit es die Einstellungen kennt, die das Keryx-Installationsprogramm vorgenommen hat. Wird krxclient nicht gefunden, starten Sie es aus dem Installationsordner von LumiScan Keryx.

Unter Ubuntu 24.04 sind alle krxclient-Befehle gleich. Die Keryx-Seite und ihr Fenster gehören nur zur Windows-Installation.

Schritt 1 - Keryx starten und die Keryx-Seite öffnen

  1. Starten Sie LumiScan Keryx über das Windows-Startmenü.

    Ein Fenster mit der Keryx-Seite öffnet sich. Läuft noch kein Broker, startet LumiScan Keryx ihn.

  2. Sehen Sie sich den Baum an. Ohne App ist er noch leer: Keryx selbst stellt keine Knoten bereit - das tun die Apps.

Dieselbe Seite ist in jedem Browser auf diesem PC unter http://127.0.0.1:7555/ erreichbar.

Fertig, wenn: die Keryx-Seite zeigt, dass der Broker läuft.

Schritt 2 - Eine App mit simulierter Kamera starten

Der Cam Driver schreibt Beispiel-Einstellungen mit einer simulierten Kamera. Eine Kamera, deren Seriennummer simulation enthält, braucht keine Hardware.

  1. Schreiben Sie die Beispiel-Einstellungen in einen Arbeitsordner:

    lumiscan-cam-driver --generate-settings C:\work\cam-driver-settings

    Der Cam Driver schreibt lumiscan-cam-driver.json, die Moduldatei lumiscan-cam-driver-example-module.json und ihre Schemas, nennt den Ordner, aus dem er seine Einstellungen liest, und beendet sich.

  2. Öffnen Sie die Moduldatei und prüfen Sie, dass id den Wert camera1 und serial den Wert simulation hat. Weicht die id ab, verwenden Sie in allen Adressen unten Ihre id statt camera1.

  3. Kopieren Sie die Dateien in den Einstellungsordner, den der Cam Driver genannt hat, standardmäßig C:\ProgramData\HD Vision Systems GmbH\LumiScan Vision Suite\lumiscan-cam-driver\etc\lumiscan-cam-driver.

  4. Starten Sie den Cam Driver:

    lumiscan-cam-driver

    Lassen Sie das Terminal offen: Es zeigt die Meldungen des Cam Driver.

Auf der Keryx-Seite hat der Baum jetzt den Ordner hdvisionsystems mit lumiscan-cam-driver darin.

Fertig, wenn: hdvisionsystems/lumiscan-cam-driver/system/found-modules den Eintrag camera1 enthält und der Ordner hdvisionsystems/lumiscan-cam-driver/camera1 existiert.

Schritt 3 - Werte lesen

Auf der Keryx-Seite: Öffnen Sie hdvisionsystems/lumiscan-cam-driver/camera1/control/status und wählen Sie code. Die Seite zeigt seinen Wert, seinen Typ und was damit getan werden darf. 0 bedeutet bereit.

Mit krxclient: Öffnen Sie ein zweites Terminal und lesen Sie denselben Knoten:

krxclient read hdvisionsystems/lumiscan-cam-driver/camera1/control/status/code
krxclient read hdvisionsystems/lumiscan-cam-driver/camera1/control/status/text

krxclient gibt den Wert zusammen mit seinem Typ als JSON aus. Drei weitere Befehle helfen bei der Orientierung:

krxclient browse   hdvisionsystems/lumiscan-cam-driver/camera1/control
krxclient metadata hdvisionsystems/lumiscan-cam-driver/camera1/control/capture/execute
krxclient tree     hdvisionsystems/lumiscan-cam-driver/camera1 --depth 2

browse listet die Kinder eines Ordners, metadata zeigt, was ein Knoten ist und was damit getan werden darf, tree gibt einen ganzen Zweig aus.

Fertig, wenn: krxclient read den Statuscode 0 zeigt.

Schritt 4 - Einen Wert schreiben

Eingaben sind Knoten, die Sie schreiben, bevor Sie eine Funktion aufrufen. Schalten Sie als Beispiel die Vorschau des Kameramoduls ein, ein PNG jedes neuen Bildes:

Auf der Keryx-Seite: Wählen Sie hdvisionsystems/lumiscan-cam-driver/camera1/input/preview/enable, setzen Sie den Wert in seinem Editor auf true und bestätigen Sie.

Mit krxclient:

krxclient write hdvisionsystems/lumiscan-cam-driver/camera1/input/preview/enable true
krxclient read  hdvisionsystems/lumiscan-cam-driver/camera1/input/preview/enable

krxclient write übernimmt den Typ des aktuellen Werts des Knotens; ein Wert, der nicht zum Typ passt, wird abgelehnt, bevor etwas gesendet wird.

Nehmen Sie die Knoten, die Sie verfolgen, in die Beobachtungsliste (Watch list) der Keryx-Seite auf. Sie zeigt ihre Werte, während sie sich ändern - nützlich im nächsten Schritt.

Fertig, wenn: hdvisionsystems/lumiscan-cam-driver/camera1/input/preview/enable den Wert true hat.

Schritt 5 - Die Kamera mit einem Handshake verbinden

Das Verbinden einer Kamera kann einige Sekunden dauern, deshalb ist es ein Handshake: Sie und die App wechseln sich auf zwei Knoten ab, ready (gesetzt von der App) und request (gesetzt von Ihnen).

Von Hand, auf der Keryx-Seite

Nehmen Sie diese Knoten in die Beobachtungsliste auf:

  • hdvisionsystems/lumiscan-cam-driver/camera1/control/connect-camera/ready

  • hdvisionsystems/lumiscan-cam-driver/camera1/control/connect-camera/request

  • hdvisionsystems/lumiscan-cam-driver/camera1/control/status/code

  • hdvisionsystems/lumiscan-cam-driver/camera1/device-info/is-connected

Dann:

  1. Prüfen Sie, dass ready den Wert true hat: Die App kann die Funktion starten.

  2. Setzen Sie request auf true: Sie fordern sie an.

  3. Beobachten Sie, wie ready auf false wechselt: Die App hat die Anforderung gesehen. Der Statuscode zeigt 3 (wartet auf Sie).

  4. Setzen Sie request wieder auf false: Sie bestätigen. Die App verbindet jetzt die Kamera.

  5. Beobachten Sie, wie is-connected auf true wechselt und der Statuscode wieder 0 wird.

Nach einer erfolgreichen Verbindung bleibt connect-camera/ready auf false - die Kamera ist ja schon verbunden. Prüfen Sie das Ergebnis mit is-connected, nicht mit ready.

Mit einem Befehl

krxclient handshake führt dieselbe Abfolge so aus, wie es eine SPS tut. Um es auszuprobieren, trennen Sie die Kamera zuerst - ebenfalls ein Handshake - und verbinden sie dann wieder:

krxclient handshake hdvisionsystems/lumiscan-cam-driver/camera1/control/disconnect-camera --status hdvisionsystems/lumiscan-cam-driver/camera1/control/status
krxclient handshake hdvisionsystems/lumiscan-cam-driver/camera1/control/connect-camera --status hdvisionsystems/lumiscan-cam-driver/camera1/control/status
krxclient read hdvisionsystems/lumiscan-cam-driver/camera1/device-info/is-connected

Jeder Handshake gibt am Ende Statuscode und -text aus. Mit --trace handshake.jsonl schreibt er jede Änderung von ready und des Status mit Zeitpunkt in eine Datei - ein Protokoll dessen, was die App wann getan hat.

Fertig, wenn: hdvisionsystems/lumiscan-cam-driver/camera1/device-info/is-connected den Wert true hat.

Schritt 6 - Ein Bild mit einer Execute-Methode aufnehmen

Ein Bild aufzunehmen geht schnell, deshalb ist es eine Execute-Methode: ein Schreibzugriff, beantwortet, wenn die Arbeit erledigt ist.

krxclient read    hdvisionsystems/lumiscan-cam-driver/camera1/output/package-identifier
krxclient execute hdvisionsystems/lumiscan-cam-driver/camera1/control/capture/execute
krxclient read    hdvisionsystems/lumiscan-cam-driver/camera1/control/status/code
krxclient read    hdvisionsystems/lumiscan-cam-driver/camera1/output/package-identifier

Auf der Keryx-Seite hat dieselbe Methode eine Schaltfläche Invoke.

Prüfen Sie immer zwei Dinge:

  1. Konnte der Aufruf ausgeführt werden? krxclient endet mit 0, wenn die App den Aufruf angenommen hat, mit 1, wenn Keryx ihn abgelehnt hat - zum Beispiel weil die Kamera nicht verbunden ist - und mit 2 bei einer Zeitüberschreitung.

  2. War er erfolgreich? Der Statuscode ist 0, und output/package-identifier ist um eins gestiegen. Das Bild liegt jetzt auf hdvisionsystems/lumiscan-cam-driver/camera1/output/image, mit width, height und pixel-type.

Eine simulierte Kamera spielt die Bilder aus ihrem Speicherordner ab, eines je Aufnahme. Ist der Ordner leer, schlägt die Aufnahme fehl: Der Statuscode ist kleiner als 0, und control/status/text nennt den Grund. Auch das ist eine nützliche Übung. Um Bilder zu bekommen, legen Sie ein paar PNG-Dateien in den Unterordner camera1 des Speicherordners, den system/storage in lumiscan-cam-driver.json nennt - fügen Sie einen Speicher hinzu, wenn keiner eingetragen ist -, starten Sie den Cam Driver neu und verbinden Sie erneut. Anleitung: Mit Beispielbildern statt einer Kamera testen zeigt dasselbe auf ctrlX OS; die Einstellungen sind auf einem PC dieselben.

Fertig, wenn: Sie capture/execute aufgerufen und das Ergebnis auf control/status/code gelesen haben.

Schritt 7 - Aufräumen

  1. Trennen Sie die Kamera:

    krxclient handshake hdvisionsystems/lumiscan-cam-driver/camera1/control/disconnect-camera --status hdvisionsystems/lumiscan-cam-driver/camera1/control/status
  2. Beenden Sie den Cam Driver mit Strg+C in seinem Terminal.

Der Broker läuft weiter; die nächste App, die Sie starten, nutzt ihn wieder.

Was Sie getan haben

Sie haben Auf der Keryx-Seite Mit krxclient - und in einer SPS oder einem Programm

einen Wert gelesen

den Knoten wählen

krxclient read; eine SPS liest den OPC-UA- oder ctrlX-Data-Layer-Knoten

einen Wert geschrieben

der Editor des Knotens

krxclient write; eine SPS schreibt den Knoten

einen Handshake ausgeführt

request setzen, ready beobachten

krxclient handshake; eine SPS setzt request und fragt ready alle 50 bis 100 ms ab

eine Execute-Methode aufgerufen

Invoke

krxclient execute; über OPC UA ein Methodenaufruf

Wie es weitergeht