DataFileCopy: Befehle zum Kopieren von Dateien

Beschreibung des Funktionsbausteins

Dieser Funktionsbaustein kopiert Speicherdaten in eine bzw. aus einer Datei. Die Datei befindet sich entweder im internen oder in einem externen Dateisystem (SD-Karte).

Der DataFileCopy-Funktionsbaustein kann folgende Aktionen ausführen:

oDaten aus einer formatierten Datei lesen oder

oDaten aus dem Arbeitsspeicher in eine formatierte Datei kopieren. Weitere Informationen finden Sie unter Flash Memory Organization.

Bibliothek und Namespace

Name der Bibliothek: PLCSystemBase

Namespace: PLCSystemBase

Grafische Darstellung

G-SE-0017243.2.jpg

 

 

Darstellung in AWL (IL) und ST

Die allgemeine Darstellung in den Sprachen AWL (IL) oder ST finden Sie im Kapitel Darstellung von Funktionen und Funktionsbausteinen.

Beschreibung der E/A-Variablen

In der folgenden Tabelle werden die Eingangsvariablen beschrieben:

Eingang

Typ

Kommentar

xExecute

BOOL

Startet die Ausführung des Funktionsbausteins an einer steigenden Flanke.

Bei fallender Flanke werden die Ausgänge des Funktionsbausteins zurückgesetzt, sobald die laufende Ausführung abgeschlossen ist.

HINWEIS: Bei einer fallenden Flanke fährt die Funktion bis zum Abschluss ihrer Ausführung fort und aktualisiert die zugehörigen Ausgänge, die für einen Scanvorgang ihren Wert beibehalten und anschließend zurückgesetzt werden.

sFileName

STRING

Dateiname ohne Erweiterung (die Erweiterung .DTA wird automatisch hinzugefügt). Verwenden Sie nur alphanumerische Zeichen (a - z, A - Z, 0 - 9).

xRead

BOOL

TRUE: Kopieren von Daten aus der von sFileName identifizierten Datei in den internen Speicher der Steuerung.

FALSE: Kopieren von Daten aus dem internen Speicher der Steuerung in die von sFileName identifizierte Datei.

xSecure

BOOL

TRUE: Die MAC-Adresse wird immer in der Datei gespeichert. Nur eine Steuerung mit derselben MAC-Adresse kann Daten aus der Datei auslesen.

FALSE: Eine andere Steuerung mit demselben Speichertyp kann Daten aus der Datei auslesen.

iLocation

INT

0: Der Speicherort der Dateien ist /usr/DTA im internen Dateisystem.

1: Der Speicherort der Dateien ist /usr/DTA im externen Dateisystem (SD-Karte).

HINWEIS: Wenn die Datei noch nicht im Verzeichnis vorhanden ist, wird sie erstellt.

uiSize

UINT

Gibt die Dateigröße in Byte an. Das Maximum ist 65534 Byte.

Sie können nur Adressen von Variablen verwenden, die IEC 61131-3-konform sind (Variablen, Arrays, Strukturen), zum Beispiel:

Variable : int;

uiSize := SIZEOF (Variable); 

dwAdd

DWORD

Verweist auf die Adresse im Arbeitsspeicher, an der die Funktion lesen oder schreiben wird.

Sie können nur Adressen von Variablen verwenden, die IEC 61131-3-konform sind (Variablen, Arrays, Strukturen), zum Beispiel:

Variable : int;

dwAdd := ADR (Variable); 

Warning_Color.gifWARNUNG

UNBEABSICHTIGTER GERÄTEBETRIEB

Stellen Sie sicher, dass der Speicherort des Arbeitsspeichers die richtige Größe und die Datei den richtigen Typ aufweist, bevor Sie die Datei in den Speicher kopieren.

Die Nichtbeachtung dieser Anweisungen kann Tod, schwere Verletzungen oder Sachschäden zur Folge haben.

In der folgenden Tabelle werden die Ausgangsvariablen beschrieben:

Ausgang

Typ

Kommentar

xDone

BOOL

TRUE = Gibt an, dass die Aktion erfolgreich abgeschlossen wurde.

xBusy

BOOL

TRUE = Gibt an, dass der Funktionsbaustein ausgeführt wird.

xError

BOOL

TRUE = Gibt an, dass ein Fehler festgestellt wurde und der Funktionsbaustein die Aktion abgebrochen hat.

eError

DataFileCopyError

Gibt den Typ des beim Kopieren der Datendatei erkannten Fehlers an.

HINWEIS:  Wenn Sie in eine Speichervariable innerhalb des Bereichs für den Dateischreibvorgang schreiben, wird ein CRC-Integritätsfehler ausgegeben.

Beispiel

In diesem Beispiel wird beschrieben, wie Dateibefehle kopiert werden:

VAR
LocalArray : ARRAY [0..29] OF BYTE;
myFileName: STRING := 'exportfile';
EXEC_FLAG: BOOL;
DataFileCopy: DataFileCopy;
END_VAR
DataFileCopy(
xExecute:= EXEC_FLAG,
sFileName:= myFileName,
xRead:= FALSE,
xSecure:= FALSE,
iLocation:= DFCL_INTERNAL,
uiSize:= SIZEOF(LocalArray),
dwAdd:= ADR(LocalArray),
xDone=> ,
xBusy=> ,
xError=> ,
eError=> );