HD Vision Systems
← Alle Software-Apps

VISION & ROBOTIK / RUNTIME-APP

LumiScan
Script Runner

Ihr HALCON-Know-how. Verbunden mit LumiScan.

LumiScan Script Runner führt Ihre eigenen MVTec-HALCON-Prozeduren in LumiScan Keryx aus – mit derselben Anbindung an Kameras, SPS und Roboter wie jede andere LumiScan-App.

Anwendung besprechen

Datenfluss
Bilder + Werte
Script RunnerIhre HALCON-Prozedur
Bilder + Ergebnisse
LumiScan KeryxKameras · SPS · Roboter · Cockpit

Für die Vision-Aufgaben, die nur Sie kennen.

Die Apps der LumiScan Vision Suite lösen Standardaufgaben ohne Vision-Know-how. Script Runner ist für das andere Ende: HALCON-Experten, die für ihre schwierigsten Fälle die volle Kontrolle brauchen. Beides läuft nebeneinander in Keryx.

Know-how weiterverwenden

Bestehende HDevelop-Prozeduren laufen unverändert, sobald sie dem Script-Vertrag folgen. Sie schreiben weiter in HALCON – Script Runner übernimmt Anbindung, Handshake und Betrieb.

Einheitlich integrieren

SPS, Roboter, Cockpit und andere LumiScan-Apps sehen Ihr Skript wie jede andere LumiScan-App: gleiche Keryx-Knoten, gleiche Datentypen, gleicher Trigger-Handshake.

Robust im Betrieb

Jedes Skript läuft in einem eigenen Worker-Prozess mit Watchdog. Ein fehlerhaftes Skript meldet einen Fehler und wird neu gestartet – Keryx und die übrigen Apps laufen weiter.

So funktioniert es

Von HDevelop in die Produktion.

  1. Schreiben

    Die Prozedur lumiscan_process in HDevelop schreiben oder eine bestehende anpassen: eine Bild- und eine Werteliste hinein, eine Bild- und eine Werteliste heraus.

  2. Hochladen

    Prozedur als .hdvp oder aus einer .hdpl-Bibliothek hochladen. Script Runner prüft Name, Parameter und HALCON-Klassen vor der Aktivierung und behält die vorherige Version für den Rollback.

  3. Ausführen

    Bei jedem Trigger führt HDevEngine die Prozedur JIT-kompiliert aus. Ergebnisse, Zykluszeit und Status stehen sofort in Keryx bereit.

Der Script-Vertrag.

Eine feste Schnittstelle für jedes Skript. Damit braucht keine Prozedur eigenen Integrationscode.

procedure lumiscan_process (Images : ImagesOut : Values : ValuesOut)
ParameterHALCON-KlasseRichtungInhalt
ImagesIconic-Objekt-TupelEingang0…n Bilder in der Reihenfolge der Keryx-Eingangsliste
ValuesControl-TupelEingang0…n Werte (integer, real, string)
ImagesOutIconic-Objekt-TupelAusgang0…n Ergebnisbilder, z. B. Masken, Overlays, entzerrte Bilder
ValuesOutControl-TupelAusgang0…n Ergebniswerte, z. B. Maße, OK/NOK, Anzahlen, Texte
  • Der Name der Einstiegsprozedur ist fest; Hilfsprozeduren aus derselben Bibliothek dürfen beliebig heißen.
  • Alle vier Parameter müssen vorhanden sein, auch wenn sie nicht genutzt werden. Eine leere Liste ist gültig.
  • Die Bedeutung jeder Wertposition legen Sie als Autor des Skripts fest.
  • Ergebnisbilder sind HALCON-Bilder; Regionen und XLDs im Skript umwandeln, z. B. mit region_to_bin oder paint_region.
  • Keine globalen Variablen, kein Dateizugriff auf feste Pfade; dev_*-Operatoren werden zur Laufzeit ignoriert.
  • Fehler werfen Sie als normale HALCON-Exception – Script Runner meldet sie mit Prozedur und Zeile in Keryx.
Beispiel: Teile pro Bild in einem Flächenbereich zählen und je Bild eine Maske zurückgeben
procedure lumiscan_process (Images : ImagesOut : Values : ValuesOut)
* Values[0] = minimale Fläche, Values[1] = maximale Fläche
gen_empty_obj (ImagesOut)
ValuesOut := []
count_obj (Images, NumImages)
for I := 1 to NumImages by 1
    select_obj (Images, Image, I)
    threshold (Image, Region, 128, 255)
    connection (Region, Parts)
    select_shape (Parts, Selected, 'area', 'and', Values[0], Values[1])
    count_obj (Selected, NumParts)
    ValuesOut := [ValuesOut, NumParts]
    get_image_size (Image, Width, Height)
    region_to_bin (Selected, Mask, 255, 0, Width, Height)
    concat_obj (ImagesOut, Mask, ImagesOut)
endfor
return ()

Die Keryx-Schnittstelle.

Jede Script-Runner-Instanz erhält einen eigenen Teilbaum in LumiScan Keryx. Mehrere Instanzen mit unterschiedlichen Skripten laufen parallel.

lumiscan/scriptrunner/<instance>/
KnotenTypZugriffBedeutung
config/scriptstringlesen/schreibenAktives Skript (Bibliothek + Version)
config/timeout_msint32lesen/schreibenMaximale Ausführungszeit pro Aufruf
input/image_refsarray of stringlesen/schreibenKnotenpfade der Quellbilder, z. B. Bildknoten von LumiScan Cam Driver
input/imagesarray of imagelesen/schreibenAlternativ: Bilder direkt schreiben
input/valuesarray of variantlesen/schreibenEingangswerte in Vertragsreihenfolge
output/imagesarray of imagelesenErgebnisbilder in Vertragsreihenfolge
output/valuesarray of variantlesenErgebniswerte in Vertragsreihenfolge
control/triggerboollesen/schreibenStartet einen Zyklus
control/doneboollesenZyklus beendet, Ausgänge gültig
status/stateint32lesen0 Bereit · 1 Läuft · 2 Fertig · 3 Fehler · 4 Nicht bereit
status/error_codeint32lesenFehlercode (siehe unten)
status/error_textstringlesenHALCON-Fehlermeldung mit Prozedur und Zeile
status/cycle_time_msdoublelesenAusführungszeit des letzten Aufrufs
status/cycle_counterint64lesenAnzahl abgeschlossener Aufrufe
status/script_versionstringlesenVersion und Hash des geladenen Skripts

Handshake

  1. SPS oder Client schreibt input/* und setzt control/trigger.
  2. Script Runner setzt status/state auf „Läuft“ und ruft lumiscan_process mit Bildern und Werten auf.
  3. Script Runner schreibt output/* und status/* vollständig, dann control/done = true und den Status „Fertig“ oder „Fehler“.
  4. SPS liest output/* und setzt control/trigger zurück.
  5. Script Runner setzt control/done = false und den Status „Bereit“ – der nächste Zyklus kann starten.

Datentypen

KeryxHALCONZurück nach Keryx
boolinteger 0 / 1integer
int32, int64integerint64
float, doublerealdouble
stringstringstring
image (Mono 8/16 Bit, RGB 8 Bit)image (byte / uint2 / 3-Kanal byte)image desselben Typs

Fehlercodes

CodeBedeutungVerhalten
0OK–
1HALCON-Exception im SkriptAusgänge leer, Fehlertext gesetzt, bereit für den nächsten Trigger
2Zeitlimit überschrittenWorker wird neu gestartet, Skript neu geladen
3Kein gültiges Skript oder Vertrag verletztNicht bereit, bis ein gültiges Skript aktiviert ist
4Eingangsfehler (fehlende Bildreferenz, nicht unterstützter Typ)Skript wird nicht aufgerufen
5Worker abgestürztWorker wird neu gestartet, Skript neu geladen
6Lizenzfehler (LumiScan oder HALCON-Runtime)Nicht bereit

Auf einen Blick.

Plattformen, Anbindung und Lizenzierung.

Ausführung
Eine HALCON-Prozedur (.hdvp oder aus einer .hdpl-Bibliothek) pro Instanz, JIT-kompiliert über HDevEngine bei jedem Trigger.
Instanzen
Mehrere Instanzen parallel, jede mit eigenem Skript und eigenem Keryx-Teilbaum.
Plattformen
Windows 11 und Ubuntu 24.04 mit LumiScan Keryx. ctrlX OS ist in Vorbereitung – mit gleicher Knotenstruktur und gleichem Handshake über den ctrlX Data Layer.
Anbindung
Bild- und Wertelisten über Keryx; Bilder direkt aus LumiScan Cam Driver, Status in LumiScan Cockpit, SPS- und Roboteranbindung wie bei allen LumiScan-Apps.
Know-how-Schutz
Passwortgeschützte HALCON-Prozeduren laufen, ohne ihren Quellcode offenzulegen.
Betrieb
Isolierter Worker-Prozess, einstellbares Zeitlimit, Versionierung mit Rollback, Zykluszeit- und Fehlerzähler, strukturiertes Protokoll.
Lizenzierung
LumiScan Key (CodeMeter). Jede Installation wird mit der vollständigen MVTec-HALCON-Runtime-Lizenz ausgeliefert.

HALCON und HDevelop sind Marken der MVTec Software GmbH.

Häufige Fragen

Welche HALCON-Prozeduren kann Script Runner ausführen?

Jede Prozedur, die dem Script-Vertrag lumiscan_process(Images : ImagesOut : Values : ValuesOut) folgt, gespeichert als .hdvp oder in einer .hdpl-Bibliothek. Hilfsprozeduren aus derselben Bibliothek dürfen aufgerufen werden.

Brauchen wir eine eigene HALCON-Lizenz?

Nein. Jede Installation wird mit der vollständigen MVTec-HALCON-Runtime-Lizenz ausgeliefert; Script Runner selbst wird über den LumiScan Key lizenziert.

Können wir unser Know-how schützen?

Ja. Passwortgeschützte HALCON-Prozeduren laufen, ohne ihren Quellcode offenzulegen.

Was passiert, wenn ein Skript fehlschlägt?

Jedes Skript läuft in einem eigenen Worker-Prozess. Eine HALCON-Exception wird mit Prozedur und Zeile in Keryx gemeldet; bei Zeitüberschreitung oder Absturz startet der Worker neu und lädt das Skript erneut, während Keryx und die übrigen Apps weiterlaufen.

Welche Plattformen werden unterstützt?

Windows 11 und Ubuntu 24.04 mit LumiScan Keryx. ctrlX OS ist in Vorbereitung – mit gleicher Knotenstruktur und gleichem Handshake.

Sie arbeiten bereits mit HALCON?

Nennen Sie uns Ihre Anwendung, die Anzahl der Instanzen und Ihre Zielplattform – wir senden Ihnen ein Angebot.

IHRE ANFRAGE

Sprechen wir über Ihre Anwendung.

Ein paar Angaben genügen – wir melden uns innerhalb eines Werktags. Lieber direkt? +49 6221 6721900

Bis zu 3 Dateien, zusammen 10 MB · JPG, PNG, PDF, STEP

Wir nutzen Ihre Angaben, um Ihre Anfrage zu beantworten. Details in den Datenschutzhinweisen.