FB_FileRead
Mit diesem Funktionsbaustein kann der Inhalt einer bereits geöffneten Datei ausgelesen werden. Die Datei muss vor einem Lesezugriff im entsprechenden Modus geöffnet worden sein.
VAR_INPUT
VAR_INPUT
sNetId : T_AmsNetId;
hFile : UINT;
pReadBuff : DWORD;
cbReadLen : UDINT;
bExecute : BOOL;
tTimeout : TIME;
END_VAR
sNetId : Ist ein String, der die AMS-Netzwerkkennung des Zielgerätes enthält, an das der ADS-Befehl gerichtet wird.
hFile : Datei-Handle.
pReadBuff : Enthält die 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 : Enthält die Anzahl der zu lesenden Bytes.
bExecute : Durch eine steigende Flanke an diesem Eingang wird der Funktionsbaustein aktiviert.
tTimeout : Gibt die Timeout-Zeit an, die bei der Ausführung des ADS-Kommandos nicht überschritten werden darf.
VAR_OUTPUT
VAR_OUTPUT
bBusy : BOOL;
bError : BOOL;
nErrId : UDINT;
cbRead : UDINT;
bEOF : BOOL;
END_VAR
bBusy: Bei der Aktivierung des Funktionsbausteins wird dieser Ausgang gesetzt und bleibt gesetzt, bis eine Rückmeldung erfolgt.
bError: Sollte ein ADS-Fehler bei der Übertragung des Kommandos erfolgen, dann wird dieser Ausgang gesetzt, nachdem der bBusy-Ausgang zurückgesetzt wurde.
nErrId: Liefert bei einem gesetzten bError-Ausgang die ADS-Fehlernummer.
cbRead : Enthält die Anzahl der aktuell gelesenen Bytes.
bEOF : Ist dieser Ausgang gesetzt, dann wurde das Dateiende erreicht und keine weiteren Datenbytes konnten gelesen werden (cbRead=0). Dieser Ausgang wird nicht gesetzt wenn noch einige Datenbytes gelesen werden konnten (cbRead>0).
Function specific ADS error code | Possible reason |
---|---|
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 der Parameters "cbRead" ermittelt werden.
Voraussetzungen
Entwicklungsumgebung | Zielplattform | Einzubindende SPS Bibliotheken |
---|---|---|
TwinCAT v2.8.0 | PC or CX (x86) | TcSystem.Lib |
TwinCAT v2.10.0 Build >= 1301 | CX (ARM) | TcSystem.Lib |