FB_FileOpen

FB_FileOpen 1:

Der Funktionsbaustein legt eine neue Datei an, bzw. öffnet eine bereits bestehende Datei zur weiteren Bearbeitung.

VAR_INPUT

VAR_INPUT
    sNetId      : T_AmsNetId;
    sPathName   : T_MaxString;
    nMode       : DWORD;
    ePath       : E_OpenPath := PATH_GENERIC;
    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.

sPathName    : Enthält den Pfad- und Dateinamen der zu öffnenden Datei.

FB_FileOpen 2:

Der Pfad kann nur auf das lokale File System des Rechners zeigen. Das bedeutet, Netzwerkpfade können hier nicht angegeben werden!

nMode    : Enthält den Modus für das Öffnen der Datei. Die nachfolgend aufgeführten Codes sind die verschiedenen Öffnungsmodi, die bereits in der Bibliothek als Konstanten vordefiniert sind, und dem Baustein dementsprechend symbolisch übergeben werden können. Die Öffnungsmodi können durch ODER-Verknüpfung kombiniert werden.  Die Öffnungsmodi  können auf ähnliche Weise wie die Öffnungsmodi der fopen-Funktion in C bzw. C++ kombiniert werden.

Modi

Beschreibung

FOPEN_MODEREAD

"r": Öffnet eine Datei zum Lesen. Wenn die Datei nicht gefunden werden kann oder nicht existiert, wird ein Fehler zurückgeliefert.

FOPEN_MODEWRITE

"w": Öffnet eine leere Datei zum Schreiben. Wenn die Datei bereits existiert, dann wird sie überschrieben.

FOPEN_MODEAPPEND

"a": Öffnet eine Datei zum Schreiben am Ende der Datei (anhängen). Wenn die Datei nicht existiert, wird zuerst  eine neue angelegt.

FOPEN_MODEREAD OR FOPEN_MODEPLUS

"r+": Öffnet eine Datei zum Lesen und zum Schreiben. Die Datei muss existieren.

FOPEN_MODEWRITE OR FOPEN_MODEPLUS

"w+": Öffnet eine leere Datei zum Lesen und zum Schreiben. Wenn die Datei bereits existiert, dann wird sie überschrieben.

FOPEN_MODEAPPEND OR FOPEN_MODEPLUS

"a+": Öffnet eine Datei zum Lesen und zum Schreiben am Ende der Datei (anhängen). Wenn die Datei nicht existiert, wird zuerst eine neue angelegt. Dazu muss der Speicherpfad bekannt sein, andernfalls erscheint der Fehler 1804.

Alle Schreiboperationen werden immer am Ende einer Datei ausgeführt, wenn diese Datei in dem Modi "a" oder "a+" geöffnet wurde. Der Dateizeiger kann mit FB_FileSeek versetzt werden, er wird aber beim Schreiben immer zuerst ans Ende der Datei bewegt. D.h. existierende Daten können nicht überschrieben werden.

FOPEN_MODEBINARY

"b": Öffnet die Datei im Binär-Mode

FOPEN_MODETEXT

"t": Öffnet die Datei im Text-Mode

ePath    : Über diesen Eingang kann ein TwinCAT - Systempfad auf dem Zielgerät zum öffnen der Datei angewählt werden.

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.

 

Funktionsspezifischer ADS Fehlercode

Mögliche Ursache

0x703

Unbekannter oder ungültiger nMode oder ePath Parameter.

0x70C

Datei nicht gefunden. Ungültziger Dateiname oder Dateipfad.

0x716

Keine weiteren freien File Handles.

VAR_OUTPUT

VAR_OUTPUT
    bBusy       : BOOL;
    bError      : BOOL;
    nErrId      : UDINT;
    hFile       : UINT;             (* file handle *)
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.

hFile:    Enthält, nach erfolgreichem Öffnen, das erzeugte File-Handle für die Datei. Dieses Handle wird dann an die anderen File-Funktionsbausteine als Kennung für die zu bearbeitete Datei übergeben.

 

Beispiel für den Aufruf des Bausteins in FBD:

PROGRAM Test
VAR
    fbFileOpen      : FB_FileOpen;
    bFileOpen       : BOOL;
    bFileOpenBusy   : BOOL;
    bFileOpenError  : BOOL;
    nFileOpenErrId  : UDINT;
    hFile           : UINT;
END_VAR
FB_FileOpen 3:

Hierbei soll die Datei "TestFile2.txt" im Root-Verzeichnis des Laufwerks "C:" im Textmode angelegt bzw. Überschrieben werden.

FB_FileOpen 4:

Bei dem Öffnungsmodi dürfen maximal 3 Parameter mit ODER verknüpft werden:
Mode = [ Parameter1 ] OR [ Parameter2 ] OR [ Paramerter3 ]

Parameter1 darf nur einen unterstehenden Wert haben:

Parameter2 darf nur einen unterstehenden Wert haben:

Parameter3 darf nur einen unterstehenden Wert haben:

Wenn kein Binär oder Text-Mode angegeben wurde, öffnet die Datei in einem Mode der durch eine Betriebssystemvariable festgelegt ist. In den meisten Fällen öffnet die Datei dann im Text-Mode. Eine eindeutige Aussage ist jedoch nicht möglich. Es ist sinnvoll, den Text oder Binärmode immer anzugeben. Diese Systemvariable kann nicht in der SPS geändert werden!
Daraus ergeben sich folgende zulässige Kombinationen:

Textdatei Öffnungsmodi

Binärdatei Öffnungsmodi

FOPEN_MODEREAD OR FOPEN_MODETEXT

FOPEN_MODEREAD OR FOPEN_MODEBINARY

FOPEN_MODEWRITE OR FOPEN_MODETEXT

FOPEN_MODEWRITE OR FOPEN_MODEBINARY

FOPEN_MODEAPPEND OR FOPEN_MODETEXT

FOPEN_MODEAPPEND OR FOPEN_MODEBINARY

FOPEN_MODEREAD OR FOPEN_MODEPLUS OR FOPEN_MODETEXT

FOPEN_MODEREAD OR FOPEN_MODEPLUS OR FOPEN_MODEBINARY

FOPEN_MODEWRITE OR FOPEN_MODEPLUS OR FOPEN_MODETEXT

FOPEN_MODEWRITE OR FOPEN_MODEPLUS OR FOPEN_MODEBINARY

FOPEN_MODEAPPEND OR FOPEN_MODEPLUS OR FOPEN_MODETEXT

FOPEN_MODEAPPEND OR FOPEN_MODEPLUS OR FOPEN_MODEBINARY

Alle anderen Kombinationen sind falsch. Beispiele für unzulässige Öffnungsmodi:
FOPEN_MODEBINARY OR FOPEN_MODETEXT
FOPEN_MODEWRITE OR FOPEN_MODEAPPEND

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