Benvenuto in questo corso di programmazione PLC Allen Bradley con Logix Designer, 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 CompactLogix 5370, simulandolo con Studio 5570 Emulate.
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 Rockwell Automation (Allen Bradley) 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 CompactLogix e ControlLogix.
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_R (Timer On Delay Retentive).
Nella prossima figura vediamo l’editor di Logix Designer con il programma costruito utilizzando i blocchi grafici.
Il software sostanzialmente è molto semplice: abbiamo nella prima riga il test dell’ingresso del livello minimo, che viene inviato sull’ingresso di abilitazione del timer TONR_01; l’ingresso viene però negato, infatti a noi interessa sapere quando il livello è scoperto.
La variabile tempo1 è definita di tipo globale e contiene il set point da contare, nel programma di esempio è impostato a 5 secondi (espressi in millisecondi).
Quando il timer finisce di contare, si attiva il bit “attiva_carico_acqua”.
Il secondo timer (TONR_02) viene invece attivato con l’ingresso diretto del livello alto del serbatoio HL101; anche questo timer conta 5 secondi, e resetta il bit di attivazione carico.
Dato che nel linguaggio FBD in questo caso non esiste la possiblità di usare Latch e Unlatch, abbiamo costruito un’auto ritenuta sul bit di attivazione carico, posta in AND con il negato della condizione di spegnimento attivata dal secondo timer.
Le prime due righe di programma in pratica attivano e disattivano il carico in base al livello.
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 TONR_03 che apre la valvola V102 di ingresso acqua.
Notiamo l’utilizzo di un secondo AND, che serve ad attivare la valvola dell’acqua solo se siamo con la funzione di carico attivata; senza questo controllo basterebbe anche aprire manualmente V103 e V104 per fare aprire V102.
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.