ºÝºÝߣ

ºÝºÝߣShare a Scribd company logo
Misure Elettriche ed Elettroniche
         Prof. Bruno And¨°


Progetto cRIO
     Mazza?Dario          616/002007
     Merlino?Sebastiano   616/002008
     Messina?Marco        616/002000
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????????????????????????????????????????????????????????????????????????
³Ò±ð²Ô±ð°ù²¹±ô¾±³Ù¨¤
                                                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????????????????????????????????????????????????????????????????????????
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????????????????????????????????????????????????????????????????????????
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????????????????????????????????????????????????????????????????????????
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????????????????????????????????????????????????????????????????????????
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????????????????????????????????????????????????????????????????????????
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????????????????????????????????????????????????????????????????????????
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????????????????????????????????????????????????????????????????????????
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????????????????????????????????????????????????????????????????????????
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????????????????????????????????????????????????????????????????????????
³¢&#³æ27;±ð²õ±è±ð°ù¾±³¾±ð²Ô³Ù´Ç?¡°¶Ù´Ç±è±è¾±²¹?³§´Ç²µ±ô¾±²¹¡±
 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????????????????????????????????????????????????????????????????????????
³¢&#³æ27;±ð²õ±è±ð°ù¾±³¾±ð²Ô³Ù´Ç?¡°¶Ù´Ç±è±è¾±²¹?³§´Ç²µ±ô¾±²¹¡±




                                                                                                                  13
Progetto?Crio?©\ Mazza,?Merlino,?Messina????????????????????????????????????????????????????????????????????????
³¢&#³æ27;±ð²õ±è±ð°ù¾±³¾±ð²Ô³Ù´Ç?¡°¶Ù´Ç±è±è¾±²¹?³§´Ç²µ±ô¾±²¹¡±
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????????????????????????????????????????????????????????????????????????
³¢&#³æ27;±ð²õ±è±ð°ù¾±³¾±ð²Ô³Ù´Ç?¡°¶Ù´Ç±è±è¾±²¹?³§´Ç²µ±ô¾±²¹¡±

                                   Modalit¨¤??INPUT?
                                    (acquisizione)




                                                                                                                  15
Progetto?Crio?©\ Mazza,?Merlino,?Messina????????????????????????????????????????????????????????????????????????
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????????????????????????????????????????????????????????????????????????
³Ò±ð²Ô±ð°ù²¹±ô¾±³Ù¨¤?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????????????????????????????????????????????????????????????????????????
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????????????????????????????????????????????????????????????????????????
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????????????????????????????????????????????????????????????????????????
Il?VI?di?Trilaterazione?(cRIO)


                       Loop?deterministico




                         Loop?non?deterministico
                         (passaggio?variabili)




                                                                                                                  20
Progetto?Crio?©\ Mazza,?Merlino,?Messina????????????????????????????????????????????????????????????????????????
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????????????????????????????????????????????????????????????????????????
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????????????????????????????????????????????????????????????????????????
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????????????????????????????????????????????????????????????????????????
Il?Codice?C?¡°a?taglio?per?Valori¡±?¨C
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????????????????????????????????????????????????????????????????????????
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????????????????????????????????????????????????????????????????????????
Il?Codice?C?¡°a?taglio?per?Occorrenze¡±?¨C
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????????????????????????????????????????????????????????????????????????
Confronto?Algoritmi?di?trilaterazione




                                                                                                                  27
Progetto?Crio?©\ Mazza,?Merlino,?Messina????????????????????????????????????????????????????????????????????????

More Related Content

Presentazione Progetto cRio

  • 1. Misure Elettriche ed Elettroniche Prof. Bruno And¨° Progetto cRIO Mazza?Dario 616/002007 Merlino?Sebastiano 616/002008 Messina?Marco 616/002000
  • 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. ³Ò±ð²Ô±ð°ù²¹±ô¾±³Ù¨¤ 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. 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. 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. 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. 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. 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. 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. 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. 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. ³¢&#³æ27;±ð²õ±è±ð°ù¾±³¾±ð²Ô³Ù´Ç?¡°¶Ù´Ç±è±è¾±²¹?³§´Ç²µ±ô¾±²¹¡± 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. ³¢&#³æ27;±ð²õ±è±ð°ù¾±³¾±ð²Ô³Ù´Ç?¡°¶Ù´Ç±è±è¾±²¹?³§´Ç²µ±ô¾±²¹¡± 13 Progetto?Crio?©\ Mazza,?Merlino,?Messina????????????????????????????????????????????????????????????????????????
  • 14. ³¢&#³æ27;±ð²õ±è±ð°ù¾±³¾±ð²Ô³Ù´Ç?¡°¶Ù´Ç±è±è¾±²¹?³§´Ç²µ±ô¾±²¹¡± 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. ³¢&#³æ27;±ð²õ±è±ð°ù¾±³¾±ð²Ô³Ù´Ç?¡°¶Ù´Ç±è±è¾±²¹?³§´Ç²µ±ô¾±²¹¡± Modalit¨¤??INPUT? (acquisizione) 15 Progetto?Crio?©\ Mazza,?Merlino,?Messina????????????????????????????????????????????????????????????????????????
  • 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. ³Ò±ð²Ô±ð°ù²¹±ô¾±³Ù¨¤?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. 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. 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. Il?VI?di?Trilaterazione?(cRIO) Loop?deterministico Loop?non?deterministico (passaggio?variabili) 20 Progetto?Crio?©\ Mazza,?Merlino,?Messina????????????????????????????????????????????????????????????????????????
  • 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. 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. 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. Il?Codice?C?¡°a?taglio?per?Valori¡±?¨C 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. 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. Il?Codice?C?¡°a?taglio?per?Occorrenze¡±?¨C 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. Confronto?Algoritmi?di?trilaterazione 27 Progetto?Crio?©\ Mazza,?Merlino,?Messina????????????????????????????????????????????????????????????????????????