FILEREAD

FILEREAD 1:

Mit diesem Funktionsbaustein kann der Inhalt einer bereits geöffneten Datei ausgelesen werden. Die Datei muss vor einem Lesezugriff mit dem Modus "FILE_OPENREAD" geöffnet worden sein.

VAR_INPUT

VAR_INPUT
    NETID       : T_AmsNetId;   (* ams net id *)
    HFILE       : UINT;         (* file handle *)
    BUFADDR     : DWORD;        (* buffer address for read *)
    COUNT       : UDINT;        (* count of bytes for read *)
    READ        : BOOL;         (* read control input *)
    TMOUT       : TIME;
END_VAR

NETID : Ist ein String, der die AMS-Netzwerkkennung des Zielgerätes enthält, an das der ADS-Befehl gerichtet wird. 

HFILE : Wird mit dem, durch FILEOPEN bereits erzeugten, File-Handle belegt.

BUFADDR : Enthält die Adresse des Puffers, in den die Daten gelesen werden. Der Puffer kann eine Einzelvariable, ein Array oder eine Struktur sein, dessen Adresse mit dem ADR - Operator ermittelt werden kann.

COUNT : Enthält die Anzahl der zu lesenden Bytes.

READ : Durch eine steigende Flanke an diesem Eingang wird der ADS-Befehl ausgelöst.

TMOUT : Gibt die Zeit bis zum Abbruch der Funktion an.

VAR_OUTPUT

VAR_OUTPUT
    BUSY        : BOOL;
    ERR         : BOOL;
    ERRID       : UDINT;
    COUNT_R     : UDINT;            (* count of bytes actually read *)
END_VAR

BUSY : Dieser Ausgang bleibt solange auf TRUE, bis der Baustein eine Befehlsanforderung ausführt, längstens aber für die Dauer der, an dem 'Timeout'-Eingang angelegten, Zeit. Während Busy = TRUE wird an den Eingängen kein neuer Befehl angenommen. Bitte beachten Sie, dass nicht die Ausführung des Dienstes, sondern nur dessen Annahme zeitlich überwacht wird.

ERR : Dieser Ausgang wird auf TRUE geschaltet, wenn bei der Ausführung eines Befehls ein Fehler aufgetreten ist. Der befehlsspezifische Fehlercode ist in 'ErrorId' enthalten. Wenn der Baustein ein Timeout-Fehler hat, so ist 'Error' = TRUE und 'ErrorId' = 1861 (Hexadezimal 0x745). Wird durch das Ausführen eines Befehls an den Eingängen auf FALSE zurückgesetzt.

ERRID : Enthält den befehlsspezifischen Fehlercode des zuletzt ausgeführten Befehls. Wird durch das Ausführen eines Befehls an den Eingängen auf 0 zurückgesetzt. Ist der Fehlercode -1 (16#FFFF), so kann der Schreibvorgang nicht durchgeführt werden, weil z.B. die Datei nicht korrekt geöffnet wurde.

COUNT_R : Enthält die Anzahl der aktuell gelesenen Bytes.

 

Beispiel für den Aufruf des Bausteins in FBD:

FILEREAD 2:

Nach steigender Flanke von "bReadTrig" und erfolgreicher Ausführung des Lese-Befehls, befinden sich in "byArrReadData" die aktuell gelesenen Bytes der Datei. Wie viele Bytes beim jeweils letzten Lesevorgang tatsächlich gelesen wurden, kann anhand der Parameters "COUNT_R" ermittelt werden. Im Beispiel wird angezeigt, dass neun Bytes gelesen wurden.

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende SPS Bibliotheken

TwinCAT v2.7.0

PC or CX (x86)

PLCSystem.Lib

TwinCAT v2.8.0

PC or CX (x86)

TcSystem.Lib

TwinCAT v2.10.0 Build >= 1301

CX (ARM)

TcSystem.Lib