13.04.2007 • Bildverarbeitung / Optische Messtechnik

GigE Vision mit mehreren Kameras

Der neue Interface-Standard GigE-Vision erzeugt derzeit sehr großes Interesse für unterschiedlichste Anwendungen in der industriellen und wissenschaftlichen Bildverarbeitung.

GigE-Vision basiert auf Gigabit-Ethernet und bietet eine maximale Transferleistung von ca. 125 MB/s. Die Ethernet-Technologie bietet weitere Vorteile wie Kabelstrecken bis 100 Meter ohne den Einsatz von Repeatern / Hubs, die Verwendung äußerst kostengünstiger Standard-Infrastruktur (z.B. CAT5e / CAT6-Netzwerkleitungen) und zahlreiche Möglichkeiten der Infrastruktur-Topologie.

GigE Vision ist eine sehr reizvolle Alternative zu klassischen Framegrabber Lösungen, da es sich um eine normierte und gleichzeitig sehr flexible Kameraschnittstelle handelt, die von allen namhaften Hardware und Software Herstellern getragen wird.

Optimierung der Bilddatenübertragung Minimierung der Host-CPU Last

Die Bilddaten werden basierend auf dem UDP-Transportprotokoll über einzelne Ethernet-Pakete von der Kamera zum Host-PC übertragen. Es ist u.a. die Aufgabe des GigE-Vision Treibers, die Bilddaten aus den einzelnen Ethernet-Paketen zu extrahieren und im Bildspeicher zur Verfügung zu stellen. Dieses Entpacken der Bilddaten ist mit CPU-Last verbunden, da jedes einzelne Paket vom Treiber verarbeitet werden muss.

Hier liegt heute noch ein Vorteil von anderen Interfaces wie z.B. Camera Link, die ohne jede CPU Last die Bilddaten zum Host-PC transportieren.

Neben dem Einsatz von sog. High-Performance Treibern, die jedoch nur auf bestimmte Netzwerk-Chipsätze optimiert sind, werden vielfach GigE-Vision Filter Treiber eingesetzt. Diese sind universell mit beliebigen Netzwerkkarten verwendbar und bieten eine sehr gute Balance aus anfallender CPU-Last und flexibler Verwendung auf unterschiedlicher Hardware.

Mit den erweiterten Einstellungen des Netzwerkadapters lässt sich die anfallende CPU-Last bei Verwendung eines GigE FilterTreibers sehr gering halten. Die Standardgröße eines Ethernet-Pakets ist ca. 1500 Byte.

Mit >>Jumbo Frames<< lassen sich mehr Nutzdaten pro Paket übertragen und sich so der Protokoll Overhead erheblich verringern.

Die >>Recieve Descriptoren<< sind Datensegmente, die verwendet werden, um empfangene Pakte in den PC Speicher zu schreiben. Mit einer größeren Anzahl kann der Treiber effizienter und weniger CPU-intensiv arbeiten.

Die Einstellung >>Interrupt Moderation<< regelt das Verhältnis aus empfangenen Daten und den dafür vom Netzwerkadapter ausgelösten Interrupts. Je weniger Interrupts ausgelöst werden, desto geringer ist die Prozessor Last. Zwar steigt gleichzeitig die Latenz beim Empfang der Daten, in der Praxis kann dieser Wert jedoch maximal eingestellt werden (d.h. eine geringere Anzahl an Interrupts wird generiert) ohne die Bildverarbeitungsanwendung zu beeinträchtigen.

Mit diesen Einstellungen auf der Netzwerkkarte ergeben sich in der Praxis auf einem durchschnittlichen Standardsystem mit Pentium 4 2.8 GHz System folgende CPU Lasten in Abhängigkeit vom Übertragungsvolumen (Bild 1 - Diagramm).

Mehrkamerasysteme mit Switches

GigE Vision eignet sich wegen zahlreicher Möglichkeiten der Netzwerk-Infrastruktur-Topologie und vielfältigen Ethernet-Transportmedien auch besonders für Mehrkamera-Lösungen, da sich diese mit einem Minimum an Hardwareaufwand realisieren lassen (Bild 2 GigE-Multi-Kamera).

Auch wenn man mehrere Kameras an einem Gigabit-Ethernet Port über einen Switch betreibt, werden die Bilddaten stabil und sicher erfasst. Natürlich darf in der heutigen Ausbaustufe von GigE-Vision die Bandbreite pro Ethernetport 125 MB/s nicht übersteigen und der Switch selbst muss in der Lage sein, die Jumbo Frames von allen aktiven Kameras parallel zum Ziel zu routen.

Synchronisation und Latenz

Die gleichzeitige Aufnahme von mehreren Kameras kann über einen gemeinsamen externen Trigger synchronisiert werden. Optional ließe sich der Trigger auch nur an eine Kamera geben und von dort direkt an weitere Kameras durchschleifen (daisy-chain).

Die Prosilica Kameras haben eine feste Latenz: exakt 2,4 µs nach Erhalt des gemeinsamen Triggers beginnen sie zeitgleich mit der Belichtung des Bildes und geben das Exposure-Signal über eine programmierbares I/O Leitung aus (Bild 3 Trigger und Exposure).

Bereits mit Beginn des Sensor-Readouts werden die Bilddaten über den Switch zum Host-PC gestreamt. Das Transportverhalten ist sehr deterministisch, innerhalb von 170 µs liegen die Bilder von allen drei Kameras vollständig im PC vor und können dort verarbeitet werden (Bild 4 Trigger und Daten im PC).

Die Reihenfolge des Bildempfangs über die Netzwerkstruktur kann nicht immer vorhergesagt werden, der Zeitunterschied für das Eintreffen der Bilddaten liegt jedoch bei wenigen µs (Bild 5 Daten im PC Zoom).
Dieses Verhalten sollte für Vision-Applikationen mehr als ausreichend sein.

Parallele Datenübertragung

Wenn mehrere Kameras gleichzeitig ins Netzwerk senden, muss die Bandbreite von 125 MB/s pro GigE Port zwischen den einzelnen Kameras aufgeteilt werden. Prosilica bietet den Parameter >>StreamBytesPerSecond<<, der für jede einzelne Kamera im Netzwerk genau festlegt, wie viele Daten gesendet werden. So kann das Transfervolumen optimal auf die Anwendung angepasst werden. Es sind auch nicht gleichmäßige Aufteilungen möglich, wenn z.B. eine Megapixel-Kamera parallel zu einer VGA-Kamera betrieben wird.

Serielle Datenübertragung

Ist nur der Aufnahmezeitpunkt entscheidend, nicht aber unbedingt der Zeitpunkt, wann die Daten im PC zur Verfügung stehen, lässt sich die Datenübertragung mittels >>StreamHold<< serialisieren. Die Kameras belichten ein oder mehrere Bilder und speichern sie im internen onboard Memory, das bis zu 32 MB groß ist. Wird >>StreamHold<< per Software für eine einzelne Kamera wieder deaktiviert beginnt die Datenübertragung der gespeicherten Bilder.
Über diesen Mechanismus lassen sich beliebig viele Kameras betreiben, da ja exakt per Software festgelegt werden kann, wann eine Kamera effektiv das Netzwerk belastet – unabhängig vom Zeitpunkt der Bildaufnahme.
Bild 6 – externer Trigger und StreamHold - zeigt ein solches Setup: drei Kameras stehen auf StreamHold und werden über den externen Trigger gleichzeitig ausgelöst. Das aufgenommene Bild wird nicht sofort über die GigE Schnittstelle ausgegeben, sondern intern gespeichert. Per Software wird es nun explizit angefordert (StreamHold wird deaktiviert) und steht ca. 8 ms später im Host-PC zur Verfügung.

Jenseits der Bottlenecks

Um für schnelle Anwendungen - mit vielen gleichzeitig sendenden Kameras - den Flaschenhals der begrenzten Bandbreite zu umgehen, existieren Multi-Port Karten. Sie verfügen über bis zu vier unabhängige Gigabit-Ethernet Ports. Damit lässt sich ein Netzwerk mit 500 MB/s aufbauen, auch wenn eine einzelne Kamera nie über 125 MB/s hinaus senden darf. Die hierfür zumeist eingesetzte PCIe Technologie erlaubt außerdem eine Transfergeschwindigkeit von 1 GB/s vom Board zum PC - wie es bei CameraLink Framegrabbern heute bereits üblich ist.

Spezialisierte Hardware für GigE Vision - wie das Matrox Solios GigE - addieren zu der Funktionalität einer reinen 4fach Port Netzwerkkarte weitere Features besonders für Bildverarbeitungsaufgaben: das Board beinhaltet beinhaltet eine >>Protocol Offload Engine<< für alle 4 Kanäle, um 0% CPU Last zu erreichen.
Auch die Bild-Rekonstruktion wird komplett auf der Hardware durchgeführt, so dass die Host CPU wirklich vollständig für die eigentliche Bildverarbeitung zur Verfügung steht. Zusätzliche programmierbar Trigger Ein- und Ausgänge sowie ein optionales FPGA für Datenvorverarbeitung runden Matrox Solios GigE ab.

Durch die hohe Flexibilität eines GigE Vision Systems in Hard- und Software lässt sich so immer eine Konfiguration erstellen, die der jeweiligen Aufgabe sowohl in Performance als auch Kosten gerecht wird.
Diese Produktinformation
ist aus unserem Archiv!

Aktuelle Produkte finden Sie über die Suche ...
gradient arrows

RAUSCHER GmbH

Johann-G.Gutenberg-Str. 20
82140 Olching

Tel: +49 (0) 8142/ 44841- 0
Fax: +49 (0) 8142/ 44841- 90