Benvenuto in questo corso di programmazione PLC ABB con Automation Builder, oggi ci avviciniamo al linguaggio a blocchi di funzione FBD, che fa parte dei cinque linguaggi di programmazione per i PLC, definiti nello standard IEC 61131-3.
Il programma di oggi gestisce il reintegro di acqua all’interno di un serbatoio, e per poterlo provare utilizziamo un PLC AC500-eCo, simulandolo con il simulatore integrato nella suite di programmazione.
Il linguaggio FBD, che significa (a blocchi di funzione), è tra i più utilizzati per i controllori logici programmabili, insieme al linguaggio ladder. Nella storia l’ FBD rappresenta il modo di programmare dei DCS, e questo modo di scrivere i programmi risulta abbastanza comprensibile anche a chi non è un programmatore; infatti come vedremo a breve, in questo tipo di diagramma l’enfasi è posta sulla logica booleana.
Anche i PLC della ABB sono programmabili in diversi linguaggi, e tutti i controllori di questo produttore ci mettono a disposizione il linguaggio a blocchi di funzione.
Il programma di esempio di oggi, gestirà l’immissione di acqua all’interno di un serbatoio, controllando i livelli digitali presenti su di esso, e attivando le opportune utenze; ecco lo schema del piccolo sistema da automatizzare nella prossima immagine.
Nella figura sopra troviamo il serbatoio chiamato T101, una valvola di carico V103, e altre valvole che servono per svolgere diversi compiti; quello che ci interessa è che abbiamo anche la valvola V102 che immette acqua potabile nel sistema.
Come facciamo a caricare il serbatoio? Supponiamo di voler mantenere il livello compreso tra i due livelli montati su di esso, potremmo o caricarlo dal basso, o meglio ancora caricarlo dall’alto attraverso la valvola V103; per fare questo dovremo attivare le valvole V102, V104, e V103.
Il programma di carico serbatoio per il PLC ABB.
Ecco come funzionerà il nostro software: se il livello scende sotto LL101, dopo qualche secondo attiviamo il carico dell’acqua; quando il livello tocca il livello alto HL101, dopo qualche secondo fermiamo il carico.
Per realizzare questo software in linguaggio FBD, ci siamo avvalsi di istruzioni logiche elementari (AND, NOT), oltre che di alcuni temporizzatori di tipo TON (Timer On Delay Retentive).
Nella prossima figura vediamo l’editor di Automation Builder con il programma costruito utilizzando i blocchi grafici.
Il software è molto semplice: abbiamo nella prima riga il test dell’ingresso del livello minimo, che viene inviato sull’ingresso di abilitazione del timer TON_0, l’ingresso viene però negato, infatti a noi interessa sapere quando il livello è scoperto.
La negazione dell’ingresso è rappresentata dal cerchietto bianco posto sul connettore “IN” del timer.
Il set point del timer è un valore fisso di 6 secondi ma avremmo anche potuto utilizzare una variabile per poterla cambiare in runtime se necessario, per esempio attraverso una pagina su un pannello operatore HMI o un sistema SCADA.
Quando il timer finisce di contare, si attiva il bit “reintegrare”.
Il secondo timer (TON_1) viene invece attivato con l’ingresso diretto del livello alto del serbatoio HL101; anche questo timer conta 6 secondi, e resetta il bit di attivazione carico.
Notiamo le diciture “S” e “R” che rappresentano una ipotetica “bobina ritentiva” per il nostro comando di reintegro.
Ecco nella prossima figura la seconda parte del software, quella di comando utenze.
Quando si attiva il bit di carico, vengono comandate le valvole V103 e V104; successivamente si controllano i feedbacks delle valvole (quelli di apertura), e se sono entrambe aperte, si attiva il temporizzatore TON_2 che apre la valvola V102 di ingresso acqua.
Notiamo l’utilizzo di un AND a 3 ingressi, che serve ad attivare la valvola dell’acqua solo se siamo con la funzione di carico attivata.
Come abbiamo visto, il programma è molto semplice, naturalmente per essere utilizzato in un contesto reale, andrebbe completato con tutto ciò che riguarda la gestione generale delle utenze, degli allarmi, delle funzioni, e delle sicurezze.