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"