FB_FileWrite

FB_FileWrite 1:

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.

FB_FileWrite 2:

Dieser Funktionsbaustein ist nur bedingt für ein Logging in Echtzeit geeignet.
Für eine gute Performance empfehlen wir die Verwendung des kostenpflichtigen Produkts TF3500 TwinCAT Analytics Logger.

FB_FileWrite 3: 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.

FB_FileWrite 4: 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 ST:

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
FB_FileWrite 5:

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)