Logica ladder, blocchi FBD, SFC, SCL (testo strutturato); qual’è il linguaggio per PLC migliore per cominciare a programmare?
Benvenuto sul mio sito dedicato al mondo dell’automazione industriale, oggi osserveremo da vicino e confronteremo tre dei linguaggi per plc più apprezzati dai programmatori di tutto il mondo; parleremo infatti del linguaggio ladder, quello a blocchi di funzione, e quello di testo strutturato, tanto amato dai programmatori di computers.
Quando parliamo di linguaggio di programmazione, ci riferiamo al modo di scrivere le istruzioni, e in alcuni casi anche alle potenzialità che quel particolare linguaggio offre in termini di funzioni disponibili.
Per chi vuole cominciare a programmare i controllori logici programmabili, quasi sempre la strada più consigliata è quella di iniziare con il ladder, dato che risulta abbastanza semplice da osservare.
Ci sono però programmatori che già programmano in altri ambiti, che hanno più familiarità con un modo di scrivere più simile al nostro modo di pensare e parlare, ecco che in questo caso il linguaggio ST (nel mondo Siemens chiamato SCL), diventa molto più semplice da comprendere.
Il linguaggio a blocchi di funzione non si discosta troppo dal ladder, tuttavia, come vedremo nell’esercitazione di oggi, enfatizza molto le combinazioni logiche, con i blocchi di funzione OR, AND, XOR e così via.
Cominciamo a dare un’occhiata al programma ladder che troviamo nella prossima immagine, da questo partiremo per osservare i diversi modi scrivere le stesse istruzioni del plc nei diversi linguaggi.
Come vediamo nella figura sopra, sulla prima riga abbiamo inserito una combinazione logica booleana complessa, composta da un contatto aperto, con in parallelo due contatti chiusi. Questa combinazione si esprime come: “Se bit1=1, oppure (bit3 e bit4 valgono 0)”
Poi abbiamo un altro contatto chiuso, che rappresenta un “e bit 2 vale 0”, queste vengono combinate, e successivamente messe in AND con il confronto del valore di intero1 con la costante 10. Quest’ultima funzione è un altro AND.
Il risultato di questo ramo attiva bit10.
Nel ramo successivo abbiamo un temporizzatore che viene attivato da bit5, quindi potremmo dire (se bit 5 vale 1, attiva il temporizzatore), poi quando il timer ha finito di contare, attiva il bit chiamato bit9.
Le linee di programma ladder successive permettono di gestire un indice (intero2), che serve a scorrere il vettore di interi “vettore1”, e a ordinare in senso crescente gli elementi al suo interno.
Per gestire questo indice lo incrementiamo di uno a ogni scansione, e quando raggiunge 5 lo rimettiamo a 1.
L’ultima linea di programma confronta il valore dell’elemento del vettore puntato dall’indice, con il suo successivo, e se necessario, ne scambia i valori utilizzando la variabile d’appoggio.
Bene, ora che abbiamo visto come queste funzioni si scrivono in ladder, vediamo nella prossima immagine come appaiono in linguaggio FBD.
Osserviamo la figura, e notiamo immediatamente la diversa rappresentazione della logica booleana. In questo linguaggio viene molto enfatizzata, per questo abbiamo i blocchi OR e AND disegnati in questo modo.
Per quanto riguarda la negazione NOT, in questo caso troviamo i cerchietti bianchi che negano direttamente l’ingresso, si potrebbe utilizzare al loro posto anche il blocchetto NOT.
Notiamo che l’istruzione di comparazione GT (maggiore), sostanzialmente si rappresenta in maniera identica al linguaggio ladder, tuttavia gli ingressi e le uscite dei blocchetti sono scritti direttamente come assegnazione delle funzioni, e non hanno i contatti.
La parte di gestione vettore è praticamente identica a quella scritta in linguaggio a logica di relè.
Osserviamo nella prossima figura le stesse istruzioni, questa volta in linguaggio di testo strutturato.