FTPClient, se connecte à un serveur FTP

Liste

Cette page fait partie de la Manuel de programmation CEI 61131-3. Aller à l'index.

Ce bloc fonction de exécuter dans la tâche Retour, permet de gérer la connexion au serveur FTP défini dans FTPServer avec le nom d'utilisateur défini dans User et mot de passe défini dans Password.

activation Store le fichier local défini dans LocalFile est transféré sur le serveur FTP avec le nom indiqué dans RemoteFile, une fois le transfert terminé, la sortie est activée Done qui reste actif jusqu'à ce que la commande soit désactivée.

activation Retrieve le fichier sur le serveur FTP avec le nom indiqué dans RemoteFile est transféré localement avec le nom défini dans LocalFile, une fois le transfert terminé, la sortie est activée Done qui reste actif jusqu'à ce que la commande soit désactivée.

activation Delete le fichier sur le serveur FTP avec le nom indiqué dans RemoteFile est supprimé et la sortie est activée Done qui reste actif jusqu'à ce que la commande soit désactivée.

En cas d'erreur, l'exécution de la commande se termine et la sortie est activée pour une boucle Fault et la sortie est activée Done qui reste actif jusqu'à ce que la commande soit désactivée.

Liste de mise à niveau

Client FTP_v4

Paramètre supprimé Timeout, paramètres ajoutés TRatio, ETime e CRetry, sortir. Amélioration de la gestion des CV sur les commandes Store e Retrieve.

Enregistreur de données avec transfert automatique de fichiers sur serveur FTP

Le programme FTPDataLogger (Télécharger) effectue l'acquisition de 2 entrées analogiques et chaque minute il stocke les valeurs sur un fichier au format CSV, chaque heure le fichier journal est automatiquement transféré vers un serveur FTP distant dans le cloud.

Le programme peut être modifié selon vos besoins en acquérant un plus grand nombre d'entrées analogiques ou via le FB ModbusMaster acquisition de valeurs à partir d'instruments avec le protocole Modbus. Une particularité du programme est l'utilisation du FB FIFOFile qui stocke les données dans le journal FIFO lors du transfert du fichier journal vers le serveur FTP distant afin de ne pas perdre les logs.

Jetez un œil au programme source est utile pour apprendre non seulement comment utiliser le FB FTPClient mais aussi pour comprendre comment gérer le système de fichiers système en écrivant des fichiers au format CSV.

Cercle d'informations

Verrouillage de fonction

CODESYS : indisponible

LogicLab : eLLabNetworkLib

Description

Store (BOOL) Commande de transfert de fichiers du répertoire local vers le serveur FTP.
Retrieve (BOOL) Commande de transfert de fichiers du serveur FTP vers le répertoire local.
Delete (BOOL) Commande de suppression de fichier sur le serveur FTP.
SpyOn (BOOL) S'il est actif, il permet d'espionner le fonctionnement du FB.
FTPServer (@STRING) Pointeur de chaîne de définition de serveur FTP.
FTPPort (UINT) Définition du port de connexion au serveur FTP.
User (@STRING) Pointeur de chaîne de définition de nom d'utilisateur.
Password (@STRING) Pointeur de chaîne de définition de mot de passe.
LocalFile (@STRING) Pointeur de chaîne de définition de nom de fichier local.
RemoteFile (@STRING) Pointeur de chaîne de définition de nom de fichier sur le serveur FTP. Si des dossiers sont définis dans le nom (exemple /DirA/DirB/File.txt), le FB les créera.
Done (BOOL) Il est activé à la fin de l'exécution de la commande. Il reste actif jusqu'à ce que toutes les commandes soient désactivées, pour exécuter une nouvelle commande, désactiver puis réactiver la commande.
Faute (BOOL) Actif pour une boucle si erreur d'exécution.
Traitement (REAL) Pourcentage du transfert effectué.
etime (TIME) Renvoie le temps d'exécution de la commande.
CRéessayer (UDINT) Nombre de tentatives effectuées.
Errors (UDINT) Compteur d'erreurs d'exécution.

Image FB FTPClient_v4

Opération d'espionnage

Se SpyOn actif, vous pouvez utiliser la console espion pour vérifier le fonctionnement du FB. Il existe différents niveaux de déclencheurs.

Déclencheurs d'espionnage
16 # 00000001Tx: Commandes envoyées au serveur FTP.
16 # 00000002Rx: États de réponse du serveur FTP.
16 # 10000000Lg : Messages du journal des opérations.
16 # 40000000Il: Erreurs d'exécution.

L'analyse des messages affichés dans la console d'espionnage permet de comprendre d'éventuelles erreurs dans les séquences.

Messages d'espionnage
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

Exemples

Comment utiliser les exemples.

ST_FTPClient: La connexion à un serveur FTP est gérée en gérant la commande Store pour envoyer un fichier du dossier système local au serveur FTP. La commande Retrieve pour transférer un fichier du serveur FTP vers le dossier système local. La commande Delete pour supprimer le fichier sur le serveur FTP.

ST_FTPFileTransfer: Exemple de transfert d'un fichier d'un serveur FTP à un autre, le fichier est placé sur le disque local. Dans l'exemple, deux terminaux Weintek ont ​​été utilisés comme serveur 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]
Cet article a-t-il été utile?