GenICam: Der universelle Standard zur Kamerasteuerung
Industriekameras bieten eine Vielzahl konfigurierbarer Einstellungen, darunter Belichtungszeit, Gain, Bildrate, Triggermodus und Pixelformat. Vor GenICam implementierten und benannten Kamerahersteller diese Parameter häufig unterschiedlich und stellten proprietäre Softwarebibliotheken für den Zugriff darauf bereit.
Die Integration von Kameras verschiedener Anbieter erforderte daher häufig anwendungsspezifische SDKs und zusätzlichen Software-Entwicklungsaufwand. Eine Kamera eines Herstellers durch ein Modell eines anderen Herstellers zu ersetzen, konnte erhebliche Anpassungen an der Aufnahmesoftware oder der Steuerungslogik nach sich ziehen.
GenICam, entwickelt und gepflegt von der European Machine Vision Association (EMVA), standardisiert, wie Bildverarbeitungssoftware Kamerafunktionen erkennt, beschreibt und auf sie zugreift. Der Standard ist schnittstellenunabhängig und unterstützt konforme Kameras über Technologien wie GigE Vision, USB3 Vision, CoaXPress und Camera Link hinweg.
Software, die auf GenICam-konformen Schnittstellen aufbaut, kann daher über ein gemeinsames Feature-Modell mit Kameras verschiedener Hersteller kommunizieren, was die Integrationskomplexität reduziert und die Interoperabilität verbessert.
So funktioniert GenICam
GenICam ist kein einzelnes Protokoll, sondern ein Framework aus mehreren sich ergänzenden Standards, die definieren, wie Bildverarbeitungssoftware Kamerafunktionen erkennt, auf sie zugreift und sie steuert.
GenApi
GenApi ist die Kernkomponente des GenICam-Frameworks. Jede GenICam-konforme Kamera enthält eine XML-Beschreibungsdatei, die auf dem Gerät selbst gespeichert ist. Diese Datei beschreibt die verfügbaren Kamerafunktionen, einschließlich Parametertypen, gültiger Wertebereiche, Zugriffsberechtigungen und Abhängigkeiten zwischen Einstellungen.
GenApi definiert sowohl die Struktur dieser Beschreibungsdatei als auch die Programmierschnittstelle für den Zugriff auf Kameraparameter. Eine Bildverarbeitungsanwendung kann die XML-Beschreibung einlesen, ermitteln, welche Funktionen die Kamera unterstützt, und das Gerät über eine standardisierte Software-Schnittstelle konfigurieren.
SFNC (Standard Features Naming Convention)
SFNC standardisiert die Benennung und das Verhalten gängiger Kamerafunktionen. So verwenden beispielsweise Parameter wie Belichtungszeit, Gain und Aufnahmebildrate über konforme Geräte hinweg einheitliche Namenskonventionen.
Diese Konsistenz trägt dazu bei, herstellerspezifische Softwareunterschiede zu reduzieren und die Interoperabilität zwischen Kameras verschiedener Hersteller zu verbessern.
GenTL (Generic Transport Layer)
GenTL trennt die Bildverarbeitungssoftware von der zugrunde liegenden Hardware-Transportschnittstelle. Es definiert eine standardisierte Transport-API, über die Bilddaten von der Kamera an die Host-Anwendung übertragen werden, unabhängig davon, ob die Verbindung GigE Vision, USB3 Vision, CoaXPress oder Camera Link nutzt.
Dadurch kann Bildaufnahmesoftware häufig mehrere Schnittstellentechnologien über eine gemeinsame Transportarchitektur unterstützen.
Zusammen bilden diese Module den vollständigen GenICam-Stack:
|
Modul |
Was es standardisiert |
Warum es wichtig ist |
|
GenApi |
Beschreibung der Kamerafunktionen und Parameterzugriff über XML-basierte Gerätebeschreibungen |
Softwareanwendungen können konforme Kamerafunktionen über eine standardisierte Schnittstelle erkennen und konfigurieren |
|
SFNC |
Gemeinsame Feature-Namen und Verhaltenskonventionen (Belichtung, Gain, Trigger-Einstellungen usw.) |
Reduziert herstellerspezifische Namensunterschiede und verbessert die Software-Portabilität zwischen konformen Kameras |
|
GenTL |
Bildtransport-APIs über verschiedene physische Schnittstellen hinweg |
Aufnahmesoftware kann GigE Vision, USB3 Vision, CoaXPress und Camera Link über eine gemeinsame Transportarchitektur unterstützen |
GenICam und die Transportschnittstellen-Standards
GenICam wird häufig zusammen mit GigE Vision und USB3 Vision genannt, doch es ist wichtig, die Beziehung zwischen diesen Standards zu unterscheiden. GigE Vision und USB3 Vision definieren, wie Bilddaten über Ethernet- oder USB-Transportschichten übertragen werden. GenICam standardisiert, wie Software Kamerafunktionen erkennt, beschreibt und steuert.
Die Standards sind darauf ausgelegt, zusammenzuarbeiten. GigE Vision und USB3 Vision stützen sich beide auf GenICam-Komponenten wie GenApi, SFNC und GenTL, um eine standardisierte Gerätesteuerung und Transportintegration bereitzustellen.
Dadurch können viele Bildverarbeitungsanwendungen Kameras über verschiedene Transportschnittstellen hinweg unterstützen und dabei eine konsistente Softwarearchitektur für Parameterzugriff und Bildaufnahme beibehalten. Dasselbe GenApi-Feature-Modell und dieselben SFNC-Namenskonventionen werden verwendet, unabhängig davon, ob die Kamera über Ethernet oder USB kommuniziert.
GenICam in der Praxis
Für Systemintegratoren und Softwareentwickler trägt die GenICam-Konformität dazu bei, zu standardisieren, wie Industriekameras über verschiedene Geräte und Hersteller hinweg erkannt, konfiguriert und gesteuert werden.
Wenn eine konforme Kamera angeschlossen wird, kann die Host-Software die im Gerät gespeicherte XML-Beschreibungsdatei der Kamera einlesen. Diese Datei beschreibt die verfügbaren Kamerafunktionen, einschließlich der unterstützten Parameter, Zugriffsberechtigungen und Feature-Abhängigkeiten. Die Software kann ihre Steuerungsschnittstelle anschließend dynamisch auf Basis dieser Gerätebeschreibung erzeugen oder konfigurieren, wodurch der Bedarf an modellspezifischen Software-Implementierungen reduziert wird.
Dies hat wichtige praktische Auswirkungen auf die Integration und Wartung industrieller Bildverarbeitungssysteme:
-
Ein Produktionssystem, das Kameras eines Herstellers einsetzt, kann unter Umständen Kameras eines anderen Herstellers mit reduziertem Anpassungsaufwand an der Software integrieren, sofern die Geräte denselben GenICam-Standards folgen
-
Bildverarbeitungssoftware wie IC Imaging Control, HALCON, MATLAB und OpenCV kann über standardisierte APIs oder Transportschichten auf GenICam-konforme Kameras zugreifen
-
Multi-Kamera-Systeme, die verschiedene Kameramodelle oder Schnittstellentechnologien kombinieren, lassen sich häufig innerhalb einer einheitlichen Softwarearchitektur verwalten
Häufig gestellte Fragen
Nein. GigE Vision ist ein Hardware- und Netzwerkprotokoll-Standard, der definiert, wie Bilddaten über Gigabit-Ethernet übertragen werden. GenICam ist ein Software-Standard, der definiert, wie Kameraparameter beschrieben und gesteuert werden. GigE-Vision-Kameras müssen GenICam für den Parameterzugriff implementieren, doch GenICam gilt auch für USB3 Vision, CoaXPress, Camera Link und andere Transportstandards. GenICam ist transportunabhängig, GigE Vision ist es nicht.
Die meisten modernen Industriekameras etablierter Hersteller unterstützen GenICam, insbesondere solche, die nach GigE Vision oder USB3 Vision zertifiziert sind. Die Konformität wird über den EMVA-Zertifizierungsprozess geprüft. Kameras, die für Embedded-Anwendungen mit MIPI CSI-2 konzipiert sind, implementieren GenICam auf Hardware-Ebene nicht nativ, doch Software-Schichten können MIPI-Kamerasteuerungen auf unterstützten Plattformen auf eine GenICam-kompatible API abbilden.
Der wichtigste Vorteil ist der reduzierte Integrationsaufwand. Anstatt für jedes Kameramodell ein proprietäres SDK zu erlernen, arbeitet ein Entwickler mit der GenApi-Schnittstelle und den SFNC-Parameternamen. Wird dem System eine neue Kamera hinzugefügt, liest die Software deren XML ein und passt sich automatisch an. Die Feature-Erkennung ist Teil des Standards und erfordert keine dokumentationsspezifische Implementierung.
Es handelt sich um eine strukturierte Beschreibungsdatei, die in der Firmware der Kamera gespeichert ist und jeden steuerbaren Parameter, seinen Datentyp, die zulässigen Werte, Abhängigkeiten von anderen Parametern und die Zugriffsberechtigungen auflistet. Das Format wird durch das GenApi-Modul definiert. Wenn sich Bildverarbeitungssoftware mit einer Kamera verbindet, liest sie zuerst diese Datei und nutzt sie, um die vollständige Steuerungsschnittstelle für genau dieses Kameramodell aufzubauen. Das XML ist die Selbstbeschreibung der Kamera: Es ist das, was eine Plug-and-Play-Kameraintegration überhaupt möglich macht.