regolazione livello serbatoio con Controllore PID

Transcript

regolazione livello serbatoio con Controllore PID
S7-1200: regolazione livello serbatoio con Controllore PID
Un sensore di livello fornisce un segnale in tensione 0-10V.
0V corrispondono a 0 litri e 10V a 1000 litri.
Mediante un deviatore collegato ad un ingresso del PLC il livello deve essere regolato a 0 litri
(S1=0) oppure a 700 litri (S1=1).
Per la regolazione utilizzeremo il regolatore integrato “PID_Compact” del S7-1200.
Il PID fornirà in uscita una grandezza analogica regolante da 0V a 10V per l'azionamento di
pilotaggio della pompa .
Tabella di attribuzione:
INDIRIZZO
IW64
QW80
I0.0
SIMBOLO
Livello_serbatoio_IN
PID_OUT
S1
TIPO DATO
Int
Int
Bool
COMMENTO
Segnale analogico proveniente dal sensore
Segnale analogico regolazione
Setpoint (0 litri o 700 litri)
Aprire TIA_Portal e creare un nuovo progetto (controllo_livello_PID).
→ Configura un dispositivo → aggiungi nuovo dispositivo → CPU1214C → 6ES7.. → aggiungi.
Nella vista progetto inserire la Signal Board (per avere un'uscita analogica) trascinandola dal
catalogo con il mouse (catalogo → signal board → AQ1x12BIT....)
•
•
Definisco le variabili PLC globali (viste da tutto il programma e da tutti i blocchi e funzioni):
dall'albero di progetto selezionare Variabili PLC → Tabella delle variabili standard (inserire le
tre variabili).
Creo un nuovo blocco organizzativo ad interrupt ciclico per il PID: selezionare Blocchi di
programma → Inserisci nuovo blocco → Blocco organizzativo (OB) → cyclic interrupt→
lasciare come linguaggio di programmazione lo schema funzionale (FUP o FBD) e il tempo di
ciclo fisso a 100ms → OK ( Avvertenza: Il regolatore PID deve essere assolutamente richiamato con un
tempo di ciclo fisso (qui 100ms) perché la sua elaborazione è critica in riferimento al tempo. Il regolatore non
potrebbe essere ottimizzato se non venisse richiamato nel modo opportuno.)
• Il blocco organizzativo “Cyclic interrupt” si apre automaticamente. Prima di scrivere il
programma devo definire le variabili locali temporanee (Temp). Nel nostro caso è necessaria
una sola variabile che memorizza il setpoint in litri come valore intermedio.
• Definisco nell'interfaccia la variabile “livello_setpoint” di tipo real e non Int (per compatibilità
con il blocco PID).
• Ora posso scrivere il programma del blocco appena creato. Utilizzo due istruzioni “MOVE”
per copiare i due valori reali 0,0 e 700,0 nella variabile locale “livello_setpoint” (istruzioni di
base → operazioni di trasferimento) :
N.B.:per impostare l'ingresso negato trascinare “inverti RLO” presente in Generale nelle Istruzioni
Base.
• nel terzo segmento inserisco il blocco “PID_Compact” (Tecnologia → PID → PID_Compact).
Automaticamente gli viene assegnato un Blocco Dati come istanza singola.
collegare all'ingresso Setpoint la variabile locale “livello_setpoint”, all'ingresso Input il valore 0.0,
all'ingresso Input_PER la variabile “livello_serbatoio_IN”, all'uscita Output_PER la variabile
“PID_OUT” .
• Aprire la finestra di configurazione cliccando sul primo simbolo in alto a dx del box del PID.
• Nella finestra “impostazioni di base”(Basic settings) definire il tipo di regolazione e la
connessione della struttura del regolatore (Impostazioni di base → modo di regolazione:
Volume → l, valore istantaneo (input):Input_PER, Valore regolante (output): Output_PER
• Nella finestra “Impostazione del valore istantaneo” va impostato il campo di misura da 0 a
1000 litri sia per i Limiti che per la Scala del valore istantaneo.
Inserire immagini
• nella finestra “impostazioni avanzate” è possibile effettuare un'impostazione manuale dei
parametri del PID.
• Salvare il progetto.
• Per caricare l'intero programma nella CPU selezionare la prima cartella del progetto
(controllo_livello_PID) e fare click sul simbolo “carica nel dispositivo).
Avviare la CPU (Start)