Blocco funzione per connessione a server FTP

Attenzione !I messaggi sul forum potrebbero essere modificati dal nostro staff. La data e l'ora dei messaggi potrebbe non essere quella di invio ma quella di moderazione da parte dello staff. Grazie per l'attenzione.

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

Questo argomento contiene 6 risposte, ha 3 partecipanti, ed √® stato aggiornato da  Sergio Bertana 3 anni fa.

Stai vedendo 7 articoli - dal 1 a 7 (di 7 totali)
  • Autore
    Articoli
  • #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.

Stai vedendo 7 articoli - dal 1 a 7 (di 7 totali)

Devi essere loggato per rispondere a questa discussione.