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)