Vai al contenuto

Nuovo blocco funzione per invio eMail

Home Forum Programmazione IEC 61131 (LogicLab) Nuovo blocco funzione per invio eMail

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

    Si il FB FIFOFile_v1 ha i comandi In per inserire un record nel FIFO, Out per leggere il record inserito, e Delete per cancellarlo.

    L’uscita DataOn si attiva se c’è almeno un record nel FIFO. Se definisci FIFOFilename il FB apppoggia i dati nel file definito, se lo definisci NULL i dati sono appoggiati in un buffer di memoria RMalloc.

    #51042
    Rubox
    Partecipante

    Leggendo sul manuale la spiegazione di FIFOFile_v1 c’è scritto: Questo blocco funzione effettua la gestione di un registro FIFO su di un file (Può essere eseguito in un solo loop di programma come una funzione).

    La parte in grassetto che cosa significa? Che posso usare un solo FB FIFO per programma?

    #51050
    Sergio Bertana
    Amministratore del forum

    La nota Può essere eseguito in un solo loop di programma come una funzione, la mettiamo in tutte quelle FB che esauriscono il loro lavoro in un solo ciclo di esecuzione. Cioè non hanno variabili statiche al loro interno. Quindi se non fosse che la normativa IEC61131 ha messo dei limiti stringenti alla definizione delle funzioni si sarebbe realizzata una funzione al posto di un FB per quel tipo di operazione.

    La nota informa che la puoi eseguire come una funzione ogni volta che la esegui lei termina il suo compito, quindi ad esempio il FIFO se vedi qualche mio programma dove viene usato vedrai che istanzio il FIFO nelle variabili globali e poi ne  eseguo la chiamata per inserire elementi o per estrarre elementi in tutte le parti di programma dove serve.

    Ma in un programma posso avere tutti i FIFO che si vuole, ognuno sarà istanziato con un nome diverso.

    #51275
    Rubox
    Partecipante

    Se non alloco il FIFOIdx su una memoria tampone perdo i dati scritti nel FIFO allo spegnimento. Per me non è un problema. Però ho notato che il file di appoggio non viene ricreato ad ogni avvio del sistema, ma resta quello di prima.

    C’è un modo per ripartire con un file vuoto? O meglio: se il file ha già dei dati vecchi dentro può dar problemi? (mi viene in mente che se non indico nè il file di appoggio nè il FIFOIdx forse riparte con una situazione “pulita”, corretto?)

    #51282
    Sergio Bertana
    Amministratore del forum

    Si per non perdere i dati salvati nel FIFO allo spegnimento FIFOIDx deve essere RETAIN, ed i dati devono essere appoggiati su di un file.

    Se non indichi il file di appoggio i dati sono salvati in memoria e non importa come è definito FIFOIDx perchè vengono comunque persi.

    Il file è sempre lo stesso perchè contiene i dati salvati al suo interno. Se hai definito FIFOIDx RETAIN la scrittura continua dal punto corretto, se non è RETAIN la scrittura inizia dall’inizio del file.

    #51286
    Rubox
    Partecipante

    Sono restio a usare la memoria retain per scrivere valori ogni minuto: in un post sui terminali Weintek avevo letto che alla lunga si può guastare la memoria. E’ così anche per quella del PLC, oppure sopporta cicli di scrittura intensivi?

    #51311
    Sergio Bertana
    Amministratore del forum

    Il problema a cui ti riferisci è legato all’utilizzo di memorie EEPROM e FLASH, ma sulla famiglia SlimLine ARM7 e CortexM7 la memoria utilizzata per lo storage dei dati RETAIN è una memoria FRAM che ha cicli di scrittura infiniti.

    La considerazione sul numero di cicli và fatta nel caso appoggi il FIFO su di un file, se utilizzi la memoria FLASH presente nei sistemi ARM7 e CortexM7 per apopoggiare il file devi considerare il numero di cicli di scrittura che sono dell’ordine di cenntinaia di migliaia per ogni settore. Ma considerando che un file su disco occupa molti settori il numero di cicli và moltiplicato per il numero di settori utilizzati. Quindi più grande è il file maggiore è il numero di cicli possibili.

    Discorso a parte è per la SDCard, se utilizzi chip con la gestiore del wear leveling la scrittura è automaticamente spalmata su tutti i settori della scheda aumentando moltissimo il numero di cicli di scrittura. Questa è la stessa tecnica utilizzata nel dischi SSD per il PC.

    #54581
    Rubox
    Partecipante

    Rieccomi sul forum a chiedere aiuto. Ho dovuto cambiare il PC passando da Win 8.1 a Win 10. Ho scaricato e installato l’ultima versione di LogicLab, la 3.1.0.0, Build: 13 dicembre 2019.

    Oggi ho dovuto cambiare un paio di valori nel programma che sta funzionando da 5 mesi sul PLC. Ricompilando mi da il seguente warning, warning che prima non compariva.

    EMailSend(504) – warning G0138: ADD => Illegal conversion to pointer

    Se metto il commento sulla riga un cui invoco la variabile di tipo EMailSend il warning scompare. E’ un warning che potrebbe fare danni nell’esecuzione della logica e el programma? A cosa è dovuto? C’è un modo per ovviare?

    #54585
    Sergio Bertana
    Amministratore del forum

    La nuova versione di LogicLab ha introdotto ulteriori controlli sulla corrispondenza dei tipi di dato, in linea generale quel tipo di warning stà ad indicare che viene eseguita una somma tra un pointer ed una variabile.

    Le warning non inficiano il funzionamento del programma, ma se vuoi evitare la warning ti consiglio di eseguire il download dell’ultima versione della libreria eLLabNetworkLib ed utilizzare il nuovo FB EMailSend.

    #54586
    Rubox
    Partecipante

    Effettivamente la prima cosa che ho fatto è cercare se c’erano nuove librerie e con la nuova non c’è quel warning. Ho notato che nella nuova versione della libreria il campo “Data” è diventato “Body”: immagino sia sempre limitato a 256 caratteri come corpo della email come nella versione precedente?

    Quando ho iniziato a usare i Vostri prodotti avevo trovato davvero utile il PDF “Programmazione IEC 61131-3 (LogicLab)”: nella versione che si scarica ancora dal sito è riportata la versione vecchia di questa libreria e non anche la nuova. Scaricando le librerie nuove utilizzate è poi possibile trovare un PDF con le specifiche? Al momento le ho viste sulla knowledge, ma il PDF era ed è utilissimo in quelle occasioni di assenza di internet.

    #54588
    Sergio Bertana
    Amministratore del forum

    Il FB è stato completamente riscritto ed ora non ha più il limite sui caratteri, se vedi l’esempio ST_SendFileByEMail viene inviato un body da 2048 bytes, ma può anche essere più grande.

    Il manuale in PDF ci costringeva a realizzare una nuova versione ad ogni modifica, inoltre non era possibile gestire la traduzione automatica. Con il manuale On-Line ogni modifica è immediatamente disponibile e possiamo automaticamente pubblicarla in molte lingue grazie ad un traduttore automatico inserito nel nostro sito di supporto.

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