Controllo temperatura con PIDE

Supponiamo di dover controllare la temperatura di un liquido all’interno di un serbatoio. Come esempio facciamo riferimento al processo simulato creato precedentemente in questo articolo.

Per effettuare il controllo della temperatura del liquido dell’esempio precedentemente indicato useremo un PIDE all’interno di un Task periodico (è molto importante che il PID venga eseguito ad intervalli di tempo regolari ed inoltre come vedremo con un periodo che rispetti il teorema del campionamento).

 

Taratura PI:

Siccome il processo che sto simulando non presenta alcun ritardo, per la taratura del PI non posso sicuramente usare il metodo di Ziegler-Nichols in anello aperto (che è comunque un metodo empirico non molto preciso), decido quindi di analizzare la funzione di trasferimento del sistema e studiare il tutto attraverso il luogo delle radici (utilizzando Matlab).

La funzione di trasferimento del sistema che dobbiamo controllare (il sistema che stiamo simulando) sarà:

prima

Invece la f.d.t del PID sarà:

seconda

Quindi la funzione di trasferimento F(s) in anello aperto è:

terza

Aiutandoci con il luogo delle radici (tracciato con Matlab) ho la seguente situazione:

matlab2

Ovviamente nella realtà non possiamo effettuare una cancellazione zero-polo (ovvero in questo caso scegliendo Ti=300) in quanto non si conosce mai il modello esatto del sistema, ma avremmo sempre un modello approssimato. Quindi dobbiamo scegliere prima il tempo di integrazione, e il criterio con cui viene solitamente scelto è quello di rispettare una specifica sul tempo di assestamento; essendo il sistema a ciclo chiuso un sistema del secondo ordine, il tempo di assestamento è pari a:

quinto

dove α è la parte reale del polo dominante a ciclo chiuso (ovviamente deve essere negativa).

quindi se supponiamo per semplicità di volere un tempo di assestamento minore o uguale di 3 secondi allora dovrà essere: α<= -1 .

Dalla figura del luogo delle radici sopra posso vedere che mettendo Ti=1 sto rispettando sicuramente questa specifica.

Tuttavia bisogna anche considerare che più è basso il tempo di integrazione scelto più dovrà essere alta la frequenza di esecuzione del Task periodico che contiente il PID. E’ consigliabile che la costante di integrazione Ti sia almeno 10 volte più grande del periodo di esecuzione del Task periodico.

Pertanto visto che il sistema ad anello aperto ha una costante di tempo abbastanza grande (ovvero 300 sec) scelgo di eseguire il Task periodico del PID ogni 200 ms e di conseguenza il tempo Ti dovrà essere maggiore di 0.2*10=2 sec. Scegliamo quindi un tempo di integrazione superiore a 2 secondi ma non troppo (altrimenti diminuirebbe il contributo dell’azione integrale), ovvero scelgo Ti= 5 sec.

Pertanto tracciando nuovamente il luogo delle radici con Matlab della f.d.t. ad anello aperto:

quarta

ottengo:

rlocus2

Il valore di kp nel punto doppio a sinistra è pari ad 2.38, pertanto per evitare di avere dei poli complessi coniugati nella f.d.t a ciclo chiuso (e quindi un oscillazione dell’uscita) dovrò scegliere un valore di Kp sufficientemente superiore ad 2.38 . Scelgo Kp=30,  e traccio il diagramma di Bode della f.d.t a ciclo chiuso per trovare la banda a 3 dB e verificare che sia inferiore alla metà della frequenza di esecuzione del PID (per rispettare il teorema del campionamento). Ricordando che abbiamo scelto un periodo di esecuzione del PID pari a 0.2 sec avremmo:

quinta

Quindi come detto traccio il diagramma di Bode della f.d.t a ciclo chiuso per verificare che il teorema del campionamento sia rispettato. Ossia:

bode111

mentre il diagramma:

bode222

Come si può vedere la specifica sulla banda passante è rispettata. Ricapitolando abbiamo

  • Periodo esecuzione Task periodico che contiene il PID=0.2 sec
  • Guadagno PID=30
  • Tempo Intergrazione PID=5 sec=0.0833 min, essendo Ki=Kp/Ti, ottengo Ki=30/0.0833=360  1/min

Quindi avremmo la segente situazione:

rslogix_pide1

 

e il PIDE è stato settato nel seguente modo:

impostazioni11

impostazioni22

Facendo un test abbiamo che il sistema va a regime (ossia partendo dalla temperatura ambiente di 20°C fino alla temperatura impostata nel setpoint di 45°C) dopo un tempo circa pari a 2 minuti.

Mentre se invece scegliamo l’autoTune del PIDE, dopo aver definito la variabile “AutoTuneTag” avviamo la funzione di autoTune del PIDE, click su “Acquire Tag”, scegliere “Temperature” come tipo di processo, “CV Step Size”=10% :

pubblic_autotune1

poi click su ok e alla fine otteniamo:

pubblic_autotune2

Ossia scegliendo :

  • Guadagno Kp= 11.163
  • Guadagno Integrale Ki=5.64    1/min –> Ti= Kp/Ki=1.9793 min=118.755 sec
  • Gadagno derivativo Kd=0.1488   min

Possiamo subito notare come il tempo di integrazione ottenuto sia molto più alto del caso precedente e pertanto in questo caso avrò un tempo di assestamento molto più alto; Infatti quando si tara un PID è sempre bene considerare la seguente tabella:

caratteristiche_tarare_PID

Infatti, facendo un test nel secondo caso il sistema va a regime (ossia partendo dalla temperatura ambiente di 20°C fino alla temperatura impostata nel setpoint di 45°C) dopo un tempo circa pari a 9 minuti.

Quindi bisogna sempre valutare se è opportuno o meno utilizzare la funzione autoTune del PIDE.

You may also like...


Warning: count(): Parameter must be an array or an object that implements Countable in /membri/fabioplc/wp-includes/class-wp-comment-query.php on line 399
Menu Title