FB_FileRead

FB_FileRead 1:

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
FB_FileRead 2:

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