Quando una macchina si ferma, il problema raramente è solo un sensore guasto: spesso manca una lettura chiara della logica che collega ingressi, condizioni e uscite. Uno schema PLC serve proprio a rendere visibile questo percorso, dalla pressione di un pulsante all’avvio di un motore o all’apertura di una valvola. In queste righe mostro come leggerlo, quali rappresentazioni scegliere, come costruirne uno affidabile e quali errori possono rallentare il collaudo di un impianto automatico.
Uno schema PLC efficace rende comprensibile ogni decisione della macchina
- Ingressi e uscite descrivono il collegamento tra PLC e dispositivi sul campo.
- Il linguaggio Ladder Diagram è utile per leggere rapidamente condizioni, consensi e comandi.
- FBD, SFC e Structured Text diventano più adatti quando la logica include funzioni complesse o sequenze articolate.
- Uno schema deve distinguere chiaramente logica di controllo, cablaggio e funzioni di sicurezza.
- La verifica richiede simulazione, monitoraggio del ciclo PLC e prove sul comportamento reale della macchina.

Che cos’è uno schema PLC e cosa rappresenta davvero
Con schema PLC si può intendere sia il diagramma elettrico dei collegamenti, sia la rappresentazione grafica del programma che governa la macchina. Sono due documenti diversi, anche se devono combaciare perfettamente. Il primo mostra dove arrivano alimentazione, sensori e attuatori; il secondo descrive quali condizioni devono verificarsi perché il PLC attivi un’uscita.
La confusione tra questi due livelli è uno degli errori più comuni. Un contatto normalmente aperto disegnato nel programma, per esempio, non è necessariamente un pulsante fisico normalmente aperto. Può rappresentare un bit interno, un consenso proveniente da un’altra funzione o lo stato elaborato di un sensore.
I tre livelli da tenere separati
Io leggo sempre un progetto PLC come un collegamento tra tre piani. Il primo è il campo, dove si trovano fotocellule, finecorsa, encoder, pulsanti, motori, elettrovalvole e altri dispositivi. Il secondo è l’hardware del controllore, con CPU, moduli di ingresso e uscita, alimentazione e rete industriale.
Il terzo piano è il programma. Qui gli indirizzi degli ingressi diventano condizioni logiche, i temporizzatori introducono ritardi e i bit interni memorizzano stati o consensi. Solo quando questi tre livelli sono coerenti lo schema è utile anche durante manutenzione e ricerca guasti.
| Elemento | Funzione | Esempio pratico |
|---|---|---|
| Ingresso digitale | Legge uno stato acceso o spento | Pulsante di avvio, finecorsa, fotocellula |
| Ingresso analogico | Legge un valore continuo | Pressione, temperatura, posizione |
| Uscita digitale | Comanda un dispositivo in modo discreto | Contattore, spia, elettrovalvola |
| Uscita analogica | Invia un riferimento variabile | Velocità di un inverter, apertura di una valvola |
| Bit interno | Conserva o distribuisce uno stato logico | Macchina pronta, ciclo attivo, allarme presente |
La norma IEC 61131-3:2025 definisce sintassi e semantica dei principali linguaggi per controllori programmabili, tra cui Ladder Diagram, Function Block Diagram, Structured Text e Sequential Function Chart. Questo non significa che ogni progetto debba usare un solo linguaggio. Nei sistemi moderni è spesso più efficace assegnare a ogni parte la rappresentazione più leggibile.
Come leggere un diagramma Ladder senza perdersi
Il Ladder Diagram, spesso chiamato LAD, riprende visivamente la logica dei circuiti a relè. Le due barre verticali delimitano il circuito logico, mentre le linee orizzontali, dette rung, contengono condizioni e risultati. La lettura procede in genere da sinistra verso destra e dall’alto verso il basso.
Un contatto rappresenta una condizione, mentre una bobina rappresenta il risultato della rete. In forma semplificata, una riga può essere interpretata così: se il consenso di sicurezza è presente, il pulsante di avvio è attivo e il sensore conferma la posizione corretta, allora abilita il motore.
Contatti, bobine e condizioni logiche
- Il contatto normalmente aperto verifica se una variabile è vera.
- Il contatto normalmente chiuso verifica se una variabile è falsa.
- La bobina assegna uno stato a un’uscita o a una variabile interna.
- I rami in serie realizzano una logica AND.
- I rami in parallelo realizzano una logica OR.
Un esempio tipico è il comando marcia-arresto di un motore. Il pulsante di marcia dà un impulso, ma il motore deve restare attivo anche dopo il rilascio del pulsante. Per ottenere questo comportamento si usa un autoritenuta, cioè un contatto associato allo stesso comando di marcia che mantiene vera la condizione.
La ritenuta deve però essere interrotta da stop, emergenza, sovraccarico o perdita di consenso. In un progetto ben documentato, questi elementi non sono nascosti in una rete troppo lunga: sono riconoscibili e associati a nomi chiari, come Safety_OK, Drive_Ready o Guard_Closed.
Il metodo più rapido per il troubleshooting
Quando un’uscita non si attiva, io parto dall’uscita e risalgo la rete. Individuo la bobina che dovrebbe comandare il dispositivo, controllo quali contatti la precedono e confronto lo stato visualizzato nel monitor PLC con la condizione reale della macchina.
- Individuare l’uscita che non risponde.
- Trovare la rete Ladder che la pilota.
- Controllare ogni condizione da sinistra verso destra.
- Confrontare gli stati software con sensori e cablaggi reali.
- Verificare se un’altra rete modifica la stessa variabile.
Quest’ultimo controllo è decisivo. Due reti che scrivono la stessa uscita possono creare comportamenti difficili da prevedere e rendere il programma quasi impossibile da manutenere. Come regola pratica, preferisco comandare ogni uscita fisica in un solo punto del programma, usando bit intermedi per raccogliere le varie condizioni.
Quale rappresentazione scegliere tra Ladder, FBD, SFC e ST
Non esiste un linguaggio migliore in assoluto. La scelta dipende dalla natura del controllo, dall’esperienza del team e da chi dovrà intervenire sulla macchina dopo la messa in servizio. Un manutentore abituato agli schemi elettrici può lavorare più velocemente in Ladder, mentre un programmatore che gestisce formule, array o ricette può preferire Structured Text.
| Linguaggio | Punto di forza | Uso indicato | Limite principale |
|---|---|---|---|
| LD o Ladder | Lettura immediata della logica binaria | Comandi macchina, interblocchi, diagnostica | Può diventare dispersivo con algoritmi complessi |
| FBD | Blocchi funzionali collegati graficamente | Regolazioni, segnali analogici, funzioni riutilizzabili | Richiede ordine per evitare reti troppo affollate |
| SFC | Rappresentazione chiara delle fasi | Cicli sequenziali, ricette, macchine a stati | Non sostituisce tutta la logica di dettaglio |
| ST | Flessibilità nella programmazione testuale | Calcoli, gestione dati, algoritmi e strutture ripetitive | È meno immediato per chi lavora soprattutto sul campo |
Per una linea di lavorazione meccanica, una combinazione può essere molto efficace. Userei SFC per le fasi del ciclo, FBD per il trattamento di segnali e regolazioni, Ladder per consensi e interblocchi e ST per calcoli più articolati. Il risultato è più leggibile di un unico linguaggio usato per tutto.
Il criterio che considero più importante non è la preferenza personale del programmatore, ma la manutenibilità. Se un tecnico deve trovare in pochi minuti perché una pinza non chiude o perché un asse non parte, una rete visiva e ben nominata vale più di una soluzione elegante ma difficile da seguire.
Come costruire uno schema PLC partendo dalla macchina
Prima di aprire l’ambiente di programmazione, conviene descrivere il comportamento della macchina con parole semplici. Per esempio: il cilindro avanza quando il pezzo è presente, la protezione è chiusa e la pressione è sufficiente; a fine corsa, il cilindro rientra dopo un ritardo di 500 millisecondi.
Da questa frase si ricavano ingressi, uscite, condizioni e tempi. Il passaggio intermedio è una lista I/O, che collega ogni dispositivo fisico all’indirizzo e al nome usato nel programma.
| Dispositivo | Tipo | Nome consigliato | Ruolo nella logica |
|---|---|---|---|
| Fotocellula pezzo presente | Ingresso digitale | Part_Present | Abilita il ciclo |
| Pressostato | Ingresso digitale | Pressure_OK | Blocca il comando in caso di pressione insufficiente |
| Finecorsa cilindro avanti | Ingresso digitale | Cylinder_Extended | Conferma la posizione raggiunta |
| Elettrovalvola | Uscita digitale | Valve_Extend | Comanda l’avanzamento del cilindro |
| Sensore analogico | Ingresso analogico | Temperature_Raw | Fornisce il valore da scalare e controllare |
Dal segnale al comando
Il PLC esegue ciclicamente una sequenza composta, in termini generali, dalla lettura degli ingressi, dall’elaborazione del programma e dall’aggiornamento delle uscite. Per questo una condizione può cambiare nel campo in un momento diverso da quello in cui il programma la valuta.
Nei comandi rapidi, nei conteggi veloci o nella gestione di encoder è quindi necessario considerare tempi di scansione, filtri e moduli ad alta velocità. Un ingresso standard non è sempre adatto a rilevare impulsi molto brevi, anche se il sensore è tecnicamente abbastanza veloce.
Per i segnali analogici bisogna inoltre distinguere il valore letto dal valore ingegneristico. Un ingresso da 4-20 mA, per esempio, deve essere convertito nella grandezza reale, come bar o gradi Celsius, e sottoposto a limiti plausibili. Un valore fuori scala dovrebbe generare un allarme o una condizione di blocco, non essere trattato come una misura normale.
Un esempio di sequenza semplice
Immaginiamo una stazione che fora un componente metallico. Il ciclo può essere organizzato in quattro fasi: attesa del pezzo, chiusura del bloccaggio, avanzamento del mandrino e ritorno in posizione iniziale.
- Attesa del sensore pezzo e della protezione chiusa.
- Bloccaggio fino alla conferma del pressostato o del finecorsa.
- Lavorazione con controllo del tempo massimo consentito.
- Ritorno con verifica della posizione di riposo.
Ogni fase dovrebbe avere una condizione di ingresso, un’azione e una condizione di uscita. Questo approccio evita di collegare direttamente decine di contatti alla stessa bobina e rende molto più semplice capire in quale punto il ciclo si è fermato.
Gli errori che rendono un diagramma PLC fragile
Un programma può funzionare in prova e rivelarsi comunque difficile da gestire. Il primo segnale è la presenza di indirizzi anonimi, commenti assenti e variabili con nomi come M10.2 o DB3.DBX4.0 senza una descrizione associata. In manutenzione, ogni secondo perso per interpretare un indirizzo aumenta il tempo di fermo.
Leggi anche: PLC - Come funziona davvero e dove porta valore nell'automazione
Gli sbagli più frequenti
- Usare lo stesso output in più reti senza una regola chiara.
- Confondere lo stato elettrico del sensore con il significato logico del contatto.
- Affidare una funzione di sicurezza soltanto al programma standard del PLC.
- Non prevedere timeout per cilindri, motori o movimenti che possono bloccarsi.
- Ignorare il comportamento dopo un riavvio o una mancanza di alimentazione.
- Inserire timer con valori fissi senza spiegare perché sono stati scelti.
- Lasciare allarmi generici che non indicano quale condizione è venuta meno.
La sicurezza merita una distinzione netta. Un arresto di emergenza, un riparo interbloccato o una funzione con rischio significativo possono richiedere circuiti e controllori di sicurezza dedicati, secondo la valutazione del rischio e le norme applicabili. Il fatto che una bobina venga disattivata dal software non equivale automaticamente a una funzione di sicurezza validata.
Prima del collaudo io controllo sempre anche gli stati anomali. Cosa succede se il pezzo scompare durante il ciclo? Se il finecorsa non arriva? Se l’operatore preme stop mentre il cilindro è a metà corsa? Uno schema affidabile non descrive solo il funzionamento normale, ma anche come la macchina deve fermarsi quando qualcosa va storto.
Come verificare lo schema prima di avviare l’impianto
La simulazione software è utile, ma non sostituisce il controllo dell’impianto. Serve a scoprire condizioni logiche mancanti, transizioni impossibili e timer errati; il cablaggio reale può invece evidenziare polarità invertite, indirizzi scambiati, sensori montati al contrario o attuatori che reagiscono in modo diverso da quello previsto.
Una verifica ordinata può seguire questa sequenza:
- Confrontare la lista I/O con gli schemi elettrici e le morsettiere.
- Testare gli ingressi uno alla volta senza avviare il ciclo automatico.
- Comandare le uscite in modalità manuale con le necessarie autorizzazioni.
- Controllare interblocchi, arresti, allarmi e ritorno dopo il reset.
- Eseguire il ciclo in condizioni normali e poi con guasti simulati.
- Registrare tempi, messaggi e modifiche apportate durante il collaudo.
Durante il test è importante osservare sia il monitor del PLC sia la macchina. Un’uscita può risultare attiva nel programma mentre il dispositivo non si muove per un problema di alimentazione, fusibile, relè intermedio o cablaggio. La diagnosi corretta nasce dal confronto tra comando logico e risposta fisica, non dalla sola schermata software.
Per impianti di lavorazione e automazione meccanica consiglio anche di conservare una copia versionata del progetto, della lista I/O e dei parametri. Un backup senza data, senza versione del software o senza descrizione delle modifiche è molto meno utile di quanto sembri quando occorre ripristinare rapidamente una macchina.
La leggibilità dello schema è parte delle prestazioni della macchina
Un buon schema PLC non serve soltanto a programmare. Riduce i tempi di diagnosi, facilita l’addestramento dei tecnici e rende più sicure le modifiche future. La scelta del linguaggio conta, ma contano ancora di più nomi coerenti, sequenze riconoscibili, allarmi specifici e una separazione chiara tra controllo ordinario e sicurezza.
La mia regola pratica è semplice: ogni riga dovrebbe spiegare una decisione precisa e ogni fase dovrebbe avere un motivo comprensibile. Quando il diagramma permette di rispondere rapidamente alla domanda “quale condizione impedisce ora il movimento?”, il progetto sta già lavorando a favore della produzione e della manutenzione.