Benvenuto in questo mini corso di programmazione PLC Allen Bradley in Logix Designer, oggi costruiremo un filtro analogico utilizzando il linguaggio ladder, uno tra i più utilizzati nel mondo per questi controllori.
In questa lezione ho usato un PLC 5370, simulandolo con il software Logix Emulate, per provare il programma e mostrarne il funzionamento.
Il linguaggio Ladder (LD) è il linguaggio di programmazione per PLC più diffuso oggi, probabilmente perché somigliando a uno schema elettrico, permette anche a chi non è “del mestiere” di impararlo in modo relativamente semplice e in poco tempo.
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 logica di relè.
Il programma di esempio di oggi, mostra come smorzare i valori di una variabile numerica, per esempio quella collegata a un ingresso analogico; questo software è indicato comunque in tutti i casi in cui vogliamo “ammorbidire” il valore di un numero che cambia, attuando quella che chiamiamo “integrazione”.
Nella prossima immagine vediamo la curva “grezza” di un valore analogico in nero sul grafico, e il suo valore integrato con la funzione nel PLC (in blu); notiamo che la curva del filtro è molto più morbida, e i picchi nel dato originale vengono “assorbiti”.
Il programma filtro analogico per i PLC CompactLogix e ControlLogix Allen Bradley.
Lo scopo del programma è di memorizzare gli ultimi 10 valori del valore di ingresso, sommarli, e calcolare la media algebrica per ottenere il valore filtrato.
Per realizzare questo software in linguaggio ladder, ci siamo avvalsi di istruzioni logiche elementari (contatti aperti, chiusi, bobine semplici, set e reset), oltre che di alcuni temporizzatori di tipo TON (Timer On Delay). Abbiamo anche usato delle funzioni matematiche e, nella parte di simulazione, di alcune istruzioni di comparazione.
Nella prossima figura vediamo la prima parte del programma.
Nell’immagine sopra troviamo nel primo ramo ladder l’impostazione del set point di intervallo di campionamento, che proviene dalla variabile “tempo1”; questo valore viene spostato nel parametro PRESET del timer TON_2.
Nel secondo ramo abbiamo un clock che ci permette effettuare il campionamento del valore da elaborare con il filtro; notiamo l’utilizzo del flag “DN” per testare il fatto che il timer abbia finito di contare.
Nel terzo ramo abbiamo lo scorrimento dei 10 valori nella coda di memorizzazione, si nota che utilizziamo un vettore di variabili che contiene fino a 10 elementi; l’indice utilizzato per identificare ogni elemento nel vettore è quello scritto tra le parentesi quadre.
Sempre a ogni attivazione del clock di campionamento, nel ramo 4 del programma, inseriamo il nuovo valore campionato all’interno del vettore, nella posizione 1.
Nella prossima figura vediamo il calcolo della somma dei valori nel vettore, e poi il calcolo della media; le istruzioni CPT (Compute) permettono di effettuare calcoli complessi.
L’ultima parte di programma è composta dall’istruzione di divisione, che permette di calcolare la media dei 10 valori memorizzati nel vettore, e ottenere così il nuovo dato filtrato.
Dato che lavoriamo con un vettore di dati, al posto di scrivere le tre istruzioni CPT, avremmo potuto elaborare un indice intero per accedere al vettore, ed eseguire le operazioni con meno istruzioni; oppure sfruttare per questo il potente linguaggio di testo strutturato ST.
Dato che questo tutorial è indirizzato ai “principianti del PLC”, ho ritenuto opportuno mantenere una scrittura semplice, anche se risulta più prolissa e meno ottimizzata.
Per provare il programma ho inserito una routine di simulazione che modifica automaticamente la variabile di ingresso, formando una rampa con valori da 200 a 800; in questo modo possiamo vedere meglio come funziona il software.
Per facilitare la comprensione, ho anche creato una piccola pagina in FactoryTalk View Studio, sulla quale è visualizzato il grafico le curve del valore reale dell’analogica, e del valore filtrato.
Sulla stessa pagina si può attivare e disattivare la simulazione nel PLC, oltre che modificare il valore di ingresso (in manuale quando non simulato), e il tempo di campionamento.
Nella schermata sopra, troviamo in azzurro chiaro il valore di ingresso che vediamo formare i picchi agli estremi, e la curva del valore integrato di colore verde. La prima parte rappresenta un filtro di 1 secondo, poi nel centro un filtro di 500 millisecondi, poi un pezzetto con filtro a 250ms, e infine l’inizio di un filtro a 2 secondi.
Notiamo che con filtri grandi la curva di uscita è più lenta e smorzata, mentre con filtri corti somiglia maggiormente alla curva di partenza.