0
Misure Elettriche ed Elettroniche
         Prof. Bruno Andò


Progetto cRIO
     Mazza Dario          616/002007
     Merl...
Obiettivi
      Acquisire conoscenze di base sull’apparato hardware.
      Comprendere il funzionamento del sistema softwa...
Generalità
                                                Il cRIO (Compact Reconfigurable I/O) è un
                     ...
I moduli
      NI 9215 BNC: consta di 4 canali
      analogici con un range di input ± 10 V.
      Il convertitore A/D ha ...
I moduli
      NI 9265: è dotato di 4 canali analogici;
      vanta una risoluzione di 16 bit e un
      range di output c...
Componenti Software del cRIO
 Il cRIO viene fornito con un sistema operativo
 proprietario chiamato LabVIEW Real‐Time (ETS...
Che cos'è l'FPGA? 
 Un dispositivo FPGA (Field‐Programmable Gate Array) è
 un dispositivo che può essere configurato, dall...
Come programmare FPGA con 
LabVIEW ?
 Lo sviluppo di una applicazione FPGA si svolge su un computer
 host collegato al dis...
Come funzionano le applicazioni 
sul cRIO ?
 Un applicazione Real‐Time realizzata per essere eseguita sul
 cRIO è composta...
Come funzionano le applicazioni 
sul cRIO ?
 La parte residente sul cRIO è caratterizzata da tre componenti:
   Un'applica...
Come funzionano le applicazioni 
sul cRIO ?
 I due loop vengono mappati sul sistema operativo come thread
 separati garant...
L'esperimento “Doppia Soglia”
 L'esperimento “Doppia Soglia” è una semplice applicazione
 sviluppata per testare le capaci...
L'esperimento “Doppia Soglia”




                                                                                        ...
L'esperimento “Doppia Soglia”
Apre l’applicazione                                                                         ...
L'esperimento “Doppia Soglia”

                                   Modalità  INPUT 
                                    (ac...
La Trilaterazione: tecnica utilizzata
 Nel software sviluppato durante il progetto utilizzeremo una tecnica per
 l’individ...
Generalità sul progetto di 
trilaterazione
                                                                In questa parte...
Le variabili sul cRIO
Il cRIO utilizza un motore chiamato Network Variable Engine come server 
per l’organizzazione delle ...
Il VI di Trilaterazione (cRIO)

                                                 Attesa per l’arrivo della 
              ...
Il VI di Trilaterazione (cRIO)


                       Loop deterministico




                         Loop non determin...
Il VI di Trilaterazione (HOST)
 Molto più semplice è il Sub‐VI destinato ad essere eseguito sul PC.
 Tale Sub‐VI va ad int...
Il codice C
 Sono state realizzate due differenti soluzioni in C per il calcolo
 della trilaterazione che abbiamo chiamato...
Il Codice C “a taglio per Valori”
Il codice “a taglio per valori” si basa
sulla supposizione che i valori
ottenuti per cia...
Il Codice C “a taglio per Valori” –
Calcolo della Complessità
Nel caso “peggiore” dal punto di vista della complessità,
av...
Il Codice C “a taglio per 
Occorrenze”
Il codice “a taglio per occorrenze” non potendo più avvalersi della
supposizione su...
Il Codice C “a taglio per Occorrenze” –
Calcolo della Complessità
L’occupazione       di       memoria          Errore cau...
Confronto Algoritmi di trilaterazione




                                                                                ...
Upcoming SlideShare
Loading in...5
×

Presentazione Progetto cRio

545

Published on

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

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
545
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Presentazione Progetto cRio"

  1. 1. Misure Elettriche ed Elettroniche Prof. Bruno Andò Progetto cRIO Mazza Dario 616/002007 Merlino Sebastiano 616/002008 Messina Marco 616/002000
  2. 2. Obiettivi Acquisire conoscenze di base sull’apparato hardware. Comprendere il funzionamento del sistema software di base. Accumulare esperienze a proposito di interfacciamento dell’oggetto con hardware esterno. Utilizzare l’oggetto come controllore “stand alone” di sistemi automatici. Reimplementare l’algoritmo di trilaterazione utilizzato nel sistema CAN‐Bus attualmente realizzato mediante motore MatLab. Ottimizzare l’algoritmo di cui al punto precedente per un funzionamento “stand alone” sul cRIO. 2 Progetto Crio ‐ Mazza, Merlino, Messina                                                                        
  3. 3. Generalità Il cRIO (Compact Reconfigurable I/O) è un microcontrollore real‐time programmabile per sistemi embedded che offre ottime potenzialità come sistema stand alone per l’esecuzione di applicazioni real‐time in LabVIEW. Importante caratteristica del sistema è la sua modularità. Il sistema cRIO consta di un’unità centrale e di uno chassis ove è possibile ospitare fino a 8 moduli che estendono le funzionalità dell’oggetto. Il modello di cRIO a nostra disposizione è il cRIO‐9004. L’utilizzo di un processore che lavora alla frequenza di 195 MHz permette il bilanciamento di bassi consumi in potenza e buone capacità di calcolo. Il NI cRIO si interfaccia con sistemi informatici tramite porta Ethernet BaseT 10/100, ed inoltre vi è una porta seriale RS232 per collegarvi device esterni. 3 Progetto Crio ‐ Mazza, Merlino, Messina                                                                        
  4. 4. I moduli NI 9215 BNC: consta di 4 canali analogici con un range di input ± 10 V. Il convertitore A/D ha una frequenza di campionamento di 800 kS/s in modalità multiplexer e 100 kS/s in campionamento simultaneo. NI 9263: presenta 4 canali analogici per una risoluzione di 16 bit e presenta un range di input pari a ± 10 V. Ha una velocità di aggiornamento simultaneo di 100 kS/s. 4 Progetto Crio ‐ Mazza, Merlino, Messina                                                                        
  5. 5. I moduli NI 9265: è dotato di 4 canali analogici; vanta una risoluzione di 16 bit e un range di output che spazia tra 0 e 20 mA. Può sostenere un carico massimo di 600Ω. NI 9401: è costituito da 8 canali digitali di input/output di tipo TTL a ± 5V. Il NI 9401 ha un delay time di I/O inferiore a 100 ns. Il massimo segnale di input processabile dipende dal numero di canali utilizzati. 5 Progetto Crio ‐ Mazza, Merlino, Messina                                                                        
  6. 6. Componenti Software del cRIO Il cRIO viene fornito con un sistema operativo proprietario chiamato LabVIEW Real‐Time (ETS): questo si occupa della gestione dei processi e organizza le operazioni di IO. Altri importanti componenti software sono: 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 e Web. 6 Progetto Crio ‐ Mazza, Merlino, Messina                                                                        
  7. 7. Che cos'è l'FPGA?  Un dispositivo FPGA (Field‐Programmable Gate Array) è un dispositivo che può essere configurato, dall'utente o dal progettista, in modo da compiere uno specifico lavoro. Generalmente i dispositivi FPGA vengono però programmati direttamente dai progettisti utilizzando linguaggi come il VHDL (VHSIC Hardware Description Language dove VHSIC sta per Very High Speed Integrated Circuits). 7 Progetto Crio ‐ Mazza, Merlino, Messina                                                                        
  8. 8. Come programmare FPGA con  LabVIEW ? Lo sviluppo di una applicazione FPGA si svolge su un computer host collegato al dispositivo FPGA; utilizzando il modulo FPGA e il linguaggio 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 momento dell'esecuzione, verrà caricato nei chip FPGA ed eseguito con un clock di default a 40 MHz ( 25 ns per ogni tick). 8 Progetto Crio ‐ Mazza, Merlino, Messina                                                                        
  9. 9. Come funzionano le applicazioni  sul cRIO ? Un applicazione Real‐Time realizzata per essere eseguita sul cRIO è composta essenzialmente da due parti: la prima è quella che rimane sul computer Host mentre la seconda è quella caricata nel cRIO. Le due parti comunicano tramite una connessione ETHERNET e utilizzando un protocollo TCP o UDP. 9 Progetto Crio ‐ Mazza, Merlino, Messina                                                                        
  10. 10. 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 ed il controllo; Un Time‐Critical Loop per le operazioni in virgola mobile, il processamento e l'analisi dei segnali; Un Loop a priorità normale per data logging locale, l'interfacciamento Web con pannelli remoti e la comunicazione ETHERNET o seriale. 10 Progetto Crio ‐ Mazza, Merlino, Messina                                                                        
  11. 11. Come funzionano le applicazioni  sul cRIO ? I due loop vengono mappati sul sistema operativo come thread separati garantendone l'indipendenza durante l'esecuzione. Solo il Time‐Critical Loop è in grado di interagire con l'applicazione FPGA contenuta nei chip. 11 Progetto Crio ‐ Mazza, Merlino, Messina                                                                        
  12. 12. L'esperimento “Doppia Soglia” L'esperimento “Doppia Soglia” è una semplice applicazione sviluppata per testare le capacità del cRIO e la possibilità di integrare nei VI codice scritto in C. L'esperimento consiste nella lettura di due segnali per controllare se superano due soglie (diverse per i due segnali), i risultati ottenuti dai controlli delle soglie devono essere dati in ingresso ad un codice C che inverte i valori booleani ed, infine, l'uscita del codice C deve essere utilizzata per accendere quattro led. Inoltre, si manda come output analogico la somma dei due segnali in ingresso. Il risultato visibile è che se un segnale è sopra una determinata soglia il led si spegne altrimenti rimane acceso. Per questo esperimento ci siamo avvalsi di tre moduli: NI 9215 BNC per l'input analogico (acquisizione dei due segnali), NI 9263 per l'output analogico (output delle somma dei segnali acquisiti) e NI 9401 per l'output digitale (illuminazione dei led). 12 Progetto Crio ‐ Mazza, Merlino, Messina                                                                        
  13. 13. L'esperimento “Doppia Soglia” 13 Progetto Crio ‐ Mazza, Merlino, Messina                                                                        
  14. 14. L'esperimento “Doppia Soglia” Apre l’applicazione Esegue FPGA l’applicazione Esegue Attende una l’applicazione IRQ Imposta le Imposta i led Legge i Soglie da illuminare booleani 14 Progetto Crio ‐ Mazza, Merlino, Messina                                                                        
  15. 15. L'esperimento “Doppia Soglia” Modalità  INPUT  (acquisizione) 15 Progetto Crio ‐ Mazza, Merlino, Messina                                                                        
  16. 16. La Trilaterazione: tecnica utilizzata Nel software sviluppato durante il progetto utilizzeremo una tecnica per l’individuazione dei soggetti nello spazio detta MTA (Multiple Trilateration Algorithm). Nell’algoritmo MTA la trilaterazione è applicata a singole terne di sensori a meno che questi non siano allineati. Si calcola per ciascuna terna: Nelle precedenti matrici, le variabili x e y rappresentano le coordinate cartesiane del sensore sulla mappa e la variabile r, invece, va ad indicare la distanza rilevata dal sensore. A questo punto utilizzando la formula: otterremo le coordinate, rappresentate dal vettore U, della posizione dell’utente per la singola terna di sensori. La media delle coordinate calcolate dalle singole terne fornirà la posizione finale dell’utente. 16 Progetto Crio ‐ Mazza, Merlino, Messina                                                                        
  17. 17. Generalità sul progetto di  trilaterazione In questa parte del progetto si è voluto realizzare un VI che calcolasse la posizione dell’utente una volta fornita la mappa dei sensori ed il vettore delle distanze rilevate da questi. Si è dovuto realizzare un sistema di scambio informazioni su rete (basata su tecnologia Ethernet) tra il cRIO ed un PC che provvederà a ricevere i dati sulle distanze inviati dai sensori e a rimandarli al cRIO che diverrà, quindi, l’unità logica di calcolo dell’intero sistema e fornirà i risultati ottenuti nuovamente al PC che implementa l’interfaccia utente. 17 Progetto Crio ‐ Mazza, Merlino, Messina                                                                        
  18. 18. Le variabili sul cRIO Il 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. 18 Progetto Crio ‐ Mazza, Merlino, Messina                                                                        
  19. 19. Il VI di Trilaterazione (cRIO) Attesa per l’arrivo della  mappa dalla rete Salvataggio della  mappa su file (per  successivo caricamento) 19 Progetto Crio ‐ Mazza, Merlino, Messina                                                                        
  20. 20. Il VI di Trilaterazione (cRIO) Loop deterministico Loop non deterministico (passaggio variabili) 20 Progetto Crio ‐ Mazza, Merlino, Messina                                                                        
  21. 21. 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 trilaterazione esistente, fornendo un’interfaccia per la comunicazione con il cRIO. Il Sub‐VI consiste in una semplice Flat‐Sequence con imposta una temporizzazione di 10 msec per mantenere la sincronia con il cRIO. Le azioni svolte VI sono due. In un primo momento esso invia l’array di distanze (ricevute dai sensori) ed il numero totale dei sensori al VI di calcolo sul cRIO; successivamente, riceve la posizione dell’utente finale (calcolata sul cRIO) e l’eventuale codice d’errore. È stato, inoltre, realizzato un VI di configurazione mappa, che si occupa, semplicemente, dell’invio della mappa dei sensori, come vettore, sulla rete. 21 Progetto Crio ‐ Mazza, Merlino, Messina                                                                        
  22. 22. Il codice C Sono state realizzate due differenti soluzioni in C per il calcolo della trilaterazione che abbiamo chiamato, rispettivamente, “a taglio per valori” ed “a taglio per occorrenze”; spieghiamole in dettaglio. Entrambe le soluzioni accettano in ingresso la matrice delle posizioni dei sensori ed il vettore delle distanze rilevate da questi. Il codice andrà a scartare i sensori che inviano un dato non valido di distanza (maggiore di 10 metri) e, dati questi, calcolerà le terne di sensori valide (quelle per cui i tre sensori non siano allineati o coincidenti). Per ogni terna verrà calcolata la coordinata stimata sull’asse x e quella sull’asse y. A questo punto si troverà la posizione dell’utente calcolando la media dei risultati ottenuti 22 Progetto Crio ‐ Mazza, Merlino, Messina                                                                        
  23. 23. Il Codice C “a taglio per Valori” Il codice “a taglio per valori” si basa sulla supposizione che i valori ottenuti per ciascuna coordinata siano distribuiti, per numero di occorrenze, su una gaussiana. Per poter scegliere i risultati da scartare, il codice ordinerà (usando l’algoritmo di QuickSort) i risultati dal più piccolo al più grande e scarterà i più piccoli N/5 ed i più grandi N/5, ove N rappresenta il numero totale di valori. Si calcola la media sui rimanenti e si ottiene il valore della coordinata. 23 Progetto Crio ‐ Mazza, Merlino, Messina                                                                        
  24. 24. 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 sensori sostenuto dalla rete CAN‐Bus) tutti a distanza valida e fra i quali 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 caso descritto ritroviamo un numero di elementi per ciascun vettore pari a 41664 avremo quindi una quantità di bytes occupati pari a (41664 x 64 x 2)/8 = 666.62 kbyte. Dal punto di vista della complessità di calcolo l’operazione più faticosa rimane il QuickSort che risulta comunque un algortimo a complessità sottolineare. Si nota un andamento crescente dei tempi di calcolo in maniera direttamente proporzionale al numero di sensori 24 Progetto Crio ‐ Mazza, Merlino, Messina                                                                        
  25. 25. Il Codice C “a taglio per  Occorrenze” Il codice “a taglio per occorrenze” non potendo più avvalersi della supposizione sulla gaussianità, dovrà considerare, per ogni supposto valore, il suo numero di occorrenze. Per questo motivo, prendiamo in ingresso un intero rappresentante il numero di cifre dopo la virgola che considereremo per noi significative. Per ciascuna coordinata troveremo il minimo ed il massimo valore fra quelli forniti dal calcolo sulle terne di sensori ed allochiamo un vettore, definito vettore delle occorrenze, con un 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. 25 Progetto Crio ‐ Mazza, Merlino, Messina                                                                        
  26. 26. Il Codice C “a taglio per Occorrenze” – Calcolo della Complessità L’occupazione di memoria Errore causato da dell’algoritmo sembra essere il suo un sensore guasto punto debole si è per questo preferito utilizzare elementi del vettore delle occorrenze a 2 byte. Nel caso peggiore si avrà uno spreco di memoria pari ai 666,624 Kbyte dell’algoritmo precedente più una quantità variabile di memoria di difficile calcolo (si sono, tuttavia, potute osservare variazioni nell’occupazione di memoria fra i 700 Kbyte e 1‐2 Mbyte). Per ovviare ad eventuali problemi dovuti all’eccessiva occupazione di memoria si è inserito un controllo che riduce l’accuratezza se il range dei valori supera una certa soglia. 26 Progetto Crio ‐ Mazza, Merlino, Messina                                                                        
  27. 27. Confronto Algoritmi di trilaterazione 27 Progetto Crio ‐ Mazza, Merlino, Messina                                                                        
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×