Controllo relè

Controllo relè semplice

Il codice seguente implementa il controllo del relè per la temperatura T1 nel Laboratorio di controllo della temperatura.

\[\begin{align} Q(t) & = \begin{cases} Q^{max} &\text{if $T \leq T_{setpoint}$}\\ 0 & \text{if $T \geq T_{setpoint}$} \end{cases} \end{align}\]

Questo è semplice da implementare, infatti è solo una riga di codice nella cella seguente. Regolare “Tsetpoint” sul valore di setpoint desiderato, quindi eseguire la cella.

from tclab import TCLab, clock, Historian

# control parameters
Qmax = 100
Tsetpoint = 40

# time horizon and time step
tfinal = 300
tstep = 1

# perform experiment
with TCLab() as a:
    h = Historian(a)
    h.initplot(tfinal)
    for t in clock(tfinal, tstep):
        T1 = a.T1                             # measure temperature
        Q1 = Qmax if a.T1 < Tsetpoint else 0  # compute manipulated variable
        a.Q1(Q1)                              # adjust power
        h.update(t)                           # log results

TCLab disconnected successfully.

Controllo relè con isteresi

Uno dei problemi con il semplice controllo del relè è il rischio di “vibrazioni”, ovvero situazioni in cui la variabile manipolata (in questo caso la potenza del riscaldatore) si accende e si spegne rapidamente. Ciò può essere causato da sistemi che rispondono molto bene agli input di controllo o in cui le misurazioni dei sensori comportano un rumore significativo.

Il tipico termostato domestico utilizzato per il controllo del forno incorpora una soluzione semplice ma altamente efficace al periodo di chiacchiere. L’idea è di superare intenzionalmente il setpoint. Quindi, dopo lo stato di commutazione del controllo, ci sarà almeno un breve periodo di tempo in cui non dovrebbero essere necessarie ulteriori azioni di controllo. L’algoritmo di controllo può essere scritto

\[\begin{align} Q(t) & = \begin{cases} 0 & \text{if $T \geq T_{Setpoint} - \frac{d}{2}$}\\ Q^{max} &\text{if $T \leq T_{Setpoint} + \frac{d}{2}$}\\ Q(t-\delta t) & \mbox{otherwise} \end{cases} \end{align}\]

dove \(d\) è la tolleranza o isteresi. Per i sistemi di riscaldamento domestico, un valore tipico è compreso tra 0,5 e 1 grado F. Questa immagine mostra come veniva regolata l’isteresi su un tipico termostato domestico di uso comune alla fine del XX secolo.

Honeywell thermostat open

Il forno è acceso per temperature inferiori all’intervallo

ed è rivolto a temperature superiori all’intervallo. All’interno dell’intervallo, tuttavia, il forno può essere acceso o spento a seconda di ciò che è accaduto nell’ultimo punto decisionale.

Il seguente codice implementa il controllo del relè con isteresi.

from tclab import TCLab, clock, Historian

# control parameters
Qmax = 100
Tsetpoint = 50
d = 0.5

# time horizon and time step
tfinal = 300
tstep = 1

# perform experiment
with TCLab() as a:
    h = Historian(a)
    h.initplot(tfinal)
    Q1 = a.Q1()
    for t in clock(tfinal, tstep):
        T1 = a.T1
        if T1 <= Tsetpoint - d/2:
            Q1 = Qmax
        if T1 >= Tsetpoint + d/2:
            Q1 = 0
        a.Q1(Q1)
        h.update()

TCLab disconnected successfully.

Controllo On-Off multivariabile

from tclab import TCLab, clock, Historian

Tsetpoint1 = 45
Tsetpoint2 = 35
Qmax = 100
tfinal = 480
d = 0.5

with TCLab() as a:
    h = Historian(a)
    h.initplot(tfinal)
    Q1 = a.Q1()
    Q2 = a.Q2()
    for t in clock(tfinal):
        T1 = a.T1
        if T1 <= Tsetpoint1 - d/2:
            Q1 = Qmax
        if T1 >= Tsetpoint1 + d/2:
            Q1 = 0
        a.Q1(Q1)

        T2 = a.T2
        if T2 <= Tsetpoint2 - d/2:
            Q2 = Qmax
        if T2 >= Tsetpoint2 + d/2:
            Q2 = 0
        a.Q2(Q2)
        h.update()

TCLab disconnected successfully.

Esercizi

  1. Esaminando le risposte a circuito chiuso, è ovvio che il riscaldatore è sovradimensionato ai fini del controllo a 40 gradi C. Prova altri valori per \(Q^{\max}\) per vedere se puoi migliorare le prestazioni a circuito chiuso.

  2. Qual è l’effetto del tempo di campionamento sulle prestazioni del controllo? Cosa succede se si allunga il tempo di campionamento del controller?

  3. In una nuova cella, creare una modifica dello script per includere una modifica nel setpoint da 40 gradi C a 50 gradi C al segno dei 300 secondi. Esegui l’esperimento per almeno 10 minuti per vedere l’effetto completo.

  4. Per un controllo relè con isteresi, provare a tracciare un grafico di \(Q\) in funzione di \(T\) assumendo \(T_{Setpoint} = 50\) e \(h = 3\). Puoi disegnare una funzione unica? Perché no?