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
- Si l'objet mis à jour n'est pas dans la dernière version du package, voir le chapitre "Mise à jour des bibliothèques"Pour cet article.
- Les objets obsolètes sont placés dans la bibliothèque eLLabObsoleteLib faire référence à manuel connexe et programmation manuelle au format pdf.
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.
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.
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 # 00000001 | Tx: Commandes envoyées au serveur FTP. |
16 # 00000002 | Rx: États de réponse du serveur FTP. |
16 # 10000000 | Lg : Messages du journal des opérations. |
16 # 40000000 | Il: 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]