Anleitung: Eine GenICam-Kamera an die ctrlX CORE anschließen

Diese Anleitung schließt eine Ethernet-Kamera nach dem GenICam-Standard (GigE Vision) an eine ctrlX CORE an und führt bis zu einem aufgenommenen Bild auf dem ctrlX Data Layer. Sie benötigen dafür nur die ctrlX-Weboberfläche.

Am Ende gilt:

  • Die Kamera hat eine feste IP-Adresse im Netzwerk der ctrlX CORE.

  • LumiScan Cam Driver hat ein Modul für die Kamera und findet sie.

  • Die Kamera ist verbunden, und jede Aufnahme legt ein Bild auf den Data Layer.

  • Aufgenommene Bilder lassen sich optional im internen Speicher, auf einem USB-Speichergerät, einer SD-Karte oder einer Netzwerkfreigabe speichern.

Bevor Sie beginnen

Hardware

  • ctrlX CORE, zum Beispiel ctrlX CORE X3 oder X7

  • GenICam-konforme Ethernet-Kamera (GigE Vision)

  • Engineering-PC mit Browser

  • Geschirmte Ethernet-Kabel (Foil Shielded Twisted Pair)

  • Optional: ein Ethernet-Switch, der Jumbo Frames unterstützt

Software und Lizenzen

  • LumiScan Cam Driver auf der ctrlX CORE installiert, mit einer Lizenz je Kamera, siehe Voraussetzungen

  • Das Konfigurationswerkzeug des Kameraherstellers, um die IP-Adresse der Kamera einzustellen

Wie es zusammenhängt

LumiScan Cam Driver wird mit zwei Arten von Dateien konfiguriert und vollständig über den Data Layer gesteuert:

  • lumiscan-cam-driver.json, die Anwendungseinstellungen, nennt in modules die zu ladenden Kameramodule und enthält die Einstellungen des Geräts, etwa Protokollierung und Bildspeicher.

  • Eine Moduldatei je Kamera, zum Beispiel camera1.json, benennt die Kamera über ihre Seriennummer und legt Belichtungszeit und Pixelformat fest. Ihre id wird zum Namen des Moduls auf dem Data Layer: hdvisionsystems/lumiscan-cam-driver/<id>/…​.

Jede Operation eines Moduls - verbinden, aufnehmen, speichern - liegt unter hdvisionsystems/lumiscan-cam-driver/<id>/control/<Operation>/. Sie wird entweder mit dem ready/request-Handshake gestartet oder, bei den meisten Operationen, mit einem einzigen Schreibzugriff auf execute. Siehe Eine Methode ausführen und Grundkonzept des Handshakes.

Die Einstellungsdateien werden nur beim Start der Anwendung gelesen. Starten Sie LumiScan Cam Driver nach jeder Änderung neu.

Schritt 1 - Netzwerk einrichten

  1. Geben Sie der Kamera mit dem Konfigurationswerkzeug des Herstellers eine feste IP-Adresse:

    • Stellen Sie eine statische (persistente) IP-Adresse ein, zum Beispiel 192.168.1.21, Subnetzmaske 255.255.255.0.

    • Schalten Sie DHCP und Auto IP (Link Local) aus.

      Die Adresse muss im Subnetz des ctrlX-CORE-Anschlusses liegen, an dem die Kamera betrieben wird. Ist die Kamera schon an der ctrlX CORE angeschlossen, aber im falschen Subnetz, können Sie die Adresse auch von dort aus setzen, siehe Kamera-IP-Adresse einrichten.

  2. Verbinden Sie Kamera, ctrlX CORE und Engineering-PC. Zwei Topologien sind möglich - alle drei an einem Switch oder die Kamera direkt an der ctrlX CORE. Beide sind in Hardware-Aufbau für ctrlX X3 beschrieben.

  3. Geben Sie dem Engineering-PC eine freie Adresse im selben Subnetz, zum Beispiel 192.168.1.123. Verwenden Sie nicht die Adresse des ctrlX-CORE-Anschlusses; bei einer ctrlX CORE X3 hat XF10 die Adresse 192.168.1.1.

  4. Öffnen Sie in der ctrlX-Weboberfläche Settings > Network Interfaces und wählen Sie den Anschluss, an dem die Kamera hängt.

  5. Prüfen Sie die statische IPv4-Adresse des Anschlusses und schalten Sie DHCP aus.

  6. Setzen Sie unter Advanced settings die MTU auf 8000 oder 9000 und klicken Sie auf Save.

    Einstellungen der ctrlX-Netzwerkschnittstelle
    Abbildung 1. Netzwerkschnittstelle der ctrlX CORE mit statischer IP-Adresse und MTU

Bilder sind groß, deshalb sendet die Kamera sie in Jumbo Frames. Ohne große MTU - am Anschluss der ctrlX CORE und an jedem Switch dazwischen - schlagen Aufnahmen mit dem Statuscode -10004 (couldNotCaptureImage) fehl. Siehe MTU-Größe ändern.

Schritt 2 - LumiScan Cam Driver konfigurieren

  1. Gehen Sie in der ctrlX-Weboberfläche zu Home > Manage app data und klicken Sie auf Open file view.

    Manage app data
    Abbildung 2. Dateiansicht der App-Daten öffnen
  2. Öffnen Sie den Ordner lumiscan-cam-driver. Er enthält die Anwendungseinstellungen, die Moduldateien sowie die Ordner schemas und images.

  3. Legen Sie die Moduldatei für Ihre Kamera an, zum Beispiel camera1.json. Am einfachsten kopieren Sie die mitinstallierte Beispiel-Moduldatei und ändern diese Werte:

    {
      "id": "camera1",
      "serial": "LX123456",
      "exposureTimeUS": 4321,
      "pixelFormat": "RGB8"
    }
    • id - der Name des Moduls auf dem Data Layer. Nur Kleinbuchstaben, Ziffern, - und _, eindeutig über alle Module.

    • serial - die Seriennummer der Kamera, wie sie auf der Kamera steht oder vom Herstellerwerkzeug angezeigt wird.

    • exposureTimeUS - Belichtungszeit in Mikrosekunden.

    • pixelFormat - RGB8 oder Mono8.

      Behalten Sie die Einträge $schema und meta der Beispieldatei bei. Alle Parameter sind in Beispielinhalt einer Kameradatei beschrieben.

  4. Öffnen Sie lumiscan-cam-driver.json und tragen Sie die Moduldatei in die Liste modules ein:

    "modules": [
      "camera1.json"
    ]

    Jede Datei der Liste muss existieren, und zwei Module dürfen nicht dieselbe Kamera-Seriennummer verwenden.

    lumiscan-cam-driver.json in der Dateiansicht der ctrlX-Weboberfläche
    Abbildung 3. Anwendungseinstellungen mit der Liste der Moduldateien
  5. Klicken Sie auf Save und starten Sie LumiScan Cam Driver neu: Settings > Apps, LumiScan Cam Driver auswählen und auf Restart klicken.

Die Einstellungen lassen sich auch auf dem Data Layer lesen und ändern, unter hdvisionsystems/lumiscan-cam-driver/system/settings. Siehe Einstellungen auf dem Data Layer.

Schritt 3 - Prüfen, ob die Kamera gefunden wird

Öffnen Sie in der ctrlX-Weboberfläche Settings > Data Layer und gehen Sie zu hdvisionsystems/lumiscan-cam-driver/system. Die im Netzwerk gefundenen Kameras stehen in:

  • found-camera-serials

  • found-camera-ip-addresses

  • found-camera-mac-addresses

  • found-camera-modules

Die Listen haben dieselbe Reihenfolge: Die erste Seriennummer gehört zur ersten IP-Adresse und zur ersten MAC-Adresse.

Data-Layer-Browser mit den found-camera-Knoten unter lumiscan-cam-driver/system
Abbildung 4. Von LumiScan Cam Driver gefundene Kameras

Erwartet: Die Seriennummer aus Ihrer Moduldatei ist aufgeführt, mit einer IP-Adresse im Subnetz des ctrlX-CORE-Anschlusses. Unter hdvisionsystems/lumiscan-cam-driver gibt es einen Ordner mit der id Ihres Moduls.

Fehlt die Kamera, prüfen Sie zuerst Verkabelung und Subnetz. Fehlt der Modulordner, lesen Sie system/settings: Eine Moduldatei, die nicht gelesen werden konnte, steht dort mit dem Grund.

Schritt 4 - Die Kamera verbinden

Das Verbinden dauert einige Sekunden und wird deshalb nur als Handshake angeboten. Verwenden Sie diese Knoten:

hdvisionsystems/lumiscan-cam-driver/camera1/control/connect-camera/ready
hdvisionsystems/lumiscan-cam-driver/camera1/control/connect-camera/request
  1. Warten Sie, bis ready den Wert true hat.

  2. Setzen Sie request auf true.

  3. Warten Sie, bis ready den Wert false hat: Die Anwendung hat die Anforderung gesehen.

  4. Setzen Sie request wieder auf false.

  5. Prüfen Sie hdvisionsystems/lumiscan-cam-driver/camera1/device-info/is-connected.

Erwartet: is-connected ist true. Die Kamera ist verbunden und bereit für Aufnahmen.

Data-Layer-Browser
Abbildung 5. Knoten von connect-camera und der Verbindungszustand

Prüfen Sie die Verbindung mit is-connected, nicht mit dem Statuscode. Eine fehlgeschlagene Verbindung zeigt -10000 auf control/status/code nur für etwa 100 ms, danach wieder 0.

Schritt 5 - Ein Bild aufnehmen

Am einfachsten ist ein Schreibzugriff auf die Methode execute:

  1. Schreiben Sie auf hdvisionsystems/lumiscan-cam-driver/camera1/control/capture/execute. Der Schreibzugriff kehrt zurück, wenn die Aufnahme beendet ist.

  2. Lesen Sie hdvisionsystems/lumiscan-cam-driver/camera1/control/status/code.

Erwartet: 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 data, width, height und pixel-type. Andere LumiScan-Anwendungen lesen es von dieser Adresse.

Data-Layer-Browser mit den capture-Knoten und output/image mit data
Abbildung 6. Knoten von capture und die Bildausgabe

Sie können auch mit dem Handshake über control/capture/ready und control/capture/request aufnehmen. Eine fehlgeschlagene Aufnahme endet dann beim Statuscode 3; siehe Wann eine Funktion ausgeführt wird.

output/image enthält Sensor-Rohdaten. Um das Bild anzusehen, öffnen Sie LumiScan Cockpit, oder schalten Sie camera1/input/preview/enable ein: Dann liegt nach jeder Aufnahme ein PNG auf camera1/output/preview/encoded-data (ab v2.1.0).

Schritt 6 - Aufgenommene Bilder speichern (optional)

Bilder werden nur gespeichert, wenn ein Speicher konfiguriert ist. Er wird im Abschnitt system von lumiscan-cam-driver.json festgelegt. Für den internen Speicher der Anwendung:

"system": {
  "storage": {
    "type": "Internal",
    "parameters": {
      "rootPath": "images"
    }
  }
}

Ein relativer rootPath ist ein Ordner im eigenen Verzeichnis der Anwendung. Für ein USB-Speichergerät oder eine SD-Karte verwenden Sie deren Einhängepfad, zum Beispiel /media/sdb1/myCapturedImages. Für einen freigegebenen Windows-Ordner verwenden Sie den Typ Samba. Alle Möglichkeiten sind in Speichereinstellungen und Bilddateien speichern beschrieben.

lumiscan-cam-driver.json mit markiertem Abschnitt storage
Abbildung 7. Speicher in den Anwendungseinstellungen
  1. Speichern Sie die Datei und starten Sie LumiScan Cam Driver neu.

  2. Verbinden Sie die Kamera (Schritt 4) und nehmen Sie ein Bild auf (Schritt 5).

  3. Schreiben Sie auf hdvisionsystems/lumiscan-cam-driver/camera1/control/save/execute.

Erwartet: Der Statuscode ist 0, und das Bild erscheint als PNG-Datei im Speicherordner, standardmäßig in einem Unterordner mit dem Namen der Kamera.

Ergebnis

  • Die Kamera hat eine feste IP-Adresse und wird von LumiScan Cam Driver gefunden.

  • Das Kameramodul ist konfiguriert und verbunden.

  • Jede Aufnahme legt ein neues Bild auf hdvisionsystems/lumiscan-cam-driver/camera1/output/image.

  • Aufgenommene Bilder lassen sich im konfigurierten Speicher ablegen.

Wie es weitergeht

  • Bilder und Ergebnisse in LumiScan Cockpit ansehen.

  • Das Bild mit einer anderen LumiScan-Anwendung auswerten: deren Bildadresse auf hdvisionsystems/lumiscan-cam-driver/camera1/output/image setzen.

  • Kamerafunktionen wie Verstärkung oder Triggermodus unter camera1/features einstellen, siehe GenICam-Features.

  • Probleme bei Erkennung, Verbindung oder Aufnahme: siehe Fehlerbehebung.