from tclab.gui import NotebookUI
= NotebookUI() interface
Compito di laboratorio: Controllo PID
Parte 1. Controllo manuale
Il primo passo è tentare il controllo completamente manuale dei doppi riscaldatori. Utilizzando l’interfaccia GUI di seguito, connettersi al laboratorio di controllo della temperatura e regolare i riscaldatori Q1 e Q2 per raggiungere temperature stabili di 50°C per T1 e 40°C per T2.
Suggerimento: esiste un’interazione tra i riscaldatori, ovvero una regolazione in Q1 o Q2 influenzerà sia T1 che T2. Quindi questo è un esercizio per soddisfare due vincoli manipolando due variabili.
interface.gui
Parte 2. Implementazione di un controller PID
Data una variabile di processo \(PV\) e un setpoint \(SP\), il controllo proporzionale-integrale-derivativo determina il valore di una variabile manipolata MV mediante la regola
\[\begin{align} MV & = \bar{MV} + K_p\left(SP - PV\right) + K_i \int_0^t \left(SP-PV)\right)dt + K_d \frac{d\left(SP-PV\right)}{dt} \end{align}\]
dove \(K_p\), \(K_i\) e \(K_d\) sono rispettivamente i coefficienti proporzionale, integrale e derivativo.
Il codice seguente definisce un oggetto Python che implementa questo algoritmo.
class PID:
def __init__(self):
self.Kp = 1
self.Ki = 100
self.Kd = 0
self.e = 0
self.dedt = 0
self.eint = 0
self.mv = 0
def update(self, setpoint, pv):
= setpoint - pv
e self.dedt = self.e - e
self.eint += e
self.e = e
self.mv = self.Kp * self.e + self.Ki * self.eint + self.Kd * self.dedt
return self.mv
La cella seguente fornisce un’implementazione iniziale del controllo PID per il riscaldatore T1. Modifica questo codice per aggiungere un secondo controller, “pid2”, per il riscaldatore T2. Prova utilizzando il simulatore offline. Quando sei soddisfatto dei risultati, applica il controllo al riscaldatore vero e proprio.
from tclab import setup, clock, Historian, Plotter
= setup(connected=False, speedup = 20)
TCLab
= PID()
pid1 = 2
pid1.Kp = .1
pid1.Ki = 2
pid1.Kd
with TCLab() as lab:
= Historian(lab.sources)
h = Plotter(h, 800)
p for t in clock(800):
= pid1.update(50, lab.T1)
lab.U1 p.update(t)
Simulated TCLab
TCLab Model disconnected successfully.
Parte 3. Regolazione del controller PID
Utilizzando il codice sviluppato sopra, crea una nuova cella di seguito e verifica i seguenti problemi:
- Cosa succede quando Ki = 0?
- Cosa succede quando Ki = 0,1 e Kd = 3?
Descrivere i vantaggi dell’azione integrale e derivativa.