Comprendere TCLab

Il pacchetto Python TCLab

Lo schema allegato mostra come accedere al laboratorio di controllo della temperatura utilizzando la libreria TCLab.

Quaderni Jupyter e script Python: Il livello più alto è costituito dal codice che scrivi per implementare gli algoritmi di controllo. Questa operazione può essere eseguita nei notebook Jupyter/Python, direttamente da Python utilizzando un ambiente di sviluppo come Spyder o PyCharm. Questo repository contiene diversi esempi, lezioni e progetti degli studenti.

TCLab: TCLab è costituito da una libreria Python intitolata “tclab” che fornisce accesso di alto livello a sensori, riscaldatori e un orologio pseudo-in tempo reale. Il pacchetto include la classe TCLab() che crea un oggetto per accedere al dispositivo, un iteratore clock per la sincronizzazione con un orologio in tempo reale, la classe Historian() per creare oggetti per la registrazione dei dati e un Plotter( ) per visualizzare i dati in tempo reale.

Schizzo TCLab: Il repository github TCLab-sketch fornisce il firmware per garantire il funzionamento intrinsecamente sicuro della scheda e dello scudo Arduino. Lo schizzo viene scaricato su Arduino utilizzando l’Arduino IDE. Il caricamento del firmware su Arduino è un’operazione che si effettua una sola volta.

Arduino: La piattaforma hardware per il Laboratorio di Termoregolazione. Gli strumenti e le librerie Python sono stati testati con le schede Arduino Uno e Arduino Leonardo.

Da: CBE32338

I componenti principali di TCLab

Il Temperature Control Lab (TCLab) è un sistema integrato composto da diversi componenti chiave, ciascuno dei quali contribuisce in modo significativo alla sua funzionalità:

  1. Microcontrollore Arduino:
    • Scopo: Serve come unità di elaborazione centrale per TCLab.
    • Funzionalità: elabora i dati di input dai sensori di temperatura e gestisce il funzionamento dei riscaldatori.
    • Connettività: utilizza una connessione USB per il trasferimento dei dati e consente il controllo in tempo reale tramite script Python.
  2. Riscaldatori:
    • Descrizione: TCLab è dotato di due riscaldatori, ciascuno in grado di generare energia termica regolabile.
    • Ruolo: Agire come principale fonte di calore per gli esperimenti, replicando scenari che richiedono la regolazione della temperatura. Funzionano come gli attuatori del sistema.
  3. Sensori di temperatura:
    • Tipo: questi sensori sono termistori, un tipo di resistore la cui resistenza varia con le variazioni di temperatura.
    • Intervallo di misurazione: in grado di misurare temperature comprese tra $ -40^$C e \(150^\circ\)C.
    • Funzionalità: posizionato vicino a ciascun riscaldatore per misurare con precisione la temperatura, fornendo un feedback essenziale per il controllo della temperatura.
  4. Dissipatori di calore:
    • Tipo: Composto da dissipatori di calore a transistor.
    • Scopo: impiegato per dissipare in modo efficiente il calore lontano dai transistor.
  5. LED (diodo a emissione luminosa):
  • Scopo: Serve come indicatore visivo per vari stati o azioni, come segnalare l’attivazione di un riscaldatore.

Configurazioni operative di TCLab

TCLab può essere configurato in varie modalità a seconda degli obiettivi formativi:

  1. Ingresso singolo Uscita singola (SISO):
    • Utilizza solo un riscaldatore e un sensore. Ideale per semplici esperimenti di controllo e per apprendere le basi del controllo della temperatura.
  2. Ingresso singolo Uscita singola (SISO) con disturbo:
    • Utilizza un riscaldatore/sensore come sistema di controllo primario e il secondo riscaldatore come fonte di disturbo esterno. Questa configurazione è utile per comprendere come i fattori esterni influenzano i sistemi di controllo.
  3. Ingressi multipli Uscite multiple (MIMO):
    • Implica l’utilizzo simultaneo di riscaldatori e sensori. Questa configurazione più avanzata non è trattata qui ma è utile per studi di sistemi di controllo complessi.

Ogni componente del TCLab svolge un ruolo specifico, rendendolo uno strumento versatile per insegnare e sperimentare vari aspetti dell’ingegneria di controllo. Sia per l’apprendimento fondamentale che per l’esplorazione avanzata, TCLab offre una piattaforma pratica per comprendere la dinamica e il controllo dei sistemi basati sulla temperatura.

Come funziona TCLab

  • Flusso operativo:
    1. Segnale di ingresso: uno script Python invia un comando ad Arduino, impostando il livello di potenza desiderato per i riscaldatori.
    2. Azione di riscaldamento: i riscaldatori generano calore corrispondente ai comandi del livello di potenza ricevuti.
    3. Misurazione della temperatura: i termistori misurano le temperature risultanti vicino ai riscaldatori.
    4. Ciclo di feedback: queste letture della temperatura vengono inviate al computer.
    5. Regolazioni: l’algoritmo di controllo nello script Python regola la potenza del riscaldatore in base al feedback della temperatura, cercando di raggiungere e mantenere una temperatura target.

[Inserisci qui il diagramma di flusso o il diagramma che mostra il ciclo di feedback]


Schemi TCLab

tclab_schematic

Configurazione di TCLab

Questa guida fornisce istruzioni passo passo per configurare il Laboratorio di Controllo della Temperatura (TCLab), partendo dall’installazione di Python su diversi sistemi operativi fino alla conduzione dei test iniziali con TCLab e il suo simulatore.

Sezione 1: Installazione di Python utilizzando Conda

Installazione di Python su Mac

Passaggio 1: installa Anaconda

  • Scarica Anaconda: visita la Pagina di download di Anaconda e scarica il programma di installazione per Mac.
  • Esegui il programma di installazione: apri il file scaricato e segui le istruzioni visualizzate sullo schermo.
  • Verifica installazione:
    • Apri Terminale.
    • Digita “conda –version” e premi Invio. Se Anaconda è stato installato correttamente, vedrai il numero di versione.

Passaggio 2: configurazione dell’ambiente (facoltativo)

  • Crea un nuovo ambiente: nel Terminale, digita conda create -n tclab_env python=3.8 e premi Invio.
  • Attiva ambiente: digita “conda activate tclab_env” e premi Invio.

Installazione di Python su Windows

Passaggio 1: installa Anaconda

  • Scarica Anaconda: visita la Pagina di download di Anaconda e scarica il programma di installazione per Windows.
  • Esegui il programma di installazione: apri il file scaricato e segui le istruzioni visualizzate sullo schermo.
  • Verifica installazione:
    • Apri il prompt di Anaconda.
    • Digita “conda –version” e premi Invio.

Passaggio 2: configurazione dell’ambiente (facoltativo)

  • Crea un nuovo ambiente: nel prompt di Anaconda, digita “conda create -n tclab_env python=3.8” e premi Invio.
  • Attiva ambiente: digita “conda activate tclab_env” e premi Invio.

Installazione di Python su Linux

Passaggio 1: installa Anaconda

  • Scarica Anaconda: visita la Pagina di download di Anaconda e scarica il programma di installazione per Linux.
  • Esegui programma di installazione: apri Terminale, vai alla directory contenente il file scaricato ed esegui lo script utilizzando bash Anaconda3-XXXX.sh.
  • Verifica installazione:
    • Nel Terminale, digita “conda –version”.

Passaggio 2: configurazione dell’ambiente (facoltativo)

  • Crea un nuovo ambiente: nel Terminale, digita conda create -n tclab_env python=3.8 e premi Invio.
  • Attiva ambiente: digita “conda activate tclab_env” e premi Invio.

Sezione 2: Configurazione di TCLab

Configurazione dell’ambiente Conda

Per configurare l’ambiente Conda per questo corso, attenersi alla seguente procedura:

  1. Scarica il file tclab_environment.yml da questo repository.
  2. Apri il terminale o il prompt di Anaconda e vai alla directory in cui si trova il file.

Il file tclab_environment.yml assomiglia a questo:

nome: tclab_env
canali:
  - valori predefiniti
dipendenze:
  - pitone=3.10
  - pip
  - insensato
  - matplotlib
  - scipito
  - panda
  - pip:
    -tclab
  1. Crea l’ambiente dal file tclab_environment.yml:

    conda env create -f tclab_environment.yml

  2. Attiva il nuovo ambiente:

    conda attiva tclab

  3. Per verificare che l’ambiente sia stato installato correttamente, è possibile utilizzare:

    conda env list

Installazione del pacchetto TCLab

  1. Attivazione dell’ambiente:

    • Assicurati che il tuo ambiente Anaconda sia attivo. Apri il tuo Terminale (o il prompt di Anaconda su Windows) e attiva il tuo ambiente:

      conda attiva tclab_env
  2. Installazione di TCLab:

    • La libreria tclab si interfaccia con l’hardware del Temperature Control Lab. Installalo inserendo il seguente comando da una finestra (MacOS) o da una finestra di comando (PC):

      pip installa tclab
    • Premi Invio per eseguire il comando e completare l’installazione.

    In alternativa, l’installazione può essere eseguita da un notebook Jupyter/Python con il comando

    !pip installa tclab

    Ci sono aggiornamenti occasionali alla libreria. Questi possono essere installati aggiungendo un --upgrade ai comandi precedenti e dimostrati nella cella successiva.

!pip install tclab --upgrade
Requirement already satisfied: tclab in /Users/andreamunafo/opt/anaconda3/envs/tclab/lib/python3.10/site-packages (1.0.0)
Requirement already satisfied: pyserial in /Users/andreamunafo/opt/anaconda3/envs/tclab/lib/python3.10/site-packages (from tclab) (3.5)

Installazione di librerie utili aggiuntive

Per un’esperienza completa con TCLab e per supportare vari aspetti dell’ingegneria di controllo e dell’analisi dei dati, verranno installate anche le seguenti librerie:

  1. insensibile:
    • Significato: una libreria fondamentale per i calcoli numerici in Python.

    • Comando di installazione:

      pip installa numpy
  2. matplotlib:
    • Significato: fondamentale per creare rappresentazioni visive dei dati, in particolare per l’analisi degli esperimenti TCLab.

    • Comando di installazione:

      pip installa matplotlib
  3. scipy:
    • Significato: fornisce un’ampia gamma di strumenti per il calcolo scientifico, compresi metodi per risolvere equazioni differenziali ordinarie, utili nella modellizzazione dei sistemi.

    • Comando di installazione:

      pip installa scipy
  4. panda:
    • Significato: offre funzionalità estese per la manipolazione e l’analisi dei dati, ideali per la gestione di set di dati complessi.

    • Comando di installazione:

      pip installa panda
  5. geco:
    • Significatività: pacchetto avanzato per l’ottimizzazione e il controllo, adatto all’implementazione di strategie di controllo predittivo del modello.

    • Comando di installazione:

      pip installa gekko

Test iniziali con TCLab

Passaggio 1: collega TCLab

  • Connetti TCLab: collega il dispositivo TCLab al computer utilizzando un cavo USB.

Passaggio 2: testare la connessione TCLab

  • Scrivi script di prova:
    • Apri il tuo IDE Python o Jupyter Notebook.
    • Scrivi il seguente codice Python ed esegui lo script. Se stampa la temperatura, TCLab è collegato correttamente.
import tclab
with tclab.TCLab() as lab:
    print(f"Connected! Heater 1 is at {lab.T1}°C")

Utilizzo del simulatore TCLab

  • Perché utilizzare un simulatore: il simulatore TCLab è utile quando non si dispone dell’hardware fisico.
  • Installa simulatore: nel terminale o nel prompt di Anaconda, digita nuovamente pip install tclab (include il simulatore).
  • Script di prova con simulatore:
from tclab import setup, clock
TCLab = setup(connected=False, speedup=5)

with TCLab() as lab:
    for t in clock(200, 2):
        print(f"Time {t} seconds. T1: {lab.T1}°C")
TCLab version 1.0.0
Simulated TCLab
Time 0 seconds. T1: 20.949499999999997°C
Time 2.01 seconds. T1: 20.949499999999997°C
Time 4.04 seconds. T1: 20.949499999999997°C
Time 6.03 seconds. T1: 20.949499999999997°C
Time 8.06 seconds. T1: 20.949499999999997°C
Time 10.07 seconds. T1: 20.949499999999997°C
Time 12.02 seconds. T1: 20.949499999999997°C
Time 14.03 seconds. T1: 20.949499999999997°C
Time 16.15 seconds. T1: 20.949499999999997°C
Time 18.04 seconds. T1: 20.949499999999997°C
Time 20.2 seconds. T1: 20.949499999999997°C
Time 22.01 seconds. T1: 20.949499999999997°C
Time 24.19 seconds. T1: 20.949499999999997°C
Time 26.24 seconds. T1: 20.949499999999997°C
Time 28.16 seconds. T1: 20.949499999999997°C
Time 30.03 seconds. T1: 20.949499999999997°C
Time 32.12 seconds. T1: 20.949499999999997°C
Time 34.2 seconds. T1: 20.6272°C
Time 36.04 seconds. T1: 20.949499999999997°C
Time 38.02 seconds. T1: 20.6272°C
Time 40.21 seconds. T1: 20.949499999999997°C
Time 42.14 seconds. T1: 20.949499999999997°C
Time 44.01 seconds. T1: 20.6272°C
Time 46.3 seconds. T1: 20.949499999999997°C
Time 48.22 seconds. T1: 20.949499999999997°C
Time 50.07 seconds. T1: 20.949499999999997°C
Time 52.27 seconds. T1: 20.949499999999997°C
Time 54.09 seconds. T1: 20.949499999999997°C
Time 56.28 seconds. T1: 20.949499999999997°C
Time 58.19 seconds. T1: 20.949499999999997°C
Time 60.04 seconds. T1: 20.949499999999997°C
Time 62.2 seconds. T1: 20.949499999999997°C
Time 64.11 seconds. T1: 20.949499999999997°C
Time 66.08 seconds. T1: 20.949499999999997°C
Time 68.23 seconds. T1: 20.6272°C
Time 70.13 seconds. T1: 20.949499999999997°C
Time 72.07 seconds. T1: 20.949499999999997°C
Time 74.05 seconds. T1: 20.949499999999997°C
Time 76.1 seconds. T1: 20.6272°C
Time 78.1 seconds. T1: 20.6272°C
Time 80.22 seconds. T1: 20.949499999999997°C
Time 82.28 seconds. T1: 20.949499999999997°C
Time 84.22 seconds. T1: 20.949499999999997°C
Time 86.16 seconds. T1: 20.949499999999997°C
Time 88.23 seconds. T1: 20.949499999999997°C
Time 90.0 seconds. T1: 20.949499999999997°C
Time 92.27 seconds. T1: 20.949499999999997°C
Time 94.0 seconds. T1: 20.949499999999997°C
Time 96.16 seconds. T1: 20.949499999999997°C
Time 98.02 seconds. T1: 20.949499999999997°C
Time 100.1 seconds. T1: 20.949499999999997°C
Time 102.24 seconds. T1: 20.949499999999997°C
Time 104.0 seconds. T1: 20.6272°C
Time 106.18 seconds. T1: 20.949499999999997°C
Time 108.27 seconds. T1: 20.949499999999997°C
Time 110.27 seconds. T1: 20.949499999999997°C
Time 112.1 seconds. T1: 20.949499999999997°C
Time 114.22 seconds. T1: 20.949499999999997°C
Time 116.24 seconds. T1: 20.949499999999997°C
Time 118.18 seconds. T1: 20.949499999999997°C
Time 120.19 seconds. T1: 20.949499999999997°C
Time 122.06 seconds. T1: 20.949499999999997°C
Time 124.22 seconds. T1: 20.6272°C
Time 126.19 seconds. T1: 20.949499999999997°C
Time 128.18 seconds. T1: 20.949499999999997°C
Time 130.25 seconds. T1: 20.949499999999997°C
Time 132.02 seconds. T1: 20.6272°C
Time 134.2 seconds. T1: 20.949499999999997°C
Time 136.27 seconds. T1: 20.949499999999997°C
Time 138.01 seconds. T1: 20.6272°C
Time 140.2 seconds. T1: 20.949499999999997°C
Time 142.18 seconds. T1: 20.949499999999997°C
Time 144.2 seconds. T1: 20.949499999999997°C
Time 146.23 seconds. T1: 20.949499999999997°C
Time 148.24 seconds. T1: 20.949499999999997°C
Time 150.19 seconds. T1: 20.949499999999997°C
Time 152.28 seconds. T1: 20.949499999999997°C
Time 154.25 seconds. T1: 20.949499999999997°C
Time 156.23 seconds. T1: 20.6272°C
Time 158.04 seconds. T1: 20.949499999999997°C
Time 160.11 seconds. T1: 20.949499999999997°C
Time 162.04 seconds. T1: 20.949499999999997°C
Time 164.05 seconds. T1: 20.949499999999997°C
Time 166.01 seconds. T1: 20.949499999999997°C
Time 168.23 seconds. T1: 20.6272°C
Time 170.08 seconds. T1: 20.949499999999997°C
Time 172.01 seconds. T1: 20.949499999999997°C
Time 174.14 seconds. T1: 20.949499999999997°C
Time 176.01 seconds. T1: 20.949499999999997°C
Time 178.22 seconds. T1: 20.949499999999997°C
Time 180.2 seconds. T1: 20.949499999999997°C
Time 182.2 seconds. T1: 20.949499999999997°C
Time 184.21 seconds. T1: 20.949499999999997°C
Time 186.08 seconds. T1: 20.949499999999997°C
Time 188.29 seconds. T1: 20.949499999999997°C
Time 190.24 seconds. T1: 20.949499999999997°C
Time 192.18 seconds. T1: 20.949499999999997°C
Time 194.09 seconds. T1: 20.949499999999997°C
Time 196.22 seconds. T1: 20.949499999999997°C
Time 198.26 seconds. T1: 20.949499999999997°C
Time 200.02 seconds. T1: 20.6272°C
TCLab Model disconnected successfully.

Importazione

Una volta installato, il pacchetto tclab può essere importato in Python e un’istanza creata con le istruzioni Python

da tclab importa TCLab
laboratorio = TCLab()

TCLab() tenta di trovare un dispositivo connesso a una porta seriale e restituire una connessione. Se non viene trovato alcun dispositivo viene generato un errore. La connessione deve essere chiusa quando non è più in uso.

La cella seguente dimostra questo processo e utilizza la funzione tclab LED() per far lampeggiare il LED sul laboratorio di controllo della temperatura per un periodo di 10 secondi a un livello di luminosità del 100%.

from tclab import TCLab

lab = TCLab()
lab.LED(100)
lab.close()
TCLab version 1.0.0
--- Serial Ports ---
/dev/cu.BLTH n/a n/a
/dev/cu.BlueBeatsStudio n/a n/a
/dev/cu.Bluetooth-Incoming-Port n/a n/a
RuntimeError: No Arduino device found.

Utilizzo di TCLab con l’istruzione with di Python

L’istruzione Python with fornisce un mezzo conveniente per impostare e chiudere una connessione al Laboratorio di controllo della temperatura. In particolare, l’istruzione with stabilisce un contesto in cui viene creata un’istanza tclab, assegnata a una variabile e chiusa automaticamente al completamento. L’istruzione “with” è il modo preferito per collegare il laboratorio di controllo della temperatura per la maggior parte degli usi.

from tclab import TCLab

with TCLab() as lab:
    lab.LED(100)

Lettura delle temperature

Una volta creata e connessa un’istanza tclab a un dispositivo, è possibile accedere ai sensori di temperatura nel laboratorio di controllo della temperatura con gli attributi “.T1” e “.T2”. Ad esempio, data un’istanza “lab”, si accede alle temperature come

T1 = lab.T1
T2 = lab.T2

“lab.T1” e “lab.T2” sono proprietà di sola lettura. Qualsiasi tentativo di impostarli su un valore restituirà un errore Python.

from tclab import TCLab

with TCLab() as a:
    print("Temperature 1: {0:0.2f} C".format(a.T1))
    print("Temperature 2: {0:0.2f} C".format(a.T2))

Impostazione dei riscaldatori

Per motivi tradizionali, esistono due modi per impostare i livelli di potenza dei riscaldatori.

Il primo modo è utilizzare le funzioni.Q1() e .Q2() di un’istanza TCLab. Ad esempio, entrambi i riscaldatori possono essere impostati al 100% della potenza tramite le funzioni

laboratorio = TCLab()
lab.Q1(100)
lab.Q2(100)

Il firmware del dispositivo limita i riscaldatori a un intervallo compreso tra 0 e 100%. È possibile accedere al valore corrente degli attributi tramite

Q1 = lab.Q1()
Q2 = lab.Q2()

Note importanti: 1. Il LED sul laboratorio di controllo della temperatura passa da fioco a luminoso quando uno dei riscaldatori è acceso. 2. La chiusura dell’istanza TCLab spegne i riscaldatori. 3. Il livello di potenza dei due riscaldatori potrebbe essere diverso. Le versioni attuali del firmware limitano la potenza massima del primo riscaldatore a 4 watt e la potenza massima del secondo riscaldatore a 2 watt. 4. Oltre ai vincoli imposti dal firmware, l’alimentatore potrebbe non essere in grado di fornire tutta la potenza necessaria per far funzionare entrambi i riscaldatori al 100% 5. I valori recuperati da queste funzioni potrebbero essere diversi dai valori impostati a causa dei limiti di potenza imposti dal firmware del dispositivo.

from tclab import TCLab
import time

with TCLab() as a:
    print("\nStarting Temperature 1: {0:0.2f} C".format(a.T1),flush=True)
    print("Starting Temperature 2: {0:0.2f} C".format(a.T2),flush=True)

    a.Q1(100)
    a.Q2(100)
    print("\nSet Heater 1:", a.Q1(), "%",flush=True)
    print("Set Heater 2:", a.Q2(), "%",flush=True)
    
    t_heat = 30
    print("\nHeat for", t_heat, "seconds")
    time.sleep(t_heat)

    print("\nTurn Heaters Off")
    a.Q1(0)
    a.Q2(0)
    print("\nSet Heater 1:", a.Q1(), "%",flush=True)
    print("Set Heater 2:", a.Q2(), "%",flush=True)
    
    print("\nFinal Temperature 1: {0:0.2f} C".format(a.T1))
    print("Final Temperature 2: {0:0.2f} C".format(a.T2))

In alternativa, i riscaldatori possono essere impostati utilizzando gli attributi “.U1” e “.U2” di un’istanza “TCLab”.

lab = TCLab()

print('Setting power levels on heaters 1 and 2')
lab.U1 = 50
lab.U2 = 25

print('Current power level on Heater 1 is: ', lab.U1, '%')
print('Current power level on Heater 1 is: ', lab.U2, '%')

lab.close()

Sincronizzazione in tempo reale utilizzando clock

Il modulo tclab include clock per sincronizzare i calcoli in tempo reale. “clock(tperiod, tstep)” genera una sequenza di iterazioni su un periodo di “tperiod” secondi in modo uniforme per “tstep” secondi. Se “tstep” viene omesso, il periodo predefinito è impostato su 1 secondo.

from tclab import clock

tperiod = 6
tstep = 2
for t in clock(tperiod,tstep):
    print(t, "sec.")

Ci sono alcune considerazioni da tenere a mente quando si usa clock. Ancora più importante, per sua natura Python non è un ambiente in tempo reale. “clock” fa del suo meglio per rimanere sincronizzato con i tick equidistanti dell’orologio in tempo reale. Se, per qualche motivo, il ciclo resta indietro rispetto all’orologio in tempo reale, il generatore salterà l’evento per tornare in sincronia con l’orologio in tempo reale. Pertanto il numero totale di iterazioni potrebbe essere inferiore al previsto. Questo comportamento è illustrato nella cella seguente.

from tclab import TCLab, clock

import time

tfinal = 12
tstep = 2
for t in clock(tfinal, tstep):
    print(t, "sec.")
    
    # insert a long time out between 3 and 5 seconds into the event loop
    if (t > 3) and (t < 5):
        time.sleep(2.2)

Utilizzo di clock con TCLab

from tclab import TCLab, clock

tperiod = 20

# connect to the temperature control lab
with TCLab() as a:
    # turn heaters on
    a.Q1(100)
    a.Q2(100)
    print("\nSet Heater 1 to {0:f} %".format(a.Q1()))
    print("Set Heater 2 to {0:f} %".format(a.Q2()))

    # report temperatures for the next tperiod seconds
    sfmt = "   {0:5.1f} sec:   T1 = {1:0.1f} C    T2 = {2:0.1f} C"
    for t in clock(tperiod):
        print(sfmt.format(t, a.T1, a.T2), flush=True)

Lo Historian di TCLab

La classe “Historian” fornisce mezzi per la registrazione dei dati. Data un’istanza “lab” di un oggetto TCLab, “lab.sources” è un elenco di tutte le origini dati e i metodi per accedere ai dati.

laboratorio = TCLab()
h = Historian(lab.fonti)

Lo storico inizializza un registro dati. Il registro dati viene aggiornato emettendo un comando

h.update(t)

dove “t” indica l’ora corrente. La cella successiva registra 10 secondi di dati con un livello di potenza variabile nel riscaldatore 1, quindi salva i dati in un file.

from tclab import TCLab, clock, Historian

with TCLab() as lab:
    h = Historian(lab.sources)
    for t in clock(10):
        lab.Q1(100 if t <= 5 else 0)
        h.update(t)
        
h.to_csv('data.csv')

Una volta salvati, i dati possono essere letti e tracciati utilizzando la Libreria di analisi dei dati di Pandas come dimostrato in questa cella.

import pandas as pd
data = pd.read_csv('data.csv')
data.index = data['Time']
print(data)
data[['Q1','Q2']].plot(grid=True)

Il Plotter di TCLab

La classe “Plotter” aggiunge un tracciamento in tempo reale dei dati sperimentali. Un plotter viene creato da un’istanza di uno storico come segue

h = Historian(lab.fonti)
p = Plotter(h)

Aggiornando il plotter si aggiorna anche lo storico associato.

p.update(t)

L’esempio seguente mostra come funziona.

from tclab import TCLab, clock, Historian, Plotter

with TCLab() as lab:
    h = Historian(lab.sources)
    p = Plotter(h, 10)
    for t in clock(10):
        lab.Q1(100 if t <= 5 else 0)
        p.update(t)
        
h.to_csv('data.csv')

Utilizzo di TCLab offline

from tclab import clock, setup, Historian, Plotter

TCLab = setup(connected=False, speedup=20)

SP = 40
with TCLab() as a:
    h = Historian(a.sources)
    p = Plotter(h)
    for t in clock(120,2):
        PV = a.T1
        MV = 100 if SP > PV else 0
        a.U1 = MV
        p.update()

TCLab Model disconnected successfully.

Esecuzione della diagnostica

import tclab

print("Version = ", tclab.__version__)
tclab.diagnose()
Version =  1.0.0

Checking connection
-------------------
Looking for Arduino on any port...
--- Serial Ports ---
/dev/cu.BLTH n/a n/a
/dev/cu.BlueBeatsStudio n/a n/a
/dev/cu.Bluetooth-Incoming-Port n/a n/a
No known Arduino was found in the ports listed above.