presentazione progetto crio

27
Misure Elettriche ed Elettroniche Prof. Bruno Andò Progetto cRIO Mazza Dario 616/002007 Merlino Sebastiano 616/002008 Messina Marco 616/002000

Upload: sebastiano-merlino

Post on 10-May-2015

947 views

Category:

Technology


0 download

DESCRIPTION

Presentazione del progetto per il calcolo della posizione di un utente tramite utilizzo del controllore cRIO.

TRANSCRIPT

Page 1: Presentazione Progetto CRio

Misure Elettriche ed ElettronicheProf. Bruno Andò

Progetto cRIOMazza Dario 616/002007Merlino Sebastiano 616/002008Messina Marco 616/002000

Page 2: Presentazione Progetto CRio

ObiettiviAcquisire conoscenze di base sull’apparato hardware.Comprendere il funzionamento del sistema software dibase.Accumulare esperienze a proposito di interfacciamentodell’oggetto con hardware esterno.Utilizzare l’oggetto come controllore “stand alone” disistemi automatici.Reimplementare l’algoritmo di trilaterazione utilizzato nelsistema CAN‐Bus attualmente realizzato mediante motoreMatLab.Ottimizzare l’algoritmo di cui al punto precedente per unfunzionamento “stand alone” sul cRIO.

2Progetto Crio ‐Mazza, Merlino, Messina                                                                        

Page 3: Presentazione Progetto CRio

Generalità

3Progetto Crio ‐Mazza, Merlino, Messina                                                                        

Il cRIO (Compact Reconfigurable I/O) è unmicrocontrollore real‐time programmabile per sistemiembedded che offre ottime potenzialità come sistema standalone per l’esecuzione di applicazioni real‐time inLabVIEW. Importante caratteristica del sistema è la suamodularità. Il sistema cRIO consta di un’unità centralee di uno chassis ove è possibile ospitare fino a 8 moduli cheestendono le funzionalità dell’oggetto.Il modello di cRIO a nostra disposizione è il cRIO‐9004.L’utilizzo di un processore che lavora alla frequenza di 195MHz permette il bilanciamento di bassi consumi in potenzae buone capacità di calcolo. Il NI cRIO si interfaccia consistemi informatici tramite porta Ethernet BaseT 10/100, edinoltre vi è una porta seriale RS232 per collegarvi deviceesterni.

Page 4: Presentazione Progetto CRio

I moduliNI 9215 BNC: consta di 4 canalianalogici con un range di input ± 10 V.Il convertitore A/D ha una frequenzadi campionamento di 800 kS/s inmodalità multiplexer e 100 kS/s incampionamento simultaneo.

NI 9263: presenta 4 canali analogici peruna risoluzione di 16 bit e presenta unrange di input pari a ± 10 V. Ha unavelocità di aggiornamento simultaneo di100 kS/s.

4Progetto Crio ‐Mazza, Merlino, Messina                                                                        

Page 5: Presentazione Progetto CRio

I moduliNI 9265: è dotato di 4 canali analogici;vanta una risoluzione di 16 bit e unrange di output che spazia tra 0 e 20mA. Può sostenere un carico massimo di600Ω.

NI 9401: è costituito da 8 canali digitalidi input/output di tipo TTL a ± 5V. Il NI9401 ha un delay time di I/O inferiore a100 ns. Il massimo segnale di inputprocessabile dipende dal numero dicanali utilizzati.

5Progetto Crio ‐Mazza, Merlino, Messina                                                                        

Page 6: Presentazione Progetto CRio

Componenti Software del cRIOIl cRIO viene fornito con un sistema operativoproprietario chiamato LabVIEW Real‐Time (ETS):questo si occupa della gestione dei processi e organizzale operazioni di I\O. Altri importanti componenti softwaresono:il modulo Real‐Time per l’organizzazione dei cicli ad

alta priorità;il modulo NI Rio 2.3.1 e il modulo FPGA che si occupa

dell’interfacciamento con i moduli del Chassis;Server FTP eWeb.

6Progetto Crio ‐Mazza, Merlino, Messina                                                                        

Page 7: Presentazione Progetto CRio

Che cos'è l'FPGA? Un dispositivo FPGA (Field‐Programmable Gate Array) èun dispositivo che può essere configurato, dall'utente odal progettista, in modo da compiere uno specificolavoro.

Generalmente i dispositivi FPGA vengono peròprogrammati direttamente dai progettisti utilizzandolinguaggi come il VHDL (VHSIC Hardware DescriptionLanguage dove VHSIC sta per Very High SpeedIntegrated Circuits).

7Progetto Crio ‐Mazza, Merlino, Messina                                                                        

Page 8: Presentazione Progetto CRio

Come programmare FPGA con LabVIEW ?Lo sviluppo di una applicazione FPGA si svolge su un computerhost collegato al dispositivo FPGA; utilizzando il modulo FPGA e illinguaggio G del LabVIEW si ottiene un Virtual Instrument (VI)che poi verrà compilato (usando il compilatore Xilinx ISE).

Il risultato della compilazione è un file bit stream che, al momentodell'esecuzione, verrà caricato nei chip FPGA ed eseguito con unclock di default a 40 MHz ( 25 ns per ogni tick).

8Progetto Crio ‐Mazza, Merlino, Messina                                                                        

Page 9: Presentazione Progetto CRio

Come funzionano le applicazioni sul cRIO ?Un applicazione Real‐Time realizzata per essere eseguita sulcRIO è composta essenzialmente da due parti: la prima èquella che rimane sul computer Host mentre la seconda èquella caricata nel cRIO. Le due parti comunicano tramiteuna connessione ETHERNET e utilizzando un protocollo TCPo UDP.

9Progetto Crio ‐Mazza, Merlino, Messina                                                                        

Page 10: Presentazione Progetto CRio

Come funzionano le applicazioni sul cRIO ?La parte residente sul cRIO è caratterizzata da tre componenti:

Un'applicazione FPGA per l'input, l'output, la comunicazione edil controllo;Un Time‐Critical Loop per le operazioni in virgola mobile, ilprocessamento e l'analisi dei segnali;

10Progetto Crio ‐Mazza, Merlino, Messina                                                                        

Un Loop a prioritànormale per data logginglocale, l'interfacciamentoWeb con pannelli remotie la comunicazioneETHERNET o seriale.

Page 11: Presentazione Progetto CRio

Come funzionano le applicazioni sul cRIO ?I due loop vengono mappati sul sistema operativo come threadseparati garantendone l'indipendenza durante l'esecuzione. Solo ilTime‐Critical Loop è in grado di interagire con l'applicazione FPGAcontenuta nei chip.

11Progetto Crio ‐Mazza, Merlino, Messina                                                                        

Page 12: Presentazione Progetto CRio

L'esperimento “Doppia Soglia”L'esperimento “Doppia Soglia” è una semplice applicazionesviluppata per testare le capacità del cRIO e la possibilità diintegrare nei VI codice scritto in C. L'esperimento consiste nellalettura di due segnali per controllare se superano due soglie(diverse per i due segnali), i risultati ottenuti dai controlli dellesoglie devono essere dati in ingresso ad un codice C che inverte ivalori booleani ed, infine, l'uscita del codice C deve essereutilizzata per accendere quattro led. Inoltre, si manda come outputanalogico la somma dei due segnali in ingresso. Il risultato visibileè che se un segnale è sopra una determinata soglia il led si spegnealtrimenti rimane acceso.Per questo esperimento ci siamo avvalsi di tre moduli: NI 9215 BNCper l'input analogico (acquisizione dei due segnali), NI 9263 perl'output analogico (output delle somma dei segnali acquisiti) e NI9401 per l'output digitale (illuminazione dei led).

12Progetto Crio ‐Mazza, Merlino, Messina                                                                        

Page 13: Presentazione Progetto CRio

L'esperimento “Doppia Soglia”

13Progetto Crio ‐Mazza, Merlino, Messina                                                                        

Page 14: Presentazione Progetto CRio

L'esperimento “Doppia Soglia”

14Progetto Crio ‐Mazza, Merlino, Messina                                                                        

Apre l’applicazioneFPGA

Imposta leSoglie

Eseguel’applicazione

Legge ibooleani

Attende unaIRQ

Imposta i ledda illuminare

Eseguel’applicazione

Page 15: Presentazione Progetto CRio

L'esperimento “Doppia Soglia”

15Progetto Crio ‐Mazza, Merlino, Messina                                                                        

Modalità  INPUT (acquisizione)

Page 16: Presentazione Progetto CRio

La Trilaterazione: tecnica utilizzataNel software sviluppato durante il progetto utilizzeremo una tecnica perl’individuazione dei soggetti nello spazio detta MTA (MultipleTrilateration Algorithm). Nell’algoritmo MTA la trilaterazione è applicataa singole terne di sensori a meno che questi non siano allineati. Si calcolaper ciascuna terna:

16Progetto Crio ‐Mazza, Merlino, Messina                                                                        

Nelle precedenti matrici, le variabili x e y rappresentano le coordinatecartesiane del sensore sulla mappa e la variabile r, invece, va ad indicare ladistanza rilevata dal sensore. A questo punto utilizzando la formula:

otterremo le coordinate, rappresentate dal vettore U, della posizione dell’utenteper la singola terna di sensori.La media delle coordinate calcolate dalle singole terne fornirà la posizione finaledell’utente.

Page 17: Presentazione Progetto CRio

Generalità sul progetto di trilaterazione

In questa parte del progetto si è volutorealizzare un VI che calcolasse la posizionedell’utente una volta fornita la mappa deisensori ed il vettore delle distanze rilevateda questi.Si è dovuto realizzare un sistema discambio informazioni su rete (basata sutecnologia Ethernet) tra il cRIO ed un PCche provvederà a ricevere i dati sulledistanze inviati dai sensori e a rimandarlial cRIO che diverrà, quindi, l’unità logicadi calcolo dell’intero sistema e fornirà irisultati ottenuti nuovamente al PC cheimplementa l’interfaccia utente.

17Progetto Crio ‐Mazza, Merlino, Messina                                                                        

Page 18: Presentazione Progetto CRio

Le variabili sul cRIOIl cRIO utilizza un motore chiamato Network Variable Engine come server per l’organizzazione delle variabili, un Network Variable Client per ottenerne il valore ed il modulo DataSocket for LabVIEW Real‐time per inviarle su rete. Le variabili vengono distinte dal cRIO in due classi:

variabili real‐time;variabili network.

Le variabili real‐time vengono gestite dal livello FPGA (hanno quindi priorità real‐time nella coda dei processi gestita dal processore del cRIO) e non vengono effettivamente mai trasmesse su rete né ricevute attraverso di essa; per l’effettiva trasmissione e ricezione attraverso la rete ci si affida alla variabili network.

18Progetto Crio ‐Mazza, Merlino, Messina                                                                        

Page 19: Presentazione Progetto CRio

Il VI di Trilaterazione (cRIO)

19Progetto Crio ‐Mazza, Merlino, Messina                                                                        

Attesa per l’arrivo della mappa dalla rete

Salvataggio della mappa su file (per 

successivo caricamento)

Page 20: Presentazione Progetto CRio

Il VI di Trilaterazione (cRIO)

20Progetto Crio ‐Mazza, Merlino, Messina                                                                        

Loop deterministico

Loop non deterministico(passaggio variabili)

Page 21: Presentazione Progetto CRio

Il VI di Trilaterazione (HOST)Molto più semplice è il Sub‐VI destinato ad essere eseguito sul PC.Tale Sub‐VI va ad integrarsi con il sistema di trilaterazioneesistente, fornendo un’interfaccia per la comunicazione con ilcRIO.Il Sub‐VI consiste in una semplice Flat‐Sequence con imposta unatemporizzazione di 10 msec per mantenere la sincronia con il cRIO.Le azioni svolte VI sono due. In un primo momento esso invial’array di distanze (ricevute dai sensori) ed il numero totale deisensori al VI di calcolo sul cRIO; successivamente, riceve laposizione dell’utente finale (calcolata sul cRIO) e l’eventuale codiced’errore.È stato, inoltre, realizzato un VI di configurazione mappa, che sioccupa, semplicemente, dell’invio della mappa dei sensori, comevettore, sulla rete.

21Progetto Crio ‐Mazza, Merlino, Messina                                                                        

Page 22: Presentazione Progetto CRio

Il codice CSono state realizzate due differenti soluzioni in C per il calcolodella trilaterazione che abbiamo chiamato, rispettivamente, “ataglio per valori” ed “a taglio per occorrenze”; spieghiamole indettaglio.Entrambe le soluzioni accettano in ingresso la matrice delleposizioni dei sensori ed il vettore delle distanze rilevate da questi.Il codice andrà a scartare i sensori che inviano un dato non validodi distanza (maggiore di 10 metri) e, dati questi, calcolerà le ternedi sensori valide (quelle per cui i tre sensori non siano allineati ocoincidenti).Per ogni terna verrà calcolata la coordinata stimata sull’asse x equella sull’asse y.A questo punto si troverà la posizione dell’utente calcolando lamedia dei risultati ottenuti

22Progetto Crio ‐Mazza, Merlino, Messina                                                                        

Page 23: Presentazione Progetto CRio

Il Codice C “a taglio per Valori”

Il codice “a taglio per valori” si basasulla supposizione che i valoriottenuti per ciascuna coordinatasiano distribuiti, per numero dioccorrenze, su una gaussiana.Per poter scegliere i risultati dascartare, il codice ordinerà (usando

23Progetto Crio ‐Mazza, Merlino, Messina                                                                        

l’algoritmo di QuickSort) i risultati dal più piccolo al più grande escarterà i più piccoli N/5 ed i più grandi N/5, ove N rappresenta ilnumero totale di valori.Si calcola la media sui rimanenti e si ottiene il valore dellacoordinata.

Page 24: Presentazione Progetto CRio

Il Codice C “a taglio per Valori” –Calcolo della ComplessitàNel caso “peggiore” dal punto di vista della complessità,avremo 64 sensori (maggior numero possibile di sensorisostenuto dalla rete CAN‐Bus) tutti a distanza valida e fra iquali non vi siano mai tre sensori allineati o coincidenti.Considerando che ogni variabile in ciascuno dei due vettori èrappresentata mediante l’utilizzo di 64 byte e che nel casodescritto ritroviamo un numero di elementi per ciascunvettore pari a 41664 avremo quindi una quantità di bytesoccupati pari a (41664 x 64 x 2)/8 = 666.62 kbyte.Dal punto di vista della complessità di calcolo l’operazionepiù faticosa rimane il QuickSort che risulta comunque unalgortimo a complessità sottolineare.Si nota un andamento crescente dei tempi di calcolo inmaniera direttamente proporzionale al numero di sensori

24Progetto Crio ‐Mazza, Merlino, Messina                                                                        

Page 25: Presentazione Progetto CRio

Il Codice C “a taglio per Occorrenze”Il codice “a taglio per occorrenze” non potendo più avvalersi dellasupposizione sulla gaussianità, dovrà considerare, per ogni suppostovalore, il suo numero di occorrenze. Per questo motivo, prendiamo iningresso un intero rappresentante il numero di cifre dopo la virgola checonsidereremo per noi significative. Per ciascuna coordinata troveremo ilminimo ed il massimo valore fra quelli forniti dal calcolo sulle terne disensori ed allochiamo un vettore, definito vettore delle occorrenze, conun numero N di elementi pari a:

Gli indici di tale vettore rappresentano il range di valori misurati, percui,ad ogni indice dell’array possiamo associare un valore del range.A questo punto viene riempito il vettore delle occorrenze e si determinano quelli che hanno numero massimo di occorenze; fra questi si sceglie quello nel cui intorno ricadono il maggior numero di occorrenze. Il raggio dell’intorno di valutazione è dato da                     .Il valore scelto corrisponderà alla coordinata finale dell’utente.

25Progetto Crio ‐Mazza, Merlino, Messina                                                                        

Page 26: Presentazione Progetto CRio

Il Codice C “a taglio per Occorrenze” –Calcolo della ComplessitàL’occupazione di memoriadell’algoritmo sembra essere il suopunto debole si è per questopreferito utilizzare elementi delvettore delle occorrenze a 2 byte.Nel caso peggiore si avrà uno sprecodi memoria pari ai 666,624 Kbytedell’algoritmo precedente più una

26Progetto Crio ‐Mazza, Merlino, Messina                                                                        

quantità variabile di memoria di difficile calcolo (si sono, tuttavia,potute osservare variazioni nell’occupazione di memoria fra i 700Kbyte e 1‐2 Mbyte). Per ovviare ad eventuali problemi dovutiall’eccessiva occupazione di memoria si è inserito un controllo cheriduce l’accuratezza se il range dei valori supera una certa soglia.

Errore causato daun sensore guasto

Page 27: Presentazione Progetto CRio

Confronto Algoritmi di trilaterazione

27Progetto Crio ‐Mazza, Merlino, Messina