Image Acquisition
Diese Gruppe enthält Funktionsblöcke zur Bildaufnahme mit Vision-Geräten (GigE Vision Kamera und File Source Objekte).
Funktionsblöcke
- SimpleCameraControl für Kameras und File Sources
- GevCameraControl für GigE Vision Kameras
- FileSourceControl für File Sources
Allgemeines
Die Funktionsblöcke in dieser Gruppe stellen einen Proxy für die Image Provider TcCOM-Objekte dar. Dementsprechend müssen Sie nicht zyklisch aufgerufen werden. Stattdessen wird das TcCOM-Objekt über die Methoden des Funktionsblocks gesteuert.
Zustandsautomat
Alle Funktionsblöcke zur Bildaufnahme beinhalten einen Zustandsautomaten, um den Zustand des repräsentierten Geräts zu verwalten. Im Wesentlichen muss ein Funktionsblock in den ACQUIRING Zustand gebracht werden, um Bilder kontinuierlich zu empfangen. Der INITIAL Zustand stellt den Ausgangspunkt nach einem Neustart oder Reset dar, von dem aus das INITIALIZING angestoßen werden kann. Ab dem OPENED-Zustand ist der Kommunikationskanal zu dem Gerät geöffnet, um z.B. Registerwerte auslesen oder schreiben zu können.
Alle Zustände werden durch das Enum ETcVnCameraState repräsentiert und sind folgend erklärt:
Hauptzustände
Die Hauptzustände sind stationäre Zustände. Sie stellen im Wesentlichen dar, ob Verbindung zu einem Vision-Geräte besteht (OPENED
) und ob das Gerät Bilder aufnimmt (ACQUIRING
) sowie ob es einen Fehler bei der Verbindung mit dem Gerät gibt (ERROR
). Zwischen diesen Zuständen können Sie mit den Methoden der FBs wechseln. Im Regelfall erfolgt der Übergang zwischen zwei Hauptzuständen nicht sofort, sondern über mindestens einen Zyklus. In dieser Zwischenzeit ist das Vision-Gerät in einem Zwischenzustand.
Zustand | Beschreibung |
---|---|
ERROR | Fehlerzustand, aus dem jedes Gerät nur durch Aufruf der Methode |
INITIAL | Initialer Zustand jedes Geräts. |
INITIALIZED | Ähnlich wie INITIAL, wobei die Kamera manuell initialisiert wurde (z.B. mit Force-IP und den Initialization Commands) |
OPENED | Es besteht eine Verbindung zur Kamera, einzelne Bilder können getriggert werden und Kameraregister können gelesen und beschrieben werden. Dieser Zustand kann mit der Methode StartAcquisition übersprungen werden. |
ACQUIRING | Gerät befindet sich im Aufnahmezustand und sendet je nach Einstellung des Geräts Bilder. |
Zwischenzustände
Die Zwischenzustände sind nötig, da die meisten Aktionen nicht sofort fertiggestellt werden können (z. B. die Bildaufnahme). Wenn sich die Funktionsblöcke in einem dieser Zwischenzustände befinden, muss die entsprechende Methode erneut aufgerufen werden, um den Übergang in den jeweiligen Hauptzustand zu vervollständigen.
Zustand | Beschreibung |
---|---|
INITIALIZING | INITIAL > INITIALIZED |
OPENING | INITIAL > OPENED und INITIALIZED > OPENED |
STARTACQUISITION | OPENED > ACQUIRING. |
STOPACQUISITION | ACQUIRING > OPENED |
RESETTINGFEATURES | OPENED > OPENED |
TRIGGERING | OPENED > OPENED und ACQUIRING > ACQUIRING |
CLOSING | OPENED > INITIALIZED |
Methoden müssen in Zwischenzuständen aufgerufen werden! Eine jeweilige Methode für Zustandsübergänge muss auch in den Zwischenzuständen aufgerufen werden. Erst wenn nach einem entsprechenden Methodenaufruf ein stationärer Zustand mit der Methode |
Ein Zustandsautomat in C++ kann dann entweder mit einer switch
Struktur oder mit einer if … else if …
-Struktur implementiert werden.