In particolar modo vedremo:
Il Problema
Un tecnico PLC spesso si trova a gestire una serie di allarmi nel sistema S7-1200 tramite TIA Portal. La sfida principale è la gestione dei singoli allarmi in modo intuitivo e leggibile, soprattutto quando si passa dai vecchi S7-300/400 ai nuovi S7-1200/1500. Nei vecchi sistemi era possibile utilizzare indirizzi assoluti per gestire gli allarmi, ma con i nuovi sistemi ottimizzati questo non è più possibile. Questo porta a una serie di domande: come gestire i singoli allarmi in modo intuitivo e come mantenere la leggibilità del codice?
Gestione Allarmi: Il Problema nel Dettaglio
La gestione degli allarmi nel S7-1200 tramite TIA Portal può risultare complessa. Nei vecchi sistemi S7-300/400, era possibile creare un bit per ogni allarme e utilizzare indirizzi assoluti come DB100.DBW0 per la gestione. Con il passaggio ai S7-1200 e alle DB ottimizzate, questo approccio non è più disponibile. Un tecnico può trovare difficile gestire i singoli allarmi senza un nome simbolico, il che rende il tutto meno intuitivo.
Causa Tecnica Gestione Allarmi
La causa principale di questo problema risiede nel cambiamento di approccio alla gestione delle DB ottimizzate nei S7-1200. Siemens ha introdotto l’accesso ottimizzato al blocco di memoria che non permette più l’utilizzo di indirizzi assoluti. Questo cambiamento è stato fatto per migliorare le prestazioni e la gestione della memoria, ma ha comportato la necessità di trovare nuove soluzioni per la gestione degli allarmi.
Soluzione Definitiva per Gestione Allarmi
Passo 1: Utilizzo dei Merker
Un tecnico può iniziare utilizzando i merker per gestire gli allarmi. I merker sono bit che possono essere utilizzati per indicare la presenza di un allarme. Per ogni allarme, si può creare un merker e associare un nome simbolico a ciascuno. Questo approccio mantiene la leggibilità del codice e permette una gestione intuitiva degli allarmi.
Passo 2: Creazione di UDT per Allarmi
Un altro approccio è quello di creare un Data Type definito (UDT) per gli allarmi. Questo permette di definire una struttura contenente tutti i bit degli allarmi e di associare un nome simbolico a ciascuno. Ad esempio:
UDT_ERR TYPE "UDT_ERR" VERSION : 0.1 STRUCT wAlarms := 'True' : Word; // Word with Alarms Err_00 := 'True' : Bool; // Error 00 Err_01 := 'True' : Bool; // Error 01... END_STRUCT; END_TYPE
Passo 3: Utilizzo dell’istruzione GATHER_BLK
Per trasferire i dati dalla struttura UDT a una word, si può utilizzare l’istruzione GATHER_BLK. Questo permette di avere una word contenente tutti gli allarmi, con i bit ordinati correttamente e con nomi simbolici associati. Questo migliora la leggibilità del codice e permette una gestione più intuitiva degli allarmi.
Codice e Configurazione Gestione Allarmi
Ecco un esempio di codice per la gestione degli allarmi utilizzando UDT:
FUNCTION "FillwAlarms" : Void { S7_Optimized_Access := 'TRUE' } AUTHOR : CR VERSION : 0.1 VAR_IN_OUT Err : "UDT_ERR"; END_VAR BEGIN ENO := TRUE; // Fill word of alarms with single bits #Err.wAlarms.%X0 := Err.Err_00; #Err.wAlarms.%X1 := Err.Err_01; #Err.wAlarms.%X2 := Err.Err_02; #Err.wAlarms.%X3 := Err.Err_03; #Err.wAlarms.%X4 := Err.Err_04;...... #Err.wAlarms.%X15 := Err.Err_15; END_FUNCTION
Verifica e Test della Soluzione
Per verificare la soluzione, è possibile controllare che la word degli allarmi sia stata aggiornata correttamente e che i nomi simbolici dei bit siano stati associati correttamente. Si può anche testare se la word è diversa da zero per capire se sono presenti degli allarmi.
Errori Comuni Gestione Allarmi
Ecco alcuni errori comuni nella gestione degli allarmi S7-1200:
- Errore nel collegamento dei bit simbolici alla word degli allarmi.
- Mancanza di aggiornamento dell’UDT quando si modifica un bit.
- Problemi di leggibilità del codice a causa della mancanza di nomi simbolici per i bit.
Domande Frequenti su Gestione Allarmi
Domanda 1: Come posso migliorare la leggibilità del codice per la gestione degli allarmi?
Risposta: Utilizzando UDT e nomi simbolici per i bit degli allarmi.
Domanda 2: Perché i merker sono consigliati per la gestione degli allarmi?
Risposta: I merker permettono una gestione intuitiva e leggibile degli allarmi.
Domanda 3: Come posso aggiornare l’UDT quando si modifica un bit?
Risposta: È necessario aggiornare manualmente l’UDT ogni volta che si modifica un bit.
Conclusione
La gestione degli allarmi nel S7-1200 tramite TIA Portal può essere semplificata utilizzando merker e UDT. Questi approcci migliorano la leggibilità del codice e permettono una gestione più intuitiva degli allarmi. Per maggiori dettagli consulta la documentazione ufficiale Siemens.
Metodi Alternativi e Varianti
Nel panorama della gestione degli allarmi nel sistema S7-1200 tramite TIA Portal, esistono diverse strade per affrontare lo stesso problema. Una delle principali alternative è l’utilizzo dei Merker, che sono stati menzionati come una soluzione efficace per gestire una serie di allarmi. I Merker permettono una gestione più flessibile e intuitiva, in quanto ciascun Merker può essere associato a un evento specifico, come un allarme di emergenza o un errore di caricamento. Questo approccio è particolarmente vantaggioso per i sistemi con un numero elevato di allarmi, dove la chiarezza e la separazione dei dati sono fondamentali. Tuttavia, un Merker può essere più complesso da gestire rispetto a un semplice bit, specialmente quando si tratta di mantenere la leggibilità del codice.
Un’altra variante è l’uso di Data Types (UDT) per strutturare i dati degli allarmi. Questo metodo prevede la creazione di un UDT che contiene una parola (Word) e fino a 16 Bool per rappresentare i singoli allarmi. Questo approccio offre una maggiore chiarezza e leggibilità, dato che ogni Bool può essere rinominato con un nome significativo, come ‘Err_00_EmergencyPressed’. Questo metodo è particolarmente utile quando si desidera mantenere un codice pulito e comprensibile, ma richiede un po’ più di tempo per la configurazione iniziale rispetto a un semplice array di bit. Inoltre, l’uso di UDTs permette di passare facilmente i dati tra funzioni e blocchi, migliorando l’integrazione e la manutenibilità del sistema.
Un’ulteriore alternativa è l’uso di array di word per gestire gli allarmi. Questo metodo implica la copia dei valori degli allarmi in una word, che può poi essere utilizzata nell’HMI. Sebbene questo approccio possa sembrare più contorto rispetto ad altri, offre il vantaggio di una gestione più semplice e diretta degli allarmi all’interno del sistema. Tuttavia, questo metodo può essere meno efficiente in termini di spazio e velocità di esecuzione, specialmente per sistemi con un gran numero di allarmi. In sintesi, la scelta del metodo dipende dalle esigenze specifiche del sistema, dal numero di allarmi e dalla complessità del progetto.
Ottimizzazione Prestazioni
Per rendere la gestione degli allarmi nel sistema S7-1200 più efficiente e veloce, ci sono diversi parametri e tecniche che possono essere sfruttate. Uno dei primi passi è l’ottimizzazione dell’accesso ai dati. L’utilizzo dell’accesso ottimizzato al blocco (Optimized Block Access) può ridurre significativamente il tempo di esecuzione delle operazioni di lettura e scrittura, specialmente per grandi quantità di dati. Questo può essere attivato nelle proprietà del DB, ma è importante bilanciare questa opzione con la necessità di mantenere la leggibilità del codice.
Un’altra tecnica di ottimizzazione è la riduzione della frequenza di aggiornamento degli allarmi. Se gli allarmi non cambiano frequentemente, è possibile ridurre la frequenza con cui il sistema controlla lo stato degli allarmi, migliorando così la velocità complessiva del sistema. Questo può essere fatto impostando timer appropriati o utilizzando funzioni di controllo degli allarmi che si attivano solo quando ci sono cambiamenti significativi.
Infine, l’uso di funzioni di blocco (FC) o funzioni (FU) dedicate alla gestione degli allarmi può migliorare l’efficienza del codice. Queste funzioni possono essere ottimizzate per eseguire operazioni in modo parallelo o utilizzare algoritmi più efficienti per la gestione degli allarmi. Questo approccio richiede una buona conoscenza delle capacità del PLC e della programmazione ad alto livello, ma può portare a significativi miglioramenti nelle prestazioni.
Stanco di andare a tentativi?
Se errori come questo ti mandano in panico, probabilmente ti mancano le basi solide della programmazione PLC.
Smetti di risolvere problemi uno alla volta e impara il metodo giusto dall’inizio.

“Semplifica, automatizza, sorridi: il mantra del programmatore zen.”
Dott. Strongoli Alessandro
Programmatore
CEO IO PROGRAMMO srl







