FB_EcFoeWriteFile
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.
![]() | Der Dateipfad kann nur auf das lokale Dateisystem des Rechners zeigen. Das bedeutet, Netzwerkpfade können hier nicht angegeben werden. |
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.) |
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 |