Logica a ritenuta Seal-In rispetto ai comandi PLC di blocco/sblocco
Seal-in circuits and OTL/OTU instructions can hold the same command, but they fail differently. This guide compares scan behavior, restart risk, troubleshooting, permissives, and safer PLC design p...
Uno dei linguaggi di programmazione più diffusi oggi per i controllori dell’automazione industriale si chiama logica ladder, sulla scia del precedente metodo di controllo che utilizzava relè elettrici interbloccati.
Il linguaggio ladder utilizza contatti, bobine e blocchi grafici per rappresentare le istruzioni logiche. Come accade con quasi tutti i linguaggi di programmazione, esistono diversi modi per creare una soluzione programmata all’interno del linguaggio. Questi diversi approcci possono produrre risultati simili, ma spesso i programmatori scelgono un metodo preferito e lo adottano sistematicamente.
Una discussione comune riguarda l’uso della logica di autoritenuta rispetto all’uso dei comandi di set e reset per creare un’uscita che rimanga attiva finché non viene impartito un comando diverso.

Figura 1. I pulsanti fisici sono alcuni dei dispositivi di ingresso più comuni al centro del dibattito tra autoritenuta e set/reset. Immagine utilizzata per gentile concessione di Adobe Stock
Comandi di mantenimento
In praticamente ogni programma PLC sono presenti bobine di mantenimento; queste bobine impostano una variabile, come un’uscita, su vero quando il rung è vero, ma la mantengono vera anche dopo che il rung diventa falso. Una bobina di reset associata alla stessa variabile applica la logica inversa: forza la variabile a diventare falsa non appena il rung è vero.
Dal punto di vista della programmazione, può essere più semplice pensare a una bobina di mantenimento come all’assegnazione di un valore a una variabile. Quando la bobina di mantenimento è vera, la variabile viene impostata a 1. Quando invece la bobina di reset è vera, la variabile viene impostata a 0.
Per questo motivo vengono chiamati set e reset, ma è altrettanto comune trovare i termini “latch” e “unlatch”, che significano esattamente la stessa cosa.

Figura 2. Un esempio di comandi di ingresso utilizzati per impostare (set) o reimpostare (reset) una variabile. Immagine utilizzata per gentile concessione dell’autore
Questo stile di programmazione consente di impostare le variabili su vero in una routine e su falso in altre routine, riducendo notevolmente lo spazio visivo occupato dal codice sullo schermo. Consente inoltre di utilizzare condizioni complesse completamente diverse per eseguire il reset della variabile rispetto a quelle necessarie per impostarla.
Lo svantaggio dell’uso del mantenimento è che, se le condizioni della bobina di set non diventano false prima che venga elaborata la bobina di reset, la variabile rimarrà vera anche tentando di reimpostarla in un altro punto. Questo problema può aumentare i tempi di ricerca dei guasti e portare i programmatori in situazioni difficili. Spesso i programmatori utilizzano un bit a impulso singolo sul fronte di salita o di discesa prima di un set, per garantire che le condizioni siano vere per una sola scansione.
Struttura della logica di autoritenuta
La logica di “autoritenuta” viene spesso utilizzata per inizializzare un processo, ad esempio per avviare motori con un comando di avvio momentaneo e terminarlo successivamente con un pulsante di arresto momentaneo analogo.
La logica funziona creando un ramo attorno alle condizioni di ingresso, utilizzando la stessa variabile della bobina di uscita. Il pulsante di arresto, o le condizioni di arresto, vengono quindi inseriti in serie prima o dopo il ramo, in stato normalmente chiuso.
Quando l’uscita diventa vera, si dice che le condizioni di ingresso sono “mantenute”, poiché il comando di avvio può essere rimosso, ma l’alimentazione continuerà a raggiungere l’uscita. Quando vengono soddisfatte le condizioni di arresto, ossia il contatto si apre, l’uscita si disattiva e l’autoritenuta viene interrotta.

Figura 3. Logica di autoritenuta. Immagine utilizzata per gentile concessione dell’autore
Il vantaggio di questa logica è che le condizioni di avvio e di arresto vengono mantenute nello stesso punto, rendendola ideale per avviare un processo, come un motore di ventilatore, o per avviare un’attività robotica.
Lo svantaggio emerge quando sono presenti molte condizioni di avvio o di arresto: la serie di comandi e i rami paralleli del rung possono diventare disordinati e difficili da leggere, arrivando spesso a occupare due righe sullo schermo.
Inoltre, quando si utilizzano bobine momentanee, è difficile avere più condizioni di arresto o più condizioni di avvio per la stessa uscita. Sono necessari bit di handshake aggiuntivi se si desidera interrompere l’autoritenuta da altre parti del programma. In caso contrario, si possono creare riferimenti ai bit in conflitto e un funzionamento incoerente della macchina.
“Il mantenimento uccide”
Beh, forse non è sempre davvero così, ma ho sentito spesso questa frase riferita alla logica di mantenimento. Il presupposto è che le uscite possano rimanere facilmente bloccate nella posizione attiva perché c’è un errore nella logica di reset o di set. Questo è certamente uno svantaggio dell’uso del mantenimento, ma può essere facilmente risolto verificando i riferimenti incrociati delle variabili e assicurandosi di avere un reset per ogni set.
Il metodo della logica di mantenimento produce una logica molto più pulita, facile da leggere e seguire, ma può essere utilizzato eccessivamente fino a creare una rete di bobine di set e reset complesse, soprattutto quando sono distribuite su molte sottoroutine.

Figura 4. Se questo è un pulsante normalmente aperto, questa logica di mantenimento creerà una condizione sempre attiva. Immagine utilizzata per gentile concessione dell’autore
L’esempio di logica mostrato sopra rappresenta un semplice caso errato in cui un’uscita si disattiverebbe (reset) solo quando viene premuto il pulsante N.O. Non appena l’operatore rilascia il pulsante, l’uscita si riattiva (set). Se quell’uscita controlla un ventilatore, questo non si spegnerà mai.
La logica avrebbe dovuto essere probabilmente simile a quella mostrata nell’immagine seguente. Quando viene premuto il pulsante N.O., l’uscita si attiva (set). Quando viene rilasciato, si disattiva (reset). Un semplice errore nella scelta tra normalmente chiuso e normalmente aperto può fare sì che l’uscita rimanga sempre attiva.

Figura 5. Logica corretta di set/reset per un pulsante normalmente aperto. Immagine utilizzata per gentile concessione dell’autore
Un giusto equilibrio
Come per ogni altro aspetto della vita, la logica di mantenimento o di autoritenuta dovrebbe essere utilizzata con grande moderazione.
Non sarà possibile risolvere ogni problema con le bobine di mantenimento e non tutte le uscite devono avere condizioni di autoritenuta. L’esempio precedente di logica errata potrebbe verificarsi sia con la logica di mantenimento sia con quella di autoritenuta: nessuno dei due metodi è immune dai problemi.
In genere utilizzo la logica di mantenimento quando voglio effettuare un handshake con un’altra parte di codice o un’altra attività, ad esempio impostando i bit previsti da una sequenza. Invece di inserire codice o calcoli complessi nella sequenza, imposto semplicemente un bit della sequenza e poi lo reimposto quando il codice di calcolo è completo. Lo stesso vale per dispositivi come le telecamere. Potrei impostare un bit di trigger nella sequenza e poi reimpostarlo quando la telecamera ha terminato.
Utilizzo spesso la logica di autoritenuta quando comando dispositivi di movimento come servomotori o robot; in questo modo posso aggiungere condizioni che mi consentano di arrestare il movimento prima della fine del comando. Se comando un servomotore per spostare un attuatore lineare, ma un altro dispositivo di presa si muove quando non dovrebbe, posso usare una condizione di autoritenuta per impartire l’arresto. I pulsanti HMI e quelli fisici utilizzano spesso condizioni di autoritenuta quando si dispone di un singolo pulsante per una funzione, come avvio e arresto.

Figura 6. Confronto tra gli scenari per la logica di mantenimento (set) e la logica di autoritenuta. Immagine utilizzata per gentile concessione dell’autore
Qual è la risposta definitiva? Autoritenuta o mantenimento?
Siamo quindi arrivati alla fine dell’articolo senza una raccomandazione conclusiva assoluta. Ma questo è tipico dell’automazione e del controllo: è la situazione a determinare il metodo più appropriato. Inoltre, esistono molti scenari in cui entrambi i metodi possono essere utilizzati in modo equivalente e non esiste una risposta corretta univoca. Imparando a memoria entrambi i metodi e applicandoli con attenzione, dovreste riuscire a superare la maggior parte dei problemi di programmazione che incontrerete.
Non ne hai mai abbastanza di contenuti sui PLC? Neanch’io.
Scopri altro!