FILEREAD
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:

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 |