TwinCAT FTP Client: Herunterladen einer Datei von einem FTP Server auf ein CX-Gerät
In diesem Beispiel wird eine Datei von einem FTP Server auf ein CX-Gerät heruntergeladen.
Um dieses Beispiel ausführen zu können, sollten Sie einen Benutzer mit dem Namen "TestUser" und dem Passwort "TestPwd123" bei Ihrem FTP Server eingerichtet haben.
Mit einer positiven Flanke an der startstop Variablen wird das Herunterladen gestartet.
Zunächst wird eine Verbindung zum FTP Server mit dem FB_FTP_Open erzeugt. Danach wird die angegebene Datei, "\TestFolder\File1.txt", mit dem Baustein FB_FTP_Upload vom FTP Server geladen. Der folgende Pfad "\Program Files\TestFile1.txt", ist der Speicherort der Datei auf dem CX.
Zum Schluss wird noch die Verbindung zum FTP Server mit dem Baustein FB_FTP_Close geschlossen.
Achten Sie darauf, dass der TestUser Schreib- und Leserechte besitzt.
Variablendeklaration
PROGRAM MAIN
VAR
RisingEdge : R_TRIG;
startstop : BOOL;
state : BYTE;
FB_FTP_Open1 : FB_FTP_Open;
FB_FTP_FileDownload1 : FB_FTP_FileDownload;
FB_FTP_Close1 : FB_FTP_Close;
busy : BOOL;
err : BOOL;
errid : UDINT;
handle : T_HFTP;
progress : UDINT;
END_VAR
SPS Programm
RisingEdge(CLK:= startstop);
IF RisingEdge.Q THEN
state := 1;
END_IF
CASE state OF
0:
;
1:
FB_FTP_Open1(
sNetID:= '5.0.252.142.1.1',
sHost:= '172.16.9.223',
nPort:= 21,
sUsername:= 'TestUser',
sPassword:= 'TestPwd123',
bExecute:= TRUE,
tTimeout:= T#15s,
bBusy=> busy,
bError=> err,
nErrId=> errid,
hFTP=> handle);
IF NOT busy AND NOT err THEN
FB_FTP_Open1(bExecute:= FALSE);
state := 2;
END_IF
2:
FB_FTP_FileDownload1(
sNetID:= '5.0.252.142.1.1',
hFTP:= handle,
sSrcFile:= '\TestFolder\File1.txt',
sDesFile:= '\Program Files\TestFile1.txt',
bExecute:= TRUE,
tTimeout:= T#15s,
bBusy => busy,
bError => err,
nErrId => errid,
nProgress => progress);
IF NOT busy AND NOT err THEN
FB_FTP_FileDownload1(bExecute:= FALSE);
state := 3;
END_IF
3:
FB_FTP_Close1(
sNetID:= '5.0.252.142.1.1',
hFTP:= handle,
bExecute:= TRUE,
tTimeout:= T#15s,
bBusy => busy,
bError => err,
nErrId => errid);
IF NOT busy AND NOT err THEN
FB_FTP_Close1(bExecute:= FALSE);
state := 0;
END_IF
END_CASE
Einzubindende Bibliothek ist die "TcFTPClient.lib", "TcSystem.lib", "TcBase.lib" und "STANDARD.lib"