FB_FileOpen
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.
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
Hierbei soll die Datei "TestFile2.txt" im Root-Verzeichnis des Laufwerks "C:" im Textmode angelegt bzw. Überschrieben werden.
Bei dem Öffnungsmodi dürfen maximal 3 Parameter mit ODER verknüpft werden: |
Parameter1 darf nur einen unterstehenden Wert haben:
- FOPEN_MODEREAD
- FOPEN_MODEWRITE
- FOPEN_MODEAPPEND
Parameter2 darf nur einen unterstehenden Wert haben:
- FOPEN_MODEPLUS
Parameter3 darf nur einen unterstehenden Wert haben:
- FOPEN_MODEBINARY
- FOPEN_MODETEXT
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 |