Accueil > Forum > Programmation IEC 61131 (LogicLab) > Bloc fonctionnel pour la connexion au serveur FTP
- Ce sujet a 10 réponses, 4 participants et a été mis à jour pour la dernière fois 4 années, 7 mois da Sergio Bertana.
-
auteurPost
-
Février 17, 2016 à 10: 21 am #35948Sergio BertanaAdministrateur du forum
Nous avons publié le nouveau bloc fonctionnel ClientFTP (Extrait manuel), à l'aide de ce bloc fonction, vous pouvez vous connecter à un serveur FTP, effectuer une authentification et transférer des fichiers vers et depuis le serveur.
La commande Agence vous permet de transférer un fichier local du système de fichiers système vers le serveur FTP.
La commande Récupérer vous permet de transférer un fichier du serveur FTP vers le système de fichiers local du système.J'ai publié le projet FTPTest qui permet de tester le fonctionnement du nouveau FB (Téléchargement du projet).
Mars 1, 2016 à 5: pm 01 #39423GiulioPartecipanteExiste-t-il la possibilité d'utiliser le client dans un LAN, en désactivant le DNS d'une manière ou d'une autre?
Mars 2, 2016 à 7: 33 am #39424Sergio BertanaAdministrateur du forumIl n'est pas nécessaire de désactiver quoi que ce soit, définissez simplement l'adresse IP au lieu de l'URL, par exemple:
http://FTP.FTPServer:=ADR(«192.168.0.10»); (* Serveur ftp *)
Le bloc fonction reconnaît que le serveur est indiqué sous la forme d'une adresse IP (pointillé) et se connecte directement à l'adresse indiquée.
Mars 11, 2016 à 10: 38 am #39446Luca MaraniPartecipanteCompte tenu de l'ajout du client FTP, je souhaitais que l'automate envoie un fichier tous les jours à la même heure. Tout fonctionne, sauf si vous chevauchez l'envoi du fichier avec l'écriture du fichier lui-même.
J'ai pensé résoudre le problème en créant une copie du fichier à envoyer chaque fois que l'original est modifié. La copie ne serait effectuée que si je n'envoie pas le fichier (dans votre exemple, uniquement si CaseNr = 0), et l'envoi serait mis en attente jusqu'à la fin de l'écriture. Le problème est-il lié à la copie du fichier, y a-t-il un bloc fonction qui le fait ou dois-je lire tout le fichier original et enregistrer le contenu dans la copie?
Mars 11, 2016 à 10: 42 am #39447Sergio BertanaAdministrateur du forumBien sûr, l'opération d'envoi d'un fichier vers le serveur FTP prend un certain temps (tant que le fichier est plus long), et pendant ce temps le fichier doit être verrouillé en écriture, il ne doit y avoir aucun autre accès programme au fichier en cours d'écriture.
C'est sûrement une bonne idée de créer une copie du fichier original qui sera ensuite utilisée pour le transfert FTP, malheureusement il n'y a pas de copie de fichier FB, donc si vous voulez faire une copie vous devez gérer la lecture du fichier source et l'écriture du fichier fichier cible.
Mais je vous conseille de passer des opérations d'écriture dans le fichier local à partir d'un FB FIFOFile (Sujet), de cette façon chaque fois que le programme doit écrire dans le fichier qu'il écrit réellement dans le fichier de support FIFO, puis si le fichier transféré via FTP est gratuit, vous pouvez extraire les données du FIFO et les écrire dans le fichier.
Ainsi, pendant le téléchargement FTP du fichier, le FIFO continue d'accumuler les données (les gardant même à l'arrêt) et ensuite, lorsque les opérations FTP sont terminées, vous pouvez lire à partir du FIFO et remplir votre fichier FTP de support.
Mars 11, 2016 à 5: pm 22 #39449Luca MaraniPartecipanteParfait, merci, mais j'ai un problème et un rapport.
Le problème est: est-ce que le fichier dans lequel le FIFO enregistre continue de croître? Dois-je me soucier de le supprimer s'il devient trop gros? À quoi sert la commande Del?
Le message concerne la version du bloc fonctionnel. Celui de votre exemple fonctionne, mais il est différent de celui contenu dans la nouvelle bibliothèque eLLabLogLib_B100.plclib. Font-ils la même chose uniquement avec des noms de paramètres différents?
Mars 11, 2016 à 5: pm 25 #39450Sergio BertanaAdministrateur du forumDans la gestion du FIFO, il est défini dans FIFOSize la taille maximale du fichier de support, le FB conserve automatiquement le fichier à cette taille. En pratique, le FB commence à écrire dans le fichier, puis une fois la taille limite atteinte, il reprend l'écriture depuis le début. Cela signifie que plus le fichier est volumineux, plus le FIFO peut contenir des données sans écraser les plus anciennes.
Il est toujours conseillé d'utiliser la version la plus récente de la bibliothèque qui contient sûrement les FB les plus à jour. La commande Du il était présent dans la première version du FB car il était censé lire un enregistrement avec la commande de stock puis décidez de le supprimer de la FIFO avec la commande Del.
Dans la dernière version de FB, la commande a disparu, exécutant le FB avec la commande de stock actif, l'enregistrement inséré en premier est renvoyé à la sortie et automatiquement supprimé de la FIFO. La prochaine fois que le FB est exécuté avec la commande Out active, l'enregistrement suivant est renvoyé et ainsi de suite jusqu'à ce que le FIFO soit vidé.
Septembre 26, 2019 à 12: pm 04 #50054RuboxPartecipanteBonsoir, il y a une chose dont je ne suis pas très clair sur le bloc FTPClient_v1. Dans tous les exemples, il y a soit une adresse IP, soit un nom générique "myserver". Mais si je le donne comme exemple
FTPServer: = ADR ('mon.serveurftp.com')
ça marche ou pas? Toute la journée j'ouvre des ports sur le routeur auquel l'automate est connecté et celui sur lequel se trouve le serveur FTP, en créant des règles… mais rien. Cela me donne toujours une erreur de résolution d'adresse.
Cependant, si je me connecte depuis le LAN où se trouve l'API au serveur FTP avec FileZilla, je peux accéder au serveur FTP.
Septembre 26, 2019 à 12: pm 09 #50077Sergio BertanaAdministrateur du forumSi vous utilisez un système basé sur Cortex M7 vous pouvez mettre l'URL, le système gère automatiquement la demande auprès du serveur DNS (bien sûr, vous devez avoir correctement défini l'adresse IP du serveur DNS dans la configuration du réseau).
Mais je ne comprends pas ce qui a à voir avec la création de règles sur le routeur auquel l'automate est connecté, le FTPClient est juste un client donc il quitte automatiquement le réseau. Peut-être que votre problème est de ne pas avoir configuré la passerelle correctement dans les paramètres réseau.
Essayez de vous connecter sur telnet de local à SlimLine exécuter une commande ping sur une URL Internet (exemple Ping google.com) afin de vérifier si SlimLine peut accéder à Internet. Si cela ne fonctionne pas, vous avez des problèmes pour configurer la passerelle.
Septembre 26, 2019 à 2: pm 05 #50078RuboxPartecipanteAprès-midi, le problème était que, sur la page de configuration Web de l'automate, il m'indiquait la passerelle correcte et les valeurs DNS correctes. Tout en lisant les valeurs avec l'automate et la fonction SysOSIDValue, j'en trouvais d'autres. J'ai écrit les valeurs de PLC et maintenant il semble fonctionner correctement.
Je m'excuse pour les questions triviales, même dans l'autre article, mais honnêtement, je ne savais plus quoi faire et j'ai donc toujours ouvert les ports sur le routeur côté PLC et vérifié et recréé les règles sur le routeur côté serveur FTP.
Septembre 26, 2019 à 2: pm 49 #50091Sergio BertanaAdministrateur du forumLe comportement de la configuration du système de pages Web est indiqué dans ce sujet.
-
auteurPost
- Vous devez être connecté pour répondre à ce sujet.