FB_FileRead
Mit dem Funktionsbaustein FB_FileRead kann der Inhalt einer bereits geöffneten Datei ausgelesen werden. Die Datei muss vor einem Lesezugriff im entsprechenden Modus geöffnet worden sein. Dabei ist neben dem FOPEN_MODEREAD
auch das passende Format (FOPEN_MODEBINARY
oder FOPEN_MODETEXT
) wichtig, um das gewünschte Resultat zu erzielen.
Dieser Funktionsbaustein ist nur bedingt für ein Logging in Echtzeit geeignet. |
Eingänge
VAR_INPUT
sNetId : T_AmsNetId;
hFile : UINT;
pReadBuff : PVOID;
cbReadLen : UDINT;
bExecute : BOOL;
tTimeout : TIME := DEFAULT_ADS_TIMEOUT;
END_VAR
Name | Typ | Beschreibung |
---|---|---|
sNetId | T_AmsNetId | String, der die AMS-Netzwerkkennung des Zielgerätes enthält, an das der ADS-Befehl gerichtet wird (Typ: T_AmsNetId). |
hFile | UINT | Datei-Handle, welches beim Aufruf des Funktionsbausteins FB_FileOpen erzeugt wurde. |
pReadBuff | PVOID | Adresse des Puffers, in den die Daten gelesen werden sollen. Der Puffer kann eine Einzelvariable, ein Array oder eine Struktur sein, dessen Adresse mit dem ADR-Operator ermittelt werden kann. |
cbReadLen | UDINT | Anzahl der zu lesenden Bytes |
bExecute | BOOL | Durch eine steigende Flanke an diesem Eingang wird der Funktionsbaustein aktiviert. |
tTimeout | TIME | Gibt die Timeout-Zeit an, die bei der Ausführung des ADS-Kommandos nicht überschritten werden darf. |
Ausgänge
VAR_OUTPUT
bBusy : BOOL;
bError : BOOL;
nErrId : UDINT;
cbRead : UDINT;
bEOF : BOOL;
END_VAR
Name | Typ | Beschreibung |
---|---|---|
bBusy | BOOL | Bei der Aktivierung des Funktionsbausteins wird dieser Ausgang auf TRUE gesetzt und bleibt gesetzt, bis eine Rückmeldung erfolgt. Solange bBusy = TRUE ist, kann kein neuer Befehl ausgeführt werden. |
bError | BOOL | Wenn bei der Ausführung des Befehls ein Fehler auftritt, wird dieser Ausgang gesetzt, nachdem der bBusy-Ausgang zurückgesetzt wurde. |
nErrId | UDINT | Liefert bei einem gesetzten bError-Ausgang den ADS-Fehlercode oder den befehlsspezifischen Fehlercode. |
cbRead | UDINT | Anzahl der aktuell gelesenen Bytes |
bEOF | BOOL | Dieser Ausgang wird gesetzt, wenn das Dateiende erreicht worden ist und keine weiteren Datenbytes gelesen werden konnten (cbRead=0). Dieser Ausgang wird nicht gesetzt, wenn noch Datenbytes gelesen werden konnten (cbRead>0). |
Befehlerspezifischer Fehlercode | Mögliche Ursache |
---|---|
0x703 | Invalid or unknown file handle. |
0x70A | No memory for read buffer. |
0x70E | File was opened with wrong method (e.g. with obsolete FILEOPEN function block). |
Beispiel für den Aufruf des Bausteins in FBD:
PROGRAM Test
VAR
fbFileRead : FB_FileRead;
hFile : UINT;
bFileRead : BOOL;
bFileReadBusy : BOOL;
bFileReadError : BOOL;
nFileReadErrorId : UDINT;
nFileReadCount : UDINT;
bFileReadEOF : BOOL;
fileData : ARRAY[0..9] OF BYTE;
END_VAR
Nach steigender Flanke von bExecute und erfolgreicher Ausführung des Lese-Befehls, befinden sich in FILEDATA die aktuell gelesenen Bytes der Datei. Wie viele Bytes beim jeweils letzten Lesevorgang tatsächlich gelesen wurden, kann anhand des Parameters cbRead ermittelt werden.
Voraussetzungen
Entwicklungsumgebung | Zielplattform | Einzubindende SPS-Bibliotheken (Kategoriegruppe) |
---|---|---|
TwinCAT v3.1.0 | PC oder CX (x86, x64, ARM) | Tc2_System (System) |