FB_VN_FileSourceControl
This FB provides access to the images send by a File Source instance.
Do not call the main FB directly. Only use the available methods.
Methods
Name |
Description |
---|---|
Gets the current available image (if any). | |
Gets the current available image (if any) and the corresponding file name. | |
Activates the File Source. If not in trigger mode, it will start sending images. | |
Deactivates the File Source. It will stop sending images. | |
Reset the controller to initial state (might require multiple calls depending on current state, until S_OK is returned) | |
Gets the current state of the internal camera control state machine. | |
If in trigger mode, this function triggers the next image in the list. | |
If in trigger mode, this function triggers a specific image in the list. | |
If in trigger mode, this function triggers a specific image in the list by name. |
Weiterführende Informationen
Der Funktionsblock FB_VN_FileSourceControl
kann File Source Instanzen mit vollem Funktionsumfang in der SPS ansteuern. Alternativ ist dies mit beschränkter Funktionalität auch mit dem Funktionsbaustein FB_VN_SimpleCameraControl möglich.
Zustandsautomat
Die nachfolgende Grafik zeigt den Zustandsautomaten. Die Hauptzustände sind dabei blau gekennzeichnet, die Übergangszustände grau und der Error-Zustand rot.
Zur Steuerung des Zustandsautomats können folgende Methoden genutzt werden:
Wenn eine Methode in einem Zustand aufgerufen wird, für den sie nicht gedacht ist, wird der Fehlercode INVALIDSTATE
(16#712
) zurückgegeben.
Anwendung mit kontinuierlichem Bildeinzug
Ein Zustandsautomat, der kontinuierlich empfangene Bilder abruft, sieht z.B. so aus:
VAR
fbFileSource : FB_VN_FileSourceControl;
eState : ETcVnCameraState;
ipImageIn : ITcVnImage;
ipImageInDisp : ITcVnDisplayableImage;
hr : HRESULT;
nNewImageCounter: UINT;
END_VAR
eState := fbFileSource.GetState();
CASE eState OF
TCVN_CS_INITIAL, TCVN_CS_OPENING, TCVN_CS_OPENED, TCVN_CS_STARTACQUISITION:
hr := fbFileSource.StartAcquisition();
TCVN_CS_ACQUIRING:
hr := fbFileSource.GetCurrentImage(ipImageIn);
// Check if new Image was received
IF SUCCEEDED(hr) AND ipImageIn <> 0 THEN
nNewImageCounter := nNewImageCounter + 1;
// Place to call vision algorithms
hr := F_VN_TransformIntoDisplayableImage(ipImageIn, ipImageInDisp, hr);
END_IF
TCVN_CS_ERROR:
hr := fbFileSource.Reset();
END_CASE
Anwendung mit Trigger
Ein Zustandsautomat, der kontinuierlich ein Bild mit einem speziellen Dateinamen triggert, sieht z.B. so aus:
VAR
fbFileSource : FB_VN_FileSourceControl;
eState : ETcVnCameraState;
ipImageIn : ITcVnImage;
ipImageInDisp : ITcVnDisplayableImage;
bTrigger : BOOL := TRUE;
sFileName : STRING := 'FileName.bmp';
hr : HRESULT;
nNewImageCounter: UINT;
END_VAR
eState := fbFileSource.GetState();
CASE eState OF
TCVN_CS_INITIAL, TCVN_CS_OPENING, TCVN_CS_OPENED, TCVN_CS_STARTACQUISITION:
hr := fbFileSource.StartAcquisition();
TCVN_CS_TRIGGERING:
hr := fbFileSource.TriggerImage();
TCVN_CS_ACQUIRING:
IF bTrigger THEN
hr := fbFileSource.TriggerImageByName(sFileName);
IF SUCCEEDED(hr) THEN
bTrigger := FALSE;
END_IF
ELSE
hr := fbFileSource.GetCurrentImage(ipImageIn);
// Check if new Image was received
IF SUCCEEDED(hr) AND ipImageIn <> 0 THEN
nNewImageCounter := nNewImageCounter + 1;
// Trigger next image
bTrigger := TRUE;
// Place to call vision algorithms
hr := F_VN_TransformIntoDisplayableImage(ipImageIn, ipImageInDisp, hr);
END_IF
END_IF
TCVN_CS_ERROR:
hr := fbFileSource.Reset();
END_CASE
Alternativ zu der Methode TriggerImageByName(sFileName)
kann die TriggerImage()
verwendet werden, um immer das nächste Bild aus der Liste des File Source Controls zu erhalten.
Beispiele
Verwandte Funktionsblöcke
- FB_VN_SimpleCameraControl für Kameras und File Sources
- FB_VN_GevCameraControl für GigE Vision Kameras
- FB_VN_FileSourceControl für File Sources
Required License
TC3 Vision Base
System Requirements
Development environment | Target platform | PLC libraries to include |
---|---|---|
TwinCAT V3.1.4024.59 or later | PC or CX (x64) with PL50, e.g. Intel 4-core Atom CPU | Tc3_Vision |