Ladder diagram

Un ladder diagram, diagramma a scala, è un ausilio grafico per la programmazione dei PLC. E’ ormai divenuto il linguaggio standard di programmazione, a fianco dei linguaggi testuali, ormai in via di abbandono. Si vale di pochi semplici simboli grafici.

La simbologia può variare leggermente tra produttori diversi dei PLC; in alcuni casi è possibile richiamare dei gruppi funzionali, ossia delle subroutine in grado di ripetere determinate operazioni. Il linguaggio si basa sulla trasposizione, in logica di programmazione, del funzionamento di una rete elettrica molto semplice, il cui obiettivo è di alimentare o non alimentare opportuni utilizzatori elettrici (bobine) tramite interruttori (chiamati anche contatti o relé). La motivazione di questa trasposizione è di tipo storico: prima dei PLC si usavano batterie di relé elettromeccanici. Il linguaggio LD è nato per far accettare l’idea di “programmare” (e quindi l’uso del PLC) a chi era abituato a fare i sistemi di controllo logico con i relé elettromeccanici. Ladder significa letteralmente "scala a pioli" dato che esteticamente lo schema ricorda appunto una scala; nel mondo anglosassone ogni ramo orizzontale viene chiamato rung, ossia piolo. Di seguito gli elementi fondamentali di un ladder diagram:

Le “linee orizzontali” che collegano i simboli grafici (contatti e bobine) possono essere orizzontali o verticali e il loro stato può essere "ON" o "OFF", che corrisponde ai valori booleani "1" e "0". Una “linea orizzontale” trasmette lo stato dell'elemento alla sua sinistra a quello situato alla sua destra. Lo stato di collegamento deve essere pertanto considerato come sinonimo di flusso di energia; se è ON il flusso transita se è OFF il flusso non transita. La “linea verticale” di sinistra è sempre considerata ON, mentre quella di destra non ha uno stato predefinito. Analizziamo ora le istruzioni base del Ladder:

Può essere associato a:

Quasi tutti i sistemi consentono di dare ai bit anche dei nomi simbolici oltre ai nomi legati all’indirizzo fisico di memoria come quelli sopra, per migliorare la leggibilità dei programmi.

Se il bit associato vale 1, il contatto è aperto, altrimenti è chiuso.

La bobina rappresenta un generico utilizzatore elettrico, ad esempio una resistenza, o una lampadina. Può essere associata a:

Va inserita sempre all’estremità destra del rung. La bobina si attiva quando passa corrente. Quindi, il bit associato sale al valore logico 1 (ON) se le condizioni logiche alla sua sinistra sono verificate, altrimenti vale 0 (OFF).

Vi sono poi una serie di altri istruzioni aggiuntive: di temporizzazione, di conteggio, istruzioni per il controllo del programma e istruzioni per la manipolazione dei dati. Di seguito un esempio in cui sono impiegati gli elementi sopra citati:

Nel primo rung, se il contatto I1 è chiuso, allora la corrente può andare dal polo + al polo -, attivando così la bobina U1. In logica binaria, questo si traduce nell’espressione: se I1 = 1, allora U1 = 1, altrimenti U1 = 0. Con questi pochi concetti è facile realizzare il linguaggio ladder quelli che sono i costrutti fondamentali della logica booleana:

Le istruzioni di base del LD sono “statiche”: assegnano il valore di un’uscita in base ad una pura combinazione logica delle variabili associate ai contatti. E’ possibile creare delle strutture dinamiche che mantengono il valore durante varie scansioni.

Nell’esempio sopra tutte le variabili sono inizialmente al valore 0. Quando sono verificate sia I2 = 1 che I3 = 0, U1 commuta a 1 e rimane a 1 finché I3 è nullo. Un impulso di durata finita su I3 pone U1 a 0. L’ingresso I2 agisce da set, mentre I3 è il reset. In pochi passi è stato quindi creato un bistabile comunemente chiamato Flip-Flop.