Vai al contenuto

Blocco funzione per connessione a server FTP

Home Forum Programmazione IEC 61131 (LogicLab) Blocco funzione per connessione a server FTP

Stai visualizzando 11 post - dal 1 a 11 (di 11 totali)
  • Autore
    Post
  • #35948
    Sergio Bertana
    Amministratore del forum

    Abbiamo rilasciato il nuovo blocco funzione FTPClient (Estratto manuale), utilizzando questo blocco funzione è possibile connettersi ad un server FTP, eseguire l’autenticazione e trasferire file da e verso il server.

    Il comando Store permette di trasferire un file locale dal file system del sistema verso il server FTP.
    Il comando Retrieve permette di trasferire un file dal server FTP nel file system locale del sistema.

    Ho pubblicato il progetto FTPTest che permette di testare il funzionamento del nuovo FB (Download progetto).

    #39423
    Giulio
    Partecipante

    Esiste la possibilità di utilizzare il client all’interno di una LAN, disabilitando in qualche maniera il DNS ?

    #39424
    Sergio Bertana
    Amministratore del forum

    Non occorre disabilitare nulla basta definire l’IP anzichè l’URL, esempio:

    http://FTP.FTPServer:=ADR(‘192.168.0.10’); (* Server FTP *)

    Il blocco funzione riconosce che il server è indicato come indirizzo IP (Dotted) e si connette direttamente all’indizizzo indicato.

    #39446
    Luca Marani
    Partecipante

    Vista l’aggiunta del Client FTP volevo far in modo che il PLC inviasse un file ogni giorno alla stessa ora. Tutto funziona, tranne se si accavalla l’invio del file con la scrittura del file stesso.

    Pensavo di risolvere il problema creando una copia del file da inviare ogni volta che l’originale viene modificato. La copia sarebbe eseguita solo se non sto inviando il file (nel tuo esempio, solo se CaseNr = 0), e l’invio eventualmente messo in attesa fino alla fine della scrittura. Il problema è la copia del file, c’è un blocco funzione che lo fa, o devo leggere tutti il file originale e salvare il contenuto nella copia ?

    #39447
    Sergio Bertana
    Amministratore del forum

    Naturalmente l’operazione di invio di un file verso il server FTP occupa un certo tempo (Tanto più lungo quanto è più lungo il file), e durante questo tempo il file deve essere bloccato in scrittura, non devono esserci altri accessi da programma sul file in scrittura.

    Sicuramente è buona l’idea di creare una copia del file originale che poi verrà utilizzata per il trasferimento in FTP, purtroppo non esiste un FB di copia files, quindi se vuoi fare una copia devi gestire la lettura del file di origine e la scrittura del file di destinazione.

    Ma io ti consiglierei di fare transitare le operazioni di scrittura nel file locale da un FB FIFOFile (Topic), in questo modo ogni volta che il programma deve scrivere nel file in realtà scrive nel file di appoggio del FIFO e poi se il file trasferito in FTP è libero puoi estrarre i dati dal FIFO e scriverli nel file.

    Così durante l’upload in FTP del file il FIFO continua ad accumulare i dati (Mantenendoli anche allo spegnimento) e poi quando le operazioni di FTP sono terminate potrai leggere dal FIFO e popolare il tuo file FTP di appoggio.

    #39449
    Luca Marani
    Partecipante

    Perfetto, grazie, però ho un problema e una segnalazione.

    Il problema è: il file dove salva la FIFO continua a crescere ? Mi devo preoccupare io di cancellarlo se diventa troppo grande ? Cosa serve il comando Del ?

    La segnalazione riguarda la versione del blocco funzione. Quello nel tuo esempio funziona, però è diverso da quello contenuto nella nuova libreria eLLabLogLib_B100.plclib. Fanno la stessa cosa solo con nomi dei parametri diversi ?

    #39450
    Sergio Bertana
    Amministratore del forum

    Nella gestione del FIFO si definisce in FIFOSize la dimensione massima del file di appoggio, il FB automaticamente mantiene il file a quella dimensione. In pratica il FB inizia a scrivere nel file, poi raggiunta la dimensione limite riprende la scrittura dall’inizio. Questo vuol dire che più grande è il file più il FIFO può contenere dati senza sovrascrivere quelli più datati.

    Conviene sempre utilizzare la versione più recente di libreria che sicuramente contiene i FB più aggiornati. Il comando Del era presente nella prima versione del FB perchè era previsto leggere un record con il comando Out e poi decidere di eliminarlo dal FIFO con il comando Del.

    Nell’ultima versione di FB il comando è sparito, eseguendo il FB con il comando Out attivo il record inserito per primo viene ritornato in uscita ed automaticamente cancellato dal FIFO. Alla prossima esecuzione del FB con il comando di Out attivo viene ritornato il record successivo e così via fino allo svuotamento del FIFO.

    #50054
    Rubox
    Partecipante

    Buonasera, c’è una cosa che non mi è ben chiara sul blocco FTPClient_v1. In tutti gli esempi o c’è un indirizzo IP, oppure c’è un generico nome “myserver”. Ma se io ci metto ad esempio

    FTPServer:=ADR(‘mio.serverftp.com’)

    funziona oppure no? E’ tutto il giorno che apro porte sul router a cui è collegato il PLC e quello su cui c’è il server FTP, che creo regole… ma niente. Mi da sempre errore di risoluzione indirizzo.

    Però se mi collego dalla LAN dove c’è il PLC al server FTP con FileZilla riesco ad accedere al server FTP.

    #50077
    Sergio Bertana
    Amministratore del forum

    Se usi un sistema basato su Cortex M7 puoi mettere l’URL, il sistema gestisce automaticamente la richiesta al server DNS (Naturalmente devi avere impostato correttamente l’indirizzo IP del server DNS nella configurazione di rete).

    Ma non capisco cosa c’entra il creare regole sul router a cui è collegato il PLC, l’FTPClient è appunto un client quindi esce automaticamente sulla rete. Magari il tuo problema è il non avere settato correttamente il gateway nelle impostazioni di rete.

    Prova connettendoti in telnet da locale allo SlimLine ad eseguire un comando di ping verso un URL su Internet (Esempio Ping google.com) così verifichi se lo SlimLine può accedere alla rete Internet. Se non funziona hai problemi nella impostazione del gateway.

    #50078
    Rubox
    Partecipante

    Buonpomeriggio, il problema era che nella pagina di configurazione web del PLC mi faceva vedere dei valori di gateway e DNS impostati correttamente, invece leggendo i valori con il PLC e la funzione SysOSIDValue me ne trovavo altri. Ho scritto i valori da PLC e adesso sembra funzionare correttamente.

    Mi scuso per le domande banali, anche nell’altro post, ma onestamente non sapevo più che pesci pigliare e quindi ho comunque aperto le porte sul router lato PLC e verificato e ricreato le regole sul router lato server FTP.

    #50091
    Sergio Bertana
    Amministratore del forum

    Il comportamento della configurazione del sistema da pagina web è riportato in questo topic.

Stai visualizzando 11 post - dal 1 a 11 (di 11 totali)
  • Devi essere connesso per rispondere a questo topic.