Mit dem Blockscan-Modus Zeilenanwendungen mit Flächenkameras realisieren
1. Einleitung
Im Gegensatz zum Flächenscan-Modus ermöglicht der Blockscan-Modus, dass runde oder rotierende Körper oder lange oder endlose Materialien mit hoher Geschwindigkeit inspiziert werden können (ähnliche wie Zeilenkameras). Hierzu nimmt der BlockScan-Modus einen Area of Interest (AOI) Block, bestehend aus mehreren Zeilen auf. Danach wird eine einstellbare Zahl an AOI-Blöcken zusammen als Gesamtbild übertragen. Dadurch wird der Overhead minimiert, den es anderenfalls bei der Übertagung der AOI-Blöcke als Einzelbilder durch das Transferprotokoll von USB3 bzw. GigE Vision geben würde. Dieses Dokument zeigt, wie mit dem Blockscan-Modus in Verbindung mit BVS CA-SF2 Industriekameras mit IMX Global Shutter Sensoren von Sony gearbeitet wird. Hierbei wird die Industriekamera im Blockscan-Modus durch einen Inkrementalgeber getriggert, um Objekte auf einer rotierenden Trommel aufzunehmen.
Natürlich funktionieren auch andere Hardware-Trigger (beispielsweise neben einem Förderband) oder Software-Trigger als Quelle. In diesem Fall wird "EncoderControl" nicht benötigt und "TriggerSource" muss angepasst werden. In diesem Dokument wird jedoch ein Inkrementalgeber als Trigger-Quelle verwendet.
Folgende Punkte werden in diesem Dokument behandelt:
-
Wie wird der Blockscan-Modus in Verbindung mit einem Inkrementalgeber in ImpactControlCenter konfiguriert?
-
Wie wird ein Endlosbild auf einem rotierenden Objekt erfasst?
-
Was passiert, wenn ein rotierendes Objekt stehen bleibt und noch Bildblöcke im Bildspeicher vorhanden sind?
-
Was passiert, wenn ein rotierendes Objekt die Richtung ändert und sich dann wieder in die Ursprungsrichtung dreht?
-
Was sind die Zeilenraten für
-
Was sind die Vorteile des Blockscan-Modus gegenüber einer Zeilenkamera?
-
Was sind die Nachteile des Blockscan-Modus im Vergleich zu einer Zeilenkamera?
2. Mechanischer Aufbau
Materialien:
-
1 x rotierende Trommel mit Motor
-
1 x Maßband
-
1 x Inkrementalgeber (1000ppr)
-
1 x Kamera (BVS CA-SF2-0032ZC)
-
1 x Lichtquelle; 1 x Trigger-Box
Die rotierende Trommel ist mit einem Motor und einem Inkrementalgeber verbunden. Auf der Oberfläche ist ein Maßband angebracht, um die Abstände ablesen zu können (siehe Bild links oberhalb). Der Inkrementalgeber und die Lichtquelle sind mit einer Trigger-Box über die I/Os der Kamera mit dieser verbunden. (Encoder) Source A → (Camera) Line 4; (Encoder) Source B → (Camera) Line 5.

Abbildung 1: Mechanischer Aufbau

Abbildung 2: Verdrahtung
3.1. Wie wird der Blockscan-Modus in Verbindung mit einem Inkrementalgeber in ImpactControlCenter konfiguriert?
Erforderliche Firmware-Version: > 2.35
Konfigurationsschritte in ImpactControlCenter:
-
Setting → Base → Camera → GenICam → DeviceControl → DeviceScanType: mvBlockScan.
-
Setting → Base → Camera → GenICam → ImageFormatControl: configure OffsetY, mvBlockscanLinesPerBlock(>= 16), mvBlockscanBlockCount(>= 2).
-
Setting → Base → Camera → GenICam → ImageFormatControl → PixelFormat: BayerRG8 (für Farbkameras).
-
Setting → Base → Camera → GenICam → EncoderControl → EncoderSourceA: Line4; EncoderSourceB: Line5; EncoderDivider: 1; EncoderOutputMode: PositionDown/DirectionDown.
-
Setting → Base → Camera → GenICam → AcquisitionControl → TriggerSelector: FrameStart; TriggerMode: On; TriggerSource: Encoder0.
-
Setting → Base → Camera → GenICam → AcquisitionControl → ExposureTime.
-
Setting → Base → Camera → GenICam → DigitalIOControl → LineSelector: der Ausgang, an welchem die Lichtquelle angeschlossen ist; LineSource: ExposureActive.
-
(optional) Setting → Base → Camera → GenICam → DigitalIOControl → debounce time für Line4 und Line5 setzen
3.2. Wie wird ein Endlosbild auf einem rotierenden Objekt erfasst?
Nach einem gewissen zurückgelegten Weg, erzeugt der Inkrementalgeber einen Puls. Jeder Puls (falls Encoder Divider = 1) löst die Aufnahme einer Anzahl an Bildblöcken aus, die dann zu einem Gesamtbild zusammengefasst werden. Die nachfolgende Skizze zeigt den Querschnitt des Inspektionssystems.

Abbildung 3: Querschnitt des Inspektionssystems
Wird eine neuer Trigger-Puls erzeugt, hat sich die Trommel um den Winkel α weitergedreht, welche den Umfang ΔC abdeckt. Da r der Radius der Trommel, n der Encoder Divider, welcher die Anzahl der Inkrementalpulse vorgibt und p die Inkrementalpulse (ppr: pulse per revolution) sind, kann daraus ΔC ermittelt werden:
ΔC = 2*π*r*n/p (eq-1)
Damit ein Endlosbild aus den unterschiedlichen Blöcken (y1', y2'......) generiert werden kann, muss die Höhe des Sichtfeldes eines jeden Blockes mit ΔC identisch sein:
y1 = y2 = ΔC (eq-2)

Abbildung 4: Drehung bis zum nächsten Trigger-Puls
Da in unserem Beispiel als Objekt ein Maßband verwendet wird, kann die Höhe des Objekts y(mm) und die entsprechende Bildhöhe y'(Pixel) leicht abgelesen werden. Dadurch kann der Abbildungsmaßstab des Objektivs β (Pixel/mm) auch leicht ermittelt werden:
β = y'/y (eq-3)
Werden alle drei Formel eq-1, eq-2 und eq-3 zusammengeführt, kann der benötigte Wert lines per block (y1' oder y2') für Endlosbilder in diesem System extrahiert werden:
LinesPerBlock = (2*π*r*β/p)*n (eq-4)
Die Berechnung wurde bestätigt. Im Aufbau wird ein korrektes Endlosbild mit EncoderDivider in ImpactControlCenter = 3 und LinesPerBlock = 20 erzeugt. Das Testergebnis sieht wie folgt aus.

Abbildung 5: Korrektes Endlosbild
Falls LinesPerBlock zu niedrig gewählt wird, weist das erzeugte Bild Lücken auf (siehe Bild unten links). Falls LinesPerBlock zu groß gewählt wird, dann gibt es Überlappungen im Bild (siehe Bild unten rechts).


Abbildung 6: Lücken und Überlappungen im Bild
Falls in anderen Applikationen ein niedriger lines per block (z.B. 16) erforderlich ist, dann müssen β und n angepasst werden, um ein passendes Endlosbild zu erhalten:
β = (LinesPerBlock*p/(2*π*r))*(1/n) (eq-5) (abgeleitet von eq-4)
Da β grob durch Gaußsche Formel β = |f'/(f'-S)| berechnet werden kann, kann β wiederum durch Anpassung der Brennweite f' und des Arbeitsabstands S variiert werden.
3.3. Drehrichtung
In diesem Beispiel bewegt sich das Objekt, von der Kamera aus gesehen, nach oben. Würde die Kamera auf der anderen Seite der Trommel angebracht werden, dann würde sich das Objekt nach unten bewegen, obwohl sich die Drehrichtung der Trommel nicht geändert hätte. Der Inkrementalgeber würde weiter nach unten zählen und folgendes Bild würde daraus resultieren.

Abbildung 7: Falsche Reihenfolge der zusammengefügten Blöcke
Die Blöcke werden erkennbar in der falschen Reihenfolge zusammengefügt. Dies kann durch Spiegelung der einzelnen Blöcke ausgeglichen werden.
-
Setting → Base → Camera → GenICam → ImageFormatControl → ReverseX
-
Setting → Base → Camera → GenICam → ImageFormatControl → ReverseY
Das resultierende Bild ist invertiert und entspricht nicht der Realität, was für einzelne Anwendungen problematisch sein könnte. Aus diesem Grund empfehlen wir, dass die Kamera so angebracht ist, dass das Objekt sich in Bezug auf den Sensor nach oben bewegt.

Abbildung 8: Invertierte Reihenfolge der zusammengefügten Blöcke
4. Was passiert, wenn ein rotierendes Objekt stehen bleibt und noch Bildblöcke im Bildspeicher vorhanden sind?
Während der Erfassung sendet der Sensor kontinuierlich Bildblöcke an den FPGA, welcher die Blöcke zu einem Frame/Bild zusammenfasst, bis der gegebene BlockCount erreicht wird. Der komplette Frame / das komplette Bild wird dann im Bildspeicher des Treibers abgelegt. Wird die Rotation gestoppt, befinden sich Bildblöcke im FPGA. Werden diese Blöcke nicht gelöscht, dann werden diesen weitere Blöcke hinzugefügt, bis der Frame / das Bild vollständig ist. Somit erhalten wir ein Bild aus zwei unterschiedlichen Objekten, was nicht gewünscht ist. Aus diesem Grund sollte Abort in ImpactControlCenter oder imageRequestReset von unserem SDK aufgerufen werden, bevor eine Inspektion mit einem neuen Objekt gestartet werden soll, um den unvollständigen Frame im FPGA zu verwerfen.
Der Abort Aufruf benötigt ca. 200 µs, falls der Host nicht überlastet ist.
5. Was passiert, wenn ein rotierendes Objekt die Richtung ändert und sich dann wieder in die Ursprungsrichtung dreht?
Unsere Firmware unterstützt 3 Encoder Output Modi: position up/down, direction up/down, motion.
Eine grafische Erklärung sieht wie folgt aus:

Abbildung 9: Encoder Output Modi
Sobald position up/down ausgewähl wird, wird das Bild angehalten, sobald sich die Rotationsrichtung ändert. Rotiert die Trommel wieder in die ursprüngliche Richtung, dann werden die kommenden Blöcke an die Stelle des Stopps korrekt angehängt. So wird die Erfassung nicht von einem Richtungswechsel betroffen. Unser Test hat das bestätigt.

Abbildung 10: Korrektes Bild auch nach Richtungswechsel
6. Was sind die Zeilenraten für BVS CA-SF2-0032ZC/G, BVS CA-SF2-0051ZC/G und BVS CA-SF2-0089ZC/G?
|
BVS CA-SF2- |
0032ZC/G |
0051ZC/G |
0089ZG/C |
|
Zeilenrate (kHz) @ 16 Zeilen/Block (kHz) |
56,0 |
48,5 |
23,6 |
|
Blockrate (kHz) @ 16 Zeilen/Block (kHz)[3] |
3,5 |
3,1 |
1,5 |
|
Max. Belichtungszeit (µs) @ 16 Zeilen/Block (kHz)[1][2] |
199 |
228 |
440 |
-
[1] Max. Belichtungszeit (µs) @ 16 Zeilen/Block (kHz) kann beobachtet werden, sobald mvAcquisitionFrameRateLimitMode auf mvDeviceMaxSensorThroughput gesetzt ist.
-
[2] Max. Belichtungszeit (µs) @ 16 Zeilen/Block (kHz) kann auch mittels 1/BlockRate - tp berechnet werden, wobei tp die Zeit zwischen zwei benachbarten Belichtungszeiten ist, wo kein Trigger stattfinden darf. tp für BVS CA-SF2-0032Z, BVS CA-SF2-0051Z und BVS CA-SF2-0089Z beträgt 86.5 µs, 102 µs und 229.5 µs.
-
[3] Blockrate (kHz) @ n Zeilen/Block (kHz) = 1s / (readout time for n lines + readout time for vertical blank lines). Für BVS CA-SF2-0032Z, BVS CA-SF2-0051Z und BVS CA-SF2-0089Z ist die Auslesezeit für vertical blank lines 190 µs, 220 µs und 509 µs.
7. Was sind die Vorteile des Blockscan-Modus gegenüber einer Zeilenkamera?
-
Standard-Schnittstelle: USB3 Vision und GigE Vision im Gegensatz zu CoaXPress und CameraLink.
-
Vereinfachter Systemaufbau: Da die Kamera auch als Flächenkamera verwendet werden kann, ist es wesentlich einfacher, den Fokus einzustellen, um ein scharfes Bild zu bekommen.
-
Weniger Blockverluste aufgrund des FPGAs in der Kamera.
-
Weniger Last auf Seiten des Hosts: Blöcke werden in der Kamera gesammelt.
-
Günstiger als Zeilenkameras (bei gleicher Zeilenfrequenz).
8. Was sind die Nachteile des Blockscan-Modus im Vergleich zu einer Zeilenkamera?
-
Endlose Bilder benötigen eine exakte Berechnung bei jeder neuen Applikation.
-
Das Bildseitenverhältnis (Höhe zu Breite Verhältnis) muss immer 1:1 sein, um periodische Verzeichnungen in Y-Richtung des Ergebnisbildes zu vermeiden (im Gegensatz zu Zeilenkameras, bei denen jedes Bildseitenverhältnis möglich ist).
-
Aus diesem Grund müssen Optiken und Timings bei jeder Anwendung sorgsam angepasst werden.
-
Min. Zeilen/Block = 16.
-
Der kleinste Erhöhungs-/Erniedrigungsschrittweite des BlockCounts beträgt 4. Der BlockCount kann demnach nur 16, 20, 24, 28, 32 usw. sein.
-
Beide Eingangsleitungen der Kamera sind durch den Inkrementalgeber belegt. Daher kann kein weitere Hardware-Trigger (bspw. eine Lichtschranke) angeschlossen werden.
Disclaimer
Die hier unentgeltlich bereitgestellte technische Information zu Ihrer Anfrage basiert auf dem von BALLUFF vorliegenden Kenntnisstand um Sie bestmöglich bei Ihrer technischen Fragestellung bzw. Anwendung zu unterstützen und Lösungsansätze aufzuzeigen.
Nachdem die technische Information unentgeltlich zur Verfügung gestellt wird, ist die Sach- und Rechtsmängelhaftung von BALLUFF ausgeschlossen, es sei denn, es liegt eine vorsätzliche oder grob fahrlässige Pflichtverletzung von BALLUFF oder Arglist auf Seiten von BALLUFF vor. Diesbezüglich haftet BALLUFF auf Schadenersatz wegen Mängeln der technischen Information oder wegen der Verletzung sonstiger vertraglicher oder außervertraglicher Pflichten nur bei Vorsatz oder grober Fahrlässigkeit. Die vorstehende Haftungsbeschränkung gilt nicht bei Arglist, bei Verletzungen des Lebens, des Körpers oder der Gesundheit, bei der Übernahme einer Garantie sowie bei der Haftung nach dem Produkthaftungsgesetz. Eine weitergehende Haftung von BALLUFF ist ausgeschlossen.
Prüfen Sie vor dem Einsatz in Anlagen und Maschinen, ob die hier bereitgestellte, unentgeltliche Information für Ihre Anwendung geeignet ist. Mit der Nutzung der hier unentgeltlich vorgelegten Informationen erkennen Sie diese Haftungsregelung an.