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à:
Invece la f.d.t del PID sarà:
Quindi la funzione di trasferimento F(s) in anello aperto è:
Aiutandoci con il luogo delle radici (tracciato con Matlab) ho la seguente situazione:
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:
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:
ottengo:
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:
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:
mentre il diagramma:
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:
e il PIDE è stato settato nel seguente modo:
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% :
poi click su ok e alla fine otteniamo:
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:
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.