upgrade del sistema di acquisizione dati dell`esperimento auriga
Transcript
upgrade del sistema di acquisizione dati dell`esperimento auriga
UPGRADE DEL SISTEMA DI ACQUISIZIONE DATI DELL’ESPERIMENTO AURIGA: MIGRAZIONE SU NUOVE PIATTAFORME HARDWARE E SOFTWARE RELATORE: Ch.mo Prof. Alessandro Beghi CORRELATORI: Dott. Antonello Ortolan LAUREANDO: Stefano Longo A.A. 2003 - 2004 UNIVERSITÀ DEGLI STUDI DI PADOVA DIPARTIMENTO DI INGEGNERIA DELL’INFORMAZIONE TESI DI LAUREA UPGRADE DEL SISTEMA DI ACQUISIZIONE DATI DELL’ESPERIMENTO AURIGA: MIGRAZIONE SU NUOVE PIATTAFORME HARDWARE E SOFTWARE RELATORE: Ch.mo Prof. Alessandro Beghi CORRELATORI: Dott. Antonello Ortolan LAUREANDO: Stefano Longo Padova, 23 Novembre 2004 2 “Ai miei genitori e a Laura che mi sono sempre stati accanto” Sommario Nei moderni esperimenti di fisica, l’intera elaborazione delle informazioni avviene con metodi digitali, beneficiando delle crescenti capacitá di calcolo presenti nei calcolatori. La gestione di segnali digitalizzati non puó prescindere dalla loro conversione, rendendo i sistemi di acquisizione fondamentali per la buona riuscita di qualsiasi esperimento. Il lavoro sviluppato in questa tesi riguarda il sistema di acquisizione utilizzato dall’esperimento AURIGA, il rivelatore di onde gravitazionali situato presso i laboratori di Legnaro dell’Istituto Nazionale di Fisica Nucleare. Viene presentato il processo di migrazione del sistema verso nuove piattaforme resosi necessario per il rispetto dei requisiti dell’esperimento, con particolare riguardo ai problemi di sincronizzazione dei dati acquisiti. Nella tesi vengono discussi e analizzati i principali problemi che é stato necessario affrontare, proponendo soluzioni e verifiche di funzionalitá che hanno certificato il buon funzionamento del sistema. Trova infine spazio la discussione dei problemi relativi alla calibrazione e alle tecniche di diagnostica del sistema di acquisizione, presentando gli strumenti esterni al DAQ che sono stati implementati allo scopo, permettendo un incremento globale delle prestazioni del sistema. Indice 1 Introduzione 1 2 Onde Gravitazionali 2.1 Onde Gravitazionali . . . . . . 2.2 Sorgenti di Onde Gravitazionali 2.3 Scopo della rivelazione . . . . . 2.4 Tipi di Rivelatori . . . . . . . . 2.5 L’esperimento AURIGA . . . . . . . . . 5 5 6 7 7 10 . . . . . . . . . . . . . . . . . . . . . 15 15 16 17 18 22 24 26 26 27 28 30 30 31 31 36 37 37 37 38 38 39 4 Upgrade e BugFix del Sistema 4.1 Malfunzionamenti . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 Aggiornamento Hardware . . . . . . . . . . . . . . . . . . . . . . 43 44 44 3 Il DAQ 3.1 Il Sistema di Acquisizione . 3.2 La strumentazione VXI . . . 3.3 Il GPS e la sincronizzazione 3.4 Il canale Antenna . . . . . . 3.5 I canali Ausiliari . . . . . . 3.6 Il sistema Host . . . . . . . 3.7 L’Ambiente di Sviluppo . . 3.7.1 omniORB . . . . . . 3.7.2 OSE . . . . . . . . . 3.7.3 Frame Library . . . . 3.7.4 ROOT . . . . . . . . 3.7.5 FFTW . . . . . . . . 3.7.6 NI-VXI . . . . . . . 3.8 Il Software di Acquisizione . 3.8.1 ANT . . . . . . . . . 3.8.2 AUX . . . . . . . . . 3.8.3 GPS . . . . . . . . . 3.8.4 BLD . . . . . . . . . 3.8.5 DSK . . . . . . . . . 3.8.6 LOG . . . . . . . . . 3.8.7 GUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . I . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3 4.4 4.5 4.6 4.2.1 Il nuovo Crate . . . . . . . . . . . . . . . . . . . . . . 4.2.2 Il nuovo PC Host . . . . . . . . . . . . . . . . . . . . Soluzione dei problemi di Sincronizzazione . . . . . . . . . . 4.3.1 Errori di comunicazione . . . . . . . . . . . . . . . . 4.3.2 Ritardo nel sollevamento delle Interruzioni . . . . . . 4.3.3 Mancata lettura di un timestamp dalla coda di GPS Segnali Ausiliari . . . . . . . . . . . . . . . . . . . . . . . . . 4.4.1 Stato dell’ADC HP 1413 . . . . . . . . . . . . . . . . 4.4.2 Sincronizzazione degli Ausiliari . . . . . . . . . . . . 4.4.3 Frequenza di campionamento . . . . . . . . . . . . . 4.4.4 Migliorie e correzioni minori . . . . . . . . . . . . . . Sistema Operativo . . . . . . . . . . . . . . . . . . . . . . . Librerie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Calibrazione e Diagnostica del Sistema 5.1 Latenza delle Interruzioni . . . . . . . 5.1.1 Il Filtro Analogico . . . . . . . 5.1.2 Il Filtro Digitale . . . . . . . . 5.1.3 Stima della Latenza . . . . . . . 5.2 Ampiezza e Offset . . . . . . . . . . . . 5.3 DAQ Calibration . . . . . . . . . . . . 5.4 Risultati . . . . . . . . . . . . . . . . . 5.5 Diagnostica del Sistema . . . . . . . . 5.6 Diagnostica Off-Line . . . . . . . . . . 5.7 Diagnostica On-Line . . . . . . . . . . 5.8 DAQ Control . . . . . . . . . . . . . . 5.8.1 Architettura del sistema . . . . 5.8.2 Tipologie di diagnostica . . . . 5.8.3 Interfacce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 48 50 50 52 54 58 58 59 61 62 63 64 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 66 66 69 70 73 73 77 79 80 81 82 83 85 86 6 Conclusioni e sviluppi futuri 89 Bibliografia 93 II Capitolo 1 Introduzione Le tecnologie digitali vengono oramai ampiamente utilizzate nella fisica moderna; per coglierne tutti i benefici i dati forniti dagli esperimenti devono essere digitalizzati utilizzando un sistema di acquisizione, rendendolo quindi un punto cruciale per la riuscita di qualsiasi sperimentazione. Ad un aumento della difficoltá di quest’ultimo corrisponde quasi sempre un incremento dei requisiti imposti al sistema, aumentandone la criticitá. In particolare, nella ricerca di onde gravitazionali, la difficoltá intrinseca é dovuta principalmente alla scarsa interazione con la materia che attraversano, una misura della complessitá della rivelazione puó essere dedotta semplicemente considerando che ad oggi non esiste alcuna conferma di osservazione di fenomeni gravitazionali nonostante gli sforzi di quarant’anni di ricerca. Le peculiaritá del rivelatore di onde gravitazionali AURIGA (rivelatore a barra risonante in operazione presso i Laboratori Nazionali di Legnaro dell’INFN), impongono vincoli stringenti al sistema di acquisizione adottato. La natura delle onde gravitazionali richiede che il DAQ - inteso come insieme di hardware e software - effettui un trattamento ottimale del segnale proveniente dal rivelatore, introducendo un disturbo che va necessariamente minimizzato. L’impossibilitá di avere una qualche sorta di controllo su sorgenti artificiali, inoltre, fa di AURIGA un osservatorio di onde gravitazionali, richiedendo all’intero sistema di acquisizione la massimizzazione del duty-cycle, riducendo al minimo i tempi in cui deve essere fermato. La debolezza di interazione con la materia infine, rende necessaria la collaborazione con altri rivelatori per aumentare il livello di confidenza della rivelazione, imponendo vincoli aggiuntivi al sistema di acquisizione in particolar modo per quanto riguarda la sincronizzazione con il tempo universale e l’adozione di un formato comune che renda possibile lo scambio di dati tra diversi esperimenti. Il lavoro presentato in questa tesi muove i suoi passi partendo dal sistema di acquisizione esistente, progettato e realizzato nel 2001 per rispondere ai requisiti dell’esperimento. Le cause che hanno richiesto la rielaborazione del sistema possono essere principalmente riassunte, in ordine di importanza, nel bisogno di risolvere alcuni problemi di funzionamento che si sono rivelati dall’utilizzo del 1 Capitolo 1. Introduzione sistema, nell’evoluzione dello stesso richiesta per l’introduzione di nuove funzionalitá e - infine - dalla necessitá di allineare il software di acquisizione ai nuovi strumenti hardware e software che sono stati sviluppati da quando il precedente DAQ é entrato in funzione. La presentazione del lavoro svolto per questa tesi é stato articolato nel modo seguente: Nel Capitolo 2 viene introdotto brevemente il fenomeno delle onde gravitazionali citando la fisica che lo supporta, ovvero la Relativitá Generale di Albert Einstein. Si é scelto uno stile qualitativo poiché lo scopo di questa sezione é di fornire la possibilitá ad un lettore di inquadrare il problema ingegneristico dato dal sistema di acquisizione per l’esperimento. Viene quindi introdotta l’origine delle onde gravitazionale e le possibili sorgenti che sono oggetto di studio, con una particolare enfasi sulla loro interazione con la materia. L’importanza di una possibile rivelazione é costituita, oltre che dalla verifica di un aspetto teorico della teoria della Relativitá Generale, dalla possibilitá di estendere lo spettro di osservazione del cosmo, permettendo un’indagine complementare a quelle giá realizzate mediante la radiazione elettromagnetica (onde radio, infrarosso, luce visibile, ultravioletto, raggi X e γ). In conclusione vengono presentate le possibili tecniche di indagine, mediante rivelatori interferometrici oppure risonanti. Viene infine descritto nello specifico il rivelatore AURIGA, nella sua attuale configurazione operativa. Nel terzo capitolo viene descritto il sistema dal quale ho iniziato il lavoro per questa tesi. Vengono presentate le ragioni che hanno portato alla scelta di determinata strumentazione hardware mostrando che le scelte allora effettuate sono tuttora adeguate per le funzionalitá che si vogliono realizzare. Segue la presentazione dell’architettura hardware utilizzata per l’acquisizione, particolarmente utile per risolvere il problema della sincronizzazione con il tempo universale, che sta alla base di qualsiasi sistema di acquisizione da utilizzare nella rivelazione di onde gravitazionali. Si presenta quindi l’ambiente di sviluppo adottato nella prima versione del DAQ, analizzando le ragioni che hanno portato alla sua scelta ed illustrando i motivi per cui taluni elementi sono stati conservati mentre per altri si sono preferite soluzioni differenti. Infine trova ampio spazio la descrizione del precedente sistema di acquisizione vero e proprio, inteso come software che realizza il DAQ. Ne viene descritta l’architettura e si presentano i singoli processi che lo compongono, descrivendo le peculiaritá di ognuno e introducendo i problemi che saranno affrontati e risolti nelle sezioni successive. Nel quarto capitolo si presentano le novitá introdotte con il lavoro della tesi. In particolare viene trattata la migrazione del sistema di acquisizione verso nuove piattaforme e la correzione degli errori effettuata per risolvere i problemi che sono emersi con l’utilizzo del DAQ. Vengono preventivamente trattate le questioni relative all’upgrade dell’hardware, la scelta dei nuovi componenti e i test che sono stati necessari per verificare la conformitá alle specifiche richieste. Successivamente trova ampio spazio la descrizione degli inconvenienti riscontrati nella sincronizzazione dei dati con il tempo universale e nell’utilizzo dei canali ausiliari, essendo stati soggetti alle maggiori modifiche. Sono analizzate le cause 2 dei malfunzionamenti e proposte soluzioni, assieme ai test che ne hanno verificato la funzionalitá. Vengono inoltre presentati gli aggiornamenti di carattere software e quindi i nuovi pacchetti scelti per lo sviluppo del sistema. Nel Capitolo 5 si discute il problema della calibrazione del sistema di acquisizione, operazione resa necessaria per ottenere l’accuratezza richiesta dall’esperimento, e della sua diagnostica. Particolare risalto viene dato alla calibrazione dei ritardi di fase introdotti dall’ADC, analizzando il funzionamento dalla strumentazione e presentando il metodo adottato per la stima della latenza delle interruzioni utilizzate per la sincronizzazione. Successivamente viene affrontato il problema della calibrazione in ampiezza dell’ADC utilizzato per il canale principale e delle soluzioni che sono state proposte. A conclusione dell’argomento viene presentato il tool “DAQ Calibration” sviluppato per l’automatizzazione di alcune operazioni necessarie alla calibrazione del sistema di acquisizione. L’ultimo argomento affrontato in questa tesi riguarda la diagnostica del sistema, necessaria per garantirne il buon funzionamento e per ottenere i requisiti di resilienza richiesti. Vengono proposti due sistemi di diagnostica che sono stati implementati (on-line e off-line) analizzando le possibilitá fornite da ognuno. Infine viene presentato “DAQ Control”, il tool che é stato sviluppato per la diagnostica remota del sistema di acquisizione, assieme alle utilitá fornite a corredo che permettono l’integrazione con i sistemi giá presenti nel laboratorio di AURIGA. 3 Capitolo 2 Onde Gravitazionali In questo capitolo si descrive brevemente il concetto di Onda Gravitazionale. Si procederá quindi con una introduzione prevalentemente qualitativa del fenomeno per poi presentare le tecniche di rivelazione attualmente utilizzate. Infine si presenterá il rivelatore di onde gravitazionali AURIGA, il cui sistema di acquisizione dati (DAQ) é l’oggetto di questa tesi. 2.1 Onde Gravitazionali Pubblicata nel 1916, la teoria della Relativitá Generale di Albert Einstein ha portato ad una radicale modifica di come debbano essere interpretati i fenomeni che riguardano l’interazione gravitazionale. In essa la forza gravitazionale viene ad essere modellata non piú come un campo, ma geometricamente. Gli oggetti dotati di massa alterano la geometria dello spazio-tempo, producendo una curvatura. In buona analogia con i fenomeni elettromagnetici, la teoria della Relativitá Generale prevede che la variazione nella distribuzione di massa altera lo spazio-tempo e questa variazione produce un’onda, l’onda gravitazionale, che si propaga nello spazio alla velocitá della luce. Le frequenze dell’onda prodotta sono inversamente proporzionali alla massa della sorgente [1]. Le somiglianze tra onde elettromagnetiche e gravitazionali sono molte, tuttavia l’analogia non é completa. Per citare alcune tra le differenze sostanziali vi sono le modalitá di generazione, il mezzo di propagazione e l’interazione con la materia. Si é giá detto che nel caso delle onde gravitazionali é l’alterazione della distribuzione di una massa a dare origine al fenomeno. Per quanto riguarda il mezzo di propagazione sappiamo che le onde elettromagnetiche sfruttano lo spazio vuoto come mezzo, mentre le onde gravitazionali alterano lo spazio stesso (anzi, per la precisione lo spazio-tempo). L’interazione con la materia che investono inoltre é molto differente nel caso di onde elettromagnetiche e gravitazionali. Nel secondo caso, effetto dell’onda consiste nell’alterare la distanza relativa di punti in “caduta libera”1 e, a differenza della prima, é estremamente piccolo. Infatti 1 La dicitura punti in caduta libera indica punti non sottoposti ad alcuna forza in senso relativistico ossia punti che sono sottoposti alla sola forza di gravitá 5 Capitolo 2. Onde Gravitazionali si é stimato che l’effetto delle onde gravitazionali piú intense, quelle che dovrebbero svilupparsi da eventi come l’esplosione di supernovæ galattiche, é tale da indurre una variazione della distanza di due punti posti ad un metro, di 10−19 m. Considerando che il diametro del nucleo di un atomo é dell’ordine di 10−15 m, la misura di un’onda gravitazionale é possibile solo se si riesce a rilevare con precisione grandezze inferiori a un decimillesimo di questa dimensione. Proprio a causa degli effetti cosı́ difficilmente misurabili, ad oggi non abbiamo alcuna misurazione diretta di onde gravitazionali. Oltre alla dimostrazione della necessitá della loro esistenza come conseguenza della teoria della Relativitá Generale, disponiamo solamente di una verifica indiretta dovuta a J. Taylor. Questi, osservando la pulsar binaria PSR1913+16, notó un rallentamento del moto orbitale [2]. Essendo l’emissione di onde gravitazionali l’unica possibilitá per spiegare il fenomeno, Taylor effettuó una serie di misurazioni su tale rallentamento e le confrontó con i dati ottenibili analiticamente dalla teoria della Relativitá Generale. L’accordo fra dati calcolati e sperimentali fu ottimo e confermó la sua teoria che gli valse nel 1993 il Premio Nobel. 2.2 Sorgenti di Onde Gravitazionali Data la debolezza dell’interazione gravitazionale, le sorgenti vanno ricercate tra i corpi celesti che, per le masse in gioco, sono gli unici oggetti in grado di produrre ondulazioni sufficientemente ampie da poter essere rilevate dalla strumentazione. In base al tipo di fenomeno ondulatorio a cui danno origine si distinguono due tipi di sorgenti: quasi-periodiche ed impulsive. Tra le prime vanno indicati tutti i corpi celesti in rapida rotazione (pulsar) o i sistemi binari, mentre al secondo gruppo appartengono quelli che producono eventi catastrofici come l’esplosione di supernovæ. Le sorgenti periodiche sono costituite essenzialmente da tutti i sistemi binari2 . Durante la loro vita infatti, le stelle del sistema tendono ad avvicinarsi l’un l’altra, riducendone l’energia potenziale. Questa energia ovviamente non scompare, ma lascia il sistema sotto forma di onde gravitazionali. I sistemi binari possono essere costituiti da diversi corpi: oltre alle normali stelle possiamo avere stelle di neutroni3 e buchi neri (oltre a tutte le loro possibili combinazioni). Vanno considerati fra le sorgenti impulsive tutti i corpi destinati ad una repentina modifica della loro struttura. Oltre alle giá citate esplosioni di supernovæ, sono eventi promettenti per l’emissione di onde gravitazionali tutti i corpi celesti che stanno per collassare (inclusi i sistemi binari, quando i due corpi che lo costituiscono sono giunti a contatto). Questi fenomeni risultano particolarmente interessanti per le alte energie sprigionate. La grande distanza dell’evento dalla terra - infatti - fa si che ci arrivi solo una piccola parte dell’energia emessa sotto 2 Complesso di due astri in rotazione l’uno attorno all’altro Si dice stella di neutroni un corpo celeste costituito dal nucleo collassato di una stella massiva. Essenzialmente sono costituite da materia degenere sotto forma di flusso di neutroni e quindi la loro densitá é elevatissima 3 6 2.3. Scopo della rivelazione forma di onde gravitazionali. Per loro natura inoltre, le onde gravitazionali interagiscono molto debolmente con la materia e quindi solo eventi di questa portata sono particolarmente favorevoli alla rivelazione. Anche se al di sopra delle nostre attuali sensibilitá di misurazione, vanno citate come sorgenti i fenomeni avvenuti al tempo della formazione delle galassie e il Big-Bang stesso. Questi devono aver prodotto una gran quantitá di onde gravitazionali che tutt’ora potrebbero essere misurabili. Ad oggi peró non vi é alcuna conferma sperimentale dato che nessuno strumento é stato in grado di distinguere tali segnali gravitazionali da quelli legati alle fluttuazioni del proprio rumore. 2.3 Scopo della rivelazione L’importanza della rivelazione di onde gravitazionali va oltre la semplice dimostrazione di un risultato della teoria della Relativitá Generale. Esse infatti permetterebbero di allargare gli attuali orizzonti nell’esplorazione del cosmo consentendo un’osservazione di oggetti astrofisici complementare a quella che giá avviene utilizzando la radiazione elettromagnetica. Quello che attualmente osserviamo - alle bande γ, X, visibile, infrarosso e radio - é prodotto da fenomeni che avvengono sulla superficie del corpo celeste e quindi puó offrirci informazioni solo relativamente a quanto avviene in quella zona. Le onde gravitazionali invece sono prodotte dal moto della massa stessa e quindi possono fornirci dati su quanto accade al suo interno. Le onde gravitazionali inoltre dovrebbero rendere possibile lo studio di tutti quei corpi celesti che non emettono radiazione elettromagnetica (ad esempio i buchi neri) provandone finalmente l’esistenza e quanto finora si é congetturato sulla loro natura. Infine, per la loro scarsa interazione con la materia, le onde gravitazionali dovrebbero permetterci di studiare fenomeni che attualmente non possiamo osservare per la distanza o per la composizione del materiale interstellare tra la terra e la zona di esplorazione. Le onde elettromagnetiche infatti vengono distorte, assorbite, ecc. durante il loro percorso, giungendo alla terra alterate ed attenuate e limitando cosı́ la zona di universo che possiamo osservare. La propagazione delle onde gravitazionali invece non risente di tutto ció e permetterebbe quindi l’esplorazione di zone attualmente irraggiungibili. 2.4 Tipi di Rivelatori I rivelatori di onde gravitazionali sono essenzialmente di due tipi: interferometrici e risonanti. In entrambi la rilevazione si riconduce alla misura di deformazione dello spazio-tempo che, come indicato nella Sezione 2.1, viene alterato dal passaggio dell’onda. 7 Capitolo 2. Onde Gravitazionali I rivelatori interferometrici vengono derivati essenzialmente dall’interferometro di Michelson. Sono costituiti da due bracci ortogonali, nei quali viene creato il vuoto. Un raggio laser proveniente da una sorgente viene diviso in due da un “beam splitter” (Specchio semiargentato) e inviato lungo i due bracci. Al loro termine i raggi vengono riflessi da due specchi e, giunti nuovamente all’intersezione dei due bracci, vengono fatti interferire. Dall’osservazione della figura di interferenza si puó determinare se la distanza percorsa dai due raggi é diversa. Dato il tipo di misura, affinché l’esperimento fornisca i risultati voluti, vanno utilizzati molti accorgimenti. In primo luogo la lunghezza dei bracci dell’interferometro va scelta in maniera tale da soddisfare le richieste di sensibilitá (che cresce con la lunghezza del percorso coperto dal laser). Ad esempio gli esperimenti LIGO4 e VIRGO5 - attualmente tra i piú avanzati in questa tipologia di rivelatori - utilizzano rispettivamente bracci di 4 Km e 3 Km. Figura 2.1: Schematizzazione dell’interferometro VIRGO Per aumentare ulteriormente la distanza percorsa dal laser, questo viene riflesso piú volte da una estremitá all’altra del braccio, cosı́ da incrementarne il percorso effettivo (nel caso di VIRGO, ad esempio, diventa 120 Km). Inoltre, tutti i dispositivi ottici utilizzati nell’esperimento devono essere sospesi in maniera tale da soddisfare il requisito di caduta libera nella banda d’interesse. Nella rivelazione di onde gravitazionali, il rumore e la sua reiezione diventano fondamentali. Per questa ragione vengono adoperati tutta una serie di accorgimenti atti a ridurre le possibili cause di disturbo. Di particolare interesse é il sistema di sospensione il cui compito consiste nel disaccoppiare il rivelatore dall’attivitá sismica dell’ambiente circostante. Nel caso di VIRGO ad esempio, vengono utilizzati due sistemi di attenuazione delle vibrazioni meccaniche in cascata. Il primo, direttamente connesso agli elementi ottici, é cotituito da filtri sismici passivi 4 5 Due interferometri in operazione a Livingston(NC) e Hanford(WA) negli Stati Uniti Interferometro Italo-Francese in operazione a Cascina (PI) in Italia 8 2.4. Tipi di Rivelatori (molle a balestra) che vengono sospesi al secondo sistema, costituito da una piattaforma controreazionata in maniera attiva tale da mantenere una precisione nel posizionamento dell’ordine del micron. Le possibili sorgenti di rumore ovviamente non si esauriscono col rumore sismico e, per ognuna di esse, vengono adottate tecniche di isolamento che, diverse esperimento per esperimento, esulano dallo scopo di questa introduzione. Nella documentazione fornita dai vari rivelatori si possono reperire informazioni sulle metodologie utilizzate (si vedano [6] e [7] per VIRGO e LIGO rispettivamente). LIGO e VIRGO non sono gli unici rivelatori interferometrici esistenti. Tra i maggiori progetti attivi vanno indicati GEO 600 e TAMA 300, rispettivamente in operazione ad Hannover (DE) e Tokyo (JP). Con particolare interesse va citato il progetto LISA6 (Laser Interferometer Space Antenna [8]) il cui scopo é costituire un osservatorio per onde gravitazionali situato nello spazio. L’interferometro é costituito da tre satelliti in orbita attorno al sole, che formano un triangolo equilatero con lato di 5 · 106 Km. (a) Orbita (b) Posizionamento Figura 2.2: Schematizzazioni dell’esperimento LISA Il progetto - in fase di realizzazione - si propone lo scopo di mantenere questi tre satelliti in orbita grazie ad un controllo inerziale in grado di mantenere la posizione delle masse di prova con un errore inferiore ai 10nm. La grande dimensione dei bracci dell’interferometro unita al rumore esterno estremamente ridotto rispetto ai dispositivi terrestri fanno di LISA un progetto estremamente promettente. I rivelatori risonanti invece basano il loro funzionamento sull’utilizzo di una antenna costituita da una massa che, attraversata dall’onda, varia le sue dimensioni. Il materiale e le caratteristiche geometriche dell’antenna vengono scelte in modo tale che presenti una o piú risonanze nella banda di interesse (da cui il nome). Fanno parte di questa categoria di rivelatori quelli che utilizzano una barra 6 Lisa é un progetto dell’Agenzia Spaziale Europea (ESA) e di quella americana (NASA) 9 Capitolo 2. Onde Gravitazionali (ALLEGRO7 , AURIGA8 , EXPLORER9 e NAUTILUS10 ) e quelli che utilizzano una sfera (MiniGRAIL11 , Mario Schemberg12 , ecc). Entrambi i rivelatori utilizzano lo stesso principio, l’esistenza di due diverse tipologie é legata a motivi storici: i rivelatori a barra risonante sono stati i primi ad essere progettati mentre quelli sferici sono di piú recente concezione. I rivelatori a barra risonante, inoltre, sono dotati di un preciso antenna pattern mentre quelli sferici sono isotropi cosicché gli ultimi presentano uguale sensibilitá indipendentemente dalla direzione di incidenza dell’onda (questo a spese di una maggiore complessitá nella ricostruzione dell’evento). Come nel caso dei rivelatori interferometrici, la riduzione del rumore é di fondamentale importanza per la misura, in particolare il rumore termico che dipende dal rapporto tra la temperatura T e il fattore di merito Q. Per ottenere questo risultato i rivelatori risonanti sono racchiusi in criostati nei quali l’antenna viene portata a temperature criogeniche od ultracriogeniche. In questa maniera si puó quasi annullare il moto browniano delle particelle e riuscire a misurare effettivamente le deformazioni dell’antenna dovute al passaggio di un’onda gravitazionale. 2.5 L’esperimento AURIGA AURIGA13 é l’antenna gravitazionale installata presso i Laboratori Nazionali di Legnaro dell’Istituto Nazionale di Fisica Nucleare. Il rivelatore é costituito dal una barra in lega di Alluminio mantenuta a temperature ultracriogeniche mediante un criostato all’elio liquido [3]. I rivelatori risonanti sono schematizzabili come oscillatori armonici costituiti da due masse unite da una molla e uno smorzatore viscoso. qParticolaritá di k questo sistema é l’oscillare alla pulsazione caratteristica ω0 = M , dove k é la costante elastica della molla e M é la massa. La barra di un rivelatore risonante segue il precedente comportamento in cui la massa M , la lunghezza della molla l, la pulsazione caratteristica ω0 e la costante di decadimento τ vanno calcolate rispettivamente come M= Mbarra , 2 l= 4Lbarra , π2 ω0 = πvs , Lbarra τ= 2Q , ω0 (2.1) dove Mbarra , Lbarra sono rispettivamente la massa e la lunghezza fisica della barra mentre vs é la velocitá del suono nel materiale. Si possono quindi scegliere le caratteristiche fisiche e geometriche della barra in modo tale da ottimizzare la sensibilitá, la banda di utilizzo, ecc. 7 LSU - Luisiana I.N.F.N. - Legnaro (IT) 9 CERN - Ginevra (CH) 10 I.N.F.N. - Frascati(IT) 11 Leiden University - Leiden (NL) 12 Universitá di San Paolo - San Paolo (BRA) 13 Antenna Ultracriogenica Risonante per l’Indagine Gravitazionale Astronomica 8 10 2.5. L’esperimento AURIGA Nel caso di AURIGA é stata utilizzata una barra in una lega di Alluminio (AL5056) di lunghezza 3m e con un diametro di 60cm per un peso complessivo di 2300Kg. Il materiale é stato scelto in maniera tale da assicurare buone caratteristiche al rivelatore, quindi una velocitá di propagazione del suono elevata vs = 5400 m/s e un alto fattore di merito Q ' 107 . La lunghezza della barra invece é imposta dalla banda oggetto di studio. Il rivelatore deve infatti presentare delle risonanze prossime alla frequenza di 1KHz. Il cilindro dell’antenna viene mantenuto a temperature criogeniche mediante un criostato a due strati: quello piú esterno mantiene una temperatura dello schermo a T ' 100K mentre quello piú interno porta la temperatura a T ' 20K. Come tutti i rivelatori di onde gravitazionali va posta particolare attenzione nell’isolamento dell’antenna dal rumore dell’ambiente circostante. Per quanto riguarda l’isolamento da interferenze elettromagnetiche, questo dovrebbe essere fornito dallo schermo costituito dai metalli che racchiudono la barra. Questi, essendo a temperatura criogenica, diventano superconduttivi e quindi si prestano come schermi magnetici anche per le componenti del campo perpendicolari alla superficie. L’isolamento acustico nella presente configurazione di AURIGA [3] [4] viene ottenuto mediante due cavitá, OVC (Outer Vacuum Chamber) e IVC (Internal Vacuum Chamber), nelle quali é stato creato il vuoto cosı́ da non permettere la propagazione delle onde di pressione. La disposizione del criostato e delle citate cavitá é visibile in Figura2.3(a). L’isolamento meccanico é fornito da un sistema a due livelli. Il rivelatore é posto su di una piattaforma - separata dal resto del laboratorio - che poggia su sabbia. Questa da sola fornisce un’attenuazione di 20dB. All’interno del criostato poi la barra viene sospesa mediante quattro colonne costituite da molle realizzate in una particolare lega di alluminio (Alumold 1-500) che, alla frequenza caratteristica di 1KHz, forniscono un’attenuazione di 240dB. (a) Criostato (b) Sospensioni Figura 2.3: Schema della criogenia e degli stadi di attenuazione del rumore sismico di AURIGA La deformazione della barra, o meglio lo spostamento del suo modo fondamentale, viene misurata mediante un trasduttore capacitivo. Questo é costituito 11 Capitolo 2. Onde Gravitazionali in prima approssimazione da un condensatore piano in cui un’armatura é solidale con la barra mentre l’altra é un corpo risonante alla stessa frequenza della barra costituito da una massa di circa 0.3Kg. Il sistema trasduttore/barra é equivalente a due oscillatori armonici accoppiati e quindi ogni variazione nella lunghezza dell’antenna viene trasdotta in una variazione della distanza x(t) tra le armature del trasduttore e dunque in una variazione di tensione ai capi del condensatore come segue : V (t) = Q0 Q0 ' E0 δx + , C(t) C0 1 x0 + δx 1 δx = = + C(t) 0 S C 0 0 S (2.2) dove 0 é la costante dielettrica del vuoto, Q0 , C(t) e S sono rispettivamente la carica (costante), la capacitá al tempo t e la sezione del condensatore ed infine E0 é il campo elettrico con cui viene polarizzato. Figura 2.4: Vista dell’interno di AURIGA II. Si notano il sistema di sospensioni, il gruppo readout+SQUID montato all’estremitá della barra e i due stadi del criostato Il segnale ottenuto dal trasduttore viene poi amplificato utilizzando un sistema a doppio SQUID14 . Quest’ultimo é un circuito amplificatore costituito da un anello superconduttivo dotato di due giunzioni Josephson e utilizzato per misurare il campo magnetico proveniente da un pick-up accoppiato con il trasduttore. Il segnale ottenuto all’uscita dello SQUID viene inviato al sistema di acquisizione. Oltre al segnale principale in uscita allo SQUID, vengono acquisiti almeno una decina di canali ausiliari per monitorizzare l’ambiente attorno al rivelatore (accelerometri, microfoni, sismometri, sonde elettromagnetiche, tiltmetri, ecc). Questi dati sono utilizzati per anticorrelare i valori forniti dal canale antenna con 14 Superconducting QUantum Interference Device 12 2.5. L’esperimento AURIGA il rumore proveniente dall’ambiente esterno, cosı́ fornendo un sistema robusto per la diagnostica del sistema e la validazione dei risultati ottenuti. 13 Capitolo 3 Il DAQ Nella realizzazione di un sistema di acquisizione (DAQ), vanno operate delle scelte atte a massimizzarne la produttivitá. In questo capitolo vengono descritti gli apparati che sono utilizzati per il sistema di acquisizione, analizzandone le caratteristiche e le motivazioni che ne hanno giustificato la scelta. Successivamente viene descritto brevemente il software componente il sistema di acquisizione nella configurazione dalla quale si é partiti per lo sviluppo di questa tesi. Il DAQ in questione é stato sviluppato dal personale del gruppo AURIGA e trova ampia descrizione nei riferimenti [10] e [11]. La descrizione del software di acquisizione vuole essere semplicemente un’introduzione al sistema che rende agevole la lettura dei capitoli successivi nei quali si tratteranno le modifiche che si sono rese necessarie. 3.1 Il Sistema di Acquisizione Gli strumenti utilizzati per il DAQ di AURIGA - sia hardware che software - sono stati determinati in maniera tale da soddisfare i seguenti requisiti [12]: Robustezza : Le sorgenti di onde gravitazionali che il rivelatore AURIGA si propone di misurare, essendo legate a processi astrofisici completamente al di fuori del nostro controllo, devono essere sotto osservazione continua, di conseguenza il DAQ deve permettere un’acquisizione ininterrotta dell’antenna, limitando al minimo gli stop del sistema dovuti a malfunzionamenti Sincronizzazione : AURIGA fa parte di un network di rivelatori [9] e, affinché sia possibile correlare i dati raccolti dagli altri rivelatori, questi devono essere sincronizzati con lo standard di tempo universale (UTC) con un errore massimo inferiore a 1µs I/O Formattato : Per facilitare lo scambio dei dati con altri rivelatori, questi vanno memorizzati in un formato standard. AURIGA a questo scopo ha scelto il formato Frame [24], nato dalla collaborazione LIGO-VIRGO. 15 Capitolo 3. Il DAQ Diagnosi efficiente : Il sistema di acquisizione deve inoltre facilitare la diagnostica in linea dell’esperimento, permettendo la visualizzazione e l’interpretazione di quanto viene acquisito (spia dei dati). Per soddisfare le precedenti richieste, la versatilitá necessaria per un esperimento in continua evoluzione e la precisione occorrente per la misura, si é optato per l’utilizzo, come DAQ, di un PC a cui é connesso un crate VXI contenente la strumentazione di misura. Nei paragrafi successivi verranno analizzati tutti i componenti del sistema assieme alle caratteristiche che li contraddistinguono. 3.2 La strumentazione VXI Lo standard hardware adottato per la strumentazione del DAQ é il VXI. Differenza fondamentale di questo dagli altri standard (VME, PXI, ecc.) é che completa la definizione delle specifiche della strumentazione aggiungendo precisi requisiti riguardanti la schermatura e il raffreddamento degli apparati. Con l’adozione del VXI si é quindi voluto garantire i livelli massimi di rapporto segnale/disturbo per l’acquisizione. (a) Crate HP E1401A (b) NI VXI-PCI8026 Figura 3.1: Mainframe e dispositivi di interfacciamento. La strumentazione VXI é costituita da schede - C-size o B-size - che vengono inserite in un crate o mainframe (nel caso specifico l’HP E1401A - Figura 3.1(a)). Quest’ultimo é il responsabile delle comunicazioni tra le schede inserite, fornisce le rispettive sorgenti di alimentazione e si occupa del raffreddamento del sistema. Lo standard VXI permette la creazione di sistemi di acquisizione espandibili grazie alla sua modularitá. Uno stesso crate puó ospitare qualsiasi tipo di dispositivo dotato di interfaccia VXI e, nel caso in cui si debbano utilizzare piú schede di quante ne possano essere ospitate da un singolo crate, il sistema puó essere esteso collegando vari mainframe in “daisy-chain”, il tutto in maniera trasparente all’utente. 16 3.3. Il GPS e la sincronizzazione La comunicazione tra i dispositivi VXI ed il “sistema PC Host” é affidata al kit National Instruments VXI-PCI8026 (Figura 3.1(b) - [27]). Questo é costituito da due interfacce: una scheda PCI che permette la comunicazione tra il PC e il bus MXI1 e una scheda VXI che connette il bus MXI al VXI. Se quest’ultima viene inserita nello slot 0 - che ha una piedinatura diversa dagli altri - il controller puó svolgere funzioni di temporizzazione del bus, di arbitraggio e gestire le interruzioni. L’intero kit permette di connettere un insieme di strumenti al bus PCI in modo praticamente trasparente. Con l’utilizzo dei driver forniti a corredo i trigger diventano gestibili dal PC, nel sistema host le interruzioni generate dalle schede VXI vengono rilevate come se fossero locali ed infine é possibile utilizzare memoria condivisa tra il PC e la strumentazione. Le precedenti caratteristiche assieme ad una banda verso la strumentazione di 33MB/s (23MB/s in utilizzo continuo), ottenuta mediante l’utilizzo di buffer e DMA, rendono il VXI-PCI8026 piú che adeguato per il DAQ di AURIGA. 3.3 Il GPS e la sincronizzazione Il sistema GPS (Global Positioning System) - di proprietá del dipartimento della difesa americano - é costituito da una costellazione di 24 satelliti in orbita a circa 20.2 Km2 . Ogni satellite contiene orologi atomici (al cesio e al rubidio) dai quali viene ricavato il segnale da trasmettere. Progettato per scopi militari, l’utilizzo del GPS permetterebbe ad un ricevitore di determinare la propria localizzazione in maniera accurata misurando i ritardi di propagazione dei segnali provenienti dai satelliti (almeno 4 per stimare correttamente la posizione). Affinché il sistema consenta la precisione necessaria agli scopi militari, l’errore massimo ammesso nella temporizzazione proveniente dalla costellazione di satelliti é di 100ns; tuttavia all’atto della messa in opera del sistema di posizionamento é stato ritenuto inopportuno - per ovvie ragioni - permettere a chiunque la possibilitá di localizzare un qualunque oggetto con la precisione di qualche decina di centimetri per cui il segnale trasmesso viene codificato con un algoritmo di scrambling non noto che ne innalza l’errore a circa 150ns. In questo modo il segnale rimane di pubblico utilizzo ma con diversa precisione a seconda dell’utilizzo a cui si é ammessi. Il sistema di acquisizione di AURIGA sfrutta i segnali inviati dai satelliti GPS per mantenere la sua temporizzazione con un errore (cfr. 3.1) inferiore a 1µs. Tale scopo viene raggiunto mediante un ricevitore GPS prodotto da ESAT, precisamente l’ESAT GPS 100 [13], il quale riesce a contenere l’errore commesso nel timing ad un livello inferiore ai 150ns che si otterrebbero utilizzando direttamente il segnale GPS per utilizzi civili. La temporizzazione fornita dal sistema ESAT GPS 100 proviene da un oscillatore locale (VCO) altamente stabilizzato che viene adoperato come sorgente di 1 Lo standard MXI stabilisce le specifiche utilizzate per il bus che connette i crate VXI. Nella connessione di un crate ad un PC come in Figura 3.1(b), il bus MXI é costituito dal cavo che connette le due interfacce. 2 I satelliti hanno un periodo di rivoluzione di circa 12 ore 17 Capitolo 3. Il DAQ clock a breve termine. Il segnale ricevuto dai satelliti GPS viene utilizzato per correggere lo sfasamento dell’oscillatore sul lungo periodo utilizzando un anello ad aggancio di fase. Con questo accorgimento l’errore del GPS viene statisticamente ridotto e si ottiene una precisione che arriva a 70ns. Il GPS 100 é in grado di fornire un segnale a 10MHz (su due porte) e un PPS (Pulse Per Second) in fase con il primo. Il segnale a 10MHz viene utilizzato per la temporizzazione dell’ADC connesso all’antenna (vedi paragrafo 3.4) e il secondo per effettuare diagnostica o calibrazione del sistema. Inoltre il ricevitore é dotato di tre porte seriali mediante le quali é possibile ottenere informazioni sullo stato del GPS (statistica) e pacchetti contenenti le informazioni per la datazione di eventi (timestamp). Il sistema GPS utilizzato da AURIGA é completato dalla scheda S80, un’interfaccia con 8 canali di ingresso optoisolati. Utilizzando questo dispositivo é possibile inviare al GPS un segnale e ottenerne il suo tempo di invio mediante interfaccia seriale, con l’errore di 70ns precedentemente indicato. Questa é la modalitá di funzionamento utilizzata dal DAQ, grazie alla quale é possibile datare in maniera accurata ogni buffer di dati che viene acquisito dalla strumentazione [5]. 3.4 Il canale Antenna Il DAQ di AURIGA dispone di due ADC per le diverse caratteristiche dei segnali che vengono acquisiti; il canale principale é costituito dall’uscita dello SQUID, cioé dal segnale proveniente dall’antenna. Nella scelta dell’ADC da utilizzare intervengono molti fattori, tra cui la banda passante, la distorsione introdotta e le possibili modalitá di funzionamento dell’apparato ma, fondamentale per questo tipo di acquisizione é la precisione con cui avviene la conversione. Come indicato nel Capitolo 1, il segnale captato dall’antenna, per la sua debolezza, é dominato dal rumore ed é quindi indispensabile che il numero di bit in con cui viene convertito sia sufficiente a garantire che la presenza di un evento gravitazionale non venga mascherata dal rumore di quantizzazione introdotto nella conversione analogica/digitale. L’errore di quantizzazione é dovuto alla discretizzazione del valore acquisito e il suo valore (in modulo) aumenta con l’ampiezza dell’intervallo ∆. Date le sue caratteristiche l’errore di quantizzazione é modellabile come una variabile random distribuita uniformemente tra − ∆2 e + ∆2 e quindi media e varianza valgono rispettivamente : ∆2 (3.1) 12 Lo spettro del rumore di quantizzazione, considerato come processo nel dominio del tempo discreto, bianco e a media nulla, é dato da: 2 σQ = E[e2 ] = mQ = E[e] = 0 SQ (ω) = X n RQ (n)e−inφ = ∆2 12 18 con RQ (n) = ∆2 δn0 12 (3.2) 3.4. Il canale Antenna La stima del numero minimo di bit da utilizzare puó essere effettuata mediante alcune considerazioni sulla forma dello spettro S(ω) dell’uscita dello SQUID. In assenza di un evento gravitazionale, in esso sono presenti due componenti: una prima a banda larga SW B dovuta al rumore dell’amplificatore SQUID e una seconda a banda stretta SN B (ω) costituita dai picchi attorno ai quali il sistema entra in risonanza. Affinché la conversione introduca un contributo di rumore trascurabile é necessario che SQ (ω) sia trascurabile rispetto allo spettro S(ω) = SN B (ω) + SW B . Considerando lo spettro in prossimitá di un picco3 si ha che l’RMS del segnale a banda stretta SN B (ω) é nettamente superiore di quello a banda larga SW B , infatti integrando lo spetto del segnale su tutta la banda si ottiene: 2 2 σ 2 = σW B + σ N B ' S 0 Fc + Γω0 S0 2Q (3.3) dove Γ = SW B /SN B (ω0 ) é il rapporto tra il livello del rumore a banda larga e quello a banda stretta al massimo in ω0 e Fc é la frequenza di campionamento. Il primo addendo é il contributo del rumore a banda larga mentre il secondo é quello del picco di risonanza. L’obbiettivo del calcolo proposto consiste nel determinare la precisione della conversione affinché il rumore di quantizzazione non degradi il segnale acquisito. Lo spettro del segnale campionato deve essere quindi maggiore del rumore di quantizzazione, ovvero : ∆2 . (3.4) 12 Imponendo che la dinamica dello strumento - cioé il fondo scala A - sia N volte maggiore del rumore a banda stretta σN B otteniamo: 2 σW B ∆ A s 24QFc N 2 Γω0 con A = N σT e σT2 = Γω0 S0 . 2Q (3.5) Sostituendo nella precedente espressione il valore atteso per le variabili, ovvero √ Γ = 105 N = 100 Q = 5 · 106 ω0 = 5 · 104 T = 10−4 s (3.6) si ottiene il risultato richiesto, cioé ∆/A 4.9 · 10−4 ' 10−5 . Affinché siano rispettati i requisiti dati per l’acquisizione dell’antenna la conversione analogico/digitale deve avvenire con almeno 5 cifre significative. Essendo il numero di bit necessari per l’ADC dato dal logaritmo in base 2 di ∆/A, si ottiene immedia' 18 bit. In base tamente che il convertitore deve utilizzare almeno n = log 2 ∆ A ai requisiti illustrati, per il canale antenna é stato scelte l’Agilent E1430 [15], un ADC a 23 bit in formato VXI, in grado di operare a 10 MSa/s, il cui utilizzo tipico é il testing di apparati per telecomunicazioni. Il dispositivo E1430 é di 3 Analoghi risultati si ottengono considerando piú picchi, per esempio i dieci picchi piú significativi per il sistema. Tuttavia, vista la qualitativitá del calcolo proposto ci si pone in prossimitá della risonanza della barra il cui picco ha un’ampiezza superiore agli altri di alcuni ordini di grandezza. 19 Capitolo 3. Il DAQ tipo C-Size e supporta pienamente lo standard VXI. L’accesso al dispositivo é possibile sia mediante il linguaggio SCPI4 che operando direttamente sui registri. Figura 3.2: Schema semplificato del dispositivo Agilent E1430 La modalitá con cui avviene l’acquisizione é stata schematizzata in Figura 3.2. Il segnale presente all’ingresso puó essere accoppiato sia in AC che in DC, con un’impedenza di di 50Ω al preamplificatore di ingresso di cui é possibile regolare il guadagno. Il passo successivo consiste nell’applicazione di un filtro analogico antialiasing che, come buona parte delle caratteristiche dello strumento, puó essere attivato o escluso a discrezione dell’utente. In uscita dal filtro avviene la conversione analogico/digitale mediante l’ADC a 23 bit e viene effettuata sempre alla frequenza di campionamento di 10MHz. La riduzione o lo zoom alla frequenza di campionamento desiderata viene affidata al DSP posto all’uscita dell’ADC che provvede alla decimazione del segnale in base alla programmazione dell’apparecchio. La parola a 23 bit viene infine memorizzata all’interno di una memoria RAM dalla capacitá di 8MB che viene gestita come una FIFO, permettendo la bufferizzazione temporanea dei dati acquisiti. Il clock con cui la scheda E1430 lavora puó essere prelevato dal bus VXI, generato interamente oppure fornito dall’esterno mediante un segnale TTL da applicare all’apposito connettore BNC posto sul frontalino dello strumento. Visti i requisiti stringenti di temporizzazione dell’esperimento AURIGA, l’ultima modalitá é quella adoperata, utilizzando una delle uscite a 10MHz del ricevitore GPS ESAT 100 come sorgente del clock. Mediante l’utilizzo dei registri é possibile impostare tutte le funzionalitá dello strumento. In primo luogo la frequenza di campionamento viene ottenuta attraverso la divisione del clock fornito all’ingresso: nel caso di AURIGA questo divisore viene solitamente impostato a 11 ottenendo una frequenza finale di 10M Hz/211 = 4882.8125Hz, che é il frutto di un compromesso tra la linearitá del sistema nella banda tra 800 e 1100Hz e l’occupazione di spazio per la memorizzazione dei dati. Infatti, sebbene la frequenza di campionamento immediatamente inferiore sia circa 2.4KHz, sufficiente quindi per acquisire i segnali nella banda del sistema, DAQ viene fatto solitamente operare a 5KHz perché a tale frequenza la distorsione introdotta dal DSP posto all’uscita dell’ADC é minima (Cf. 5.1.2). Nel dispositivo Agilent E1430 sono impostabili varie opzioni come l’utilizzo di trigger (sia interni che esterni), il formato dei dati di uscita (16 o 32 bit, reali o complessi), l’introduzione di un offset5 , la programmazione di interruzioni e buffer di memoria. 4 5 La libreria SCPI non é disponibile per Linux La correzione dell’offset é stata resa disponibile nella versione del DAQ successiva al porting 20 3.4. Il canale Antenna Nel dispositivo E1430 i valori in uscita all’ADC vengono memorizzati nella FIFO senza subire conversioni: sono quindi numeri interi a 23 bit che rappresentano il livello di quantizzazione del segnale in ingresso. Nel trasferimento dei dati al calcolatore, questi vengono convertiti in interi a 32 bit per ragioni di allineamento; per ottenere i valori in virgola mobile da memorizzare nei frame é dunque sufficiente che il DAQ li moltiplichi per un coefficiente che dipende dal fondo scala utilizzato nell’acquisizione. La modalitá di acquisizione in cui opera la scheda Agilent E1430 é l’ acquisizione continua in cui l’ADC converte i dati e li deposita nella FIFO senza alcun controllo su un eventuale riempimento di quest’ultima, nel qual caso rimangono disponibili all’utente gli ultimi 2MSa letti. Di particolare interesse é la possibilitá di gestire le interruzioni sollevabili dallo strumento visto che hanno fornito la possibilitá di temporizzare correttamente i dati acquisiti. La scheda Agilent E1430 é in grado di generare due interrupt distinti collegati al verificarsi di un evento, delle quali é possibile impostare il livello di prioritá. Nello standard VME/VXI, il bus presenta sette linee - attive basse - che rappresentano lo stato dei sette possibili livelli di interruzione. Gli strumenti in grado di generare interruzioni possono modificare il livello di queste linee per propagare lungo il bus e/o ad altri “crate” l’evento. La quantitá ridotta di linee di interruzione non limita il numero degli IRQs, infatti piú strumenti possono sollevare lo stesso livello di interruzioni il cui riconoscimento, in questo caso, avviene in daisy-chain. Il 1430 puó sollevare un’interruzione in seguito al verificarsi di 6 possibili eventi, in base alla programmazione del registro 1416 , in particolare quando : • almeno un dato (word) é disponibile per la lettura • la FIFO contiene almeno un blocco di dati • la scheda é armata e pronta per l’acquisizione • l’acquisizione é stata fermata • si é verificato un overload6 • si é verificato un errore hardware Nel DAQ di AURIGA viene utilizzata una sola delle due interruzioni per segnalare la presenza di un blocco di dati nella FIFO. Il sistema di acquisizione infatti, all’avvio programma l’ADC affinché acquisisca in maniera continua il segnale e avverta mediante un’interruzione quando la FIFO contiene 64KB (cioé 16KSa) di dati; in questa maniera i trasferimenti dal bus VXI avvengono in modalitá bursty, riuscendo a sfruttare meglio le caratteristiche dell’hardware (buffer e DMA) e rendendone piú comoda la gestione nel software. 6 Tensione all’ingresso superiore al fondo scala utilizzato 21 Capitolo 3. Il DAQ La cosa interessante dell’utilizzo delle interruzioni nel DAQ di AURIGA é che sono state sfruttate per la temporizzazione. Allo scopo é stata sviluppata una scheda VXI C-size che permette l’estrazione dei livelli delle linee di interruzioni dal bus VXI. Questa in realtá altro non é che un buffer invertente che si frappone fra i connettori posti sulla scheda di estrazione e le linee del bus, permettendone l’isolamento e fornendo all’uscita un segnale con caratteristiche TTL. Le linee delle interruzioni cosı́ estratte, vengono inviate alla scheda S80 del ricevitore GPS presentata nella Sezione 3.3. Con questo sistema, il sollevarsi di un interrupt genera un evento che viene datato dal GPS e quindi, per ogni buffer che viene acquisito si puó leggere dalla seriale del PC il tempo del suo completamento, ottenendo in questo modo la datazione dei dati con un errore assoluto pari a quello del ricevitore GPS. In realtá il tempo che viene letto presenta un errore sistematico pari alla latenza dell’interruzione, cioé é presente un offset temporale dovuto al tempo necessario per la generazione dell’interrupt e al suo ritardo di propagazione. Tale inconveniente é stato superato nella versione del DAQ successiva al porting mediante una procedura automatizzata che stima la latenza dell’interrupt e permette la correzione del timing del canale principale. 3.5 I canali Ausiliari Al segnale proveniente dal rivelatore ne devono essere affiancati altri di monitor per poter determinare se i segnali acquisiti hanno origine locale. Per fare ció si utilizzano alcuni canali ausiliari a cui sono connessi dispositivi come sismometri, tiltmetri, accelerometri, sonde magnetiche, microfoni, ecc. per poter identificare i disturbi presenti nell’ambiente circostante il rivelatore. A differenza del segnale proveniente dallo SQUID, dai canali ausiliari provengono segnali lenti, cioé per i quali non é necessario un campionamento ad alta frequenza. Inoltre il livello delle tensioni é molto maggiore (gli ausiliari non sono dominati dal rumore) e quindi non sono necessari ADC con caratteristiche analoghe all’Agilent E1430. Per queste ragioni si é optato per l’acquisto di un secondo strumento da impiegare per l’acquisizione dei soli ausiliari. É da escludere la possibilitá di utilizzare uno stesso ADC con gli ingressi multiplexati per acquisire contemporaneamente sia il canale Antenna che gli ausiliari dato che per gli ultimi sono necessari molti canali (almeno una decina) e in commercio non sono disponibili strumenti con caratteristiche analoghe all’Agilent E1430, con un numero di ingressi sufficiente. Inoltre negli ADC con ingressi multiplexati quando vengono impostate le modalitá con cui effettuare l’acquisizione, queste vengono tipicamente utilizzate per tutti i canali. Optando per un sistema di questo tipo si sarebbe costretti ad acquisire i canali ausiliari con la stessa frequenza di campionamento del’antenna e quindi, anche se ovviamente non viene peggiorata la qualitá del segnale, si ottiene un’inutile esplosione della quantitá di dati da gestire. Per esempio, nell’utilizzo attuale del DAQ - Antenna piú 10 ausiliari - si passerebbe da un troughput di circa 27KB/s (' 2.4 GB/giorno) a circa 215KB/s (' 18.6 GB/giorno). 22 3.5. I canali Ausiliari Lo strumento che é stato scelto é l’HP 1413 (ora VT1413C, prodotto da VXItech [16]), un ADC C-size a 16 bit in grado di operare ad un massimo di 100KSa/s7 su 64 canali multiplexati [14]. Figura 3.3: HP 1413 Schema di funzionamento semplificato dell’ADC In Figura 3.3 é riportata una schematizzazione semplificata del circuito d’ingresso dell’ADC. Prima degli SCP (Signal Conditioning Plug-on), nello strumento é presente una batteria di relays (non indicata nella figura) che permette di selezionare se all’ingresso degli SCP deve giungere il segnale proveniente dal connettore presente sul frontalino dello strumento oppure un segnale di calibrazione (uguale per tutti i canali). Questo serve perché la scheda HP 1413 puó calibrarsi autonomamente basandosi su di un riferimento generato internamente. Lo stesso riferimento poi, puó essere calibrato mediante una tensione - molto stabile fornita dall’esterno. Subito dopo il blocco di relays il segnale arriva agli SCP, dei circuiti di condizionamento dei segnali la cui presenza é obbligatoria per ogni canale che si vuole utilizzare. Essi si presentano sotto forma di una daughter-board che va installata all’interno della scheda VXI. Ogni SCP é in grado di gestire otto canali e all’interno del 1413 possono essere installati tipi diversi di SCP permettendo quindi di ottenere un diverso comportamento dei vari ingressi. In commercio sono disponibili diversi tipi di SCP che permettono di filtrare e/o amplificare il segnale in ingresso, di fornire delle sorgenti in uscita, che effettuano il sample-and-hold, ecc. Nel caso di AURIGA sono stati installati 3 SCP VT1503A [16], cioé dei circuiti che permettono il filtraggio degli ingressi con un passa basso a due poli la cui frequenza di taglio puó essere impostata a 2, 10 e 100Hz oltre che in modalitá pass-through con banda passante approssimativamente di 1.5KHz. Inoltre l’SCP contiene 8 amplificatori programmabili che permettono di variare il fondo scala utilizzabile a ±0.25V , ±2V e ±16V . Grazie a questa configurazione il DAQ di AURIGA permette l’acquisizione contemporanea di 24 canali ausiliari, oltre ovviamente al canale dell’antenna. I segnali condizionati vengono quindi inviati ad un multiplexer realizzato in tecnologia FET che viene gestito mediante scanning list, una lista ordinata di canali programmata dall’utente. Nell’ADC HP 1413 se ne possono impostare 7 La velocitá massima di acquisizione é pari a 10KSa/s su di un singolo canale. I 100KSa/s sono la banda massima dell’intero ADC, raggiungibile utilizzando piú ingressi 23 Capitolo 3. Il DAQ fino a 4 diverse fornendo quindi la possibilitá di commutare al volo l’elenco e/o l’ordine dei canali da utilizzare. Ad ogni ciclo di campionamento, lo strumento provvede ad acquisire tutti i canali elencati introducendo un ritardo (la cui granularitá é pari a 10µs) impostabile mediante un registro. I dati in uscita dal multiplexer giungono finalmente alla sezione di conversione vera e propria dove possono venire ulteriormente trattati ed infine convertiti mediante un ADC a 16 bit. Successivamente all’ADC i dati vengono convertiti nel formato IEEE-754 e quindi memorizzati in una RAM di 64KSa gestita come FIFO. In aggiunta a questa esiste una seconda memoria chiama CVT (Current Value Table) nella quale vengono memorizzati i dati dell’ultima scansione permettendone quindi un accesso diretto. La frequenza di campionamento che si imposta viene utilizzata per tutti i canali, per la precisione il sampling time che viene programmato é l’intervallo tra l’esecuzione di due scanning list. Lo strumento non permette l’utilizzo di un clock esterno e quindi esso viene prelevato dal bus VXI. Tuttavia é possibile fornire un clock esterno al bus di un crate mediante l’utilizzo dell’interfaccia MXI/VXI (se installata nello slot-0) oppure sfruttando una caratteristica dell’Agilent E1430 grazie alla quale lo strumento puó propagare all’intero mainframe il clock esterno che gli viene fornito. La partenza di una acquisizione puó avvenire mediante trigger hardware o software, oppure si puó settare il dispositivo affinché operi in acquisizione continua (modalitá free-run). Per poter impostare una precisa frequenza di campionamento si é utilizzata la modalitá soft-trigger (cioé con trigger generato dal 1413 stesso). In questo modo ogni scansione dei canali da acquisire inizia l’arrivo di un trigger e la frequenza di quest’ultimo é impostata alla frequenza di campionamento desiderata. Come per il 1430 anche nel 1413 si é sfruttato il meccanismo delle interruzioni (l’unica sollevabile) per il timing dei dati acquisiti. In particolare il sistema permette di generare un’interruzione al verificarsi dell’evento “buffer half-full” che é stata utilizzata per informare il PC della presenza di 32 KSa nella FIFO dello strumento. Anche in questo caso il segnale di interruzione viene estratto dal bus con la scheda custom indicata in Sezione 3.4 per venire inviato alla scheda S80 del ricevitore GPS, ottenendo ancora una volta la datazione di ogni pacchetto di 32KSa con l’errore assoluto commesso dal GPS. 3.6 Il sistema Host Mediante il kit di interfacciamento PCI-VXI della National Instruments, alla strumentazione é connesso un personal computer che si occupa della gestione dell’hardware: dalla configurazione e controllo, alla raccolta, formattazione e memorizzazione definitiva dei dati acquisiti. Il PC utilizzato si basava su un’architettura di calcolo i686 in cui i componenti rilevanti per il DAQ sono: • Scheda Madre ABIT VP6 con chipset VIA Apollo Pro 133A 24 3.6. Il sistema Host • 2 Microprocessori Intel Pentium III Coppermine a 800MHz (800/133MHz) • 512 MB di memoria SDRAM a 133MHz Oltre alle prestazioni, nella scelta dell’hardware aveva influito la struttura del DAQ che, come si vedrá nella sezione successiva, é costituito da vari processi indipendenti che girano in parallelo. In quest’ottica la scelta migliore é stata l’architettura SMP grazie alla quale vengono eseguiti contemporaneamente due processi. Il quantitativo di memoria RAM é stato dimensionato in base alle richieste del DAQ: oltre al semplice calcolo dell’occupazione dei buffer di dati, si é verificato che in esecuzione non viene mai richiesta al sistema una capacitá superiore a mezzo gigabyte. Figura 3.4: Case Supermicro SC830 Per le ragioni indicate in Sezione 3.1, nel dimensionamento del sistema si é cercato di ottenere la massima resilienza possibile, duplicando i componenti con maggiore probabilitá di rottura. Il PC é stato quindi alloggiato in un case Supermicro SC830 (Figura 3.4), dotato di due alimentatori e di un sistema di monitoraggio degli stessi in maniera tale che, in caso di rottura, il PC possa continuare ad operare fino alla sostituzione dell’alimentatore guasto, operazione che puó avvenire a caldo. Lo chassis inoltre dispone di un sistema di ventilazione sovradimensionato in maniera tale che sia impossibile incorrere in problemi di surriscaldamento indipendentemente dal carico della macchina e dalla durata del run. Altro componente delicato per un PC sono i dischi fissi e quindi, anche se attualmente la memorizzazione dei dati avviene su di un server NFS (via rete e non in locale), si é scelto di adottare una scheda madre dotata di un controller IDE RAID, precisamente l’High Point Technologies HPT370. Gli HD installati nel PC di acquisizione servono ad aumentare la resilienza dell’intero sistema anche in un’altra modalitá: nel caso di un guasto della rete o del server NFS. Nel DAQ é infatti prevista la possibilitá di memorizzare i dati in due percorsi contemporaneamente (in modo simile al mirroring) ed é anche possibile modificare il percorso senza interrompere l’acquisizione. Grazie a queste caratteristiche, in caso di malfunzionamento della rete il sistema puó continuare a memorizzare i dati localmente mantenendo un livello di affidabilitá accettabile. 25 Capitolo 3. Il DAQ Come sistema operativo - e quindi come ambiente di sviluppo - é stato scelto Linux per la sua natura open source e per le prestazioni ottenibili dal suo utilizzo. In particolare si é optato per Red-Hat Linux 6.2 - anche se giá superato all’epoca della prima messa in opera del sistema - per due ragioni: l’ampia diffusione fra l’utenza ne assicurava la stabilitá e il supporto, e i vincoli imposti dalle librerie fornite da National Instruments. Il DAQ infatti é in esecuzione su di un kernel 2.2.18 SMP, questo per poter compilare la libreria ni-vxi 1.6.2, necessaria per l’utilizzo dell’interfaccia PCI-VXI. 3.7 L’Ambiente di Sviluppo L’intero sviluppo del DAQ é avvenuto mediante strumenti open source. Il linguaggio di programmazione scelto é stato il C++ dato che era richiesto il pieno supporto del paradigma OOP, la velocitá di esecuzione del compilato e la possibilitá di interfacciarsi a basso livello con il PC, ad esempio per l’interrogazione degli strumenti. Come compilatore é stato utilizzato GCC, nella versione egcs-2.91.66, le cui prestazioni sono state dimostrate dalla diffusione e utilizzo nell’intera comunitá open-source. Per lo sviluppo del sistema e la sua gestione si é scelto l’ambiente grafico KDE 2.1, basato su QT 2.2, tra i cui componenti é presente anche l’ambiente di sviluppo integrato (IDE) che é stato adottato: KDevelop 1.4. Lo sviluppo dell’interfaccia grafica del sistema (GUI ) é avvenuto in QT, utilizzando il QTdesigner per la progettazione dei form e il compilatore (preprocessore) uic per la generazione del codice sorgente da compilare con GCC. L’adozione di software open-source ha reso possibile l’utilizzo, oltre che di strumenti quali quelli precedentemente citati, anche di librerie e/o collezioni di sorgenti - di utilizzo generale - prodotti da terzi con licenza GNU. Questo ha facilitato l’implementazione del sistema riducendone i tempi di sviluppo; l’utilizzo di librerie disponibili pubblicamente ha inoltre permesso di integrare componenti giá testati nel sistema migliorandone la stabilitá. Vengono di seguito presentati i pacchetti software di maggiore interesse che sono stati integrati all’interno del DAQ di AURIGA. 3.7.1 omniORB Il DAQ é stato progettato come un insieme di processi interagenti in un’architettura client/server distribuita; come protocollo a supporto dello scambio di informazioni si é scelto CORBA [20], cioé il Common Object Request Broker Architecture, un insieme di specifiche atte a realizzare un software distribuito, orientato agli oggetti e indipendente dalla piattaforma utilizzata. CORBA, come proposto dall’OMG (Object Management Group [19]) , é uno standard aperto, prodotto da un consorzio e quindi indipendente dal singolo produttore, per costruire un’infrastruttura attraverso la quale diversi applicativi possono collaborare utilizzando una rete. La comunicazione avviene attraverso l’implementazione di un “BUS software” chiamato ORB (Object Request Broker) mediante il quale gli oggetti 26 3.7. L’Ambiente di Sviluppo distribuiti possono scambiare dei messaggi. L’interoperabilitá e l’indipendenza dalla piattaforma utilizzata vengono assicurate da due strumenti: 1. l’impiego di un linguaggio standard per la specifica delle interfacce dei processi; 2. l’adozione di un protocollo comune per la comunicazione. Il primo obbiettivo viene raggiunto grazie all’OMG IDL (Interface Definition Language) che viene utilizzato per la definizione dell’interfaccia di un oggetto: la specifica dei metodi da esportare mediante CORBA, i tipi di dato dei parametri, ecc., vengono dichiarati con questo linguaggio indipendentemente dall’implementazione di CORBA utilizzata. Al secondo si giunge mediante l’uso di due protocolli: il GIOP (General Inter-ORB Protocol) che definisce il formato e la rappresentazione dei dati scambiati da tutti gli oggetti distribuiti in uno stesso ORB e l’IIOP (Internet Inter-ORB Protocol) che é una implementazione del protocollo GIOP che si avvale del TCP/IP per realizzare lo strato di trasporto. Ogni implementazione di CORBA puó introdurre caratteristiche aggiuntive a quelle citate ma, per poter dichiarare di aderire allo standard CORBA, deve implementare obbligatoriamente l’IDL e l’IIOP. Per il DAQ di AURIGA é stato utilizzato omniORB 3.0.4 [21], un’implementazione GNU di CORBA 2.3 della AT&T (divenuto ora un progetto indipendente). La scelta é stata in favore di questo prodotto per le caratteristiche di stabilitá e funzionalitá. Essendo inoltre un’implementazione completamente multithread di CORBA permette di sfruttare piú conveniente l’architettura SMP scelta per il sistema di acquisizione. 3.7.2 OSE La libreria OSE [23] consiste in una raccolta di software general purpose distribuita gratuitamente grazie alla licenza QPL. Le sue funzionalitá sono molto varie e solo un sottoinsieme degli oggetti vengono effettivamente utilizzati nel DAQ di AURIGA. Uno degli scopi di OSE consiste nell’aumentare la portabilitá del software tra diversi compilatori C++ grazie alla tattica di naming utilizzata. In essa vengono definiti dei tipi base che sono largamente utilizzati nella libreria stessa e, se adottati nello sviluppo del software, permettono al sorgente di essere compilato su diverse piattaforme o compilatori semplicemente includendo la libreria nel progetto. Altre funzionalitá di OSE che sono state sfruttate sono la possbilitá di effettuare comunicazioni interprocesso stream based e la “Message Log Facility”, grazie alle quali é possibile intercettare i messaggi di errore generati da un processo. Ad esempio il logger (LOG) del DAQ che verrá introdotto successivamente sfrutta queste caratteristiche di OSE per intercettare i messaggi d’errore che possono venire generati dai processi del DAQ. Parte della gestione delle stringhe infine é stata implementata grazie a OSE, laddove questa si é resa di maggiore utilitá rispetto all’implementazione standardizzata del C++. 27 Capitolo 3. Il DAQ Come accennato, le precedenti funzionalitá sono solo un sottoinsieme delle caratteristiche della libreria che permette ad esempio la gestione della memoria, delle eccezioni, fornisce un insieme completo di “contenitori” di utilizzo generico (vettori, liste, insiemi, ecc), permette la programmazione event-driven oltre a fornire wrapper verso altri linguaggi come Pyton. Per approfondire le funzionalitá di OSE si rimanda alla documentazione online [23]. 3.7.3 Frame Library Il formato Frame o IGWD [24] é uno standard che permette la memorizzazione di tutti i dati relativi ad un rivelatore di onde gravitazionali (posizione, set-up, ecc.) assieme ai dati acquisiti, ai risultati delle analisi effettuate e ai dati di simulazione montecarlo. Prodotto dalla collaborazione LIGO-VIRGO, permette di raggiungere un’uniformitá del trattamento delle informazioni precedentemente non possibile, permettendo - se correttamente utilizzato - di rendere indipendenti gli applicativi dal formato dei file utilizzato per l’elaborazione. Un software per l’analisi ad esempio, se determina la configurazione del rivelatore in base a quanto memorizzato nei frame puó operare indifferentemente sui dati prodotti nello stesso esperimento che ha concepito l’analisi o su quelli di un altro rivelatore, a patto che il software di acquisizione si occupi della corretta formazione del Frame. Il Frame (Figura 3.5) altro non é che un contenitore nel quale possono essere inserite - mediante puntatori - sottostrutture contenenti informazioni organizzate per categoria. Un’insieme delle sottostrutture é dedicato all’utilizzo online, cioé da parte del sistema di acquisizione; tra queste trovano posto le informazioni relative alla posizione del rivelatore (FrDetector), ad un eventuale registro di log (FrHistory) oltre ovviamente ai dati raw che vengono memorizzati canale per canale (FrAdc). Il frame viene completato successivamente all’acquisizione degli applicativi di analisi per i quali sono state previste delle apposite sottostrutture grazie alla quali il frame diviene omnicontenitivo, nel senso che al suo interno vengono memorizzati tutti i risultati dell’esperimento, cessando cosı́ la necessitá di file ausiliari. L’ultima sezione del frame é dedicata ai dati simulati in modo da poter operare in maniera uniforme anche su di essi. L’organizzazione gerarchica del frame, oltre a semplificarne l’utilizzo da un punto di vista concettuale, migliora le prestazioni degli applicativi potendo quest’ultimi accedere alle sezioni di interesse in modalitá random access. L’utilizzo del formato IGWD avveniva mediante la Frame Library v4r31 [24], una libreria scritta in C contenente la definizione di tutte le strutture presenti nel frame, le funzioni per la loro gestione e infine il codice che implementa la memorizzazione dei frame su disco. Grazie a quest’ultima caratteristica si raggiunge l’uniformitá tra gli utenti della libreria anche dal punto di vista dello storage essendo uniche le funzioni che effettuano il salvataggio, la compressione e la lettura dei frame. Nel DAQ di AURIGA la Frame Library non viene utilizzata direttamente ma attraverso un wrapper, questo non per aggiungere delle funzionalitá assenti ma per uniformare l’accesso ai frame alla modalitá OOP. All’interno della PCL sono 28 3.7. L’Ambiente di Sviluppo Figura 3.5: Struttura del frame IGWD 29 Capitolo 3. Il DAQ presenti delle classi come PclFrame il cui scopo consiste nell’incapsulare l’insieme di strutture del frame in un oggetto utilizzabile con le modalitá tipiche della programmazione OOP. A corredo della Frame Library inoltre vengono fornite utility di supporto che permettono operazioni come la copia, il controllo di integritá, il “dump” di un frame, rendendo possibile alcuni livelli di diagnostica di quanto acquisito. 3.7.4 ROOT ROOT [25] é un framework realizzato dal CERN per fornire un insieme di strumenti comuni utilizzabili in tutte le fasi di un esperimento. Anche se nella “Mission Statement” di ROOT si legge che particolare enfasi é stata dedicata alla visualizzazione e analisi interattiva dei dati, dal pacchetto ROOT vengono anche offerti i mezzi per affrontare la simulazione e la ricostruzione degli eventi. Particolaritá di ROOT é l’utilizzo di CINT, cioé l’interprete interattivo di script in C. Grazie all’utilizzo di questo pacchetto é possibile implementare all’interno del framework ROOT degli script di analisi - in C o C++, i cui standard sono supportati entrambi quasi completamente - che possono essere scritti, testati ed eseguiti in modalitá interattiva, caratteristica che tipicamente viene riservata ai linguaggi interpretati. Questa modalitá di “istruire“ il sistema di analisi ne facilita la programmazione e rende la portabilitá del software completa visto che gli script non vengono compilati, il tutto al costo di un leggero aumento dei tempi di esecuzione. La libreria ROOT é costituita da un insieme di strumenti OO espressamente progettati per affrontare grandi volumi di dati. Fanno parte del framework oggetti per effettuare fit, minimizzazioni, ecc. oltre ad un insieme completo di oggetti in grado di gestire la visualizzazione dei dati elaborati. Nel DAQ di AURIGA l’utilizzo di Root é alquanto ridotto e si limita all’uso degli oggetti per la visualizzazione dei dati ad opera di processi specializzati chiamati monitor. Questi sono dei programmi costruiti ad-hoc per spiare le code dei processi del sistema di acquisizione (vedi Sezione 3.8) e permettere una diagnostica online del sistema fornendo la possibilitá di visualizzare nel tempo o in frequenza (FFT e PSD) i vari segnali acquisiti. 3.7.5 FFTW A supporto del DAQ (e di tutta l’analisi) viene utilizzata la libreria FFTW 2.1.3 (the Fastest Fourier Transform in the West) [26]. La FFTW é costituita da un insieme di subroutine scritte in C per il calcolo efficiente della DFT in una o piú dimensioni. L’utilizzo di questa libreria é reso particolarmente interessante dalle prestazioni ottenibili. Giá in fase di compilazione é possibile ottimizzare la velocitá di esecuzione delle subroutine sfruttando le caratteristiche del sistema (SSE, SSE2, 3DNow! e Altivec) su cui devono essere eseguite. Inoltre, grazie all’utilizzo di diversi algoritmi per l’esecuzione della DFT, viene garantita una 30 3.8. Il Software di Acquisizione complessitá computazionale di O(n log n), indipendentemente dalla dimensione del set di dati utilizzato come input. 3.7.6 NI-VXI La comunicazione tra il computer e la strumentazione VXI infine viene realizzata utilizzando la libreria NI-VXI 1.6.2, fornita da National Instruments a corredo del kit di interfaccia VXI-PCI8026 (vedi Sezione 3.2 [28]). Essa é composta da due parti: un modulo del kernel8 che deve essere caricato all’avvio del sistema (driver) e una libreria che fornisce le API in C per la comunicazione con gli strumenti. L’utilizzo della libreria ni-vxi rende la comunicazione tra il computer e la strumentazione trasparente nel senso che le schede VXI possono essere utilizzate come un’estensione del PC. Essendo caricata come parte del kernel linux inoltre diventa possibile per i dispositivi VXI utilizzare - mediante il driver - strumenti tipici del sistema operativo come i segnali. 3.8 Il Software di Acquisizione Il DAQ di AURIGA segue un’architettura gerarchica spesso utilizzata nei sistemi di acquisizione da impiegare in ambito scientifico, costituita da tre livelli corrispondenti ad altrettanti strati di astrazione. Figura 3.6: Strutturazione del DAQ Il livello piú basso, il primo, é costituito dai processi che si interfacciano direttamente con l’hardware. Essi realizzano il front-end con la strumentazione, implementando la logica necessaria per configurare e utilizzare l’hardware che, nel caso di AURIGA, é costituito dagli ADC e il GPS. Allo strato immediatamente superiore viene posto un processo particolare detto builder, il cui scopo consiste nel ricevere i dati provenienti dal livello sottostante e formattarli in base alle specifiche stabilite, per poi costruire i frame di dati a partire dai flussi raw provenienti dal livello 1. A questo livello tipicamente avviene anche un primo controllo di consistenza dei dati raccolti. L’ultimo livello é costituito dai client, 8 Per eseguire operazioni di I/O sui registri del sistema é infatti necessario che l’applicativo sia in esecuzione in kernel-space 31 Capitolo 3. Il DAQ ossia i processi che operano sui dati raccolti, come ad esempio gli applicativi di analisi. Nel sistema di acquisizione di AURIGA, i tre livelli precedentemente descritti sono interamente realizzati attraverso processi specializzati e indipendenti. Questi comunicano fra loro mediante il middleware CORBA, realizzando un’architettura client/server che puó essere distribuita, ottenendo quindi un sistema altamente scalabile; CORBA, infatti, permette ad un processo l’invocazione di metodi di oggetti remoti e quindi l’intero sistema puó essere distribuito attraverso una rete. L’ORB viene realizzato grazie ad un nameserver (omniNames nell’implementazione scelta) al quale ogni oggetto viene associato all’atto della creazione. Grazie ad esso, processi su piú sistemi appartenenti alla medesima subnet possono comunicare senza dover conoscere dettagli della rete come gli indirizzi degli host su cui sono in esecuzione gli oggetti remoti, la presenza di eventuali apparati di rete attivi, ecc. Figura 3.7: Architettura Cliet/Server del DAQ dove sono stati messi in evidenza i 3 livelli di progettazione. In Figura 3.7 sono illustrati i componenti del DAQ assieme ai flussi dati che vengono scambiati; ognuno dei processi funge da server per il livello successivo e agisce come client nei confronti del precedente, ad eccezione ovviamente del primo. La scalabilitá del sistema, ottenuta grazie all’utilizzo di CORBA, si concretizza nella possibilitá di eseguire i processi del DAQ su calcolatori diversi. Attualmente le capacitá di calcolo fornite dai computer disponibili sul mercato sono piú che sufficienti a gestire la mole di dati che il sistema produce. L’utilizzo di questa struttura tuttavia lascia aperta la possibilitá di aggiornare il DAQ con un impatto contenuto; l’aggiunta di piú canali principali da acquisire ad una frequenza molto superiore, necessaria ad esempio con un nuovo tipo di rivelatore o con l’acquisizione in coincidenza con rivelatori di raggi cosmici, potrá essere gestita semplicemente istanziando piú front-end verso la strumentazione e, qualora il 32 3.8. Il Software di Acquisizione troughput di un singolo calcolatore risultasse insufficiente, il problema potrebbe essere risolto semplicemente distribuendo i processi fra piú computer. Un’altra interessante possibilitá sfruttabile da questa architettura consiste nell’eseguire parte del DAQ su sistemi embedded. Per ridurre le interferenze che si sommano al segnale acquisito é buona norma porre la strumentazione di acquisizione il piú possibile vicina al rivelatore: in questo modo vengono concatenate meno sorgenti di interferenze elettromagnetiche e diventa agevole ridurre i disturbi introdotti dalle alimentazioni utilizzando la stessa massa per rivelatore e strumentazione. Una configurazione di questo tipo generalmente risulta problematica visto che, per un sistema monolitico, diventa necessario posizionare il crate con la strumentazione assieme ai PC nelle vicinanze del rivelatore. L’implementazione del sistema come Client/Server permette di risolvere questo inconveniente in modo agevole: eseguendo i front-end verso la strumentazione su un sistema embedded VXI (o al limite piú sistemi se la capacitá di un singolo risulta insufficiente) diventa sufficiente posizionare in prossimitá del rivelatore unicamente il crate dove avviene l’intera acquisizione. I livelli successivi del DAQ, come ad esempio il builder, possono essere eseguiti su altri PC che, utilizzando una normale connessione di rete, possono interagire con il front-end in maniera totalmente trasparente. I processi del DAQ presentano una certa uniformitá nelle operazioni che devono svolgere; questo fatto ha consentito di definire in fase di progettazione un’interfaccia di comunicazione standard utilizzata da tutti i processi, facilitando quindi l’integrazione del sistema. Inoltre é stato possibile realizzare la libreria condivisa (PCL) che, implementando al suo interno le operazioni di comunicazione, le rende trasparenti ai processi costituenti il DAQ. Nella PCL inoltre sono state implementate le strutture dati piú diffusamente utilizzate nel progetto, come le code che verranno descritte in seguito. Figura 3.8: Rappresentazione mediante FSM di un processo PCL L’interfaccia di comunicazione comune é stata realizzata anche grazie all’implementazione di ogni processo come una macchina a stati finiti (FSM o Finite State Machine - Figura 3.8. In ogni istante infatti, un processo puó trovarsi solamente in uno dei cinque stati ammessi, precisamente INITIAL, LOADED, CONFIGURED, ACTIVE o FAILURE. Il processo si trova nello stato INITIAL non appena viene istanziato e puó passare allo stato LOADED in seguito all’invocazione del metodo Boot. Alla ricezione dei parametri di configurazione, in seguito alla chiamata di Config, il processo puó passare allo stato CONFIGURE 33 Capitolo 3. Il DAQ e infine da quest’ultimo puó entrare nello stato ACTIVE in seguito alla chiamata del metodo Start, che fa partire il “working thread” vero e proprio. Sono possibili anche le transizioni opposte che avvengono, come indicato nello schema, rispettivamente in seguito alla chiamata di Stop (che ferma il working thread), Abort e Shutdown. Lo stato FAILURE viene utilizzato per segnalare la presenza di qualche malfunzionamento ed é raggiungibile da qualsiasi altro. Mediante il metodo reset, il processo puó uscire dallo stato FAILURE e ritornare nello stato INITIAL per ripartire. Il metodo reset puó inoltre essere utilizzato da un qualsiasi stato diverso da failure per eseguire la sequenza di chiamate necessaria a riportarlo nello stato iniziale. Oltre a quelli indicati in Figura 3.8, esiste un ulteriore stato - INTRANSITION - il cui scopo é il controllo delle operazioni concorrenti. Un processo entra nello stato INTRANSITION durante le transizioni di stato a indicare che non puó ricevere ulteriori richieste finché non viene ultimata quella in corso. Dalla descrizione del sistema come macchina a stati finiti segue immediatamente la definizione dell’interfaccia dell’oggetto, alla quale, oltre a quelli necessari alla transizioni di stato, sono stati aggiunti altri metodi per completare la comunicazione interprocesso. Precisamente, raggruppando in sezioni i metodi dichiarati nell’interfaccia in base alla funzione svolta, si ha: PRODUCER In questa sezione sono presenti i metodi per lo scambio dei dati tra client e server, in particolare i metodi PutData, GetData e SpyData implementano l’interfaccia verso le code dei processi ACTIONS Sono i metodi per operare le transizioni di stato della FSM come descritti precedentemente LOGGER L’unico metodo presente in questa sezione permette ad un processo esterno di ottenere l’elenco dei messaggi di log dell’oggetto chiamato. MONITOR I metodi di questa sezione sono necessari per conoscere lo stato del processo, in particolare GetFsmStatus ritorna lo stato - in termini di FSM del processo mentre GetQueueStatus permette di conoscere lo stato di una coda (numero di frame memorizzati, ecc). Dalla precedente definizione dell’interfaccia dei processi PCL si nota un’ulteriore particolare: la gestione degli errori. Grazie all’utilizzo di omniORB infatti, é stato possibile utilizzare le eccezioni anche su oggetti remoti, di conseguenza sia la gestione degli errori che la sincronizzazione tra i processi sono stati implementati in questa modalitá. Vediamo ora alcuni dettagli della PCL. Al suo interno in primo luogo trova la definizione processo PCL la cui struttura é stata schematizzata in Figura 3.9. Grazie all’utilizzo di metodi virtuali é stato definito l’oggetto PclProducer che implementa l’interfaccia presentata nello schema; di conseguenza ogni processo PCL (processo server) viene definito come figlio del precedente e, ereditandone tutte le strutture e i metodi, deve definire 34 3.8. Il Software di Acquisizione Figura 3.9: Schema funzionale dei Processi PCL al suo interno solamente la parte ACTIONS dell’interfaccia che necessariamente deve essere diversa tra i vari processi. Altro componente fondamentale della libreria PCL sono le code su cui si basano tutte le operazioni di memorizzazione - temporanea o permanente - e la spia dei dati. Gli oggetti che implementano le code utilizzano i “template” per la definizione dei dati contenuti, in questo modo si adattano a qualsiasi tipo di dato primitivo o strutturato - permettendo a compile-time di ottenere un oggetto ottimizzato per operare su una particolare struttura9 . Le code sono definite a partire da tre oggetti, cioé PclQueue, PclXQueue e PclPersistentQueue che implementano rispettivamente la coda dei dati, le funzionalitá di spia e infine il salvataggio su memoria di massa, incapsulandone tutte le problematiche (gestione della comunicazione, errori, ecc). Da questi oggetti, per derivazione, discendono tutte le altre code implementate. Particolarmente interessante é la PclMirroringQueue, derivata da PclPersistentQueue, che si occupa della memorizzazione contemporanea di uno stesso flusso di dati su due percorsi diversi, tipicamente due dischi fissi. Essa é stata sviluppata per aumentare la resilienza del sottosistema di memorizzazione di massa che inizialmente era costituito da dischi fissi locali, rendendo quindi necessaria una qualche forma di duplicazione per mettersi al riparo da possibili fallimenti dei dispositivi. La PclMirroringQueue viene ampiamente utilizzata nel processo DSK (vedi paragrafo 3.8.5) che si occupa del salvataggio dei dati raccolti. La gestione delle condizioni anomale nel DAQ di AURIGA é stata interamente implementata mediante eccezioni. Per rendere uniforme la gestione, compreso il caso di eccezioni provenienti da oggetti remoti, é stato utilizzato un particolare oggetto: PclException, anch’esso appartenente alla PCL. Grazie al suo utiliz9 Nel DAQ tutte le operazioni di I/O, comprese le comunicazioni fra processi, avvengono utilizzando il formato Frame IGWD. Tuttavia la generalitá con cui sono state implementate le code ne permette l’utilizzo anche su strutture di tipo diverso 35 Capitolo 3. Il DAQ zo diventa possibile gestire proprie condizioni di eccezione, anche via CORBA, semplicemente derivandole da PclException. 3.8.1 ANT Il programma ANT costituisce il front-end verso la scheda Agilent E1430, incapsulando all’interno di un processo PCL tutti gli aspetti della comunicazione con il dispositivo. Oltre alla configurazione del dispositivo, ANT - con il suo working thread - gestisce il trasferimento verso il PC dei dati acquisiti dall’ADC e li formatta in accordo allo standard IGWD. Come accennato in Sezione 3.4, una volta attivato con il metodo Start, l’ADC opera in acquisizione continua comunicando al sistema host la presenza nella FIFO di un buffer (64 KB) mediante un’interruzione. Tra le diverse modalitá fornite dal driver ni-vxi per la gestione dell’interrupt generato, si é scelta la sua conversione in segnale. Quando l’ADC solleva l’interruzione quindi, il modulo kernel del driver la intercetta e la converte in un segnale equivalente a quelli utilizzati normalmente nei sistemi Linux. Il processo ANT quindi, dopo aver configurato l’ADC e la gestione dei segnali, si pone in attesa sulla coda con un WaitForSignal che sospende il processo fino all’arrivo di un segnale. Nell’implementazione del DAQ si é scelto di utilizzare una singola coda per i segnali provenienti dalla strumentazione e quindi ANT, al ritorno da WaitForSignal deve in primo luogo controllare se il segnale proviene dal canale Antenna. La funzione WaitForSignal in output fornisce il Logical Address10 a 16 bit11 del mittente assieme al controller da cui proviene il segnale. Queste informazioni permettono di determinare se la richiesta é stata generata dall’Agilent E1430 oppure dall’HP 1413, nel qual caso ANT lo riaccoda e si sospende per alcuni millisecondi, fornendo cosı́ la possibilitá ad AUX (vedi Sezione 3.8.2) di recuperare il segnale che gli era stato inoltrato. Una volta verificata la provenienza dell’interruzione, ANT provvede al recupero di un buffer di dati (16KSa) e alla conversione degli stessi in formato IGWD. Il dispositivo Agilent E1430 fornisce in uscita direttamente il valore letto dall’ADC e quindi in primo luogo questo va convertito in un float12 , si procede poi alla creazione del frame inserendovi, oltre ai dati, le informazioni relative alla configurazione dell’ADC (scala, frequenza di campionamento, ecc.). Infine i frame vengono accodati per essere successivamente richiesti dal builder. 10 Logical Address o LA é un numero di 8 bit che viene assegnato ad ogni strumento VXI per un’identificazione univoca. Solitamente viene configurato mediante dip-switch e quindi non é modificabile via software (a run-time) 11 Gli otto bit meno significativi costituiscono il LA della scheda VXI mentre i piú significativi vengono utilizzati per stabilire il tipo di comunicazione (Dati, Info, ecc) 12 L’utilizzo di numeri floating point a 32 bit (IEEE-754) non pregiudica la precisione del sistema dato che la mantissa, costituita da 24 bit, é sufficiente a contenere i 23 bit forniti dall’ADC 36 3.8. Il Software di Acquisizione 3.8.2 AUX Il processo AUX implementa, per la scheda HP 1413, le stesse funzionalitá di ANT. Le differenze tra gli strumenti come la dimensione dei buffer o la memorizzazione dei canali acquisiti in multiplexing sono ininfluenti a questo livello. L’unica cosa in cui si differenziano é, all’atto del recupero dei dati, nella modalitá di conversione. A differenza del convertitore E1430 infatti, HP 1413 fornisce in uscita i valori acquisiti direttamente nello standard IEEE-754 per cui questi vengono prelevati dalla FIFO dello strumento e direttamente memorizzati nel frame che, come per ANT, viene infine accodato. 3.8.3 GPS GPS é il processo che si occupa della ricezione dei timestamp provenienti dal ricevitore GPS ESAT 100 in seguito agli eventi generati dalla scheda S80, come indicato in Sezione 3.3. L’associazione del tempo ai frame avviene ad un livello successivo, precisamente nel builder, quindi GPS si limita alla ricezione di pacchetti temporali dalla seriale e alla loro diagnostica. Il working thread del processo é costituito da un ciclo all’interno del quale avviene la lettura (bloccante) della porta, successivamente viene verificato il pacchetto ricevuto affinché rispetti le specifiche dello stamp e in caso negativo questo viene scartato e generata un’eccezione. Superato il controllo di integritá, vengono estratti dalla stringa ricevuta i dati relativi a data, ora, il canale che ha generato lo stamp e le informazioni statistiche prodotte dal ricevitore. Dato che ad uno stesso ricevitore potrebbero essere connessi piú dispositivi (altri DAQ ad esempio anche se non necessariamente) viene effettuato un ultimo controllo sul canale che ha generato lo stamp e, anche in questo caso, se non é fra quelli gestiti dal DAQ il pacchetto viene scartato. Superati tutti i test, i tempi vengono finalmente memorizzati nella coda associata al canale che li ha generati, in attesa del successivo consumo da parte del builder. 3.8.4 BLD BLD o builder é il processo che si occupa della costruzione dei frame in formato IGWD a partire dai frame provenienti dai front-end (ANT, AUX e GPS). Il working-thread del processo interroga ciclicamente i processi ANT o AUX per verificare la presenza di nuovi frame accodati e in caso affermativo li recupera dalle rispettive code. Successivamente alla ricezione di un nuovo frame da un ADC é necessario recuperare il timestamp ad esso associato; a seguito del successo nella lettura di un frame viene quindi interrogato GPS per recuperare il timestamp relativo all’ADC. Qui avviene il primo livello di controllo di consistenza dei dati acquisiti. Infatti, anche se si considera corretta la presenza di nuovi frame dagli ADC, i dati provenienti dal GPS possono essere affetti da errore: possono essere mancanti, relativi ad un frame diverso da quello in costruzione oppure riportanti un tempo errato in seguito alla generazione di un interrupt spurio. Nell’ultimo 37 Capitolo 3. Il DAQ caso gli stamp vengono semplicemente scartati mentre per gli altri errori il BLD provvede al calcolo dello stamp da associare al frame. Il controllo del tempo proveniente dal GPS avviene mediante il confronto con quello precedentemente ricevuto dallo stesso canale. Si assume infatti un errore massimo commettibile dal ricevitore e quindi, noto il numero di campioni componenti un frame, si puó verificarne la correttezza della datazione. Il builder deve occuparsi di un ulteriore problema per i dati provenienti dall’HP 1413. Nel caso di piú canali l’ADC fornisce dei buffer i cui i dati consecutivi sono relativi ai canali della scanning-list utilizzata (nello stesso ordine). Diventa quindi necessario effettuare lo “spacchettamento” (demultiplexing) dei buffer per ottenere i campioni relativi ad ogni ingresso; inoltre a differenza del canale antenna, per gli ausiliari il numero di campioni in un buffer varia a seconda del numero di ingressi utilizzati. Volendo utilizzare dei frame a dimensione costante (4KSa), il builder deve provvedere alla memorizzazione temporanea dei dati acquisiti fino al raggiungimento della dimensione scelta. Questo introduce un ulteriore difficoltá dovuta al fatto che i tempi provenienti dal GPS sono relativi alla fine del buffer acquisito e non alla fine del frame. Il builder deve quindi provvedere anche al calcolo del tempo da associare ad ogni frame dei canali ausiliari, interpolando i tempi ricevuti dal GPS. 3.8.5 DSK Il compito del processo DSK é la gestione della memorizzazione dei frame su memoria di massa. Le richieste di resilienza del sistema portano ad implementare in questo processo tutte le strategie necessarie a risolvere i diversi inconvenienti che possono derivare dall’utilizzo dei dischi fissi, come gli errori di scrittura dovuti all’esaurimento dello spazio, il tempo necessario all’operazione che virtualmente non ha un limite superiore, ecc. Il DAQ, inoltre, inizialmente era stato concepito per utilizzare i dischi fissi come supporto di memorizzazione definitiva e quindi, periodicamente, questi dovevano essere sostituiti a causa dell’esaurimento dello spazio disponibile. Il processo DSK é stato progettato per rendere sicura e agevole la memorizzazione definitiva dei dati, utilizza buffer interni per prevenire perdite dovuta a ritardi di scrittura, implementa il mirroring inteso come scrittura degli stessi flussi su due percorsi distinti e infine facilita all’utente il compito di sostituire i dischi fissi in modalitá hot swap. 3.8.6 LOG Come indicato in precedenza, ogni processo puó produrre dei messaggi di LOG in seguito al verificarsi di alcuni eventi, tipicamente situazioni che richiedono l’attenzione dell’utente. Nella progettazione del DAQ si é deciso di centralizzare la gestione del registro di log utilizzando questo processo il cui compito consiste nell’interrogare periodicamente tutti i processi PCL in esecuzione per recuperare i messaggi che eventualmente sono stati prodotti. La memorizzazione del registro 38 3.8. Il Software di Acquisizione di log avviene successivamente al recupero di nuovi messaggi utilizzando un file ASCII che non richiede quindi particolari editor per la consultazione. 3.8.7 GUI La GUI (Figura 3.10) costituisce l’interfaccia grafica del sistema di acquisizione. L’implementazione é avvenuta utilizzando il framework QT di Trolltech, particolarmente il tool QTdesigner per la progettazione dei frame e il compilatore uic per la generazione del codice sorgente. Figura 3.10: Interfaccia grafica del DAQ Essa sfrutta l’interfaccia CORBA dei processi per inviare i comandi e ottenere informazioni sullo stato di esecuzione. Sul lato sinistro dell’interfaccia sono disposti i pulsanti che permettono il controllo dei processi; questi, invocando i metodi della sezione ACTIONS dell’interfaccia CORBA (vedi Sezione 3.8), comandano le transizioni di stato delle FSM dei processi. Nel riquadro Process Status sono visualizzati i processi PCL in esecuzione assieme alle informazioni sullo stato e sul numero di frame memorizzati nelle code. Il frame Message fornisce in real-time i messaggi catturati dal processo LOG; questo assieme al precedente pannello fornisce un quadro del funzionamento del DAQ. Nella GUI vengono presentate un insieme di informazioni di servizio come il tempo di partenza dell’acquisizione assieme al tempo attuale, il numero del Run, la possibilitá di impostare veti e lo stop degli allarmi. L’utilizzo dei veti serve per poter marcare un porzione di dati acquisiti come non validi per diverse ragioni. Durante un trasferimento di Elio ad esempio il sistema presenta un eccesso di 39 Capitolo 3. Il DAQ rumorositá e quindi i dati raccolti sono pressoché inutilizzabili. Volendo evitare lo stop del DAQ diventa necessario stabilire un sistema per la marcatura dei dati non validi e questo viene realizzato mediante l’impostazione di un veto. Lo stop degli allarmi invece é collegato al logger. Ogni processo oltre a produrre un messaggio di log stabilisce un livello di allerta che caratterizza la probblematicitá dell’evento verificatosi. In base a questo livello é possibile impostare la GUI affinché generi dei messaggi sonori nei periodi in cui vengono intercettate segnalazioni di log corrispondenti ad un certo livello configurabile dall’utente. Il tasto Stop Alarm serve a segnalare alla GUI che l’utente ha riconosciuto la presenza dell’errore e quindi l’avviso acustico puó essere fermato. (a) Configurazione del processo ANT (b) Configurazione del processo BLD (c) Configurazione del processo DSK (d) Configurazione del processo AUX Figura 3.11: Utilizzo della GUI per la configurazione dei processi PCL Di particolare interesse é la configurazione dei processi PCL all’interno dell’interfaccia. Facendo infatti doppio click sopra qualsiasi processo compare una schermata che permette la modifica della configurazione se il processo é nello stato 40 3.8. Il Software di Acquisizione LOADED oppure la visualizzazione della configurazione utilizzata negli altri stati. In Figura 3.11 vengono riportati alcuni screenshot delle finestre di configurazione. Sono stati omessi quelli relativi alla configurazione del LOG che non prevede alcun parametro e del GPS la cui unica opzione é la seriale da utilizzare per la ricezione dei pacchetti. Le precedenti immagini forniscono un’idea di quali e quante siano le possibili modalitá di funzionamento del sistema di acquisizione e di come, nonostante le diversitá nei processi che lo costituiscono, si sia riuscito a dare uniformitá al sistema, dal progetto fino alla realizzazione dell’interfaccia. In aggiunta all’interfaccia grafica, il DAQ é dotato di un processo chiama DSC che implementa le funzioni della GUI da riga di comando. Il funzionamento, al di la della presentazione dei risultati, é il medesimo: anch’esso é un processo client CORBA che utilizza l’interfaccia di comunicazione dei processi PCL per interagire con essi. 41 Capitolo 4 Upgrade e BugFix del Sistema L’Upgrade di un sistema di acquisizione non si riduce alla semplice sostituzione dell’architettura Hardware e Software ma viene complicato dalla necessitá di caratterizzare i nuovi componenti adottati assieme all’intero sistema operante nella nuova configurazione. Di conseguenza l’aggiornamento non viene richiesto solo per utilizzare nuove piattaforme hardware, ma richiede ragioni ben piú profonde. Nel caso di AURIGA il vecchio sistema di acquisizione presentava dei malfunzionamenti che dovevano essere corretti. Vista la necessitá di modificare il DAQ - anche se in parte - si é deciso di provvedere contestualmente anche all’aggiornamento dello stesso, sostituendo l’hardware non piú perfettamente funzionale e migrando il sistema di acquisizione verso la piattaforma piú conveniente per l’esecuzione. Dal punto di vista dei sistemi operativi, il porting si é articolato in due fasi: dal sistema originale Red-Hat Linux 6.2 alla distribuzione Red-Hat Linux 7.3 prima per poi procedere alla Red-Hat Linux 9. La scelta del primo sistema operativo é dovuta alla sua diffusione in ambito scientifico; la Red-Hat Linux 7.3 é infatti la distribuzione adottata per i sistemi di calcolo di AURIGA, inoltre é la base di partenza su ci é stata costruita la Scientific Edition, una distribuzione realizzata dal CNR appositamente per l’utilizzo negli ambienti di ricerca. Come si vedrá nel seguito, tale distribuzione presentava alcune importanti lacune per il DAQ, ragione per cui si é optato per una migrazione all’ultima release free disponibile all’interno della stessa famiglia: Red-Hat Linux 91 . In questo capitolo si descriveranno in primo luogo i problemi riscontrati nel funzionamento del vecchio DAQ di AURIGA e quindi se ne analizzeranno le cause giungendo alle soluzioni che sono state proposte e implementate. 1 La Red-Hat Linux 9 non é in realtá la piú recente distribuzione free prodotta da Red-Hat. Le successive - Fedora Core 1 e Fedora Core 2 - tuttavia non si prestavano all’utilizzo richiesto perché il kernel non é compatibile col driver della scheda di acquisizione 43 Capitolo 4. Upgrade e BugFix del Sistema 4.1 Malfunzionamenti La prima versione del DAQ, sebbene frutto di un’attenta progettazione, nel corso dell’utilizzo ha presentato alcuni malfunzionamenti incompatibili con i requisiti imposti al sistema. Due in particolare sono stati i punti affetti da problemi: • La sincronizzazione dei dati con il tempo universale (UTC) • La robustezza richiesta al sistema di acquisizione I malfunzionamenti del primo tipo si presentavano con frequenza abbastanza bassa, tuttavia il tipo di esperimento richiede che l’acquisizione possa essere mantenuta operativa per intervalli di tempo molto lunghi - dell’ordine di mesi e di conseguenza anche se tra due errori di temporizzazione potevano trascorrere alcuni giorni, la mancata sincronizzazione costituiva un problema sostanziale per il sistema di acquisizione. Con l’uso del DAQ inoltre sono stati riscontrati dei malfunzionamenti a carattere deterministico relativamente ad alcune funzioni, in particolare nel caso dei canali ausiliari. Per la sua evoluzione AURIGA necessitava di un terzo sistema di acquisizione da affiancare ai due - utilizzanti il vecchio software - giá operativi. Si é colta l’occasione data dalla necessitá del nuovo sistema per provvedere alla soluzione dei problemi precedentemente indicati e contestualmente, data la velocitá di evoluzione del settore informatico, per migrare verso piattaforme sia hardware che software piú recenti e quindi performanti. Il terzo sistema é stato utilizzato infine come banco di prova per la sostituzione dei suoi due predecessori che, come di consuetudine, per un periodo verranno lasciati in funzione parallelamente al terzo per verificarne le funzionalitá. 4.2 Aggiornamento Hardware La prima fase nella costruzione del nuovo sistema é stata la scelta dei nuovi componenti da impiegare. Visto che la strumentazione VXI utilizzata nella precedente versione del DAQ verifica tutti i requisiti richiesti e inoltre che, nonostante l’etá, continua ad essere supportata, come ADC sono stati scelti gli stessi del vecchio sistema e quindi sia la scheda Agilent E1430 che il VXItech VT1413C. Per la sincronizzazione con il GPS si é utilizzato uno dei ricevitori GPS giá presenti nel laboratorio dato che non erano richieste prestazioni ulteriori. La presenza di canali liberi in ingresso alle schede S80 ha fornito la possibilitá di sfruttare il medesimo ricevitore GPS per due sistemi di acquisizione. Le modifiche piú significative dal punto di vista hardware si sono quindi concretizzate nell’adozione di un diverso crate per alloggiare la strumentazione e l’impiego di un computer basato su una diversa architettura. 44 4.2. Aggiornamento Hardware 4.2.1 Il nuovo Crate La costruzione di un nuovo sistema di acquisizione ha richiesto l’utilizzo di un nuovo mainframe per l’alloggiamento della strumentazione VXI. Il crate precedentemente impiegato - l’HP E1401A (vedi Sezione 3.2) - non viene piú prodotto da Hewlet Packard per cui si é adottato un prodotto di National Instruments: il VXI-1200. Si tratta di un crate VXI/VME compatto (Figura 4.1), con 6 alloggiamenti disponibili per schede C-size (tipo gli ADC impiegati in AURIGA) e 3 per schede B-size, in grado di fornire una potenza di picco di 720W e di provvedere al raffreddamento degli strumenti. Figura 4.1: Mainframe National Instruments VXI-1200 Sebbene la scelta di un nuovo crate possa sembrare irrilevante ai fini del funzionamento del DAQ, la sua adozione ha richiesto un periodo di studio per la caratterizzazione del rumore e delle latenze introdotto del dispositivo. Per la stime delle interferenze sono state effettuate varie acquisizione nelle possibili modalitá di funzionamento, con uno o due ADC e con o senza la scheda di estrazione degli interrupt che é stata introdotta nel Sezione 3.4. La scheda in questione basa il suo funzionamento sull’utilizzo del circuito integrato SN74LS240N che é costituito da 8 buffer 3-state invertenti mediante i quali vengono rese accessibili le 7 linee di interrupt del BUS VXI. Nel corso dei test effettuati si é visto che, nonostante lo standard VXI specifichi in modo molto stringente le caratteristiche che i dispositivi devono supportare relativamente al rumore, in seguito alla presenza della scheda di estrazione delle interruzioni, il BUS VXI veniva in qualche maniera accoppiato con il canale di ingresso dell’ADC Agilent E1430. In Figura 4.2 é riportato l’andamento di un segnale fuori massa acquisito della scheda Agilent E1430 in assenza della scheda per l’estrazione dell’interrupt; la forma d’onda ottenuta é il classico rumore bianco. In Figura 4.3 e in Figura 4.4 sono plottati invece gli andamenti del medesimo segnale acquisito in presenza della scheda di estrazione delle interrupt. I due grafici rappresentano acquisizioni con lunghezza diversa del buffer e frequenza di 45 Capitolo 4. Upgrade e BugFix del Sistema Figura 4.2: Acquisizione effettuata con l’ADC Agilent E1430 senza scheda di estrazione degli interrupt. Le linee verticali tratteggiate indicano la fine di un buffer e quindi il momento in cui viene sollevata l’interruzione. campionamento, cosı́ da modificare l’intervallo tra il sollevamento delle interruzioni nel BUS VXI. Si nota in entrambi i casi che, alla generazione dell’interruzione - che nel bus VXI é attiva bassa - il segnale presenta un calo del livello in dc denotando un accoppiamento dell’ingresso dell’ADC con la linea di interruzione del BUS, traducendosi in un disturbo a bassissima frequenza2 che si aggiunge al segnale di ingresso. Volendo mantenere gli errori massimi nella temporizzazione entro i requisiti per l’esperimento diviene importante stimare se il nuovo crate introduce tempi di propagazione diversi rispetto al suo predecessore. L’importanza della misura assieme alla necessitá della sua esecuzione su tutti i sistemi di acquisizione ha portato all’implementazione di un apposito software che automatizza il compito della stima dei tempi di latenza dell’interrupt e di altri parametri. Tale applicativo viene illustrato nel Capitolo 5. 2 Nell’utilizzo tipico del DAQ il segnale di interruzione viene sollevato con un periodo di circa 3.355s, con una frequenza quindi prossima a 0.3Hz 46 4.2. Aggiornamento Hardware Figura 4.3: Acquisizione effettuata con l’ADC Agilent E1430 con scheda di estrazione delle interruzioni. La frequenza di campionamento utilizzata é 4882Hz e la dimensione del buffer é stato impostata a 32KSa. Le linee verticali tratteggiate indicano il momento in cui viene sollevata l’interruzione. Figura 4.4: Acquisizione effettuata con l’ADC Agilent E1430 con scheda di estrazione delle interruzioni. La frequenza di campionamento utilizzata é 2441Hz e la dimensione del buffer é stato impostata a 16KSa. Le linee verticali tratteggiate indicano il momento in cui viene sollevata l’interruzione. 47 Capitolo 4. Upgrade e BugFix del Sistema 4.2.2 Il nuovo PC Host Inizialmente si era pensato di continuare a utilizzare i vecchi PC presentati nella Sezione 3.6, questo perché i flussi di dati che il nuovo sistema deve gestire non sono radicalmente diversi come quantitá da quelli del precedente e quindi l’architettura SMP che era stata scelta poteva essere sufficiente per gestire i troughput richiesti. La scelta di un nuovo calcolatore é stata forzata dall’incompatibilitá con il driver fornito dalla National Instruments (unico componente closed source utilizzato), che abbiamo potuto appurare dopo un lungo periodo di sperimentazione. Infatti, utilizzando la versione 2.0.1 della libreria ni-vxi, immancabilmente dopo alcuni giorni di acquisizione non venivano piú sollevate interruzioni dalla strumentazione di misura. Il sistema non presentava alcuna anomalia, tutti i processi rimanevano in esecuzione e in attesa dei segnali provenienti dal bus VXI, tuttavia né l’Agilent E1430 né l’HP 1413 fornivano buffer di dati, pur potendo verificare che gli stessi rimanevano in acquisizione. Dopo numerose sperimentazioni con tutte le possibili tecniche di interfacciamento previste dalla libreria ni-vxi (a segnali, a interruzioni con uno o due handler e tecniche miste) e altrettante richieste di assistenza alla National Instruments, finalmente lo sviluppatore della libreria ci ha proposto l’utilizzo di alcune funzioni (non documentate) che permettevano di determinare lo stato dei registri dell’interfaccia PCI-VXI al verificarsi dell’evento. Dalla lettura dei registri si é potuto determinare che, ad ogni blocco, l’interfaccia si trovava nella stessa configurazione che per default ha all’avvio del sistema, permettendoci di trarre la conclusione - assieme ai tecnici National Instruments - che il chipset VIA Pro Apollo 133A, con regolaritá, ogni 3-4 giorni provvedeva a resettare la scheda PCI. Un’ulteriore verifica dell’incompatibilitá tra il chipset e la scheda di interfaccia NI VXI-PCI8026 ci é stata fornita quando la scheda é stata testata sul sistema utilizzato per lo sviluppo del DAQ, che monta una scheda madre basata sul chipset Intel 875P. Su questo sistema infatti, il DAQ é stato lasciato in esecuzione per mesi senza sperimentare alcun blocco delle segnalazioni che riceve e indipendentemente dal metodo di interfacciamento utilizzato (interrupt o segnali). Dovendo cambiare l’architettura del sistema di acquisizione si é voluto continuare a privilegiare la resilienza, cercando di non penalizzarne la capacitá di calcolo. Dopo alcune verifiche effettuate con il computer di sviluppo, per i calcolatori dei sistemi di acquisizione sono state formulate le seguenti specifiche: Processore: Intel Pentium IV HT (Prescott) a 3GHz/800MHz FSB con 1MB di Cache L2 Mother Board: ASUS P4C800-Deluxe (chipset Intel 875P) Memoria: 2 x CORSAIR XMS ExtraLowLatency 512MB DDR PC3200XL Controller SCSI: Adaptec 19160 U160 LVD HD: MAXTOR ATLAS 10K-IV 36GB U320 10Krpm SCSI 48 4.2. Aggiornamento Hardware Non essendo piú disponibili sistemi SMP nella fascia Pentium IV si é optato per un’unitá Hyper Threading in grado di offrire una sorta di parallelismo. Nella scelta dei componenti si nota che la qualitá é stata privilegiata affidandosi, qualora la scelta fosse possibile, al modello che garantisce le minori probabilitá di rottura. Una nota a parte va fatta per la scelta del sottosistema di I/O SCSI; la velocitá ottenuta dall’esecuzione in hardware delle operazioni di controllo dei dischi riduce notevolmente il carico richiesto alla CPU durante le operazioni di lettura/scrittura e questo sicuramente aiuta a ridurre i tempi di attesa di un sistema, quale il nostro, in cui devono essere in esecuzione molti processi contemporaneamente. L’utilizzo di controller e Hard Disk SCSI inoltre permette di aumentare la resilienza del computer. Il problema che piú frequentemente si presenta nell’utilizzo di un disco fisso é il danneggiamento di uno o piú settori a seguito del quale é necessario effettuare una scansione dell’intero dispositivo per “marcare” come non utilizzabili i settori danneggiati. I dischi SCSI mantengono al loro interno una lista dei settori non utilizzabili che viene inizializzata alla formattazione e aggiornata ogniqualvolta ne vengono trovati di nuovi; grazie a questa caratteristica diviene superfluo fermare il PC per procedere alla scansione dell’Hard Disk. Inoltre, nel disco SCSI viene riservato un insieme di settori non utilizzabili da sostituire con quelli che vengono trovati danneggiati. Il controller infatti é in grado di eseguire lo “slittamento o rinnovo“ di un settore che permette la sostituzione logica al volo di un settore danneggiato con un altro appartenente all’insieme di quelli inutilizzati. Per lo sviluppo e il testing del DAQ é stato adoperato un’altro computer che, anche se dotato di un’architettura simile, ha permesso la verifica di alcuni componenti come il sottosistema di I/O. Precisamente la configurazione del computer utilizzato é la seguente: Processore: Intel Pentium IV 2.8GHz/533MHz FSB con 512KB di Cache L2 Mother Board: Gigabyte 8IK1100 (chipset Intel 875P) Memoria: 4 x Corsair Value 512MB DDR PC3200 HD OS e DAQ: 2 x Maxtor DiamondMax Plus 9 da 80GB - Interfaccia UATA133, 7200RPM con 8 MB cache, in configurazione RAID 1 (mirroring) utilizzando i RAID tools di linux (software RAID) HD storage dati: 1 x MaxLine Plus II da 250 GB - Interfaccia U-ATA133, 7200 RPM con 8MB di cache Il sistema di sviluppo ha permesso di testare le funzionalitá del DAQ in due interessanti situazioni e cioé l’assenza di un’unitá con supporto SMP e l’utilizzo di dischi ATA (in RAID). Particolarmente l’ultimo caso ha reso evidente il carico di lavoro richiesto al computer e quindi, volendo rispettare i requisiti di velocitá e resilienza, la necessitá di optare per altre soluzioni per le memorie di massa; le specifiche per i nuovi sistemi di acquisizione discendono direttamente dai numerosi test effettuati sul computer di sviluppo in condizioni di carico diversificate. 49 Capitolo 4. Upgrade e BugFix del Sistema 4.3 Soluzione dei problemi di Sincronizzazione Il precedente DAQ di AURIGA, come introdotto nel paragrafo 4.1, presentava dei malfunzionamenti nella sincronizzazione dei frame acquisiti dal rivelatore. Sono stati effettuati molti test all’inizio del lavoro di tesi per meglio caratterizzare il problema e, grazie all’analisi effettuata, si é giunti ad evidenziare i seguenti tre possibili tipi di errore: • Temporizzazione errata dovuta alla perdita o al danneggiamento, nella comunicazione seriale, di un timestamp • Errore nell’associazione dei tempi ai frame acquisiti dovuto al ritardo nella generazione di un interrupt da parte della strumentazione VXI • Perdita di un timestamp da parte di GPS anche in assenza di errori di comunicazione Come risulta evidente dalla tipologia di problemi riscontrati, tutte le cause di errore non si presentano sistematicamente e quindi la loro riproduzione é risultata talvolta complessa. Dall’identificazione del malfunzionamento si é proceduto alla ricerca delle possibili cause e, dov’é stato possibile, alla loro rimozione. Nelle sottosezioni successive vengono discusse in dettaglio le cause e le soluzioni agli inconvenienti riscontrati. 4.3.1 Errori di comunicazione Capitava sovente, nella precedente versione del DAQ, che i timestamp inviati dal ricevitore satellitare ESAT GPS 100 via seriale risultassero mancanti o corrotti. Effettuando un log dei dati trasmessi dal GPS al PC si é notato che intere sequenze (burst) di caratteri risultavano perse, portando a pacchetti ricevuti non conformi alle specifiche del GPS. Il primo passo nello studio del problema é stato scoprire se ci fosse una situazione in cui la perdita di dati si presentasse con una probabilitá piú elevata. Dopo alcuni test si é riusciti a determinare che la probabilitá di errore cresceva all’aumentare del carico del sistema, tuttavia non si trattava di carenza di capacitá di calcolo ma di utilizzo intenso del sottosistema di I/O. Per essere piú precisi si é verificato che gli errori di comunicazione si presentavano con maggiore frequenza all’aumentare del carico del sistema di I/O e quindi la relazione con il carico del sistema andava ricercata nell’esaurirsi della memoria RAM e nell’utilizzo dello spazio di swap, situazione tuttavia non sufficiente a spiegare il motivo della perdita dei dati. La ragione del malfunzionamento va ricercata nella porta seriale e precisamente nel modo in cui linux la utilizza [34] [35]. Com’é noto, nei sistemi x86 piú recenti, le comunicazioni seriali sono affidate alle UART 16550 - o derivati - che adottano un protocollo di comunicazione seriale nel quale sono configurabili vari parametri come la velocitá, la paritá, la 50 4.3. Soluzione dei problemi di Sincronizzazione presenza e il numero dei bit di stop, ecc. É inoltre previsto l’utilizzo del flowcontrol, grazie al quale due dispositivi seriali in comunicazione possono regolare il flusso di dati utilizzando un protocollo start-stop. Il funzionamento dell’algoritmo é abbastanza semplice: se ad esempio un dispositivo ricevente esaurisce i suoi buffer e quindi non é in grado di accettare ulteriori dati, questo invia un segnale di stop al trasmettitore che cessa istantaneamente la spedizione. Nel momento in cui il ricevitore ritorna in grado di accettare nuovi dati invia un comando di start al trasmettitore e cosı́ la comunicazione riprende. Con queste modalitá é possibile regolare i flussi di trasmissione in entrambe le direzioni, andando cosı́ a “proteggere” i buffer dei dispositivi impegnati nella comunicazione. I sistemi operativi Linux permettono l’utilizzo completo del protocollo seriale, compreso il controllo del flusso, tuttavia nulla fanno per proteggere il buffer di ricezione dell’UART che, nel caso del 16550, ha una capacitá di 16 Byte. Quando l’UART riceve un Byte solleva un’interruzione richiedendo l’intervento della CPU per la lettura dei dati; i 16 Byte di buffer presenti nel dispositivo servono come memoria temporanea per contenere gli ulteriori byte che arrivano alla seriale prima dell’intervento della CPU, a seguito del quale vengono copiati in memoria centrale tutti i dati presenti nel buffer liberandolo. In Linux viene fatta l’assunzione che il sistema sia sufficientemente veloce da servire l’interruzione dell’UART prima che questo abbia saturato il buffer e quindi non vi é alcun controllo del flusso della comunicazione che provveda a fermare la ricezione qualora si verifichi un overflow della memoria dell’UART. Viste le capacitá di calcolo attualmente disponibili, questa modalitá di operare sembra adeguata, infatti anche alla velocitá massima dell’UART che é di 115.2Kbps, é sufficiente che la CPU risponda alla richiesta di servizio entro un millisecondo. Il ricevitore satellitare utilizzato dal DAQ trasmette i timestamp ad una velocitá di 38400bps e quindi, affinché non si verifichi un buffer overflow, la CPU del sistema su cui é in esecuzione il DAQ deve rispondere entro 3.8ms, tempo che sembra piú che accettabile. Si puó verificare tuttavia che, costringendo il sistema a operare pesantemente sulle memorie di massa (HD e CD-ROM), vengono persi gran parte dei caratteri giunti alla seriale. Il problema segue dalle dimensioni delle sezioni critiche (non interrompibili) delle procedure di servizio alle interrupt. Nel sistema operativo Red-Hat Linux 6.2, utilizzato originariamente per il DAQ, come nel Red-Hat Linux 7.3 a cui é stato effettuato il primo porting, le sezioni non interrompibili delle procedure che si occupano delle operazioni di I/O su memoria di massa sono tali che, in caso di richiesta continua di letture o scritture, bloccano completamente il sistema impedendogli non solo di servire le richieste dell’interfaccia seriale ma anche qualsiasi altro processo. Per questa ragione principalmente é stata abbandonata la distribuzione Red-Hat Linux 7.3 a cui inizialmente si era pensato di portare il sistema; utilizzando questa versione infatti non é possibile evitare di incorrere nella perdita di pacchetti, nemmeno agendo sui livelli di prioritá delle interruzioni, a meno di non voler sviluppare nuovi driver per la gestione delle porte seriali. Infatti, anche configurando il sistema affinché una richiesta di interruzione da parte dell’UART 16550 venga servita immediatamente, non si puó garantire che all’atto della ricezione via seriale di un 51 Capitolo 4. Upgrade e BugFix del Sistema carattere il sistema non stia utilizzando il disco fisso e quindi, essendo il pacchetto contenente lo stamp di 43 Byte, non é possibile garantirne la completa ricezione. Una possibile soluzione, anche se parziale, del problema consiste nell’utilizzo di un convertitore seriale/USB. Il ricevitore satellitare infatti é dotato di sole porte seriali e quindi, a meno di non provvedere all’acquisto di un nuovo strumento, la comunicazione deve avvenire mediante l’utilizzo di dispositivi RS-232. L’adozione di un convertitore seriale/USB, dispositivi ben supportati dal sistema operativo Linux, permette di aggirare il problema. Essendo le comunicazioni su bus USB molto piú veloci di quelle realizzate con dispositivi RS-232, il convertitore deve possedere un buffer interno di dimensioni maggiori rispetto a quello integrato nell’UART 16550 (nei modelli considerati nei nostri test tipicamente ammontava ad alcune centinaia di Byte), per cui puó contenere piú pacchetti completi provenienti dal ricevitore GPS senza causare la perdita di un singolo carattere. In questo modo non viene risolto l’inconveniente causato dall’ininterrompibilitá del sistema, ma viene aumentata la resilienza della comunicazione, permettendo tempi di attesa molto maggiori: con un buffer di soli 256 Byte il sistema puó evitare perdite di dati anche se non effettua alcuna lettura dalla seriale per 16s. Si é comunque deciso di utilizzare Red-Hat Linux 9, ultimo prodotto “stabile” della famiglia free, dato che la politica adottata dalle procedure di servizio in termini di ininterrompibilitá é stata radicalmente cambiata, riducendo le sezioni critiche e limitando quindi gli intervalli di tempo in cui il sistema non é in grado di rispondere a ulteriori stimoli. Rendere interrompibili le procedure di servizio che si occupano dell’I/O del computer ovviamente ha un prezzo che si traduce in un maggiore ritardo per il loro completamento, tuttavia questo slow-down, stimato in qualche punto percentuale, per nulla incide sul buon funzionamento del DAQ; di conseguenza si é adottata quest’ultima versione di Linux non solo per l’esecuzione, ma per l’intero sviluppo del sistema. 4.3.2 Ritardo nel sollevamento delle Interruzioni Un altro problema che si verificava durante l’utilizzo del DAQ era la presenza di frame con una datazione errata anche se ricevuta dal GPS. Come indica nella Sezione 3.3, l’errore assoluto che viene commesso dal ricevitore é di circa 70ns, nei dati raccolti peró erano presenti degli errori di datazione di alcuni millisecondi, giungendo in prossimitá del secondo in qualche caso piú raro. Se si considera corretto il tempo proveniente dal GPS, le uniche possibilitá sono la generazione delle interruzioni in un momento sbagliato oppure la presenza di segnali “spuri” sulle linee di interruzione del bus VXI. Il secondo caso é stato facilmente eliminato confrontando nei vari run il numero di interruzioni generate dagli ADC con il numero dei segnali ricevuti - canale per canale - dalla scheda S80. Dall’uguaglianza di questi valori anche nei periodi di acquisizione in cui si era verificata l’anomalia si é potuta escludere la generazione di “interrupt anomale”. La causa dell’errata temporizzazione era quindi dovuta ad una generazione ritardata del segnale di interruzione. 52 4.3. Soluzione dei problemi di Sincronizzazione La gestione in “daisy-chain” delle interruzioni nel bus VXI richiede che uno strumento, prima di generare il segnale, verifichi la linea che desidera utilizzare per accertarsi che non vi sia una richiesta di servizio precedente di un altro dispositivo. Dopodiché il protocollo VXI prevede che uno strumento possa sollevare un segnale di interruzione - cioé porti a massa la linea corrispondente nel bus VXI - e lo mantenga attivo fino alla ricezione di un interrupt acknowledge (IACK) da parte del controllore del BUS che certifica l’avvenuta elaborazione della richiesta. Sono stati effettuati test ad-hoc per verificare la corrispondenza alle specifiche e, come atteso, si é potuto accertare che la strumentazione, anche nella gestione delle interruzioni, rispetta il protocollo VXI. In particolare si é investigato il meccanismo di generazione delle interruzioni in presenza di precedenti richieste non ancora servite, verificando che in questo caso non vengono generati ulteriori segnali. Lo strumento infatti accoda le richieste di interruzioni pendenti e, all’arrivo dell’IACK, provvede alla elaborazione delle ulteriori richieste di servizio. Il tassello rimanente nella soluzione del problema é il motivo per cui non venivano riscontrate le interruzioni in tempo utile che, per inciso, é abbastanza lungo. Visto che le interruzioni vengono utilizzate per la datazione dei frame, il problema si verificava non appena una richiesta di interruzione veniva accodata. Considerando la scheda Agilent E1430 nella configurazione utilizzata per l’acquisizione del rivelatore (frequenza di campionamento 4882.8125Hz, rappresentazione a 32bit dei campioni e utilizzo di buffer di 64KB - 16KSa), affinché venga accodata una richiesta di servizio é necessario che lo strumento non riceva alcun riscontro per l’intera durata di un buffer che, nel caso specifico, é 16KSa/4882.8125Hz ' 3.355s. La ragione per un tale ritardo é la gestione della comunicazioni a segnali adottata nella versione del DAQ precedente l’aggiornamento. In essa infatti, utilizzando la libreria ni-vxi di National Instruments, tutte le richieste di interruzione provenienti dal bus VXI venivano convertite in segnali, permettendo ai processi del DAQ di eseguire operazioni come WaitForSignal, sospendendosi in attesa di segnalazioni provenienti dal bus VXI. In questa modalitá peró, la risposta ad una richiesta di servizio puó richiedere un tempo piuttosto lungo essendo necessaria in primo luogo la conversione dell’interruzione in segnale da parte del driver ni-vxi, successivamente deve essere modificato lo stato del processo sospeso in runnable per essere schedulato per l’esecuzione. Infine, quando il processo riconquistava l’utilizzo della CPU poteva finalmente leggere il segnale dalla coda ed eseguire le operazioni successive. Si é verificato che, in condizioni di carico elevato, poteva accadere che la risposta al segnale fosse ritardata di un tempo superiore alla durata di un buffer, causando quindi il ritardo nell’invio dell’acknowledge e quindi l’accodamento dell’interruzione successiva. Per risolvere questo malfunzionamento si é quindi deciso di modificare la gestione della comunicazione con le schede VXI, passando dalla modalitá a segnali alla gestione ad interrupt. Sono stati quindi implementati gli handler specifici per gli strumenti utilizzati (Agilent E1430 e HP 1413), riducendo le operazioni eseguite al loro interno alla semplice lettura dei dati dal buffer dello strumento 53 Capitolo 4. Upgrade e BugFix del Sistema alla memoria RAM, limitandone cosı́ la durata di esecuzione. In questa modalitá, la richiesta di interruzione da parte di uno strumento VXI causa immediatamente l’invocazione dell’handler che, implementando un numero di operazioni minimale, termina la sua esecuzione nel tempo necessario al solo trasferimento dei dati. Il completamento dell’esecuzione della procedura di servizio causa l’immediato invio di un segnale di Interrupt Acknowledge allo strumento che aveva sollevato la richiesta; con questa modalitá si é quindi riusciti a minimizzare i tempi di risposta del sistema risolvendo i problemi di temporizzazione dovuti all’accodamento di interruzioni. A prova della soluzione proposta é stato effettuato un periodo di acquisizione di poco piú di due mesi. A fronte di una frequenza iniziale degli errori di temporizzazione del tipo discusso di circa tre alla settimana, con l’utilizzo della gestione ad interrupt si é scesi ad una frequenza di zero eventi in due mesi. 4.3.3 Mancata lettura di un timestamp dalla coda di GPS Un possibile malfunzionamento é legato alla modalitá con cui avviene la comunicazione tra BLD (vedi Sezione 3.8.4) e GPS (vedi Sezione 3.8.3) e in particolare all’algoritmo che veniva utilizzato per la verifica della presenza di nuovi timestamp nella coda del GPS. Come giá indicato nel capitolo precedente, la comunicazione fra i processi componenti il DAQ avviene utilizzando CORBA, middleware che permette l’invocazione di metodi di oggetti remoti. Caratteristica di CORBA ampiamente sfruttata nel progetto del DAQ é la possibilitá di gestire le eccezioni sollevate dall’invocazione di un metodo remoto, infatti la sincronizzazione tra i processi produttori e consumatori, piuttosto che essere realizzata con strutture esterne classiche tipo semafori, é stata implementata utilizzando le eccezioni. In buona sostanza, quando un processo client (consumatore) desidera leggere dei frame da una coda remota, questo effettua la richiesta di lettura che avrá successo nel caso in cui il processo server (produttore) ha dei frame accodati, altrimenti solleverá un’eccezione indicante l’assenza di dati. Per comprendere le ragioni di un fallimento della lettura di un frame che invece era presente nella coda, oltre al processo di sincronizzazione, é necessario considerare come il builder opera l’associazione tra un frame e il tempo a cui é stato generato. Il working thread del builder consiste essenzialmente in un ciclo all’interno del quale viene effettuata una richiesta di lettura al processo server che si interfaccia con l’ADC, alternando le operazioni tra ANT (vedi Sezione 3.8.1) e AUX (vedi Sezione 3.8.2). Se il processo interrogato non dispone di nuovi frame viene generata un’eccezione a seguito della quale il builder rinuncia nella lettura e cambia processo da interrogare. In seguito ad un successo nella lettura il builder, ottenuto il frame, deve provvedere alla sua corretta datazione, effettuando una richiesta di nuovi frame al processo GPS. Come indicato nella Sezione 3.8.3, quest’ultimo mantiene al suo interno una coda per ogni strumento utilizzato dal 54 4.3. Soluzione dei problemi di Sincronizzazione DAQ - normalmente sono 2, una per ANT e una per AUX - nelle quali vengono memorizzati in ordine di arrivo i timestamp ottenuti dal ricevitore satellitare. La presenza di un nuovo frame nel processo ANT o AUX indica che necessariamente é stata sollevata un’interruzione dalle schede di acquisizione e quindi il ricevitore satellitare deve aver generato un nuovo timestamp. Di conseguenza, a seguito di un successo nella lettura di un frame da ANT o AUX, il builder deve considerare che la presenza di un frame in GPS é quasi certa, a meno di un errore di trasmissione che comunque ha un probabilitá molto ridotta; il builder inoltre deve tener conto di operare in un sistema in time-sharing e quindi deve considerare che un processo non sia pronto per la sincronizzazione per ragioni di scheduling. In seguito a tutte le precedenti considerazioni, la lettura di nuovi frame dal processo GPS non avviene semplicemente invocando il metodo GetData e considerando la presenza di un’eccezione come l’indicazione dell’assenza di un frame. Viene invece utilizzato un algoritmo simile al backoff binario impiegato nelle reti Ethernet in cui, a seguito di una richiesta con esito negativo, il builder si sospende per un tempo crescente in modo da aumentare la probabilitá che il processo GPS venga mandato in esecuzione e diventi pronto per la sincronizzazione. In maniera simile al backoff, dopo dieci tentativi il builder rinuncia alla lettura considerando il timestamp perso a seguito di un errore di trasmissione e provvede quindi in proprio alla generazione di un tempo basandosi sull’ultimo stamp ricevuto, sulla dimensione del frame e sulla frequenza di campionamento. Nella versione del DAQ precedente, accadeva che talvolta l’algoritmo sopra descritto fallisse, indicando l’assenza di un timestamp che in realtá era stato regolarmente accodato, andando ad incidere pesantemente sui requisiti di temporizzazione per l’esperimento. Infatti, essendo le code del GPS delle FIFO, il timestamp erroneamente non elaborato rimaneva nella coda e veniva considerato come il tempo del frame successivo a quello che lo aveva generato. A questo punto erano possibili due strategie, che portavano entrambe a inficiare l’errore massimo ammesso per la temporizzazione. La prima e piú semplice possibilitá consisteva nel non effettuare alcuna correzione dei tempi, in tal modo tutti i frame successivi a quello in cui si era verificato l’evento presentano uno slittamento all’indietro pari al tempo di un frame. L’altra possibilitá consisteva nella verifica del tempo proveniente dalla coda GPS con un tempo calcolabile dal builder. Stabilito un errore massimo commettibile nella temporizzazione, il builder provvedeva allo scarto dei timestamp con errore superiore ad e al calcolo via software di tempi sostitutivi. Essendo piccolo, dell’ordine del microsecondo o meno, tutti i pacchetti nella coda del GPS venivano scartati a seguito del verificarsi di una mancata ricezione; essi infatti presentavano un errore fittizio pari alla durata di un frame e quindi, prendendo ad esempio il caso di ANT, superiore a 3 secondi. Quest’ultima modalitá, sebbene avesse il vantaggio di generare frame con tempi consecutivi, andava ad incidere sull’errore assoluto ammesso. I tempi infatti venivano tutti calcolati in base all’ultimo timestamp precedente il verificarsi dell’errore a seguito del quale non era quindi piú possibile garantire una datazione con un errore assoluto inferiore ai 100ns. 55 Capitolo 4. Upgrade e BugFix del Sistema La causa dell’inconveniente va ricercata nel funzionamento in time-sharing del calcolatore utilizzato e nell’adozione di CORBA che introduce un’ulteriore step nella comunicazione fra processi. Figura 4.5: Schematizzazione della sincronizzazione tra i processi BLD e GPS In Figura 4.5 sono schematizzati i passaggi necessari per compiere la sincronizzazione e quindi il trasferimento di dati tra il processo BLD e GPS. Si nota che affinché BLD possa effettuare la richiesta é innanzitutto necessario che precedentemente GPS sia stato eseguito ed abbia ultimato l’accodamento di nuovi stamp. In seguito BLD puó effettuare la chiamata la metodo remoto che richiede la disponibilitá di CORBA per essere effettuata. É necessario quindi che venga tolto l’utilizzo della CPU a BLD, che vada in esecuzione CORBA e infine GPS, il quale provvederá alla gestione della richiesta. Nel caso siano presenti nuovi timestamp sono necessari anche i passaggi inversi per cui deve essere eseguito CORBA e infine BLD che riceve i nuovi frame. In un sistema che opera in multitasking con molti processi in esecuzione (basti pensare solo a quelli del sistema operativo a cui si aggiungono i vari demoni) puó trascorrere un certo tempo prima che l’ordine di scheduling porti alla sequenza di esecuzione richiesta. Dai test effettuati sul computer di sviluppo (Sezione 4.2.2) si é appurato che un’attesa di 8 secondi tra la ricezione di uno stamp e il successivo, quindi un’attesa di circa 5 secondi perché la comunicazione sia possibile, é tutt’altro che rara, come indicato in Figura 4.6 dove sono stati istogrammati gli intervalli trascorsi tra la ricezione di due timestamp relativi al canale principale, in un periodo di osservazione di 12 giorni di acquisizione continua. L’algoritmo di backoff utilizzato in precedenza effettuava dieci tentativi prima di dichiarare l’indisponibilitá di nuovi frame nella coda del GPS e, tra di essi, il builder veniva sospeso per un tempo pari a 100ms moltiplicato per il numero 56 4.3. Soluzione dei problemi di Sincronizzazione Figura 4.6: Istogrammazione degli intervalli di tempo tra due ricezioni di timestamp relativi al processo ANT del tentativo, giungendo quindi ad un’attesa massima totale di 4.5s, che, come dimostrato, é insufficiente. Nella nuova versione del DAQ si é quindi modificato l’intervallo d’attesa totale in considerazione delle osservazioni effettuate. Tuttavia, con periodi cosı́ lunghi, l’algoritmo di backoff si rivelava inefficiente, rischiando di sospendere il builder per un periodo troppo elevato e quindi, dovendo questo elaborare anche le richieste degli altri strumenti, introducendo la possibilitá che alcuni frame andassero persi. Si é quindi provveduto a rendere il periodo di sospensione statico impostandolo a 100ms (intervallo che sperimentalmente é sembrato adeguato) e introducendo la possibilitá di richiedere il timestamp per una durata massima di 20s. In questo modo, qualora lo stamp sia immediatamente - o quasi - disponibile (prima colonna in Figura 4.6), il builder procede al recupero del frame con un ritardo minimo mentre, nel caso l’intervallo di attesa si allungasse, i tempi di sospensione rimangono brevi, evitando di rendere unrunnable BLD per periodi troppo lunghi anche se in questa modalitá si penalizza leggermente il sistema dato che, per lunghe attese, il BLD va in esecuzione semplicemente per essere risospeso. Le modifiche descritte, introdotte nella nuova versione del DAQ, oltre ad essere suffragate dalla statistica dei tempi di arrivo dei frame sopra esposta, sono state verificate sperimentalmente mediante piú run di acquisizione effettuati con diverso carico del sistema. Il risultato, come attendibile, é stato la totale assenza dell’errore descritto, in qualsiasi condizione e con qualsiasi durata del run3 . 3 Il test piú lungo é consistito in circa due mesi di acquisizione 57 Capitolo 4. Upgrade e BugFix del Sistema 4.4 Segnali Ausiliari Il processo AUX (vedi Sezione 3.8.2) ha subito i maggiori cambiamenti, probabilmente per il funzionamento non intuitivo dello strumento HP 1413 a cui si interfaccia. Per esso infatti sono previste librerie a corredo, dalla SCPI al DAQ Express di National Instruments, utilizzando le quali operazioni come lo “spacchettamento” dei canali risultano trasparenti all’utente, semplificandone di molto l’utilizzo. Tuttavia, qualora sia richiesto l’utilizzo diretto dello strumento - come nel nostro caso - la documentazione fornita con esso é decisamente incompleta. Non trovano posto nella manualistica infatti i dettagli implementativi del funzionamento dell’ADC e della programmazione dei registri per cui, nella soluzione dei problemi che erano stati riscontrati per gli ausiliari, si é dovuto procedere con tecniche di reverse-engineering fino alla comprensione delle strategie adottate dal dispositivo. Le modifiche apportate ad AUX possono essere considerate sostanziali. Di seguito vengono analizzate le variazioni introdotte assieme ai problemi che le hanno rese necessarie. 4.4.1 Stato dell’ADC HP 1413 L’acquisizione dei canali ausiliari, nella versione precedente del sistema, presentava una serie di problemi, causando malfunzionamenti che andavano dal crash del DAQ all’acquisizione di valori non validi; all’aumentare della frequenza di campionamento, inoltre, nei valori letti si presentavano degli intervalli costituiti da NaN4 , indicanti un qualche tipo di errore di lettura del buffer dell’ADC. Inoltre, utilizzando piú di due canali per l’acquisizione, il processo AUX dopo qualche giorno si fermava senza alcuna apparente motivazione. Questi malfunzionamenti erano dovuti prevalentemente alla mancanza di un controllo dello stato dell’ADC prima di effettuare una lettura, che tuttavia veniva eseguita come indicato nel manuale. Dalla documentazione infatti risulta che, prima di procedere alla lettura di un buffer dalla FIFO, é necessario accertarsi della presenza di almeno 32KSa, cosa giá nota al momento dell’operazione dato che nel DAQ la lettura di un buffer viene effettuata in seguito ad un’interruzione e lo strumento viene configurato per sollevarla al verificarsi all’evento FIFO HALF FULL, cioé non appena dispone di 32KSa. La parte piú complessa nella soluzione di questo problema é stata appunto il determinare - mediante reverse engineering - cosa accadeva nell’ADC visto che all’esterno, ad esclusione dei valori NaN, non traspariva alcun tipo di segnalazione di errore. Attraverso una serie di test congiunti dello strumento e del funzionamento della libreria ni-vxi, si é riusciti risolvere il malfunzionamento comprendendo i motivi del blocco del processo AUX. La presenza di valori NaN era indice di un errore di lettura a seguito del quale lo strumento asseriva un “BUS Error”, cioé una richiesta di servizio al sistema 4 Not A Number: numero non valido la cui rappresentazione in floating point (IEEE-754) consiste in un numero con tutti i bit dell’esponente a 1. 58 4.4. Segnali Ausiliari host a seguito del verificarsi di un non meglio specificato errore di comunicazione. All’atto del caricamento in memoria della libreria ni-vxi, venivano installati dei “default handler” per tutte le possibili richieste di servizio - senza alcun tipo di operazione al loro interno - che potevano poi essere sovrascritti da handler implementati dall’utente. Al verificarsi del BUS error veniva quindi invocato il default handler, andando cosı́ a mascherare il problema di comunicazione senza risolverlo visto che la procedura non eseguiva alcunché. Compresa la sequenza di eventi che andava a minare il funzionamento del sistema, la soluzione é stata semplice. Nell’ADC HP 1413 esiste un registro chiamato FIFO STATUS (indirizzo 2416 ) i cui bit indicano vari parametri della memoria come la dimensione dei dati (32 bit), di un blocco della FIFO (32768 campioni), ecc. In particolare il bit meno significativo, denominato FIFO READY, indica se lo strumento é pronto per un accesso alla FIFO oppure no. É stato quindi sufficiente, nell’handler che si occupa della copia dei dati dallo strumento alla memoria RAM del computer, far precedere ogni operazione di lettura dall’asserzione di questo bit. Con la modifica descritta sono state eliminate tutte le presenze di NaN indipendentemente dal numero di canali utilizzati e dalla frequenza di campionamento (si puó ora operare a banda piena, cioé a 100KSa/s) e risolvendo anche il blocco del processo AUX che era dovuto alla mancata gestione degli errori di comunicazione. 4.4.2 Sincronizzazione degli Ausiliari La temporizzazione dei frame acquisiti avviene con la stessa modalitá del canale principale, viene cioé configurato l’ADC per generare un’interruzione - al termine di un buffer - che viene inviata alla scheda S80 del ricevitore satellitare ottenendo cosı́ la datazione dei campioni. A differenza dell’Agilent E1430, il buffer della scheda HP 1413 ha una dimensione prestabilita di circa 32KSa, a fronte di una dimensione richiesta per i frame degli ausiliari di 4KSa. La dimensione del buffer utilizzato dallo strumento inoltre non aumenta in modo da ospitare un numero costante di campioni per canale e quindi, volendo esemplificare, acquisendo un singolo canale ogni buffer contiene 8 frame, utilizzando 2 canali ne contiene 4, ecc., complicandosi ulteriormente la situazione qualora la dimensione del buffer non sia un multiplo del numero di canali utilizzato. Risulta evidente da quanto esposto che il processo BLD, il cui scopo é la costruzione dei frame in formato IGWD, oltre a ricavare i campioni relativi ad ogni canale a partire dal contenuto del buffer ricevuto, deve provvedere al calcolo del tempo associato ad ogni frame utilizzando una qualche tecnica di interpolazione. Il vecchio DAQ manteneva a questo scopo una coda dei tempi provenienti dal GPS e, operando una media su di essi, calcolava il tempo del singolo frame. Nei dati prodotti con questa modalitá tuttavia si presentava una discontinuitá al termine di ogni frame, evidenziando un problema di temporizzazione. La prima azione intrapresa é stata riscrivere la parte di BLD che si occupa del timing, modificando il metodo con cui vengono calcolati i tempi. Il sistema utilizzato nel vecchio DAQ infatti, basandosi su una media, andava a ridurre l’errore 59 Capitolo 4. Upgrade e BugFix del Sistema complessivo del risultato, tuttavia in presenza di un qualche problema di temporizzazione, questo, piuttosto che rimanere confinato al frame in cui si é verificato, veniva distribuito almeno sull’intero buffer. Si é quindi deciso di abbandonare l’utilizzo di medie e di considerare i timestamp solo localmente: nell’algoritmo implementato il tempo di un frame viene calcolato in base all’ultimo timestamp disponibile e all’indice relativo al primo campione del frame, associando ad ogni timestamp una validitá pari al numero di campioni costituenti un buffer. In questo modo i tempi associati ai frame sono soggetti ad un errore assoluto che é prossimo a quello commesso dal GPS (70ns) e l’eventuale presenza di un errore di temporizzazione influenza solo il buffer in cui é stato prodotto. Effettuando delle misurazioni sui dati raccolti con l’algoritmo appena descritto si é verificata la presenza costante di una irregolaritá al termine di ogni buffer, con un andamento deterministico. Si é verificato infatti che la dimensione della discontinuitá era inversamente proporzionale al numero di canali impiegati e alla frequenza di campionamento; il suo valore alle frequenze utilizzate era tuttaltro che trascurabile: con un canale a 200Hz, consisteva in circa 0.45ms per ogni frame, introducendo un errore stimabile nello 0.22%. Per comprendere la provenienza di questa irregolaritá é necessario considerare l’algoritmo utilizzato dalla scheda HP 1413 per comandare l’acquisizione. Come indicato nella Sezione 3.5, lo strumento utilizza delle scanning list per mantenere l’elenco dei canali da acquisire, assieme ad un registro che contiene l’intervallo di attesa tra l’acquisizione di un canale e il successivo. Per impostare una frequenza di campionamento TC , la scheda va impostata in modalitá soft triggered, in cui la scansione di una lista viene iniziata a seguito della presenza di un trigger software generato dallo strumento stesso con la frequenza di campionamento richiesta. Ogni TC secondi viene dato inizio ad una acquisizione e quindi la reale frequenza di campionamento non é quelle impostata ma vale 1 Hz, (4.1) TC + DT RIG dove DT RIG é il ritardo introdotto dalla generazione del trigger. Considerando in quest’ottica la discontinuitá presente al termine di ogni frame, si puó ottenere il ritardo introdotto dalla generazione del trigger; per l’acquisizione di un canale a 200 Hz, condizione in cui il buffer é di 32768 campioni, si ottiene DT RIG ' 3.6ms/32768Sa ' 110ns, tempo compatibile con i ritardi introdotti dall’elettronica dello strumento. Per poter determinare la durata di un frame in base ai timestamp ricevuti dal GPS é indispensabile conoscere la dimensione del buffer che - nella documentazione - viene indicata come costante e pari a 32768 campioni, cioé metá della dimensione della FIFO. Dai test effettuati per la verifica del timing si é scoperto che, quando il numero di canali utilizzato non é un sottomultiplo della dimensione del buffer, la sua durata varia indicandone un cambiamento di dimensione. Dopo numerose verifiche si é infatti appurato che lo strumento solleva l’interruzione di fine buffer al termine dell’esecuzione di una scanning list e quindi, qualora non sia possibile FC = 60 4.4. Segnali Ausiliari ultimare la scansione all’interno dei 32KSa, l’ADC posticipa la generazione dell’interruzione. Dalle considerazioni esposte si puó derivare la dimensione effettiva del buffer che é data da: 32768 Dim Buffer = ∗ chNum (4.2) chNum dove chNum é il numero di canali utilizzato per l’acquisizione. Considerando questo valore come dimensione reale del buffer vengono corretti sia i tempi calcolati che gli intervalli in cui devono essere considerati “validi” i timestamp ricevuti, ottenendo infine la corretta datazione e quindi, nel corso di un run, l’assenza di discontinuitá temporali tra i frame prodotti. 4.4.3 Frequenza di campionamento Collegato in parte al precedente problema vi é la frequenza di campionamento utilizzata dall’ADC HP 1413. La configurazione della frequenza di esecuzione delle scanning list nello strumento si imposta mediante una scrittura del registro Trigger Timer Register (indirizzo 2C16 ) il cui valore a 16 bit determina l’attesa tra una scansione e la successiva secondo la seguente espressione Intervallo = (10−4 ∗ valore registro) + 10−4 s (4.3) dalla quale possono essere ricavate un paio di osservazioni. La frequenza massima a cui puó operare lo strumento su di un singolo canale - ottenibile in corrispondenza del valore 0 del registro - é pari a 10KHz, di conseguenza la banda massima dell’ADC, dichiarata in 100KSa, puó essere ottenuta solo mediante l’utilizzo di piú canali. Inoltre la precedente espressione indica la granularitá con cui é selezionabile il periodo di campionamento, pari a 0.1ms. Non é quindi possibile impostare una frequenza di campionamento qualunque com’era previsto nell’interfaccia grafica del DAQ. Come indicato nella Sezione 3.7.3, nei frame salvati su disco vengono inserite tutte le informazioni sulla configurazione degli ADC affinché il software che effettua successivamente l’analisi possa prelevarvi sia i dati che i parametri da utilizzare. L’inserimento in un frame di una frequenza di campionamento non corrispondente a quella realmente impiegata dallo strumento porta ad un problema di inconsistenza che, nella migliore delle ipotesi, si traduce nell’indicazione della mancanza di una porzione di dati al termine di ogni frame, causata dalla differenza tra la durata effettiva e il tempo calcolabile con la frequenza di campionamento in esso memorizzata. A tale discontinuitá va ad aggiungersi inoltre il tempo dovuto al ritardo nella generazione del trigger che avvia la scansione, aumentandone l’entitá. Si é dovuto procedere ad una correzione della frequenza di campionamento memorizzata nei frame per tener conto dei due aspetti citati. La soluzione adottata consiste nel calcolare dinamicamente la frequenza di campionamento di ogni buffer, svincolandosi in questo modo anche da possibili jitter del clock. Allo scopo, il builder utilizza la coda contenente i tempi di arrivo dei buffer provenienti 61 Capitolo 4. Upgrade e BugFix del Sistema da AUX e, posticipando la creazione dei frame di un buffer, calcola per ognuno la reale frequenza di campionamento a partire dalla differenze dei tempi di inizio e fine buffer (forniti dalla coda) e dalla dimensione degli stessi, calcolata come indicato nella Sezione 4.2. 4.4.4 Migliorie e correzioni minori Oltre a quanto giá indicato, AUX é stato oggetto di altre modifiche di entitá inferiore, la cui descrizione viene raggruppata nel seguente paragrafo. Il processo AUX nella versione precedente del DAQ presentava un errore in seguito al quale la precisione dei valori letti degradava. La lettura dei dati memorizzati nel buffer dell’ADC HP 1413 avviene mediante due registri di 16 bit, FIFO MSW (indirizzo 2016 ) e FIFO LSW (indirizzo 2216 ), la cui lettura sequenziale permette di ottenere il valore rispettivamente della parte piú e meno significativa del dato nel formato IEEE-754; l’incremento del contatore al campione successivo avviene automaticamente in seguito alla lettura del primo registro. Nella versione precedente del DAQ la lettura avveniva con le stesse modalitá della scheda Agilent E1430, nella quale viene utilizzato un solo registro, che alterna il suo contenuto con la parte piú significativa e quella meno significativa. Avendo utilizzato la stessa modalitá di lettura per gli ausiliari, la precisione massima raggiungibile era di 7 bit sui 16 forniti dall’ADC. Si é provveduto in primo luogo a correggere questo malfunzionamento rendendo la precisione dei dati conforme alle specifiche. La correzione dei problemi indicati nelle precedenti sezioni ha fornito la possibilitá di utilizzare piú completamente lo strumento, permettendo di sfruttarne la completa banda passante insieme ad un maggior numero di canali. Si é quindi proceduto alla modifica del front-end affinché queste operazioni diventassero possibili. Gli SCP (vedi Sezione 3.8.2) utilizzati assieme all’ADC permettono il filtraggio del segnale di ingresso con un filtro passa-basso avente frequenza di taglio programmabile a 2, 10 o 100Hz. Non era stato previsto nel DAQ l’utilizzo della modalitá pass-throught grazie alla quale il canale viene filtrato a 1.5KHz. Si é quindi provveduto a modificare sia la programmazione degli SCP che l’interfaccia grafica per rendere possibile l’esclusione del filtro e quindi l’aumento della banda di un fattore quindici per canale. Affinché fosse possibile utilizzare tutti i canali disponibili (24 su 64) é stato inoltre necessario provvedere ad un corretto dimensionamento di alcune strutture della libreria PCL. In particolare, prima del processo di scrittura dei frame su disco, questi vengono memorizzati in un buffer che funge da memoria temporanea per il passaggio dei dati da PclFcl alla Frame Library. Tale buffer, per ridurre l’occupazione di memoria, era stato creato con una dimensione tale da poter ospitare al massimo quindici canali ausiliari (da 4 KSa) e quindi era insufficiente alla memorizzazione di tutti i canali disponibili. Si é quindi provveduto alla modifica del precedente, creando lo storage necessario all’utilizzo di tutti gli ingressi disponibili. 62 4.5. Sistema Operativo Infine, la disponibilitá dei nuovi ingressi ha permesso la connessione al sistema di acquisizione di nuovi strumenti come microfoni, sonde magnetiche, titlmetri, ecc. Dato che nei frame vengono memorizzate le informazioni relative alla configurazione degli ADC e quindi anche quali strumenti vi sono connessi, si é provveduto a modificare il DAQ (GUI ed altro) affinché fosse possibile tener traccia dei nuovi dispositivi. 4.5 Sistema Operativo Come giá indicato il sistema operativo utilizzato per il DAQ é il Red-Hat Linux 9.0 [29], nell’ultima versione disponibile, cioé corredato di tutti gli aggiornamenti ufficiali di Red-Hat, la cui fornitura peró é terminata definitivamente il 30 Aprile 2004, data in cui Red-Hat ha abbandonato il prodotto. In seguito alla fine del supporto si é dovuto provvedere in proprio all’aggiornamento dei pacchetti utilizzati. L’indisponibilitá di aggiornamenti assieme alla necessitá di ottenere il massimo livello di prestazioni e resilienza del sistema di acquisizione ha fornito l’occasione per provvedere alla creazione di una vera e propria nuova distribuzione composta dai tools selezionati per lo sviluppo del DAQ. Alla versione ufficiale di linux si é in primo luogo provveduto ad aggiornare il gestore del desktop per poter utilizzare la versione selezionata di KDevelop [32]. Si é quindi prima installato la versione 3.3.3 di QT [30] su cui si basa KDE [31], il gestore del desktop scelto, ottenendo cosı́ anche l’IDE per lo sviluppo dell’interfaccia grafica del DAQ e del software di calibrazione: QTDesigner. La compilazione di KDE in realtá si é articolata in due fasi: una prima in cui si é effettuato il passaggio alla versione 3.2 - precisamente terminato il processo di aggiornamento si é arrivati alla 3.2.3 - seguita di una seconda resasi necessaria dalla distribuzione della release 3.3. L’utilizzo di KDE é stato reso indispensabile dall’aver scelto KDevelop come IDE; le versione 3.2 di KDE venivano distribuite con KDevelop 3.0.x in quale introduceva delle interessanti migliorie rispetto al suo predecessore - il 2, integrato nella Red-Hat 9 - ma presentava anche qualche leggera instabilitá, come tutti i nuovi prodotti. Si é voluto, all’uscita della release correttiva di KDevelop (la 3.1) poterla adottare e quindi é stata necessaria l’adozione di di KDE 3.3.1. Come in una reazione a catena, l’adozione di questo specifico IDE (e quindi del gestore del desktop) ha richiesto l’aggiornamento di buona parte dei componenti di sistema: dagli autotools ai vari interpreti come python, ruby, ecc. Uno dei pochi pacchetti che é rimasto nella configurazione iniziale é stato il GCC 3.2.2 assieme alla glibc dato che il DAQ é stato sviluppato usando lo standard C++ adottato da questo compilatore. L’ultimo kernel distribuito dalla Red-Hat per la distribuzione 9.0 é il 2.4.20 31.9 che, anche se con probabilitá ridotta, ha presentato degli inconvenienti, in particolare dei kernel panic in seguito alla’esecuzione di alcuni task amministrativi. 63 Capitolo 4. Upgrade e BugFix del Sistema Si é pensato quindi di ricompilare un nuovo kernel, appositamente per il sistema di acquisizione. L’utilizzo della libreria ni-vxi imponeva l’utilizzo di un kernel della famiglia 2.4, si é quindi scelta l’ultima release disponibile [33], la 2.4.27, e la si é compilata. Vista la necessitá di un nuovo kernel, si é provveduto a compilarlo in base alle specifiche della macchina di sviluppo, utilizzando tutte le possibili ottimizzazioni (codice macchina specifico per Intel Pentium IV, supporto di tutte le caratteristiche di CPU e MB) e selezionando solo i driver necessari, i quali sono stati inclusi direttamente nel kernel se di utilizzo molto frequente (ad esempio il supporto RAID) altrimenti come modulo (USB, FireWire). 4.6 Librerie Contestualmente all’upgrade del sistema operativo e dell’ambiente di sviluppo si é provveduto all’aggiornamento delle librerie utilizzate dal DAQ, dopo ovviamente aver testato la funzionalitá di ogni singolo componente. In particolare sono state adottate : • omniORB dalla versione 3.0.4 alla 4.0.3 • OSE dalla versione 6.0 alla 7.0pl9 • Frame Library dalla versione 4r31 alla 6r15 • FFTW dalla versione 2.1.3 alla 3.0.1 • NI-VXI dalla versione 1.6.2 alla 2.0.1 L’aggiornamento di alcune delle librerie citate ha permesso l’implementazione di nuove funzionalitá, in particolare la versione 4.x di omniORB aggiunge una varietá di opzioni non disponibili in precedenza; tra le piú interessanti vi é la possbilitá di configurare la gestione delle comunicazioni di rete, permettendo di impostare timeout ed altri parametri che inglobano la gestione degli errori di comunicazione. L’adozione di FFTW nella release 3 ha permesso di sfruttare le architetture SMP e quindi di scalare il tempo di esecuzione delle DFT; infine l’uso della versione aggiornata del driver NI-VXI ha permesso l’aggiornamento del sistema operativo utilizzato dal DAQ. 64 Capitolo 5 Calibrazione e Diagnostica del Sistema Il tipo di segnale fornito dal rivelatore AURIGA necessita del trattamento piú accurato possibile per evitare l’introduzione di rumore aggiuntivo che puó rendere maggiormente complessa la rivelazione del segnale gravitazionale o, vista la debolezza, mascherarlo. Per questa ragione, assieme alle problematiche di sincronizzazione introdotte nei capitoli precedenti, si impone al DAQ di porre in opera tutte le azioni necessarie al raggiungimento di una acquisizione ottimale, introducendo le minime distorsioni di ampiezza e fase possibile, utilizzando efficacemente la dinamica di cui dispone e misurando i ritardi che esso introduce per poter procedere, a posteriori, alla loro eliminazione. Nel sistema di acquisizione di AURIGA la procedura di configurazione era affidata all’utente che, in base alla propria esperienza ed eventualmente a misure di prova, doveva provvedere ad impostare i parametri delle schede di acquisizione per ottenere la migliori risoluzione del segnale. Mancava al sistema la possibilitá di correggere il livello di offset in dc del segnale e stimare le latenze introdotte nella sincronizzazione dei dati. In seguito a queste richieste, successivamente all’aggiornamento del DAQ, si é provveduto a realizzare un’applicazione in grado di configurare automaticamente la strumentazione valutando la dinamica e l’offset del segnale di ingresso. Inoltre é stata automatizzata la stima della latenza dell’interrupt, permettendo all’utente l’utilizzo di un singolo applicativo per la calibrazione dei tre sistemi DAQ e fornendo la possibilitá di impostare l’accuratezza con cui effettuarla. Nel presente capitolo viene descritta la calibrazione del sistema, le problematiche che solleva e le soluzioni che sono state adottate per l’implementazione di ”DAQ Calibration”, il tool che automatizza il processo di calibrazione. Successivamente viene affrontato il problema della diagnostica del DAQ, necessaria per ottenere i requisiti di resilienza richiesti, presentando le soluzioni che sono state implementate e discutendone i benefici. 65 Capitolo 5. Calibrazione e Diagnostica del Sistema 5.1 Latenza delle Interruzioni Per rispettare i requisiti di sincronizzazione con il tempo universale UTC, é indispensabile poter conoscere il ritardo di generazione e di propagazione dei segnali introdotto dall’elettronica degli strumenti utilizzati. La sincronizzazione dei dati acquisiti con il tempo universale avviene grazie all’utilizzo delle interruzioni. Considerando l’ADC usato per acquisire il canale principale (Agilent E1430), la tecnica di sincronizzazione é quella descritta nella Sezione 3.4: la linea di interruzione del bus VXI viene estratta dal crate mediante una scheda custom e inviata alla scheda S80 del ricevitore satellitare ESAT GPS 100 (Sez.3.3). Come descritto nel Capitolo 3, con tale modalitá di funzionamento il sistema di acquisizione effettua la datazione dei frame acquisiti. I requisiti per il DAQ dell’esperimento AURIGA richiedono che l’errore commesso nella sincronizzazione sia dell’ordine di 1µs o inferiore e quindi, affinché questo sia rispettato, diventa essenziale conoscere i ritardi introdotti dall’elettronica che deve generare e trasmettere il segnale di interruzione. La determinazione della latenza dell’interrupt, intesa come somma di tutti i possibili contributi, avviene misurando direttamente lo sfasamento. Il segnale di interruzione proveniente dal bus VXI viene riportato all’ingresso dell’ADC E1430 che lo acquisisce, ottenendo quindi - all’inizio di ogni buffer - il segnale di interruzione relativo alla fine del buffer precedente. L’interruzione viene filtrata dall’ADC prima e dopo il campionamento per cui, una volta acquisita, perde la forma di onda quadra posseduta inizialmente e presenta un andamento distorto dovuto alla sua banda che é molto maggiore della frequenza di campionamento utilizzata per l’acquisizione. Dai buffer acquisiti si puó calcolare il ritardo utilizzando un algoritmo di signal matching [18] che provvede al confronto dell’interruzione acquisita con un segnale della stessa forma costruito via software. Affinché l’algoritmo svolga efficacemente il suo compito, é necessario che il segnale generato via software, con cui avviene il confronto, sia nella forma uguale all’interruzione e quindi deve essere filtrato con le stesse modalitá. É quindi necessario conoscere e implementare i filtri presenti all’ingresso dell’unitá Agilent E1430 (vedi Sezione 3.4). 5.1.1 Il Filtro Analogico Lo schema di acquisizione utilizzato dall’ADC Agilent E1430 é riportato in Figura 3.2, dove si nota la presenza di due filtri, uno precedente e uno successivo la conversione analogico/digitale. Il primo filtro, a monte dell’ADC, é un dispositivo analogico sempre presente la cui funzione di trasferimento puó essere selezionata programmando i registri della scheda. Lo scopo di questo dispositivo é l’eliminazione dell’errore di aliasing e quindi la forma del filtro varia a seconda che nel setup dell’acquisitore venga attivato o meno. In particolare, quando l’antialiasing viene disattivato, la risposta in frequenza del filtro analogico risulta : 66 5.1. Latenza delle Interruzioni 1 H(f ) = s Q2 (1 − c0 ) n=1 [(1 − s )(a cn − s )] ∗ c n , (5.1) s=j2πf dove i coefficienti cn , corrispondenti ai poli della funzione, sono riportati in Tabella 5.1. n 0 1 2 cn 2π 20 MHz 40 + j52 MHz 50 + j120 MHz Tabella 5.1: Coefficienti della risposta in frequenza. In Figura 5.1 sono rappresentati rispettivamente il modulo e la fase della risposta in frequenza del filtro. Si noti come, con il filtro antialiasing disattivato, l’attenuazione e il ritardo introdotti, per segnali nella banda di interesse per AURIGA, sono sostanzialmente nulli. (a) Modulo (b) Fase Figura 5.1: Risposta in frequenza del filtro analogico in ingresso all’ADC Agilent E1430, con antialiasing disattivato Se lo strumento viene impostato per rimuovere l’aliasing, la risposta in frequenza del filtro presente all’ingresso dell’acquisitore diviene: H(f ) = Q5 (1 − s s n=1 [(1 − an )(1 − a∗n )] s Q5 s s ) [(1 − )(1 − )] n=1 b0 bn b∗n , s=j2πf dove in questo caso, i coefficienti an e bn sono riportati in Tabella 5.2. 67 (5.2) Capitolo 5. Calibrazione e Diagnostica del Sistema n 0 1 2 3 4 5 an j3.4904432 · 107 j3.7024164 · 107 j4.2617433 · 107 j5.6601087 · 107 j1.0424240 · 107 bn −8.2909964 · 106 −7.5372809 · 106 + j9.0528495 · 106 −5.7386094 · 106 + j1.6425689 · 107 −3.7379055 · 106 + j2.1470763 · 107 −2.0233064 · 106 + j2.4424917 · 107 −6.3191539 · 105 + j2.5754323 · 107 Tabella 5.2: Coefficienti della risposta in frequenza. In Figura 5.2 viene riportato l’andamento di modulo e fase della risposta in frequenza del filtro. A differenza della condizione precedente, si nota come, con il filtro antialiasing attivato, il dispositivo si comporta come un buon passa-basso nella banda utile per l’acquisitore, introducendo inoltre uno sfasamento ridotto; il comportamento oscillatorio della fase all’estremitá del grafico é poco significativo per l’acquisizione dato che, in quella zona, si é giá oltre la massima frequenza di campionamento dell’ADC. (a) Modulo (b) Fase Figura 5.2: Risposta in frequenza del filtro analogico in ingresso all’ADC Agilent E1430, con antialiasing attivato Le frequenze di campionamento usate nell’esperimento AURIGA sono ridotte rispetto alle capacitá dell’ADC. Tipicamente il segnale proveniente dal rivelatore viene campionato a circa 5KHz, prevedendo comunque la possibilitá di aumentare tale valore fino a 10KHz o 20KHz, a fronte di un ADC in grado di raggiungere i 10MSa. Nella banda utilizzata per l’acquisizione, quindi, l’apporto del filtro analogico antialiasing alla distorsione del segnale é praticamente nullo. Come si vedrá in 68 5.1. Latenza delle Interruzioni seguito, anche un segnale ad alta frequenza come l’interruzione del bus VXI viene solo leggermente alterato nella forma. 5.1.2 Il Filtro Digitale Dopo essere stato trattato dal filtro antialiasing, il segnale viene convertito in digitale dall’ADC a 23 bit presente nella scheda Agilent E1430. Il campionamento avviene a 10MHz; la decimazione dei dati per ottenere la frequenza di campionamento impostata avviene in un momento successivo, ad opera del DSP posto all’uscita dell’ADC, che implementa un filtraggio digitale. La risposta in frequenza del filtro digitale é data da: HN f − f0 fc ! 1 = QN z 3 +2z 2 +2z+2 5 n=1 4z 3 +2z z=e se N = 0 j2n π f −f0 fc se N > 0 (5.3) dove i parametri f0 e fc sono rispettivamente la frequenza attorno alla quale é stata centrata l’acquisizione (zoom frequency) e la frequenza di campionamento (10MHz nel sistema usato per AURIGA). Il parametro N é il selettore di banda, cioé il valore impostato nel registro dello strumento che indica al DSP quante volte deve essere decimato il segnale (vedi Sezione 3.4) e quindi la frequenza di campionamento finale voluta. (a) Modulo (b) Fase Figura 5.3: Risposta in frequenza del DSP alla frequenza di campionamento finale di 4882.8125 Hz In Figura 5.3 sono stati riportati anche per questo filtro il modulo e la fase della risposta in frequenza. Si noti come il modulo approssimi un passa-basso andando ad eliminare le componenti del segnale in ingresso oltre le frequenze 69 Capitolo 5. Calibrazione e Diagnostica del Sistema richieste dalla configurazione dello strumento (circa 2441Hz nella configurazione corrispondente alla Figura 5.3); lo sfasamento invece rimane contenuto entro le prime due decadi, dopodiché aumenta giungendo ad incidere marcatamente verso la fine della banda utile. Com’era ovvio, nella cascata dei due filtri, il maggior contributo alla deformazione del segnale avviene ad opera del DSP, la cui implementazione di conseguenza richiede la maggiore accuratezzza possibile. 5.1.3 Stima della Latenza La stima della latenza delle interruzioni sollevate dall’ADC Agilent E1430 avviene collegando la linea di interruzione del bus VXI da esso impiegata all’ingresso dell’ADC; in questa configurazione in ogni buffer viene acquisito il segnale di interruzione relativo alla fine del buffer precedenete, come del resto giá indicato. Figura 5.4: Segnale di interruzione (in logica positiva). In ascissa viene riportata la posizione del campione relativamente all’inizio del buffer che ha una durata di circa 3.355s e viene campionato alla frequenza di 10MHz. Per applicare efficacemente l’algoritmo di signal matching deve essere generato, via software, un segnale con le medesime caratteristiche dell’interruzione. Questo é costituito da un impulso rettangolare molto stretto (vedi Figura 5.4) che deve venir filtrato per ottenere la medesima forma del segnale acquisito dall’ADC con cui verrá confrontato. Allo scopo sono state implementate due classi, AnalogFilter e DigitalFilter, che implementano rispettivamente il filtro analogico e il filtro digitale utilizzati nell’ADC Agilent E1430, realizzando tutte le caratteristiche disponibile nel convertitore. Nell’effettuare la stima delle latenze quindi, il primo passo consiste nell’applicare il filtro analogico al segnale di interruzione da utilizzare per il confron70 5.1. Latenza delle Interruzioni to. In Figura 5.5 é riportato il segnale di interruzione dopo essere stato filtrato con AnalogFilter; si vede, come anticipato, che il filtro analogico provoca una distorsione minima del segnale, nonostante la sua banda. Figura 5.5: Segnale di interruzione filtrato da AnalogFilter. In ascissa viene riportata la posizione del campione relativamente all’inizio del buffer che ha una durata di circa 3.355s e viene campionato alla frequenza di 10MHz. Il segnale cosı́ ottenuto va successivamente filtrato mediante DigitalFilter, con impostato il selettore di frequenza utilizzato nell’acquisizione (N=11). Il risultato del filtraggio digitale in questo caso é molto diverso dal segnale originario dato che, oltre tutto, questo viene decimato 11 volte fino al raggiungimento della frequenza di campionamento che é stata impostata per l’acquisizione. L’impulso corrispondente ad un’interruzione in uscita al DSP e quindi dopo la cascata dei due filtri ha la forma riportata in Figura 5.6. Ottenuto finalmente l’omologo del segnale acquisito puó avere inizio l’algoritmo di signal matching che calcola la convoluzione c(t) = f ∗ g(t) = Z T f (τ )g(t − τ )dτ , (5.4) dove con f (t) e g(t) vengono indicati rispettivamente il segnale acquisito e quello generato via software; l’intervallo di integrazione T é costituito da un singolo buffer. Il valore della latenza dell’interrupt per un buffer corrisponde al tempo t0 in cui il valore della convoluzione é massimo. In altre parole l’algoritmo di signal matching ricerca il ritardo da applicare al segnale generato via software per massimizzare l’area della curva prodotto tra f (t) e g(t). Operando su segnali discreti, la traslazione di g(t) ha un quanto temporale pari al periodo di campionamento, permettendo quindi una granularitá di circa 204.8µs, troppo elevata per gli scopi della calibrazione. Una ricerca piú fine del 71 Capitolo 5. Calibrazione e Diagnostica del Sistema Figura 5.6: Segnale di interruzione filtrato DigitalFilter. In ascissa viene riportata la posizione del campione relativamente all’inizio del buffer che ha una durata di circa 3.355s e viene campionato alla frequenza di 4882.8215Hz. massimo si puó articolare in due passi: un primo in cui, spostandosi di valori multipli del periodo di campionamento, si trovano i due campioni tra i quali si verifica il massimo e un secondo nel quale, interpolata la convoluzione tra i campioni trovati, si intensifica la ricerca utilizzando un passo inferiore. La parte piú delicata di questo processo é l’interpolazione, infatti con questo metodo é possibile ottenere risultati con una precisione arbitraria a patto peró di aver utilizzato la corretta tecnica di interpolazione, in mancanza della quale la diminuzione della granularitá puó rivelarsi inefficace. All’aumentare della complessitá dell’interpolazione inoltre cresce il numero di punti necessari ad accrescerne la precisione e quindi l’algoritmo diviene piú dispendioso in termini di tempo di calcolo, rimanendo comunque limitato dalla forma del fit adottata. La soluzione scelta per il tool “DAQ Calibration” permette di ottenere deterministicamente la precisione richiesta eliminando il problema dell’interpolazione. In esso, dopo aver effettuato la convoluzione tra i due segnali {Cn }, si procede al trattamento del risultato con un filtro interpolatore dato da [18] Sk = N X n=1 Cn sin[π( FFC0 k − n)] C π( FFC0 k C − n) U≡ FC FC0 (5.5) dove Sk é il segnale interpolato alla frequenza di campionamento FC0 , FC é la frequenza di campionamento originale e U é il rapporto di “up-conversione”; gli estremi della sommatoria sono dati dalla dimensione del buffer di partenza. Con questa modalitá di operare é possibile ottenere la precisione richiesta dall’utente semplicemente impostando il rapporto FC /FC0 . L’algoritmo di signal matching 72 5.2. Ampiezza e Offset poi, eseguendo la ricerca del massimo su Sk , nel nuovo dominio, fornisce la latenza dell’interruzione secondo i requisiti. 5.2 Ampiezza e Offset La calibrazione del sistema richiede, oltre alla stima dei ritardi, l’uso efficiente della dinamica dell’ADC. La scheda Agilent E1430 prevede l’utilizzo di diversi valori di fondo scala, da ±8V a ±7.8125mV , tra i quali l’utente deve scegliere prima di avviare l’acquisizione. Infatti, sebbene la provenienza del segnale da acquisire non cambi, la sua ampiezza massima puó variare in seguito al setup dello SQUID o altri parametri, ragione per cui, l’utente deve di volta in volta scegliere il miglio setup dell’ADC. Dalla configurazione dello SQUID inoltre non é possibile conoscere a priori l’ampiezza del segnale in uscita con la sufficiente precisione, per cui l’utente é spesso costretto ad iniziare un’acquisizione per verificare che i parametri scelti siano adeguati ai livelli del segnali. Per queste ragioni si é scelto di automatizzare il processo di selezione del fondo scala integrandolo nel tool “DAQ Calibrator”, permettendo quindi, attraverso una misurazione preventiva, di impostare il fondo scala adeguato prima dell’inizio dell’acquisizione. Attraverso una serie di opzioni impostabili dall’utente (vedi Sezione 5.3) inoltre, questo puó selezionare quale scarto utilizzare rispetto al segnale presente all’ingresso e con che precisione realizzare la misura. Un alto parametro importante per l’acquisizione é l’offset del segnale presente all’ingresso dell’ADC. Puó capitare infatti che l’elettronica utilizzata per il trattamento del segnale introduca un offset del livello dc o che sia lo stesso ADC a provocare lo scostamento. Questo, sebbene piccolo, puó diminuire la dinamica del sistema sia perché impedisce di sfruttare correttamente l’intervallo di tensioni rappresentabili sia perché un segnale fuori massa puó causare delle interferenze nell’acquisizione: gli accoppiamenti tra il canale principale del DAQ e le linee di interruzione del bus VXI presentati nella Sezione 4.2.1 ne sono un esempio. Per queste ragioni la scheda Agilent E1430 prevede la possibilitá di ridurre l’offset del segnale in ingresso attraverso la programmazione del registro Input Offset (indirizzo 816 ). Nel tool di calibrazione é stata quindi integrata la possibilitá di ridurre l’offset, come nel caso del fondo scala, attraverso una breve acquisizione di test. Questa puó essere realizzata con l’ingresso in corto circuito, possibilitá fornita dalla scheda E1430 per annullare l’offset da essa introdotto, oppure utilizzando il segnale proveniente dal rivelatore e quindi abbattendo l’offset introdotto da tutta l’elettronica della catena di acquisizione. 5.3 DAQ Calibration Il tool “DAQ Calibration” si occupa della calibrazione del canale principale utilizzando le soluzioni descritte nelle precedenti sezioni. L’implementazione é avvenuta utilizzando il framework QT 3.3.3, particolarmente l’intera costruzione 73 Capitolo 5. Calibrazione e Diagnostica del Sistema dell’interfaccia - assieme alla scrittura di tutto il codice interno all’applicativo é stata sviluppata utilizzando il QT Designer 3.3.3 di Trolltech. Figura 5.7: Finestra principale di “DAQ Calibrator”. All’avvio il programma si presenta come in Figura 5.7, con una finestra divisa in 4 sezioni principali: Configurazione Iniziale: La parte superiore sinistra della finestra é occupata dall’impostazione corrente dell’ADC. I parametri visualizzati corrispondono al setup dell’ultima acquisizione e vengono automaticamente letti dal file di configurazione dell’ADC all’avvio del programma. Tipo di Calibrazione: La parte superiore destra invece contiene le impostazioni sull’esecuzione del tool, in particolare con questi controlli l’utente puó selezionare quale tipo di calibrazione effettuare e con che precisione. Tempo Stimato: Nel riquadro inferiore sinistro si trovano le informazioni sulla durata dell’acquisizione necessaria alla calibrazione richiesta. In particolare vengono calcolati il numero di campioni e quindi il tempo necessario affinché vengano svolti tutti i test richiesti con la precisione impostata. Comandi: L’ultimo riquadro in basso a destra raccoglie i pulsanti di controllo che permettono di lanciare la calibrazione, salvarne il risultato o terminare l’esecuzione del programma. I parametri relativi al setup dell’ADC possono essere modificati a discrezione dell’utente, nel qual caso le successive verifiche di calibrazione da essi dipendenti verranno effettuate nella nuova configurazione. 74 5.3. DAQ Calibration Figura 5.8: Calibrator”. Sequenza di calibrazione utilizzata da “DAQ La sequenza di calibrazione ottimale é riportata in Figura 5.8 ed é la stessa adottata da “DAQ Calibration”. L’abbattimento dell’offset infatti viene eseguito prima della determinazione del fondo scala, altrimenti quest’ultimo verrebbe stimato su di un segnale asimmetrico rispetto allo zero; la configurazione dello strumento per sfruttare pienamente la dinamica (fondo scala e offset) infine é condizione necessaria per ottenere la massima precisione nella conversione e quindi la stima della latenza delle interruzioni viene effettuata come ultimo passo, quando lo strumento é calibrato in ampiezza. A discrezione dell’utente alcune fasi possono essere omesse deselezionandole nel riquadro superiore destro della finestra principale di “DAQ Calibration”. Le fasi non selezionate vengono escluse dalla sequenza di calibrazione supponendo che per quei particolari aspetti la configurazione corrente oppure quella fornita in modo manuale dall’utente sia ottimale. Impostati tutti i parametri desiderati si puó dare inizio alla calibrazione premendo il tasto Calibrate. Il primo passo, costituito dalla riduzione dell’offset, consiste nella semplice acquisizione di √ un numero di pacchetti dipendente dalla precisione richiesta (precisione ∼ 1/ numero campioni) seguito dal calcolo del valore medio del segnale che determina l’offset. Questo viene salvato in una struttura di configurazione (AntCfg) che verrá successivamente caricata dal processo ANT, il quale lo utilizza per impostare il registro Input Offset. Interessante é la possibilitá di eseguire l’abbattimento dell’offset con un segnale di ingresso. Normalmente l’elettronica che tratta il segnale non dovrebbe introdurre alcuno scostamento rispetto alla massa, anzi, spesso il trovarne uno é sintomo di malfunzionamento, tuttavia la calibrazione dell’offset pué essere effettuata anche basandosi sul segnale di ingresso, riportando in massa un eventuale segnale disturbato dalla strumentazione. Ridotto l’offset il tool esegue la calibrazione del fondo scala (Figura 5.9(a)) che consiste nell’acquisizione di un numero di pacchetti definito dall’utente dai cui dati viene ricavata una media quadratica (RMS per la precisione). Il valore determinato, moltiplicato per la fattore impostabile dall’operatore, viene utilizzato come fondo scala e salvato nella struttura di configurazione dello strumento AntCfg per essere successivamente utilizzato Ultimo passo consiste nella determinazione della latenza delle interruzioni (Figura 5.9(b)) che si articola in tre punti: • Generazione e filtraggio del segnale di interruzione da utilizzare per il confronto 75 Capitolo 5. Calibrazione e Diagnostica del Sistema • Acquisizione di un numero di buffer (e quindi di interruzioni) impostabile dell’utente • Determinazione per ogni buffer della latenza dell’interruzione e successiva media dei valori ricavati. (a) Calibrazione del Fondo Scala (b) Stima della latenza delle interruzioni Figura 5.9: Screenshoots del tool “DAQ Calibration” durante il suo utilizzo Il tool di calibrazione é completato da un insieme di opzioni - a cui si puó accedere mediante il menú Options → Program Options (CTRL+O) - che lo rendono versatile, permettendo di adattarsi ad eventuali variazioni nel setup dell’esperimento. La prima finestra che compare richiamando le opzioni é presentata in Figura 5.10(a). In essa é possibile impostare i parametri relativi alla determinazione del fondo scale, precisamente quanti pacchetti devono essere utilizzati per la calibrazione e il fattore da moltiplicare per l’RMS trovato. Trovano spazio nella medesima finestra anche il numero di pacchetti da acquisire per la stima della latenza dell’interrupt e la precisione con cui deve essere effettuata (periodo di campionamento del segnale interpolato). La presenza dei parametri “numero di pacchetti per” relativamente al fondo scala e alle interruzioni é dovuta alla relazione tra precisione e quantitá di dati da acquisire. Essendo la dipendenza quadratica infatti, l’impostazione di una precisione troppo spinta porta alla necessitá di acquisire un numero molto elevato di campioni, particolarmente nel caso delle interruzioni dove é presente un solo segnale utile per buffer. Ad esempio, per ottenere una precisione pari 10% nella stima dei ritardi é necessario acquisire ben 100 buffer che si traducono, lasciando inalterata la configurazione dell’ADC rispetto al normale modo di operare, in piú di 5 minuti di acquisizione. Si é scelto quindi di utilizzare la precisione presente nella schermata principale per il calcolo dei pacchetti da acquisire per la sola calibrazione dell’offset, mentre viene data all’utente la possiblitá di impostare manualmente la durata delle acquisizioni per gli altri tipi di calibrazione. 76 5.4. Risultati (a) Opzioni relative alla calibrazione (b) Opzioni del programma (c) Opzioni relative al segnale di interruzione generato via software Figura 5.10: Opzioni del tool “DAQ Calibration” In Figura 5.10(b) sono mostrate le opzioni relative al funzionamento del programma tra le quali viene data la possibilitá all’utente di modificare la sequenza di calibrazione. L’ultima finestra, mostrata in Figura 5.10(c), presenta le opzioni relative al segnale di interruzione che viene generato per il confronto. In essa l’operatore é libero di modificare i parametri significativi per il segnale presentato in Figura 5.4, particolarmente il numero di campioni da utilizzare per la rappresentazione iniziale dell’interruzione, la sua durata e il ritardo rispetto all’inizio del buffer1 . Sempre a livello di sperimentazione é stata fornita la possibilitá di variare i livelli di tensione utilizzati da segnale anche se, nel calcolo della convoluzione, cambiamenti a questi parametri risultano essere poco significativi. 5.4 Risultati A conclusione del capitolo vengono presentati i risultati ottenuti dall’utilizzo delle tecniche descritte e del tool che le implementa. Il compito piú semplice della calibrazione é la determinazione del fondo scala 1 Il filtraggio presentato nella Sezione 5.1.3 viene eseguito su di un singolo buffer e quindi, spostando il segnale verso le sue estremitá possono venir eseguiti dei troncamenti. La possibilitá di impostare il ritardo rispetto all’inizio del buffer viene data appunto per poter sperimentare la migliore configurazione 77 Capitolo 5. Calibrazione e Diagnostica del Sistema da utilizzare per l’acquisizione. Questa, variando il parametro “Numero di pacchetti da acquisire”, puó essere ottenuta con precisione arbitraria, a discrezione dell’operatore. Anche per l’abbattimento dell’offset é possibile impostare la precisione - nella finestra principale - con cui si vuole ottenere il risultato ed automaticamente ottenere un’acquisizione della durata necessaria2 . Il valore ricavato da “DAQ Calibration” viene poi utilizzato dal processo ANT per l’impostazione del registro Input Offset, ottenendo da parte dell’ADC l’introduzione di una tensione DC secondo la relazione Offset = V 2 N −1 , 211 (5.6) dove V é lo Scale Factor per il fondo scala scelto e N é costituito dai 12 bit meno significativi del registro Input Offset. Sebbene la stima dell’offset sia ottenibile con una precisione arbitraria, in definitiva la precisione con cui puó essere variato dipende dall’ADC, essendo questo ottenuto come multiplo di V /212 . Utilizzando ad esempio il fondo scala di ±0.25V come presentato nei vari screenshot, si ha che il valore dello scale factor é pari a V = 0.576794 e quindi la minima quantitá con cui puó essere impostato l’offset é pari a 0.576794/212 ' 141µV . Figura 5.11: Stima della latenza delle interruzioni: risultato della calibrazione. Per la stima delle latenze introdotte dall’elettronica infine, il valore determinato viene memorizzato nella struttura AntCfg per essere successivamente utilizzato dal software di analisi, la precisione con cui si puó ottenere la stima quindi é li2 Il calcolo viene effettuato per eccesso dato che l’acquisizione consiste in un numero intero di buffer di dimensione pari a 16 KSa 78 5.5. Diagnostica del Sistema mitata solamente dalla rappresentazione numerica adottata e dal tempo che si vuole impiegare per la sua esecuzione. In Figura 5.11, a titolo di esempio, é riportata la stima dei ritardi introdotti dal nuovo DAQ, realizzata con un’acquisizione di 100 buffer e quindi con una precisione di circa il 10%. Il valore trovato per i ritardi e all’incirca 1102µs come confermato dalle misurazioni manuali che erano state effettuate in precedenza. Con il numero di buffer impostato si ottiene inoltre una deviazione standard di circa 173ns che deve essere considerata nel computo dell’errore che viene commesso - complessivamente - nella sincronizzazione con il tempo universale. Quest’ultimo puó essere maggiorato3 dalla somma degli errori di sincronizzazione e quindi, aggiungendo alla stima dei ritardi l’errore di temporizzazione del ricevitore satellitare pari a 70ns, si ottiene complessivamente un errore di circa 250ns, perfettamente compatibile con i requisiti dell’esperimento che fissano il massimo errore ad un µs. 5.5 Diagnostica del Sistema Il rivelatore AURIGA, facendo parte di un osservatorio di onde gravitazionali, richiede che l’acquisizione possa essere mantenuta operativa per intervalli di tempo molto lunghi, dell’ordine di mesi, assicurando una buona stabilitá di tutti i parametri del sistema. Come indicato nei capitoli precedenti, la necessitá di ottenere la massima resilienza del DAQ ne ha condizionato le scelte sia hardware che software. In un sistema di elaborazione tuttavia é sempre possibile che si verifichi un qualche tipo di problema come un malfunzionamento hardware oppure una qualche anomalia in un processo esterno al DAQ, ad esempio il sistema operativo. Per queste ragioni é indispensabile, dopo aver implementato quanto possibile per garantire il buon funzionamento del sistema, integrare il DAQ con qualche metodologia di controllo che permetta di riscontrare un malfunzionamento nel minor tempo possibile e faciliti il riconoscimento della causa che l’ha provocato. Dalla precedente versione del DAQ é stato previsto un apposito processo (LOG) che si occupa della registrazione di tutti i messaggi di errore generati dal software componente il sistema di acquisizione, assieme ad un indice di gravitá ad essi associato. L’interfaccia grafica (GUI) inoltre prevede la possibilitá di generare degli allarmi sonori in seguito alla cattura, da parte del logger, di un errore con un indice di gravitá superiore ad una soglia stabilita dall’utente. Questo sistema di diagnostica, sebbene utilizzato molto diffusamente nel settore informatico per il controllo del funzionamento del software, non si é rivelato del tutto sufficiente alle richieste di AURIGA. In particolare gli aspetti rilevati come maggiormente carenti e che hanno suggerito lo sviluppo di nuovi strumenti sono • L’affidare ad un processo del DAQ il controllo del funzionamento del sistema 3 La maggiorazione ottenuta come somma degli errori é imposta dall’assenza di errori con distribuzione gaussiana 79 Capitolo 5. Calibrazione e Diagnostica del Sistema stesso. In questa modalitá infatti, il logger puó svolgere il suo computo fintanto che il sistema di acquisizione rimane operativo. Nel caso di un blocco del computer o dei processi costituenti il DAQ il logger non puó funzionare e quindi si perde la possibilitá di intercettare il malfunzionamento. • La diagnostica, come implementata dal processo LOG, é limitata al solo controllo del software. Non vi é alcuno strumento che verifica la bontá dei dati acquisiti. Per queste ragioni si é deciso di aggiornare il software di diagnostica, affiancando al logger altri strumenti che ne completano le funzionalitá. Sono state quindi sviluppate due soluzioni indipendenti che permettono la diagnostica del sistema sia off-line che on-line. 5.6 Diagnostica Off-Line Con diagnostica off-line va inteso il processo di verifica, da parte del software di analisi o di altri tool appositamente progettati, della bontá dei dati acquisiti, permettendo di controllare a posteriori il comportamento dell’intera catena di acquisizione. Figura 5.12: Schema readout del rivelatore AURIGA dove sono evidenziati barra, trasduttore, circuito risonante elettrico e amplificatore SQUID In Figura 5.12 é rappresentato il readout utilizzato nel rivelatore AURIGA. Il segnale in uscita dal trasduttore capacitivo viene inviato all’induttanza superconduttiva LP che é accoppiata all’ingresso dell’amplificatore SQUID mediante il circuito costituito da LS e LSQ . In questa maglia é stata introdotta un’ulteriore induttanza che permette, mediante Mcal , di iniettare un segnale all’ingresso dello SQUID. La diagnostica off-line é in grado di sfruttare il readout del rivelatore per verificare continuamente il comportamento della catena di acquisizione. Con una periodicitá prestabilita, viene posto all’ingresso dello SQUID un segnale che, amplificato, viene acquisito dal DAQ al pari dell’uscita del trasduttore; in seguito il software di analisi puó controllare i parametri relativi alla catena di trasduzione 80 5.7. Diagnostica On-Line e puó inoltre verificare se il sistema é rimasto in condizioni di linearitá per tutta la durata del RUN evidenziando eventuali saturazioni dell’elettronica. L’unico requisito affinché la diagnostica funzioni é la conoscenza dell’esatto istante di tempo in cui il segnale é stato iniettato. La precisione della temporizzazione viene realizzata utilizzando un generatore di funzione il cui clock é fornito dal ricevitore satellitare, ottenendo in questo modo la stessa precisione del DAQ. La generazione del segnale di test avviene in seguito alla ricezione, da parte del generatore, di un numero impostabile di fronti di salita del PPS, mantenendo quindi i requisiti di sincronizzazione. A tempi regolari tk stabiliti dall’operatore (ad esempio ogni ora), il generatore comanda l’invio di un segnale impulsivo di tipo sine-gaussian x(t) = A sin(ω0 (t − tk ))e− (t−tk )2 2∆2 , (5.7) dove ∆ é la durata dell’impulso e ω0 é la sua frequenza centrale, che viene amplificato dallo SQUID e acquisito dal DAQ. Per ottenere le informazioni sul tempo di generazione del segnale si é scelto di utilizzare una delle linee di ingresso alla scheda S80, con modalitá analoghe alla temporizzazione degli ADC utilizzati nel sistema di acquisizione. La linea che comanda l’invio del segnale quindi viene posta all’ingresso del ricevitore GPS ottenendo in questo modo per ogni impulso prodotto il timestamp relativo al suo inizio. Sono inoltre stati modificati due processi del sistema di acquisizione per rendere possibile il trattamento corretto della informazioni di temporizzazione relative agli impulsi di calibrazione. Nel processo GPS é stata aggiunta un’apposita coda per la memorizzazione dei timestamp relativi alla generazione dei segnali sinegaussian. In questo modo GPS mantiene un elenco dei tempi di arrivo dei segnali di test separato dalle code relative ad altri eventi e permette ad un processo esterno di richiederli ordinatamente. Il processo BLD deve tener traccia nella costruzione dei frame in formato IGWD dell’eventuale presenza di impulsi di calibrazione, per cui é stato modificato di conseguenza l’algoritmo di interrogazione dei front-end. All’arrivo di un nuovo frame viene controllata la presenza di un timestamp relativo al canale della scheda S80 connesso al generatore di impulsi di calibrazione. In tal caso il frame viene marcato come contenente un impulso di calibrazione utilizzando una struttura FrHistory all’interno della quale inoltre ne viene memorizzato il tempo di invio. 5.7 Diagnostica On-Line Dovendo mantenere operativa la presa dati per lunghi periodi senza alcuna interruzione, diventa estremamente importante poter diagnosticare in ogni momento il sistema di acquisizione. Inoltre, dovendo confrontarsi con il mondo reale in cui, nonostante l’accuratezza della progettazione, possono verificarsi malfunzionamenti (possibilmente esterni al sistema) che impediscono al DAQ il suo normale funzionamento, é essenziale che questi fallimenti vengano riscontrati nel 81 Capitolo 5. Calibrazione e Diagnostica del Sistema minor tempo possibile onde massimizzare il duty-cycle dell’esperimento. Il sistema di diagnostica deve inoltre facilitare all’operatore il compito di riconoscere le possibili cause che hanno portato al malfunzionamento. La versione precedente del DAQ prevedeva il processo LOG come forma di diagnostica on-line del sistema. Esso si occupa della raccolta e memorizzazione dei messaggi di errore che ogni processo del DAQ puó generare. Tale tool si rivela insufficiente per la diagnostica completa del sistema soprattutto perché fa parte del sistema stesso e quindi, al verificarsi di situazioni di “crash”, non puó avvisare l’utente dell’accaduto. 5.8 DAQ Control Nella versione del DAQ oggetto di questa tesi, oltre al processo logger é stato implementato un sistema di controllo remoto che, utilizzando CORBA per le comunicazioni, provvede ad interrogare periodicamente i processi del DAQ e a verificarne lo stato di funzionamento. Il nuovo strumento ha inoltre permesso di aggiungere un ulteriore livello di resilienza nella diagnostica dei malfunzionamenti prevedendo la possibilitá di inviare messaggi di avviso qualora si verifichi una qualche anomalia. Lo sviluppo dell’applicativo si é articolato in due fasi, la prima delle quali é stata utilizzata per il test del sistema di comunicazione realizzando una versione ‘ridotta della diagnostica. Tale verifica é imposta dalla necessitá di integrazione con gli strumenti software utilizzati nei laboratori di AURIGA, particolarmente il middleware omniORB la cui versione installata nei sistemi di calcolo é rimasta quella del precedente sistema di acquisizione (2.3) mentre quella utilizzata dal nuovo DAQ é la 4.0.3. Le differenze tra le due release sono importanti e l’integrazione completa della comunicazione tra i software che le utilizzano é tuttaltro che semplice. In particolare nella versione 2.3 non esiste alcuna gestione degli errori di comunicazione, cosa invece implementata dettagliatamente nella versione 4, rendendo quindi obbligatorio per i client l’adozione delle strategie necessarie alla gestione di problemi come la mancata risposta di un computer remoto (caso particolarmente interessante dato che corrisponde alla situazione in cui si verifica uno stallo del sistema di acquisizione). La prima versione del sistema di diagnostica remota quindi é consistita nello sviluppo di un tool - per vari aspetti monolitico - il cui compito constava nel verificare lo stato di funzionamento dei processi del DAQ, effettuato mediante un controllo sullo stato delle code associate ad ogni processo, e nell’implementazione di un sistema di allarmi che entrava in funzione al verificarsi di un’anomalia. É stato inoltre sviluppato uno strumento in grado di avvisare gli utenti via posta elettronica del verificarsi di un qualche malfunzionamento. Il banco di prova costituito dalla prima applicazione, oltre a costituire il test delle strategie di controllo delle comunicazione implementate, ha stimolato le idee che hanno portato alla versione attuale del sistema “DAQ Control”. 82 5.8. DAQ Control 5.8.1 Architettura del sistema La molteplicitá delle operazioni indipendenti da svolgere assieme alla generalitá delle stesse ha suggerito l’adozione di un sistema OOP totalmente multithread, basato sull’astrazione fornita dalla libreria omniThread [22], componente del pacchetto omniORB. Figura 5.13: Schematizzazione dei principali oggetti implementati nel tool DAQ Control, assieme alle relazioni tra essi intercorrenti. Le frecce non vanno intese secondo le specifiche UML ma semplicemente come relazioni “di utilizzo”. In Figura 4 5.13 sono stati rappresentati i principali oggetti che sono attualmente implementati nel controllo remoto. Il nucleo delle funzionalitá di DAQ Control é realizzato dall’oggetto ctrlCore, che implementa le operazioni di gestione dei controlli da effettuare. Al suo interno é presente un vettore - thVector - che tiene traccia di tutti gli oggetti che implementano i singoli controlli del DAQ. ctrlCore implementa i metodi necessari alla creazione ed eliminazione di nuovi processi di diagnostica, gestisce le operazioni di avvio e shutdown di ogni controllo e permette di conoscere lo stato degli oggetti istanziati, inteso sia come stato di funzionamento della proprietá controllata che come stato in cui si trova l’oggetto controllante. 4 Lo stile grafico utilizzato é simile all’UML, tuttavia la rappresentazione ha un significato diverso. Gli oggetti sono rappresentate assieme alle relazioni tra essi intercorrenti. Le frecce non vanno intese secondo le specifiche di UML ma semplicemente come una relazione “di utilizzo” 83 Capitolo 5. Calibrazione e Diagnostica del Sistema Ogni operazione di diagnostica viene implementata da un oggetto di tipo ctrlThread, a cui viene associato, all’atto della creazione, un processo remoto del DAQ con cui puó mettersi in comunicazione. Questa avviene secondo parametri impostabili dall’utente: creato l’oggetto é possibile indicare l’intervallo da utilizzare fra le comunicazioni e il timeout oltre il quale una trasmissione va considerata come fallita. ctrlThread mantiene inoltre al suo interno alcune utili informazioni ausiliarie come lo stato attuale del processo controllato, il timestamp relativo alla creazione e all’ultimo avvio del processo di diagnostica; al suo interno é inoltre contenuto il puntatore a ctrlMonitoringThread, generalizzazione del thread contenente il processo di diagnostica, ottenendo cosı́ il preannunciato ambiente multi-thread in cui i processi istanziati sono liberi di evolvere indipendentemente. Il processo di diagnostica vero e proprio é affidato agli oggetti ctrlRunControl e ctrlRunControlMonitor i quali implementano in due thread separati il controllo dello stato di un processo remoto. La necessitá di due thread distinti é data dal bisogno di gestire gli errori di comunicazione nel caso si scelga di far girare il tool con la libreria omniORB 2.3. Mancando in essa la possibilitá di gestire i timeout di comunicazione si é optato per realizzare due thread sincronizzati mediante un semaforo. Ad ogni ciclo di diagnostica ctrlRunControl invoca la partenza di ctrlRunControlMonitor e successivamente si mette in attesa con un timed wait su di un semaforo comune ai due oggetti. A ctrlRunControlMonitor é affidata la comunicazione effettiva con il processo remoto; ad ogni avvio esso richiede - mediante le librerie del processo DSC - lo stato della coda associata al processo che deve controllare. Se ottiene una qualche risposta archivia il risultato e segnala il successo della comunicazione con il semaforo comune, a questo punto ctrlRunControl si riattiva e verifica se il risultato ottenuto da ctrlRunControlMonitor indica un corretto funzionamento del processo del DAQ. Un eventuale errore di comunicazione viene gestito diversamente a seconda della libreria omniORB installata nel sistema su cui viene eseguito DAQ Control. Se la versione adottata é la 4, le comunicazioni possono essere gestite con un timeout e quindi, nel caso di un blocco del sistema remoto, dopo il timeout impostato l’invocazione del metodo remoto ha come risultato il sollevarsi di un’eccezione. Se la versione in uso invece é la 2.3 il timeout viene ottenuto dal semaforo precedentemente citato; in questo caso ctrlRunControl dopo il valore impostato per il timed wait, viene riattivato riscontrando l’assenza di una segnalazione da parte di ctrlRunControlMonitor che viene interpretata come un errore di comunicazione. Il tipo di diagnostica implementata dai due precedenti oggetti consiste nel verificare la continuitá del funzionamento dell’acquisizione. Essi periodicamente vanno a controllare lo stato delle code remote, inteso come numero di frame che vi sono stati accodati, andando a segnalare una qualche anomalia se riscontrano un blocco nella generazione di nuovi frame per un intervallo di tempo impostabile dall’utente. É stato previsto di realizzare online anche un controllo di linearitá della catena di acquisizione che tuttavia, allo stato attuale, non é ancora ultimato. La struttura progettata rispecchia esattamente quella degli oggetti ctrlRunControl 84 5.8. DAQ Control e ctrlRunControlMonitor in cui, nel secondo, vengono ricevuti i frame dalla coda remota e viene effettuato il controllo di linearitá. L’architettura OOP progettata permette di aggiungere ulteriori forme di diagnostica online semplicemente andando ad implementare gli ultimi oggetti descritti ossia l’omologo di ctrlRunControlMonitor che implementa la comunicazione col processo remoto e l’omologo di ctrlRunControl che, dai valori forniti dalla comunicazione, stabilisce lo stato di funzionamento del processo remoto. Tutte le interazioni del sistema di diagnostica con il mondo esterno sono effettuate mediante i metodi forniti dall’interfaccia di ctrlCore. Per facilitarne l’utilizzo e permetterne un uso piú ampio é stata implementata una console virtuale con l’oggetto ctrlConsole. Si tratta di un piccolo interprete per un linguaggio molto semplice appositamente definito per il sistema di diagnostica; tale oggetto puó interagire con ctrlCore con semplici comandi testuali. E’ possibile creare a run-time un nuovo oggetto che effettua le diagnostiche previste, associarlo al processo remoto, richiederne l’avvio, lo stop e lo stato attuale. L’utilizzo di un interprete di comandi come quello implementato nella console permette inoltre la possibilitá di creare script di configurazione con il medesimo linguaggio adottato per la console, facilitando quindi la possibilitá di impostare la diagnostica in modo automatizzato. Il meccanismo adottato per la gestione dei flussi di ingresso e di uscita inoltre, essendo realizzato con un sistema di callback, permette l’uso dello stesso oggetto console in diversi ambiti, semplicemente al costo d’implementazione delle funzioni di ingresso e uscita. Con questa modalitá diviene possibile realizzare una console remota dal comportamento identico a quella locale, inoltre viene facilitata l’integrazione con altri software rendendo possibile, ad esempio, operazioni come il comando di DAQ Control da una pagina WEB. A completamento dell’applicativo sono stati realizzati altri oggetti che si occupano di verificare lo stato della diagnostica e di allertare gli utenti in caso di errori. Nella Figura 5.13 é mostrato solo l’oggetto ctrlWatchDog, il piú semplice della categoria. Esso, costituito da un thread a se stante, si occupa di controllare periodicamente lo stato del sistema di diagnostica per verificare se qualcuno dei thread di controllo ha riscontrato anomalie, nel qual caso l’utente viene allertato mediante la console. É previsto un sistema analogo per la gestione degli avvisi via posta elettronica, giá implementato nella prima versione di DAQ Control; sostanzialmente il comportamento é analogo a ctrlWatchDog ad eccezione del fatto che la comunicazione avviene via posta elettronica e che, a seguito del riscontro di una stessa anomalia, gli avvisi non vengono ripetuti. 5.8.2 Tipologie di diagnostica Il tool DAQ Control é stato progettato con lo scopo di implementare solamente due tipi di diagnostica online, tuttavia le scelte implementative sono state effettuate nell’ottica di poter aggiungere altri controlli in un momento successivo con il minimo sforzo: in pratica si tratta di scrivere semplicemente gli oggetti che gestiscono la comunicazione e il controllo dei dati ottenuti, cosa comunque necessaria nel caso si implementino nuove operazioni. 85 Capitolo 5. Calibrazione e Diagnostica del Sistema La diagnostica giá sviluppata prevede il controllo del funzionamento dei processi remoti. Ad ognuno di essi é associato uno stato della FSM (vedi 3.8) e una coda di frame che utilizzano per realizzare la comunicazione con gli altri processi del DAQ. Nell’oggetto implementante la coda sono presenti due contatori che tengono traccia rispettivamente del numero di frame che sono stati accodati dall’avvio del sistema di acquisizione e del numero di frame che devono ancora essere elaborati. Durante il normale funzionamento dei processi del DAQ deve essere generato un nuovo frame con una frequenza dipendente dall’impostazione del sistema. Gli oggetti di tipo runcontrol verificano lo stato di funzionamento dei processi del DAQ basandosi sullo stato della FSM e sul numero di pacchetti accodati dall’inizio dell’acquisizione. Se dopo un periodo di tempo stabilito dall’utente un processo del DAQ non genera nuovi dati segnalano un malfunzionamento che genererá un avviso all’utente. Oltre alla precedente é stata prevista l’implementazione del controllo di linearitá della catena di acquisizione, ottenibile introducendo nel sistema due sinusoidi ai margini della banda utile per non interferire con il segnale generato dal rivelatore. Se le sinusoidi introdotte non aggiungono rumore (interferenze elettromagnetiche) allora il controllo di linearitá in DAQ Control potrebbe essere ottenuto filtrando i dati dalla coda del processo ANT con il metodo spyData. É sufficiente infatti trattare il segnale acquisito con due filtri lock-in centrati sulle frequenze delle sinusoidi introdotte per ottenere tutte le informazioni necessarie a stabilire la linearitá di ampiezza e fase della catena di trasduzione, dal punto di introduzione del segnale fino al sistema di acquisizione. Gli oggetti che implementano la diagnostica di linearitá provvedono al filtraggio del segnale acquisito come descritto e successivamente controllano ampiezza e fase delle sinusoidi ricavate, qualora uno dei parametri superi l’intervallo ammesso per l’acquisizione viene segnalato il malfunzionamento del sistema. 5.8.3 Interfacce L’interazione di DAQ Control con l’utente viene fornita grazie all’oggetto ctrlConsole che implementa un terminale testuale (Figura 5.14) in grado di interpretare un semplice linguaggio, adatto per il sistema di diagnostica. I comandi attualmente supportati, assieme alla loro sintassi, sono i seguenti: NEW <NomeThread> <tipo> <PRC_da_controllare> [<numero_di_code> <sleep_time> <timeout>] DELETE <NomeThread>|<ThreadID> START <NomeThread>|<ThreadID> STOP <NomeThread>|<ThreadID> STATUS [ALL|all [FULL|full]] | <NomeThread>|<ThreadID> [FULL|full] QUIT Il comando NEW viene utilizzato per creare un nuovo oggetto ctrlThread, impostandone il nome, il tipo e il processo remoto da controllare. Come opzio86 5.8. DAQ Control Figura 5.14: Console di interfaccia al tool DAQ Control ni possono essere forniti il numero di code, necessario per processi come BLD e DSK in cui possono essere usate una o due code a seconda degli ADC impiegati, l’intervallo temporale tra controlli successivi e il timeout oltre il quale una comunicazione senza riscontro deve essere considerata fallita. Il comando DELETE viene utilizzato per la cancellazione di un thread di controllo. Questa puó essere effettuata indicando il nome assegnato al thread durante la sua creazione o indicando l’ID che viene associato automaticamente ad ogni oggetto ctrlThread. I comandi START e STOP vengono utilizzati, con opzioni analoghe al comando DELETE, rispettivamente per avviare e fermare il thread di controllo. La semplice creazione dell’oggetto infatti non determina l’inizio della diagnostica che puó essere fatta partire arbitrariamente in un momento successivo. Il comando STATUS permette di conoscere, con diversa granularitá, lo stato del sistema di diagnostica. Invocato con il parametro NomeThread o ThreadID permette di conoscere lo stato dell’oggetto di controllo indicato. A seconda del livello di profonditá richiesto (parametro full ), sará possibile conoscere dallo stato del processo locale e remoto all’insieme di tutte le variabili interne. Il comando STATUS puó essere invocato senza alcun parametro nel qual caso fornirá lo stato del sistema di diagnostica inteso come il numero di thread istanziati, il numero di thread in esecuzione, ecc. Invocato con il parametro all invece fornirá i dati di ogni thread istanziato. Un’ulteriore interfaccia con il mondo esterno é fornita dai thread di controllo del sistema di diagnostica come ctrlWatchDog. Questi si occupano di verificare se qualcuno tra i processi di diagnostica ha riscontrato un’anomalia nei processi remoti del DAQ e, in quest’ultimo caso, avvertono l’utente mediante indicazioni sulla console oppure via posta elettronica. La necessitá di poter controllare in modo semplice quale sia lo stato attuale del sistema di acquisizione ha indotto l’implementazione di un ulteriore oggetto: ctrlDAQStatus. Il compito da esso svolto é relativamente semplice: con un periodo impostabile dall’utente esso verifica lo stato del sistema provvedendo a 87 Capitolo 5. Calibrazione e Diagnostica del Sistema (a) STATUS ALL (b) STATUS Thread Figura 5.15: Informazioni ottenibili da console mediante il comando STATUS raccogliere tutti i dati di interesse per una descrizione sintetica dello stato del DAQ Dalle informazioni ottenute provvede alla generazione di una pagina in formato HTML standard che viene pubblicata nel sito di AURIGA permettendo quindi, ad ogni utente del gruppo, di verificare via WEB con un comune browser se l’acquisizione procede correttamente oppure se é necessario un qualche tipo di intervento. 88 Capitolo 6 Conclusioni e sviluppi futuri L’evoluzione continua del settore informatico richiede un aggiornamento parimenti costante degli strumenti utilizzati, tuttavia una buona progettazione alla base di un prodotto lo rende piú longevo e permette, quando inevitabilmente diviene necessario apporvi modifiche, di riutilizzarne una parte consistente. É questo il caso della versione precedente del DAQ di AURIGA, la cui attenzione nello sviluppo non ha richiesto una riprogettazione dell’architettura del sistema: il nuovo sistema di acquisizione infatti é costituito dai medesimi processi interoperanti con i protocolli che erano stati stabiliti quasi due anni or sono. Un sistema di acquisizione, se rispetta i requisiti di progetto, ha un ciclo di vita molto maggiore dei normali tool informatici, non essendo indispensabili gli aggiornamenti necessari ad inseguire l’evoluzione del mercato. Come ogni prodotto software tuttavia, in seguito all’uso possono essere riscontrati problemi e vengono dunque richieste modifiche. L’utilizzo stesso del sistema é fonte di bisogno per nuove funzionalitá che precedentemente non era state contemplate, oppure erano considerate di importanza ridotta. Tutto ció assieme alla necessitá di un terzo sistema di acquisizione ha reso necessario l’aggiornamento del DAQ, inteso come migrazione verso nuove piattaforme hardware e software, correzione dei problemi riscontrati e introduzione di nuove caratteristiche. Il nuovo DAQ trae le sue origini dalla versione sviluppata nel 2001 e fondamentalmente ne utilizza l’architettura. In esso sono stati corretti i malfunzionamenti riscontrati, particolarmente i problemi descritti nel Capitolo 4 relativamente alla sincronizzazione con il tempo universale e l’utilizzo dei canali ausiliari, e sono state apportate alcune migliorie dettate dalle modificate esigenze di utilizzo. Il sistema cosı́ ottenuto é stato oggetto di attente verifiche in condizioni di utilizzo diversificate. Sono stati effettuati numerosi test con diverse condizioni di carico, nelle varie configurazioni possibili, ottenendo ottimi risultati che si possono riassumere in due mesi di acquisizione di tutti i canali senza errori. Le verifiche di sincronizzazione sono state effettuate con run ingegneristici acquisendo alcuni segnali di forma nota e procedendo a posteriori al controllo della sincronizzazione con il tempo UTC. I risultati dei test di funzionamento sono quindi soddisfacenti, dimostrando la correttezza delle soluzioni adottate. Superate queste verifiche si é provveduto al confronto diretto dei dati acquisiti con il vecchio sistema di acqui89 Capitolo 6. Conclusioni e sviluppi futuri sizione, di cui erano noti i parametri di funzionamento, in modo da poter stabilire la compatibilitá dei Frame acquisiti. Il test si é svolto fornendo in ingresso ad entrambi i sistemi un segnale, con metodologia analoga alla diagnostica off-line descritta nel Capitolo 5. Il risultato dell’esperimento é stato un buon accordo tra i due sistemi, con una sincronizzazione a livello di un campione dei segnali acquisiti, massima precisione ottenibile dato che i due sistemi iniziano l’acquisizione in modo totalmente indipendente e asincrono. In conclusione dai test effettuati contestualmente allo sviluppo e a posteriori, il nuovo DAQ di AURIGA rispetta i requisiti imposti dall’esperimento, riuscendo in piú di qualche occasione a fornire risultati migliori rispetto alle richieste, ad esempio aumentando la banda di acquisizione per i canali ausiliari. Al DAQ, nella sua versione aggiornata e corretta, sono stati affiancati altri strumenti, di cui i maggiormente importanti sono stati trattati nel capitolo 5, permettendo di calibrare il sistema e di mantenerlo sotto controllo per tutta la durata del run. Il tool “DAQ Calibration” ha permesso di ottenere una procedura automatica e replicabile del processo di calibrazione, fornendo uno strumento utilizzabile su tutti i sistemi di acquisizione e permettendo all’utente di impostare la precisione con cui si vuole ottenere la misura. Grazie a questo applicativo é stato possibile stimare con la precisione richiesta i ritardi introdotti dalla strumentazione nel sollevamento delle interruzioni utilizzate per la sincronizzazione e l’errore massimo commesso dal sistema nella sincronizzazione con il tempo universale. Nelle misure esposte nei capitoli precedenti di questa tesi si é arrivati a stimare un errore di sincronizzazione di circa 250ns, pari al 25% dell’errore massimo richiesto per l’esperimento. Utilizzando il sistema di diagnostica é ora possibile certificare i dati raccolti, potendo stabilire la costanza della funzione di trasferimento lungo l’intera durata dell’acquisizione, anzi la determinazione stessa dei parametri di trasduzione puó essere effettuata a partire dai dati acquisiti. Grazie alla diagnostica online infine é possibile monitorizzare il sistema durante il suo funzionamento anche remotamente, permettendo di intervenire tempestivamente al verificarsi di malfunzionamenti inevitabili in sistemi informatici complessi. Il sistema oggetto della tesi ha fornito finora ottimi risultati ed é essenzialmente completo. I possibili sviluppi che non sono stati interamente affrontati in questo lavoro riguardano prevalentemente il completamento della diagnostica on-line. 90 Ringraziamenti Molte sono le persone a cui vorrei esprimere la mia gratitudine per aver contribuito alla realizzazione di questa tesi. In particolare vorrei ringraziare i miei genitori Ughetta e Giuseppe, che mi hanno sempre incoraggiato e sostenuto durante i lunghi anni di universitá, e Laura, che mi é stata accanto credendo in me. Ringrazio i miei familiari per l’affetto che negli anni hanno saputo dimostrarmi, gli amici e i compagni di studio, con i quali ho condiviso tante esperienze. Vorrei ringraziare il mio relatore, Ch.mo Prof. Alessandro Beghi, per la sua disponibilitá e per l’avermi indirizzato presso AURIGA: non avrei potuto sperare in un posto migliore. Ringrazio il Ch.mo Prof. Massimo Cerdonio che mi ha accolto nel suo gruppo, il Dott. Antonello Ortolan che ha avuto la pazienza di seguirmi e consigliarmi durante tutto il periodo della tesi, tutti i membri di AURIGA con i quali é stato un piacere e un privilegio lavorare, i miei colleghi di tesi, Martina e Stefano che hanno contribuito a rallegrare il mio lavoro. Grazie di cuore a tutti. Bibliografia [1] Si veda ad esempio: Schutz, Bernard F., Gravitational Radiation, Enciclopedia of Astronomy and Astrophysics, (IoP Publishing, Bristol, and Macmillan Publishers, London, 2000). David Blair, Geoff McNamara, Ripples on a cosmic sea: the search for gravitational waves, (Addison-Wesley, USA, 1998). [2] J.H. Taylor, Binary pulsars and relative gravity, Rev. of Mod. Phis., 1994. [3] M. Cerdonio et al., The Ultracryogenic Gravitational Wave Detector AURIGA, Class. Quantum Grav. 14 (1997) 1491. L. Conti at al., The AURIGA second scientific run and the dual detector of gravitational waves, Nucl. Instrum. Meth. Phys. Res. A 518 (2004) 236. J.-P. Zendri et al., Status report and near future prospects for the gravitational wave detector AURIGA, Class.Quant.Grav. 19 (2002) 1925. [4] M. Bignotto et al., New AURIGA cryogenic suspension system, proceedings of the ’28th International Cosmic Ray Conference, T.Kajita, Y.Asaoka, A.Kawachi, Y.Matsubara and M.Sasaki eds., (Univ. Ac. Press, Tokyo, 2003) 3089. [5] M. Cerdonio et al., Sub-Millisecond Absolute Timing: Toward an Actual Gravitational Observatory, Mod. Phys. Lett A 12 (1997) 554. V. Crivelli Visconti et al, Timing with resonant gravitational wave detectors: an experimental test, Phys. Rev. D 57 (1998) 2045. [6] http://www.virgo.infn.it/ [7] http://www.ligo.caltech.edu/ [8] http://lisa.jpl.nasa.gov/ [9] http://igec.lnl.infn.it/ [10] A. Cesaracciu, Progettazione e realizzazione di un sistema di acquisizione dati per l’esperimento AURIGA, Tesi di Laurea, Universitá di Padova, 2001. 93 Bibliografia [11] A. Cesaracciu, G. Vedovato and A. Ortolan, A modular object oriented data acquisition system for the gravitational wave AURIGA experiment, Proceedings of CHEP03, La Jolla (CA), 2003. [12] A. Ortolan et al., Parametric adaptive filtering and data validation in bar gw detectors, Class.Quant.Grav. 19 (2002) 1457. [13] http://www.esat.it/ [14] A.A.V.V., HP E1413A 64-channel high speed scanning A/D User’s manual, Hewlet Packard, 1993. [15] A.A.V.V., HP E1430A VXI ADC operator’s guide, Hewlet Packard, 1993. [16] http://www.vxitech.com/ [17] Bruce Eckel, Thinking in C++, Volume 1, (Mindview, USA, 2001). Bruce Eckel, Thinking in C++, Volume 2: (Mindview, USA, 2003). Practical Programming, [18] John G. Proakis, Dimitris G. Manolakis, Digital Signal Processing: principle, algorithms, and applications, (Macmillan, New York, 1992). Athanasios Papoulis, Probability, random variables and stochastic processes, Second edition, (McGraw-Hill, Singapore, 1984). [19] http://www.omg.org [20] http://www.corba.org [21] Duncan Grisby, Sai-Lai Lo, David Riddoch, The omniORB version 4.0 User Guide, Apaspere Ltd, 2004. Tristan Richardson, The OMNI Naming Service, AT&T Laboratories, Cambridge, 2000. Duncan Grisby, The omniORB IDL Compiler, AT&T Laboratories, Cambridge, 2000. Eoin Carroll, The omniORB utilities, Apaspere Ltd, 2000. Sito web di riferimento: http://omniorb.sourceforge.net [22] Tristan Richardson, The OMNI Thread Abstraction, AT&T Laboratories, Cambridge, 2001. [23] http://ose.sourceforge.net/ [24] LIGO Data and Computing Group, Virgo Data Acquisition Group, Specification of a Common Data Frame Format for Interferometric Gravitational Wave Detectors (IGWD), VIRGO-SPE-LAP-5400-102, 2002. 94 Bibliografia LIGO Data and Computing Group, Virgo Data Acquisition Group, Frame Library User’s Manual, VIR-MAN-LAP-5400-103, 2004. http://lappweb.in2p3.fr/virgo/FrameL/ [25] http://root.cern.ch/ [26] Matteo Frigo, Steven G. Johnson, FFTW for Version 3.1, MIT, 2003. http://www.fftw.org/ [27] A.A.V.V., Getting started with the VXIpc 770/870/870B series and the NI-VXI/NI-VISA software for Linux, National Instruments, 2002. A.A.V.V., Getting started with your PCI-MXI-2 and the NI-VXI/NI-VISA software for Linux, National Instruments, 2002. [28] A.A.V.V., NI-VXI User manual, National Instruments, 1996. A.A.V.V., NI-VXI Programmer reference manual, National Instruments, 1996. [29] http://www.redhat.com/ [30] http://www.trolltech.com/ [31] http://www.kde.org/ [32] http://www.kdevelop.org/ [33] http://www.kernel.org/ [34] http://www.tldp.org/ [35] David S.Lawyer, Greg Hankins, Serial HOWTO, The Linux Documentation Project, 2003. 95