• Non ci sono risultati.

6. IL SISTEMA DI ACQUISIZIONE

6.3 I L PROGRAMMA PER L ’ ACQUISIZIONE DEI DATI

Per acquisire le sette grandezze precedentemente elencate è stato montato sul multimetro Keithley 2700 un modulo di acquisizione Keithley a 40 canali modello 7708. Inizialmente sono stati connessi i terminali dei canali prescelti per l’acquisizione. Poiché le grandezze fisiche acquisite sono di due tipi diversi, ovvero resistenze elettriche e tensioni, i canali sono stati collegati con i sensori in modo che le cinque tensioni venissero acquisite tutte su canali consecutivi, ottenendo lo stesso risultato per le due resistenze. Inoltre le tensioni sono state ulteriormente raggruppate in modo che quelle con lo stesso range si trovassero tutte su canali consecutivi.

121 Poiché lo strumento effettua le misure a gruppi di sette, una per canale, questi accorgimenti riducono il tempo necessario allo strumento per passare da un canale all’altro e quindi per effettuare un treno di misure.

Fig. 6.1 Schema modulo di acquisizione Keithley 7708

In primo luogo si fornisce al sistema di acquisizione l’indirizzo dell’interfaccia GPIB tramite la quale verranno trasferiti i dati raccolti dallo strumento. In seguito vengono specificati i canali sui quali lo strumento effettuerà la lettura. Per ogni canale vengono definiti manualmente: il tipo di grandezza da misurare, il range della misura e la frequenza con cui vengono effettuate le misure. Definire a priori il range delle misure velocizza molto il processo di acquisizione dati rispetto al caso in cui lo strumento debba determinarlo automaticamente. Inoltre la determinazione automatica del range può introdurre errori addizionali sulla misura in quanto essa presenta una certa isteresi e può accadere che lo strumento prenda alcune misure rimanendo su un range inappropriato. Per effettuare misure con la precisione migliore che lo strumento può fornire è necessario imporre il range più piccolo possibile in cui ricade la misura stessa.

122 L’acquisizione dei dati sfrutta un buffer circolare, ovvero viene allocato nello strumento un certo spazio di memoria su cui vengono salvate le letture delle grandezze misurate. Quando il buffer ha raggiunto la sua capacità massima in termini di dati memorizzati, le misurazioni vengono sovrascritte in successione a partire dalla prima in ordine cronologico. Le nuove misure vengono memorizzate nel medesimo buffer. Questo processo si ripete ciclicamente.

Inizio delle misurazioni – buffer vuoto

Prime misurazioni

Buffer pieno

Fig. 6.2 Sovrascrittura dei dati già presenti nel buffer

Il compito del software di acquisizione è quello di memorizzare in modo permanente tutte le letture che vengono continuamente sovrascritte nella memoria dello strumento.

Il software interroga ciclicamente lo strumento per memorizzare i dati raccolti fino a quell’istante di tempo. Ad ogni interrogazione lo strumento restituisce un vettore contenente le misure presenti nel buffer in quel momento accompagnate dal proprio numero identificativo e dal tempo trascorso dall’inizio della presa dati.

Finché il buffer non raggiunge la sua capacità massima per la prima volta, il vettore restituito dallo strumento ha dimensione variabile e dipendente dal numero di misure effettuate nell’intervallo di tempo fra due interrogazioni successive. Una volta che il buffer è stato riempito lo strumento restituisce sempre tutti i dati in memoria nel buffer, è compito del software di acquisizione identificare le misure di interesse, ovvero quelle effettuate tra due interrogazioni successive.

123 Ad ogni interrogazione dello strumento il software legge il vettore restituito dallo strumento e genera due nuovi vettori contenenti rispettivamente solo le letture e solo i tempi ad esse associate. Finché il buffer non viene riempito per la prima volta questi vettori comprendono tutti i dati restituiti dallo strumento ad ogni interrogazione. Quando il buffer è pieno i dati raccolti fra due interrogazioni successive vengono identificati confrontando i vettori tempo delle due interrogazioni in esame. Quando gli elementi dei vettori sono uguali la misura associata a quell’istante di tempo era già stata memorizzata al ciclo precedente e non viene più considerata. Vengono invece registrate le misure corrispondenti agli elementi non uguali dei vettori tempo.

Può accadere che le misure di interesse ad una certa interrogazione si trovino a cavallo della fine del buffer, ovvero che si abbiano misure nuove solo in coda ed in testa al buffer, con delle misure già registrate in precedenza che le separano. In questo caso è necessario riordinare le misure in ordine cronologico poiché quelle in testa al buffer sono più recenti di quelle in coda.

Fig. 6.3 Esempio di riempimento del buffer dall’inizio della presa dati

Ad ogni ciclo le letture ed i tempi di interesse vengono cumulati in due appositi vettori che non vengono mai sovrascritti.

124 Poiché lo strumento registra i dati passando da un canale all’altro ad ogni misura, è necessario leggere i vettori cumulati con un passo pari al numero di canali per estrarre le misure relative ad una sola delle grandezze fisiche acquisite. Dal momento che lo strumento acquisisce resistenze elettriche nel caso delle termoresistenze e differenze di potenziale nel caso della termocoppia e della lastra, sono state implementate manualmente le rispettive curve di taratura per ottenere le misure di temperatura.

Infine vengono riportate a grafico alcune grandezze selezionate per monitorare le prestazioni dell’apparato sperimentale durante la presa dati. Ad ogni iterazione vengono riportati a grafico solo i dati raccolti al ciclo corrente, mantenendo la visualizzazione dei dati precedenti. Questa operazione rallenta notevolmente l’esecuzione del programma quando il numero complessivo di letture riportate a grafico diventa considerevole. Per questo motivo i grafici vengono puliti periodicamente dopo un certo numero di iterazioni in modo da visualizzare solo le misure più recenti, ma tutti i dati vengono comunque tenuti in memoria e accumulati ad ogni iterazione.

È stata condotta un’analisi sulla velocità del sistema di acquisizione sfruttando una funzione built-in di MATLAB in grado di indicare il tempo impiegato per l’esecuzione di un determinato segmento di programma. Sono stati individuati tre segmenti principali: il primo consiste nei comandi che interrogano lo strumento e scaricano i dati tramite l’interfaccia GPIB, il secondo è rappresentato dall’elaborazione dei dati raccolti ovvero dalla costruzione dei vettori delle letture e dal calcolo delle grandezze derivate, il terzo è costituito dalla costruzione dei grafici.

Il secondo segmento, quello dell’elaborazione dati, è il più rapido e viene eseguito in frazioni di millisecondo, arriva a pochi millisecondi solo nel caso in cui sia necessario cambiare il range dello strumento. Anche il terzo segmento è piuttosto rapido con tempi di esecuzione inferiori ai 2 centesimi di secondo.

L’operazione che limita la velocità dell’acquisizione dei dati è proprio quella relativo al primo segmento del programma, ovvero la fase in cui i dati vengono trasferiti dalla memoria dello strumento a quella del calcolatore. Il trasferimento del buffer richiede un intervallo di tempo durante il quale lo strumento non può effettuare misure. È quindi evidente che ad ogni interrogazione ci sarà inevitabilmente una pausa di una certa durata nell’acquisizione.

125 Maggiore è la dimensione del buffer e maggiore è il tempo necessario al trasferimento dei dati, tuttavia è possibile interrogare meno di frequente lo strumento poiché è in grado di trattenere più dati in memoria prima di iniziare la sovrascrittura. In questo modo si ottengono molte misure successive separate da un brevissimo intervallo di tempo, ma ad ogni interrogazione dello strumento si ha una lunga pausa. Al contrario se si opta per un buffer in grado di contenere poche misure esse vengono trasferite in minor tempo ad ogni interrogazione, ma sono necessarie interrogazioni più frequenti per evitare di perdere dati che altrimenti verrebbero sovrascritti. Si ottengono in questo modo poche misure successive molto ravvicinate cronologicamente e si ha più spesso una pausa relativamente lunga dovuta al trasferimento dei dati dal buffer al calcolatore. Un vantaggio di questa ultima scelta è quello di poter visualizzare quasi in tempo reale le misure effettuate, poiché i dati vengono scaricati dallo strumento molto di frequente. Qualora sia importante, come nel nostro caso, monitorare costantemente e con ritardo molto breve le grandezze misurate, è conveniente adottare un buffer piccolo, che può essere scaricato velocemente. Dimensionando opportunamente il buffer è stato possibile ottenere una distanza temporale fra misure successive pressoché uniforme. L’elaborazione dati susseguente al loro trasferimento è talmente rapida da richiedere l’introduzione di una pausa ad hoc (della durata di 0,2s) affinché lo strumento abbia il tempo di effettuare nuove misure fra un’interrogazione e l’altra. Questa pausa arresta solo l’elaborazione dei dati, non la loro acquisizione da parte dello strumento.

In questo modo, effettuando l’acquisizione su 7 canali e adottando un buffer in grado di contenere 14 misure, si ottiene una pausa di 0,4s fra due misure successive di uno stesso canale. Il tempo che trascorre tra due misure su canali successivi è quindi di circa 0,06s, per un totale di circa 17 misure al secondo. La frequenza con cui le misure vengono visualizzate è circa la stessa con cui vengono effettuate quelle su uno stesso canale, cioè una volta ogni 0,4s. Nello specifico 0,2s sono necessari al trasferimento dei dati dal buffer e 0,2s sono imposti come pausa ad ogni interrogazione dello strumento come già specificato.

126