FB_FileWrite
Der Funktionsbaustein FB_FileWrite schreibt Daten in eine Datei. Die Datei muss für einen Schreibzugriff zuvor mit dem entsprechenden Modus für Schreibzugriff geöffnet worden sein und zur weiteren Verarbeitung durch externe Programme wieder geschlossen werden.
Dieser Funktionsbaustein ist nur bedingt für ein Logging in Echtzeit geeignet. |
Eingänge
VAR_INPUT
sNetId : T_AmsNetId;
hFile : UINT;
pWriteBuff : PVOID;
cbWriteLen : 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. |
pWriteBuff | PVOID | Adresse des Puffers, der die zu schreibenden Daten enthält. Der Puffer kann eine Einzelvariable, ein Array oder eine Struktur sein, dessen Adresse mit dem ADR-Operator ermittelt werden kann. |
cbWriteLen | UDINT | Anzahl der zu schreibenden 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;
cbWrite : UDINT;
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. |
cbWrite | UDINT | Enthält die Anzahl der zuletzt erfolgreich geschriebenen Datenbytes. Beim Schreibfehler ist die Anzahl der erfolgreich geschriebenen Datenbytes kleiner als die angeforderte Länge (cbWriteLen) oder Null. Ein Schreibfehler kann z. B. dann auftreten wenn der Datenträger voll ist. Beim Schreibfehler wird der bError- und nErrID-Ausgang nicht gesetzt. Da die SPS-Applikation die Anzahl der zu schreibenden Datenbytes kennt, kann sie die tatsächlich geschriebene Länge mit der angeforderten Länge vergleichen und so Schreibfehler erkennen. Beim Schreibfehler hat der interne Dateizeiger eine undefinierte Position. |
Befehlsspezifischer Fehlercode | Mögliche Ursache |
---|---|
0x703 | Invalid or unknown file handle. |
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
fbFileWrite : FB_FileWrite;
hFile : UINT;
bFileWrite : BOOL;
bFileWriteBusy : BOOL;
bFileWriteError : BOOL;
nFileWriteErrorId: UDINT;
nFileWriteCount : UDINT;
fileData : ARRAY[0..9] OF BYTE;
END_VAR
Im Beispiel werden, nach steigender Flanke von bExecute, 10 Byte des Arrays fileData in die Datei geschrieben.
Voraussetzungen
Entwicklungsumgebung | Zielplattform | Einzubindende SPS-Bibliotheken (Kategoriegruppe) |
---|---|---|
TwinCAT v3.1.0 | PC oder CX (x86, x64, ARM) | Tc2_System (System) |