Nuovo blocco funzione per invio eMail
Home › Forum › Programmazione IEC 61131 (LogicLab) › Nuovo blocco funzione per invio eMail
- Questo topic ha 25 risposte, 1 partecipante ed è stato aggiornato l'ultima volta 5 anni fa da
Sergio Bertana.
-
AutorePost
-
Novembre 14, 2019 alle 4:43 pm #51034
Sergio Bertana
Amministratore del forumSi 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.
Novembre 15, 2019 alle 7:25 am #51042Rubox
PartecipanteLeggendo 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?
Novembre 15, 2019 alle 7:33 am #51050Sergio Bertana
Amministratore del forumLa 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.
Novembre 20, 2019 alle 10:10 am #51275Rubox
PartecipanteSe 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?)
Novembre 20, 2019 alle 10:13 am #51282Sergio Bertana
Amministratore del forumSi 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.
Novembre 21, 2019 alle 7:08 am #51286Rubox
PartecipanteSono 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?
Novembre 21, 2019 alle 7:16 am #51311Sergio Bertana
Amministratore del forumIl 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.
Aprile 10, 2020 alle 5:00 pm #54581Rubox
PartecipanteRieccomi 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?
Aprile 10, 2020 alle 5:04 pm #54585Sergio Bertana
Amministratore del forumLa 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.
Aprile 11, 2020 alle 2:20 pm #54586Rubox
PartecipanteEffettivamente 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.
Aprile 11, 2020 alle 2:25 pm #54588Sergio Bertana
Amministratore del forumIl 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.
-
AutorePost
- Devi essere connesso per rispondere a questo topic.