Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
1
UNIVERSITÀ DEGLI STUDI DI SIENA
FACOLTÀ DI INGEGNERIA Corso di Laurea di 1° livello in Ingegneria dell’Automazione Tesi di Laurea PROGETTAZIONE DI UNA STAZIONE ANEMOMETRICA: ASPETTI SOFTWARE Il titolo della tesi è: Progettazione di una stazione anemometrica, aspetti software. Relatore Prof. Ing. Massimo Alioto Candidato Duccio Picinotti A.A. 2005/2006
2
Introduzione Aspetti software
Scrittura codice VHDL per descrizione hardware logica digitale: acquisizione segnali dai sensori elaborazione statistica dati generazione codici controllo correttezza generazione toni trasmissione Scrittura codice Visual Basic per ricezione: decodifica toni audio in ricezione controllo, memorizzazione e visualizzazione dati Scrittura codice ASP per pubblicazione dati su Internet Questa tesi tratta gli aspetti software inerenti la progettazione di una stazione anemometrica. La prima parte del lavoro è stata quella di scrivere il codice VHDL per la descrizione dell’hardware della scheda digitale di cui ha parlato precedentemente il mio collega. Più nel dettaglio sono stati trattati i seguenti aspetti: acquisizione dei segnali derivanti dai sensori elaborazione statistica dei dati generazione dei codici di controllo di correttezza del messaggio inviato via radio generazione dei toni per la trasmissione del messaggio Per la parte di ricezione è stato scritto un programma in Visual Basic che essenzialmente esegue le seguenti operazioni: decodifica dei toni audio ricevuti via radio controllo, memorizzazione e visualizzazione dei dati arrivati Infine sono state create delle pagine attive ASP per la pubblicazione dei dati su Internet.
3
Logiche digitali programmabili
FPGA numero macrocelle alto veloci consumi elevati memoria volatile CPLD numero macrocelle basso meno veloci bassi consumi memoria non-volatile CPLD Il primo problema affrontato è stato quello della scelta della logica programmabile digitale. Ne esistono di due tipi: le FPGA e le CPLD. Le FPGA, rispetto alle CPLD, sono più capienti relativamente al numero di macrocelle a disposizione. Le FPGA sono anche più veloci delle CPLD. Le FPGA però, al contrario delle CPLD, presentano l’inconveniente di avere dei consumi elevati. Le FPGA, al contrario delle CPLD, hanno una memoria volatile. Dunque le FPGA, soprattutto per gli ultimi 2 aspetti, sono incompatibili con l’uso di energia solare, perciò sono state scelte le CPLD.
4
Scheda CPLD: GFEC Max II Starter Kit
Altera Max II EPM1270T144C5 display Alimentazione 5V 16 MHz clock JTAG 8 led RS 232 8 switch Questa è la scheda digitale “GFEC Max II Starter kit” scelta per la parte di trasmissione. E’ equipaggiata di una CPLD Max II dell’Altera con 1270 macrocelle e 144 pins di I/O. In essa possiamo vedere i seguenti componenti: 1)1 clock a 16 MHz 2)8 led 3)8 switch 4)4 pulsanti 5)1 display a 4 cifre 6)alimentazione a 5V 7)144 pins di I/O 8)connettore per il cavo JTAG di programmazione 9)un’interfaccia seriale RS 232 4 pulsanti pins
5
Linguaggio VHDL Linguaggio di descrizione HW per logiche digitali
Vantaggi programmazione VHDL indipendenza dalla tecnologia caratteristiche di alto livello progettazione gerarchica modularità Approccio sincrono: segnali I/O sincronizzati con il clock di riferimento Programma usato: Quartus II 6.0 SP1 Per la descrizione dell’hardware da implementare sulla logica digitale è stato usato il linguaggio VHDL. I suoi vantaggi sono: l’indipendenza dalla tecnologia, la presenza di caratteristiche di alto livello come cicli, funzioni ed altro, la possibilità di progettazione gerarchica e la modularità. L’approccio usato per descrivere l’hardware è quello di tipo sincrono: i segnali di I/O vengono sincronizzati con il clock di riferimento. Per lo sviluppo del codice VHDL è stato usato il programma dell’Altera denominato Quartus II, versione 6.0 con la SP1.
6
Programma VHDL in trasmissione
DEBOUNCE temp dir vel FREQ TEMP WIND BIT_P WIND CALC WIND DIR WIND CHOOSE WIND TX portante radio_tx portante_V FREQ VEL WIND ENABLE WIND CONST WIND CLOCK In questa slide si può capire il funzionamento del programma VHDL sintetizzato nella scheda CPLD per la trasmissione dei dati via radio. Nel blocco “WIND CONST” sono raccolte tutte le costanti globali, permettendo una maggior modularità al progetto ed anche la possibilità di modifiche rapide ai valori. Inizialmente i segnali di velocità e direzione del vento e di temperatura vengono fatti passare attraverso il blocco “DEBOUNCE” dove vengono rimossi gli eventuali rimbalzi. La velocità e la direzione entrano nel blocco “WIND CALC” in cui vengono calcolati il periodo dell’onda quadra della velocità e lo sfasamento fra il segnale della direzione e quello di velocità. Questi 2 valori entrano nel blocco “WIND DIR” dove viene calcolata la direzione fra i 4 punti cardinali ed i loro intermedi. Nella parte superiore si può vedere il segnale di temperatura che entra nel blocco “FREQ TEMP” per il calcolo della temperatura istantanea. Parallelamente viene calcolata la velocità nel blocco “FREQ VEL” che non è altro che il blocco “FREQ TEMP” istanziato un’altra volta. Il blocco “WIND CLOCK” serve per distribuire dei clock con diverse frequenze a tutti gli altri blocchetti partendo dal clock dell’oscillatore presente nella scheda e denominato “clk”. Il blocco “WIND ENABLE” crea un’onda quadra che sta al livello alto per 1 minuto ed al livello basso per 3 secondi. Quando l’onda è a livello alto siamo nella fase di acquisizione ed elaborazione dati, invece quando si trova al livello basso siamo nella fase di trasmissione. Quest’onda quadra infatti viene usata sia nel blocco di calcolo dati “WIND CHOOSE” sia in quello di trasmissione “WIND TX”. Al blocco “WIND CHOOSE” arrivano la velocità e la direzione del vento. Nell’arco di 1 minuto esso ne calcolerà la velocità minima, massima e la direzione più frequente. Questi dati, assieme alla temperatura istantanea derivante dal blocco “FREQ TEMP”, entrano nel blocco “WIND BIT_P” che ricostruisce tutto il messaggio da inviare e calcola i bit di parità di riga e di colonna usando i “Codici di ridondanza di blocco”. I 16 blocchi da “CLOCK DIV 1” a “CLOCK DIV 16” servono a creare le 16 portanti partendo da un segnale di clock unico. Le portanti sono semplicemente delle onde quadre che presentano frequenze fra 930 e 2400 Hz e sono i toni audio EEA che verranno inviati alla radio. Nel blocco finale “WIND TX” viene costruito il segnale in uscita denominato “portante”, che sarà inviato alla radio ed anche il segnale “radio_tx” che indica quando l’apparato è in trasmissione. Prima di trasmettere il messaggio vero e proprio viene inviata in uscita una frequenza particolare denominata “portante_V”, cioè “portante a vuoto”. Questa serve solo a mandare la radio LPD, che presenta la funzione VOX, in trasmissione automatica. La “portante a vuoto” ha una frequenza che non viene riconosciuta dal programma Visual Basic che riceve i dati. CLOCK DIV 1 DIV 16
7
Esempio di codice VHDL: wind_enable
In questa slide è possibile vedere un esempio di codice VHDL, nella fattispecie quello che viene implementato nel blocchetto “wind_enable”. Il codice è formato da una prima parte, detta “entity”, di definizione dei segnali di I/O del blocchetto, mentre nella parte successiva, detta “architecture”, vengono esplicitate le elaborazioni da eseguire sui segnali di ingresso per poter arrivare ai segnali in uscita.
8
Statistiche utilizzo CPLD
Risorsa Utilizzo Total logic elements Combinational with no register Register only Combinational with a register 1.122 / (88%) 592 32 498 Logic elements by mode normal mode synchronous clear/load mode asynchronous clear/load mode 547 157 245 Total LABs (Logic Array Blocks) 118 / 127 (93%) I/O pins Clock pins 18 / 116 (16%) 1 Maximum fan-out 384 Average fan-out 3,88 Nella presente tabella si possono osservare le statistiche di utilizzo della scheda CPLD. Il dato più significativo è quello dell’uso di macrocelle: 1122 su 1270, praticamente l’88%. In totale vengono usati 18 pins di I/O sui 116 a disposizione. Infine si può notare il fan-out medio di 3.88, che è il numero medio di elementi che vengono collegati in uscita ad un componente logico.
9
Programma “Anemometro 1.0” in ricezione
Uso di Visual Basic 6.0 SP6 File di inizializzazione sensibilità decodifica protocollo di trasmissione Analisi codice Visual Basic: acquisizione e campionatura segnale audio processamento real-time con 2 buffer acquisizione decodifica con FFT a spettro mobile controllo correttezza messaggio con bit di parità di riga e colonna, “Codici di ridondanza di blocco” immissione dati in un database visualizzazione storico nei grafici Applicativo in funzione nella dimostrazione pratica Per la ricezione e la decodifica del messaggio in arrivo via radio è stato scritto, in Visual Basic versione 6.0 con il SP6, un programma denominato “Anemometro 1.0”. L’applicativo alla partenza acquisisce i parametri sulla decodifica insieme alle preferenze dell’utente da un file di inizializzazione modificabile con un normale editor di testi. Infatti è possibile modificare la sensibilità della decodifica, il protocollo di trasmissione. Il programma Visual Basic esegue le seguenti operazioni: acquisizione e campionatura del segnale audio in arrivo dal microfono processamento real-time del segnale usando due buffer con i dati campionati decodifica del tono audio impiegando l’algoritmo ricorsivo FFT (Fast Fourier Transform) a spettro mobile su una finestra rettangolare che si sposta di un campione per volta controllo di correttezza del messaggio decodificato tramite i bit di parità di riga e di colonna che formano i “Codici di ridondanza di blocco” immissione dei dati corretti in un database infine visualizzazione in 3 grafici dello storico giornaliero A fine presentazione assieme al mio collega faremo anche una dimostrazione pratica dove sarà possibile vedere questo programma in esecuzione.
10
Pubblicazione opzionale dati su Internet
Scopo: aumentare bacino d’utenza del servizio Uso del linguaggio di programmazione ASP Webserver IIS ADSL flat servizio di redirect (indirizzo web fisso con IP dinamico) Analisi codice ASP: ricerca dati mediante query SQL nel database condiviso col programma Visual Basic visualizzazione dati giornalieri, ultimi 2 giorni, mensile, annuo query SQL per test diagnostici visualizzazione velocità giornaliera max visualizzazione tabella con i dati visualizzazione grafici con gli storici La parte opzionale, ma non per questo la meno utile, del nostro progetto è la pubblicazione su Internet dei dati decodificati. In questa maniera è possibile aumentare il bacino d’utenza che può fruire del servizio di monitorizzazione del vento. Per questo scopo è stato utilizzato il linguaggio di programmazione ASP. Per poter pubblicare i dati su Internet è indispensabile possedere un PC dove far girare un webserver come IIS Internet Information Services. Inoltre sarebbe consigliabile possedere una linea a banda larga ADSL di tipo flat, con un sevizio di redirect per usufruire di un indirizzo web univoco anche senza un IP fisso. Il programma ASP esegue le seguenti operazioni: 1)ricerca dei dati nel database condiviso col programma Visual Basic mediante query SQL 2)visualizzazione dei dati giornalieri, degli ultimi 2 giorni, di quelli mensili e annui. In più è possibile eseguire delle query SQL per dei test diagnostici 3)visualizzazione della velocità massima giornaliera 4)visualizzazione dei dati in tabella e dei grafici con lo storico
11
Test e risultati ottenuti sul campo
Test in laboratorio con scheda FLEX10K prove blocco per blocco prove con generatori da banco prove con simulatore simwind su porta parallela Test sul campo in loc. Gorello: errore di TX 0,1% Decollo Monte Lignano Lat: N 43°24’17.6” Long: E 11°52’58.2” Alt: 838 m s. l. m. Atterraggio Gorello Lat: N 43°23’55.5” Long: E 11°51’17.8” Alt: 297 m s. l. m. 2,5 Km I test si sono svolti in due fasi. La prima è stata eseguita sfruttando la scheda FPGA FLEX10K presente nel laboratorio di elettronica. All’inizio è stata provata la correttezza del codice VHDL blocco per blocco mediante simulazione. In seguito è stata controllata la correttezza dell’intero progetto generando i segnali in ingresso dell’anemometro sia mediante dei generatori da banco sia tramite un programma scritto in turbo pascal che inviava i segnali tramite la porta parallela di un PC del laboratorio. I test finali sul campo sono stati eseguiti installando l’apparecchio in cima al monte Lignano e ricevendo il segnale col PC in località Gorello situato a 2,5 Km in linea d’aria dalla cima del monte. I risultati ottenuti in due settimane di prove hanno soddisfatto le specifiche, con un errore medio di trasmissione dello 0,1%.
12
Caratteristiche e requisiti tecnici
Tempo fase acquisiz. dati 60 s Tempo fase trasmissione 3 s Numero max di invii per ora 57 invii / ora Velocità max del vento 63,5 Km/h Risoluzione velocità vento 0,5 Km/h Risoluzione direzione ±45 ° Temperatura max 55,5 °C Temperatura min - 8 °C Requisiti PC Pentium III o superiore Scheda audio (line-in o mic) O.S. Windows 98 o superiore Requisiti opzionali ADSL flat Servizio di redirect (no-ip) In questa tabella è possibile vedere le caratteristiche tecniche della stazione anemometrica. La durata di ogni fase di acquisizione ed elaborazione dati è di 60 secondi. La durata di ogni trasmissione è di circa 3 secondi. In un’ora è possibile inviare 57 messaggi completi. La velocità massima del vento rilevabile è di 63,5 Km/h. La risoluzione sulla velocità del vento è di ½ Km/h. La risoluzione sulla direzione del vento è di +-45 °. Il range di temperature rilevabile va da -8°C a 55,5°C. I requisiti del PC dove è in esecuzione il programma Visual Basic in ricezione sono: processore Pentium III o superiore, presenza di una scheda audio con ingresso line-in o per il microfono, sistema operativo Windows 98 o superiore.
13
Conclusioni Progetto hobbistico open-source non commerciale
Fasi del lavoro: scrittura codice VHDL per la trasmissione scrittura codice VB per la ricezione scrittura codice ASP per la pubblicazione su Internet Risultati sul campo soddisfano e superano le specifiche iniziali Ringraziamenti: Franco Languasco per programma open-source Decotoni in Visual Basic Il progetto sviluppato è di tipo hobbistico e open-source, con il codice sorgente a disposizione di tutti. Non era infatti nostra intenzione creare un progetto di tipo commerciale. Il lavoro di questa tesi si può sintetizzare in 3 fasi: scrittura del codice VHDL per la trasmissione dei dati tramite la scheda CPLD scrittura del codice Visual Basic per la ricezione e la memorizzazione dei dati scrittura del codice ASP per la pubblicazione su Internet dei dati I risultati ottenuti sul campo hanno soddisfatto e superato le specifiche fissate inizialmente. Un ringraziamento particolare va a Franco Languasco per il suo programma open-source “Decotoni” in Visual Basic, dal quale ho preso spunto nella stesura del mio programma “Anemometro 1.0”.
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.