SlideShare ist ein Scribd-Unternehmen logo
1 von 27
Downloaden Sie, um offline zu lesen
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                                                                        
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                                                                        
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                                                                        
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                                                                        
L'esperimento “Doppia Soglia”




                                                                                                                  13
Progetto Crio ‐ Mazza, Merlino, Messina                                                                        
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                                                                        
L'esperimento “Doppia Soglia”

                                   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                                                                        
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                                                                        
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” –
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” –
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                                                                        

Weitere ähnliche Inhalte

Ähnlich wie Presentazione Progetto cRio

EuComm
EuCommEuComm
EuComm
iBLio
 
Presentazione CLOUDITALIA KELYAN Evento CloudGarage 5-11 giugno 2013
Presentazione CLOUDITALIA KELYAN Evento CloudGarage 5-11 giugno 2013Presentazione CLOUDITALIA KELYAN Evento CloudGarage 5-11 giugno 2013
Presentazione CLOUDITALIA KELYAN Evento CloudGarage 5-11 giugno 2013
Clouditalia Telecomunicazioni
 
Mc56 f82xx freescale amplia il portfolio dsc per il controllo del motore - 2...
Mc56 f82xx  freescale amplia il portfolio dsc per il controllo del motore - 2...Mc56 f82xx  freescale amplia il portfolio dsc per il controllo del motore - 2...
Mc56 f82xx freescale amplia il portfolio dsc per il controllo del motore - 2...
Ionela
 

Ähnlich wie Presentazione Progetto cRio (20)

Relazione Progetto cRio
Relazione Progetto cRioRelazione Progetto cRio
Relazione Progetto cRio
 
Relazione Progetto cRIO
Relazione Progetto cRIORelazione Progetto cRIO
Relazione Progetto cRIO
 
EuComm
EuCommEuComm
EuComm
 
Lezioni 2009
Lezioni 2009Lezioni 2009
Lezioni 2009
 
Il web service e i sistemi embedded - Tesi - cap2
Il web service e i sistemi embedded - Tesi - cap2Il web service e i sistemi embedded - Tesi - cap2
Il web service e i sistemi embedded - Tesi - cap2
 
Lezione 3 arduino - corso 20 ore
Lezione 3 arduino - corso 20 oreLezione 3 arduino - corso 20 ore
Lezione 3 arduino - corso 20 ore
 
Siemens-S7-1200-PLC
Siemens-S7-1200-PLCSiemens-S7-1200-PLC
Siemens-S7-1200-PLC
 
Jc06 Antonio Terreno Fluidtime
Jc06 Antonio Terreno FluidtimeJc06 Antonio Terreno Fluidtime
Jc06 Antonio Terreno Fluidtime
 
Innovazione infrastrutturale per l'erogazione di servizi applicativi su x86. ...
Innovazione infrastrutturale per l'erogazione di servizi applicativi su x86. ...Innovazione infrastrutturale per l'erogazione di servizi applicativi su x86. ...
Innovazione infrastrutturale per l'erogazione di servizi applicativi su x86. ...
 
Verziagi Paolo, EMAK - Minitab, alcuni casi aziendali
Verziagi Paolo, EMAK - Minitab, alcuni casi aziendaliVerziagi Paolo, EMAK - Minitab, alcuni casi aziendali
Verziagi Paolo, EMAK - Minitab, alcuni casi aziendali
 
Linea prodotti configurabili CAMILLO per la Misura, l' Automazione ed il Cont...
Linea prodotti configurabili CAMILLO per la Misura, l' Automazione ed il Cont...Linea prodotti configurabili CAMILLO per la Misura, l' Automazione ed il Cont...
Linea prodotti configurabili CAMILLO per la Misura, l' Automazione ed il Cont...
 
Tesi
TesiTesi
Tesi
 
Presentazione CLOUDITALIA KELYAN Evento CloudGarage 5-11 giugno 2013
Presentazione CLOUDITALIA KELYAN Evento CloudGarage 5-11 giugno 2013Presentazione CLOUDITALIA KELYAN Evento CloudGarage 5-11 giugno 2013
Presentazione CLOUDITALIA KELYAN Evento CloudGarage 5-11 giugno 2013
 
Introduzione al Cloud - Progetto ICARO
Introduzione al Cloud - Progetto ICAROIntroduzione al Cloud - Progetto ICARO
Introduzione al Cloud - Progetto ICARO
 
Webinar Dymola 18 Maggio 2010
Webinar Dymola 18 Maggio 2010Webinar Dymola 18 Maggio 2010
Webinar Dymola 18 Maggio 2010
 
Radioastronomia amatoriale e radiotelescopi
Radioastronomia amatoriale e radiotelescopiRadioastronomia amatoriale e radiotelescopi
Radioastronomia amatoriale e radiotelescopi
 
Workshop Aruba a Smau Milano 2013: dall'infrastruttura fisica al cloud.
Workshop Aruba a Smau Milano 2013: dall'infrastruttura fisica al cloud.Workshop Aruba a Smau Milano 2013: dall'infrastruttura fisica al cloud.
Workshop Aruba a Smau Milano 2013: dall'infrastruttura fisica al cloud.
 
Lezione1 introduzione micro
Lezione1 introduzione microLezione1 introduzione micro
Lezione1 introduzione micro
 
Mc56 f82xx freescale amplia il portfolio dsc per il controllo del motore - 2...
Mc56 f82xx  freescale amplia il portfolio dsc per il controllo del motore - 2...Mc56 f82xx  freescale amplia il portfolio dsc per il controllo del motore - 2...
Mc56 f82xx freescale amplia il portfolio dsc per il controllo del motore - 2...
 
MySQL Tech Tour 2015 - Soluzioni di alta disponibilità con MySQL
MySQL Tech Tour 2015 - Soluzioni di alta disponibilità con MySQLMySQL Tech Tour 2015 - Soluzioni di alta disponibilità con MySQL
MySQL Tech Tour 2015 - Soluzioni di alta disponibilità con MySQL
 

Mehr von Dario Mazza (9)

Linux & Open Source : Lezione Cinque
Linux & Open Source : Lezione CinqueLinux & Open Source : Lezione Cinque
Linux & Open Source : Lezione Cinque
 
Linux & Open Source : Lezione Quattro
Linux & Open Source : Lezione QuattroLinux & Open Source : Lezione Quattro
Linux & Open Source : Lezione Quattro
 
Linux & Open Source : Lezione Tre Pratica
Linux & Open Source : Lezione Tre PraticaLinux & Open Source : Lezione Tre Pratica
Linux & Open Source : Lezione Tre Pratica
 
Linux & Open Source : Lezione Due Pratica
Linux & Open Source : Lezione Due PraticaLinux & Open Source : Lezione Due Pratica
Linux & Open Source : Lezione Due Pratica
 
Linux & Open Source : Lezione Due
Linux & Open Source : Lezione DueLinux & Open Source : Lezione Due
Linux & Open Source : Lezione Due
 
Linux & Open Source : Lezione 1 Pratica
Linux & Open Source : Lezione 1 PraticaLinux & Open Source : Lezione 1 Pratica
Linux & Open Source : Lezione 1 Pratica
 
Linux & Open Source : Lezione 1
Linux & Open Source : Lezione 1Linux & Open Source : Lezione 1
Linux & Open Source : Lezione 1
 
SAWSDL Restriced
SAWSDL RestricedSAWSDL Restriced
SAWSDL Restriced
 
OWL Guide Resticted
OWL Guide RestictedOWL Guide Resticted
OWL Guide Resticted
 

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. 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. 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. 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. L'esperimento “Doppia Soglia” 13 Progetto Crio ‐ Mazza, Merlino, Messina                                                                        
  • 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. L'esperimento “Doppia Soglia” 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. 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. 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” – 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” – 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