FTPClient, se conectează la un server FTP

Listă

Această pagină face parte din Manual de programare IEC 61131-3. Mergeți la index.

Acest bloc funcțional de la rulați în sarcina Înapoi, vă permite să gestionați conexiunea la serverul FTP definit în FTPServer cu numele de utilizator definit în User și parola definită în Password.

activarea Store fișierul local definit în LocalFile este transferat pe serverul FTP cu numele indicat în RemoteFile, odată ce transferul este finalizat, ieșirea este activată Done care rămâne activ până când comanda este dezactivată.

activarea Retrieve fișierul de pe serverul FTP cu numele indicat în RemoteFile este transferat local cu numele definit în LocalFile, odată ce transferul este finalizat, ieșirea este activată Done care rămâne activ până când comanda este dezactivată.

activarea Delete fișierul de pe serverul FTP cu numele indicat în RemoteFile este șters și ieșirea este activată Done care rămâne activ până când comanda este dezactivată.

În cazul unei erori, execuția comenzii se încheie și ieșirea este activată pentru o buclă Fault iar ieșirea este activată Done care rămâne activ până când comanda este dezactivată.

Lista de upgrade

FTPClient_v4

Parametrul eliminat Timeout, parametri adăugați TRatio, ETime e CRetry, ieşire. Gestionare îmbunătățită a CV-urilor pe comenzi Store e Retrieve.

Datalogger cu transfer automat de fișiere pe server FTP

Programul de FTPDataLogger (Descarcă) realizează achiziția a 2 intrări analogice și în fiecare minut stochează valorile pe un fișier în format CSV, în fiecare oră fișierul jurnal este transferat automat pe un server FTP la distanță în cloud.

Programul poate fi modificat pentru a se potrivi nevoilor dumneavoastră prin achiziționarea unui număr mai mare de intrări analogice sau prin intermediul FB ModbusMaster dobândirea valorilor de la instrumente cu protocol Modbus. O caracteristică specială a programului este utilizarea FB FIFOFile care stochează datele în jurnalul FIFO în timpul transferului fișierului jurnal pe serverul FTP la distanță pentru a nu pierde jurnalele.

Aruncând o privire asupra programului sursă este util să învățați nu numai cum să utilizați FB FTPClient dar și pentru a înțelege cum să gestionați sistemul de fișiere de sistem scriind fișiere în format CSV.

Cercul de informații

Blocarea funcției

CODESYS: Indisponibil

LogicLab: eLLabNetworkLib

Descriere

Store (BOOL) Comanda de transfer de fișiere din directorul local pe serverul FTP.
Retrieve (BOOL) Comanda de transfer de fișiere de la serverul FTP în directorul local.
Delete (BOOL) Comanda de ștergere a fișierelor pe serverul FTP.
SpyOn (BOOL) Dacă este activ, vă permite să spionați funcționarea FB.
FTPServer (@STRING) Indicator șir de definire a serverului FTP.
FTPPort (UINT) Definirea portului pentru conectarea la serverul FTP.
User (@STRING) Indicator șir de definire a numelui de utilizator.
Password (@STRING) Indicator șir de definire a parolei.
LocalFile (@STRING) Indicator șir de definire a numelui fișierului local.
RemoteFile (@STRING) Indicatorul șirului de definire a numelui fișierului pe serverul FTP. Dacă folderele sunt definite în nume (Exemplu /DirA/DirB/File.txt), FB-ul le va crea.
Done (BOOL) Se activează la sfârșitul execuției comenzii. Rămâne activ până când toate comenzile sunt dezactivate, pentru a executa o nouă comandă dezactivați și apoi reactivați comanda.
Defect (BOOL) Activ pentru o buclă dacă eroare de execuție.
Tratament (REAL) Procentul de transfer efectuat.
ETime (TIME) Returnează timpul necesar executării comenzii.
CReți (UDINT) Numărul de încercări efectuate.
Errors (UDINT) Contor erori de execuție.

FB FTPClient_v4 imagine

Spionaj operațional

Se SpyOn activ, puteți utiliza consola spion pentru a verifica funcționarea FB. Există diferite niveluri de declanșatoare.

Declanșatorii de spionaj
16 # 00000001TX: Comenzile trimise serverului FTP.
16 # 00000002Rx: Stări de răspuns de la serverul FTP.
16 # 10000000LG: Mesaje jurnal operațiuni.
16 # 40000000El: Erori de execuție.

Analizarea mesajelor afișate în consola de spionaj vă ajută să înțelegeți eventualele erori din secvențe.

Mesaje în spionaj
Messaggi di connessione al server validi per tutti comandi.

| FTPClient:Rx|[0010] 227 Entering Passive Mode (81,88,52,106,222,229)          Apertura connessione passiva
| FTPClient:Lg|[0010] PASV port:57061                                           Porta per connessione passiva
| FTPClient:Lg|[0022] Server do not allows the resume command                   Server non supporta il comando di resume
| FTPClient:Lg|[0022] Server allows the resume command                          Server supporta il comando di resume
| FTPClient:Lg|[0100] User logged in                                            Client connesso al server

Messaggi del comando di store.

| FTPClient:Lg|[1000] Send file: Local file => Remote file                      Informazioni sul file locale e remoto
| FTPClient:Lg|[1000] File to send length: xxxxxxx                              Dimensione file locale da inviare in bytes
| FTPClient:Tx|[1305] ABOR                                                      Abortita sequenza in corso segue un resume
| FTPClient:Lg|[1405] xxxxxxx bytes has been transferred, xx.xxx KB/S           Dimensione file inviato e velocità di invio
| FTPClient:Lg|--------------------------------------[Store end, xxx.xxx (S)]-- Fine comando e durata

Messaggi del comando di retrieve.

| FTPClient:Lg|[2002] File to receive length: xxxxxx                            Dimensione file da scaricare in bytes (Se resume)
| FTPClient:Lg|[2203] Data reception restart                                    Non si ricevono dati per 80% di Timeout, eseguo resume
| FTPClient:Lg|[2203] Server timeout restart                                    Prima di timeout server eseguo resume (Timeout*2)
| FTPClient:Tx|[2205] ABOR                                                      Abortita sequenza in corso segue un resume
| FTPClient:Lg|[2302] xxxxxxx bytes has been transferred, xx.xxx KB/S           Dimensione file ricevuto e velocità di invio
| FTPClient:Lg|-----------------------------------[Retrieve end, xxx.xxx (S)]-- Fine comando e durata

Exemple

Cum se utilizează exemplele.

ST_FTPClient: Conexiunea la un server FTP este gestionată prin gestionarea comenzii Store pentru a trimite un fișier din folderul sistemului local către serverul FTP. Comanda Retrieve pentru a transfera un fișier de pe serverul FTP în folderul sistemului local. Comanda Delete pentru a șterge fișierul de pe serverul FTP.

ST_FTPFileTransfer: Exemplu de transfer al unui fișier de la un server FTP la altul, fișierul este plasat pe discul local. În exemplu, două terminale Weintek au fost folosite ca server FTP.

LogicLab (Ptp119)
PROGRAM ST_FTPClient
VAR
    Store : BOOL; (* FTP store command *)
    Retrieve : BOOL; (* FTP retrieve command *)
    Delete : BOOL; (* FTP delete command *)
    CaseNr : USINT; (* Program case *)
    FTP : FTPClient_v4; (* FTP client *)
END_VAR

// *****************************************************************************
// PROGRAM "ST_FTPClient"
// *****************************************************************************
// This program connects to the SlimLine FTP server and allows to transfer file
// from local directory to FTP server and viceversa.
// -----------------------------------------------------------------------------

    // -------------------------------------------------------------------------
    // INITIALIZATION
    // -------------------------------------------------------------------------
    // Program initializations.

    IF (SysFirstLoop) THEN
        FTP.SpyOn:=TRUE; //Spy active
        FTP.FTPServer:=ADR('192.168.0.230'); //Server FTP
        FTP.FTPPort:=21; //Server FTP
        FTP.User:=ADR('Admin'); //User
        FTP.Password:=ADR('Admin'); //Password
    END_IF;

    // -------------------------------------------------------------------------
    // FTP CLIENT
    // -------------------------------------------------------------------------
    // Executs the FTP client and resets the commands on execution fault.

    FTP(); //FTP client
    IF (FTP.Fault) THEN CaseNr:=0; END_IF;

    // -------------------------------------------------------------------------
    // PROGRAM CASES
    // -------------------------------------------------------------------------
    // Program cases management.

    CASE (CaseNr) OF

        // ---------------------------------------------------------------------
        // MANAGES THE COMMAND
        // ---------------------------------------------------------------------
        // Reset commands.

        0:
        FTP.Store:=FALSE; //Store command
        FTP.Retrieve:=FALSE; //Retrieve command
        FTP.Delete:=FALSE; //Delete command

        // Check commands.

        IF (Store) THEN Store:=FALSE; CaseNr:=10; RETURN; END_IF;
        IF (Retrieve) THEN Retrieve:=FALSE; CaseNr:=20; RETURN; END_IF;
        IF (Delete) THEN Delete:=FALSE; CaseNr:=30; RETURN; END_IF;

        // ---------------------------------------------------------------------
        // STORE COMMAND
        // ---------------------------------------------------------------------
        // Command execution.

        10:
        FTP.Store:=TRUE; //Store command
        FTP.LocalFile:=ADR('C:/System/Logs.txt'); //Local file definition
        FTP.RemoteFile:=ADR('D:/Logs.txt'); //Remote file definition
        IF NOT(FTP.Done) THEN RETURN; END_IF;
        FTP.Store:=FALSE; //Store command
        CaseNr:=0; //Program case

        // ---------------------------------------------------------------------
        // RETRIEVE COMMAND
        // ---------------------------------------------------------------------
        // Command execution.

        20:
        FTP.Retrieve:=TRUE; //Retrieve command
        FTP.LocalFile:=ADR('D:/Logs.txt'); //Local file definition
        FTP.RemoteFile:=ADR('C:/System/Logs.txt'); //Remote file definition
        IF NOT(FTP.Done) THEN RETURN; END_IF;
        FTP.Retrieve:=FALSE; //Retrieve command
        CaseNr:=0; //Program case

        // ---------------------------------------------------------------------
        // DELETE COMMAND
        // ---------------------------------------------------------------------
        // Command execution.

        30:
        FTP.Delete:=TRUE; //Delete command
        FTP.LocalFile:=eNULL; //Local file definition
        FTP.RemoteFile:=ADR('D:/Logs.txt'); //Remote file definition
        IF NOT(FTP.Done) THEN RETURN; END_IF;
        FTP.Delete:=FALSE; //Delete command
        CaseNr:=0; //Program case
    END_CASE;

// [End of file]
LogicLab (Ptp119)
PROGRAM ST_FTPFileTransfer
VAR
    DTransfer : BOOL; (* Data transfer command *)
    CaseNr : USINT; (* Program case *)
    FTP : FTPClient_v4; (* FTP client *)
END_VAR

// *****************************************************************************
// PROGRAM "ST_FTPFileTransfer"
// *****************************************************************************
// This program transfers a file from one FTP server to another.
// -----------------------------------------------------------------------------

    // -------------------------------------------------------------------------
    // INITIALIZATION
    // -------------------------------------------------------------------------
    // Program initializations.

    IF (SysFirstLoop) THEN
        FTP.SpyOn:=TRUE; //Spy active
    END_IF;

    // -------------------------------------------------------------------------
    // FTP CLIENT
    // -------------------------------------------------------------------------
    // Executs the FTP client and resets the commands on execution fault.

    FTP(); //FTP client
    IF (FTP.Fault) THEN CaseNr:=0; END_IF;

    // -------------------------------------------------------------------------
    // PROGRAM CASES
    // -------------------------------------------------------------------------
    // Program cases management.

    CASE (CaseNr) OF

        // ---------------------------------------------------------------------
        // TRANSFER FILE
        // ---------------------------------------------------------------------
        // Wait for the command.

        0:
        IF (DTransfer) THEN DTransfer:=FALSE; CaseNr:=10; RETURN; END_IF;

        // ---------------------------------------------------------------------
        // READ FILE FROM THE SERVER AND DELETE IT
        // ---------------------------------------------------------------------
        // Define server credential and connects to it.

        10:
        FTP.FTPServer:=ADR('192.168.0.234'); //Server FTP
        FTP.FTPPort:=21; //Server port
        FTP.User:=ADR('uploadhis'); //User
        FTP.Password:=ADR('111111'); //Password
        FTP.LocalFile:=ADR('D:/Logs.txt'); //Local file definition
        FTP.RemoteFile:=ADR('datalog/Logs.txt'); //Remote file definition
        CaseNr:=CaseNr+1; //Program case

        // ---------------------------------------------------------------------
        // Retrieve command execution.

        11:
        FTP.Retrieve:=TRUE; //Retrieve command
        IF NOT(FTP.Done) THEN RETURN; END_IF;
        FTP.Retrieve:=FALSE; //Retrieve command
        CaseNr:=CaseNr+1; //Program case

        // ---------------------------------------------------------------------
        // Delete command execution.

        12:
        FTP.Delete:=TRUE; //Delete command
        IF NOT(FTP.Done) THEN RETURN; END_IF;
        FTP.Delete:=FALSE; //Delete command
        CaseNr:=20; //Program case

        // ---------------------------------------------------------------------
        // STORE FILE TO THE SERVER
        // ---------------------------------------------------------------------
        // Define server credential and connects to it.

        20:
        FTP.FTPServer:=ADR('192.168.0.216'); //Server FTP
        FTP.FTPPort:=21; //Server port
        FTP.User:=ADR('uploadhis'); //User
        FTP.Password:=ADR('111111'); //Password
        FTP.LocalFile:=ADR('D:/Logs.txt'); //Local file definition
        FTP.RemoteFile:=ADR('datalog/Logs.txt'); //Remote file definition
        CaseNr:=CaseNr+1; //Program case

        // ---------------------------------------------------------------------
        // Command end waiting.

        21:
        FTP.Store:=TRUE; //Store command
        IF NOT(FTP.Done) THEN RETURN; END_IF;
        FTP.Store:=FALSE; //Store command
        CaseNr:=0; //Program case
    END_CASE;

// [End of file]
A fost util acest articol?