FB_EcFoeWriteFile

FB_EcFoeWriteFile 1:

Mit dem Funktionsbaustein FB_EcFoeWriteFile können Dateien über das "File access over EtherCAT"-Mailbox-Protokoll von einem lokalen Datenträger auf ein EtherCAT-Gerät geschrieben werden.

FB_EcFoeWriteFile 2:

Der Dateipfad kann nur auf das lokale Dateisystem des Rechners zeigen. Das bedeutet, Netzwerkpfade können hier nicht angegeben werden.

FB_EcFoeWriteFile 3: Eingänge

VAR_INPUT
    sFSrvNetId     : T_AmsNetId := '';
    sFSrvPathName  : T_MaxString;
    sEcNetId       : T_AmsNetId;
    nSlaveAddr     : UINT;     
    sFoEPathName   : T_MaxString;
    dwPass         : DWORD := 0;
    bExecute       : BOOL; 
    tTimeout       : TIME := T#200s; 
END_VAR

Name

Typ

Beschreibung

sFSrvNetId

T_AmsNetId

AMS-Netzwerkkennung des Rechners, von dem die zu schreibende Datei gelesen werden soll. (Default: lokaler Rechner)

sFSrvPathName

T_MaxString

Enthält den Pfad- und Dateinamen der zu lesenden Datei (z. B.: 'C:\Data\LogData.csv').

sEcNetId

T_AmsNetId

String, der die AMS-Netzwerkkennung des EtherCAT-Master-Gerätes enthält.

nSlaveAddr

UINT

Adresse des EtherCAT-Slaves

sFoEPathName

T_MaxString

Name der Datei auf dem EtherCAT-Slave (z. B. 'LogData')

dwPass

DWORD

Passwort

bExecute

BOOL

Über eine positive Flanke an diesem Eingang wird der Baustein aktiviert.

tTimeout

TIME

Maximale Zeit, die bei der Ausführung des Funktionsbausteins nicht überschritten werden darf. (Default: 200s.)

FB_EcFoeWriteFile 4: Ausgänge

VAR_OUTPUT
    bBusy     : BOOL;
    bError    : BOOL;
    nErrId    : UDINT;
    cbWritten : UDINT;
    nProgress : UDINT;
    sInfo     : T_MaxString;
END_VAR

Name

Typ

Beschreibung

bBusy

BOOL

Dieser Ausgang wird bei der Aktivierung des Funktionsbausteins gesetzt und bleibt gesetzt, bis eine Rückmeldung erfolgt.

bError

BOOL

Dieser Ausgang wird gesetzt, nachdem der bBusy-Ausgang zurückgesetzt wurde, wenn bei der Übertragung des Kommandos ein Fehler auftritt.

nErrId

UDINT

Liefert bei einem gesetzten bError-Ausgang den ADS-Fehlercode des zuletzt ausgeführten Befehls.

cbWritten

UDINT

Anzahl der erfolgreich geschriebenen Datenbytes

nProgress

UDINT

Prozentualer Fortschritt beim Schreibzugriff (Bereich: 0 - 100%).

sInfo

T_MaxString

Zusätzliche FoE-Fehlerinformation (reserviert)

Beispiel in ST:

Bei einer steigenden Flanke an der bExecute-Variablen wird das Schreiben der angegebenen Datei über das "File access over EtherCAT"-Mailbox-Protokoll gestartet. Es wird die in sFSrvPathName benannte Datei vom gewählten Rechner (sFSrvNetID) gelesen und die Datei wird auf dem gewählten EtherCAT-Slave (sEcNetId & nSlaveAddr) unter dem in sFoEPathName genannten Namen abgelegt. Falls für das Schreiben der Datei auf den EtherCAT-Slave ein Passwort erforderlich ist, kann dieses über dwPass angegeben werden.

Der Lese- und Schreibvorgang ist erst beendet, wenn bBusy auf FALSE geht. Erst dann können die Fehlerinformationen bzw. die Anzahl der gelesenen Bytes ausgewertet werden.

PROGRAM MAIN
VAR
    fbEcWriteFile : FB_EcFoeWriteFile := (
        sFSrvNetID     := '5.0.34.38.1.1', (* NetID for source file *)
        sFSrvPathName  := 'C:\Data\LogData.csv', (* Pathname for source file *)
        sEcNetId       := '5.0.34.38.3.1', (* NetID of EtherCAT master *)
        nSlaveAddr     := 1004, (* EtherCAT slave address *)
        sFoEPathName   := 'LogData', (* Name of target file *)
        dwPass         := 0
    );
    bExecute   : BOOL := TRUE;
    bBusy      : BOOL;
    bError     : BOOL;
    nErrID     : UDINT;
    nBytesWritten : UDINT;
END_VAR

fbEcWriteFile (
        bExecute := bExecute,
        bBusy => bBusy,
        bError => bError,
        nErrId => nErrID
);
IF NOT bBusy THEN
    bExecute := FALSE;

    IF NOT bError THEN
         (* done, no error *)
        nBytesWritten := fbEcWriteFile.cbWritten;
    ELSE
        (* evaluate error *)
        nBytesWritten := 0;
    END_IF
    fbEcWriteFile (bExecute := FALSE);
END_IF

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende SPS- Bibliotheken

TwinCAT v3.1.4024.56

PC oder CX (x86, x64, Arm®)

Tc2_EtherCAT >= 3.5.1.0