La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Labview I: Introduzione a LabView e Fondamenti del DataFlow.

Presentazioni simili


Presentazione sul tema: "Labview I: Introduzione a LabView e Fondamenti del DataFlow."— Transcript della presentazione:

1 Labview I: Introduzione a LabView e Fondamenti del DataFlow

2 Introduzione a LabView  LabView è una piattaforma specificatamente pensata per sviluppare sistemi di acquisizione, analisi e trattamento dati.  I programmi in LabView sono definiti “Virtual Instruments” o VI in quanto simulano il comportamento di strumenti fisici reali.

3 Introduzione a LabView  Ogni VI è composto da tre elementi:  pannello frontale  schema a blocchi  icona dei connettori.  Ogni operazione viene svolta graficamente in modo da semplificare lo sviluppo e l’uso dell’applicazione.

4 Il Pannello Frontale  Il pannello frontale è l’INTERFACCIA che il VI presenta all’utente finale  Deve contenere tutti i controlli necessari per interagire con il VI.  Ogni dato da visualizzare all’utente deve essere riportato qui.

5 Il Pannello Frontale tutti gli elementi del pannello frontale sono:  CONTROLLI, cioè oggetti a cui l’utente può fornire dati oppure  INDICATORI, cioè oggetti da cui l’utente può ottenere dati

6 Lo Schema a Blocchi  Contiene le controparti di tutti gli elementi presenti nel pannello frontale.  Deve contenere i connettori e gli operatori necessari a definire come trattare il flusso di dati

7 Lo Schema a Blocchi Oltre ai CONTROLLI ed agli INDICATORI sullo schema a blocchi troviamo anche:  COSTANTI, cioè fonti di dati non definibili dall’utente  OPERATORI, in grado di svolgere operazioni sulle linee di dati operatore costante operatore costante

8 Icona dei Connettori  Ogni VI può essere a sua volta incluso in un altro VI come un subVI.  Ogni operatore dello schema a blocchi è in realtà un subVI  L’icona dei connettori definisce input ed output di ogni subVI  Un subVI espone la sua icona dei connettori al posto del pannello frontale

9 Esercizio 001 prova tu:  Uso del pannello controlli e del pannello tools  Suddivisione in tipi di dato  Distinzione controlli/indicatori  Riprodurre il pannello frontale mostrato di seguito preoccupandosi per ora unicamente dell’aspetto grafico  Verificare di aver creato 7 controlli e 3 indicatori NB: -la barra verticale, “slide” è un controllo -tralasciare lo sfondo azzurro: è solo indicativo

10 Esercizio 001

11 Lavorare in DataFlow  Il DataFlow specifica il PERCORSO che i dati devono compiere ma NON L’ORDINE con cui le singole operazioni vanno eseguite  In LabView i dati sono rappresentati da delle linee che connettono la loro sorgente ad operatori ed indicatori.  Ogni tipo di dato è rappresentato da un diverso colore, utilizzato sia per le linee che per i connettori dei subVI  Una linea di spessore marcato indica un array od una matrice, mentre una linea sottile indica un valore scalare

12 Tipi di Dati  LabView è basato sulla gestione del flusso di dati, quindi il loro tipo è fondamentale  LabView gestisce un gran numero di tipi di dati diversi, suddivisi per categorie  Dati di categorie diverse non possono interagire direttamente  Tipi di dati diversi ma della stessa categoria possono interagire direttamente

13 Tipi di Dati  Numerici (Interi, Decimali, Virgola Mobile, Date)  Booleani  Stringhe (Stringhe e Percorsi)  Aggregati (Array, Matrici e Cluster)  Forme d’Onda  Dati Dinamici (Segnali ed Errori)  Enumeratori

14 Modalità Debug  È utile per visualizzare il flusso di dati nel diagramma a blocchi  Rallenta l’esecuzione del VI e quindi non va usato se non necessario  Permette di inserire delle sonde (probe) per visualizzare il valore del dato in un determinato punto del flusso

15 Esercizio 002 prova tu:  Simmetria tra front panel e block diagram  Distinzione tipi di dato e flussi  Convenzione di verso per il flusso  Help contestuale  Convertire in indicatore il controllo slide  Aggiungere dal block diagram due indicatori di tipo boolean  Sfruttando la palette NUMERIC sommare al controllo ampiezza un numero casuale tra 0 e 1  Dividere il valore della fase per 180 e moltiplicarlo per π  Collegare ad ogni INDICATORE presente un controllo del tipo corrispondente

16 Strutture Fondamentali  Le strutture principali sono le medesime dei linguaggi di programmazione usuali: WHILE, FOR e CASE  I dati entrano ed escono dalle strutture tramite TUNNEL letti solo all’avvio (ingresso) od alla fine (uscita) della struttura  Ogni VI che interagisca con un utente richiede un ciclo WHILE principale che racchiuda ogni altro elemento e si interrompa tramite un controllo STOP per consentire all’utente di interagire

17 Strutture Fondamentali  Sia i cicli iterativi (for, while) che i blocchi alternativi (case, conditional) possono essere visti come porzioni autonome di block diagram, in cui i dati viaggiano grazie ad ingressi ed uscite chiamati TUNNEL  È bene mantenere la convenzione di flusso: ingressi a sinistra ed uscite a destra, in modo da leggere il flusso di dati da sinistra a destra

18 Ciclo WHILE  Quello che si trova all’interno del ciclo viene ripetuto finchè la condizione di stop (dato booleano) è FALSE  Ogni VI che interagisce con l’utente deve prevedere un ciclo WHILE generale con una condizione di STOP collegata ad un pulsante e contenere un operatore WAIT per evitare di saturare il processore

19 Esercizio 003 prova tu:  Ciclo WHILE generale con interruttore e WAIT  Uso dell’operatore SELECT  Mechanical action  Riprendere l’esercizio 002  Racchiudere l’intero front panel in un blocco WHILE con un operatore WAIT ms multiple a 500 ms che si interrompa alla pressione di STOP  Sfruttando l’operatore di confronto SELECT fare in modo che la fase venga visualizzata in gradi se l’interruttore è off, in radianti se on  Impostare la mechanical action di START su LATCH e quella dell’interruttore su SWITCH, quindi provare ad invertirle

20 Ciclo FOR  Quel che si trova all’interno del ciclo viene ripetuto N volte: l’indice i va da 0 a N-1  Se un tunnel in ingresso trasporta un dato di tipo ARRAY all’interno del ciclo automaticamente avremo l’elemento i- esimo dell’array (indexing), viceversa in uscita possiamo scegliere di creare un array partendo dalla successione di dati

21 Esercizio 004 prova tu:  FOR con contatore  Debug e sonde  Creare un nuovo VI in cui riprodurre il block diagram riportato nella slide precedente  Per ora disattivare la funzione di autoindexing (verrà illustrata in seguito)  Eseguire il VI in modalità debug

22 Struttura CASE Esegue solo ciò che è all’interno del riquadro corrispondente al dato cui è collegata la sua condizione. Il menu delle opzioni disponibili si adatta automaticamente al tipo di dato collegato alla condizione.

23 Esercizio 005 prova tu:  Differenze tra CHART e GRAPH  Struttura While, Case e For  Creare un blocco while di interazione con l’utente (500ms)  Creare un interruttore (switch) GENERATE RANDOM NUMBERS  Creare sia un indicatore CHART che GRAPH  Creare un controllo numerico MAX con valori tra 0 e 1000  Sfruttando opportunamente un blocco CASE ed un blocco FOR fare in modo che su entrambi gli indicatori (Chart e Graph) vengano visualizzati 100 numeri casuali compresi tra 0 e MAX, a che la generazione dei numeri avvenga solamente in caso di pressione dell’interruttore GENERATE RANDOM NUMBERS

24 Esercizio 005

25 Elaborato 01  Prendere confidenza con i controlli del pannello frontale  Capire la distinzione tra booleani LATCH e SWITCH  Capire la distinzione tra Graph e Chart  Iniziare a tracciare i valori tramite sonde e ricorrendo alla modalità debug  Rappresentazione e formato dati  Tunnel incompleti e completi  Creazione automatica di costanti, indicatori e controlli

26 Labview II: Array e Cluster Shift Register Forme d’Onda

27 Riepilogo delle strutture  Finora abbiamo visto le tre strutture di controllo base: WHILE, CASE e FOR  Queste strutture possono svolgere funzioni complesse e molto utili, in modo da semplificare il lavoro quando si tratta di dati strutturati

28 Ciclo WHILE  Quello che si trova all’interno del ciclo viene ripetuto finchè la condizione di stop (dato booleano) è FALSE  Ogni VI che interagisce con l’utente deve prevedere un ciclo WHILE generale con una condizione di STOP collegata ad un pulsante e contenere un operatore WAIT per evitare di saturare il processore

29 Struttura CASE Esegue solo ciò che è all’interno del riquadro corrispondente al dato cui è collegata la sua condizione. Il menu delle opzioni disponibili si adatta automaticamente al tipo di dato collegato alla condizione.

30 Ciclo FOR  Quel che si trova all’interno del ciclo viene ripetuto N volte: l’indice i va da 0 a N-1  Se un tunnel in ingresso trasporta un dato di tipo ARRAY all’interno del ciclo automaticamente avremo l’elemento i-esimo dell’array (indexing)

31 Shift Register  Spesso è utile passare dei dati tra un’iterazione e la successiva all’interno di un ciclo: per farlo faccio ricorso ad uno SHIFT REGISTER  A differenza di un tunnel lo shift register viene scritto e letto ad ogni iterazione  È molto comodo per creare cumulate o sequenze di dati in congiunzione con l’operatore BUILD ARRAY

32 Esercizio 006 prova tu:  Shift register come memoria  Riprendere l’esercizio 005  Sfruttando uno shift register visualizzare in un nuovo controllo la differenza tra il valore di MAX attuale e quello precedente  Calcolare e visualizzare min, max, media e deviazione standard dell’ultimo set di campioni generati alla pressione di un pulsante boolean CALCOLA (ma NON durante la generazione)

33 Array e Matrici  Gli ARRAY sono strutture ordinate in una o due dimensioni contenenti un unico tipo di dato: se numerici possiamo vederli come vettori (monodimensionali) o come matrici (bidimensionali)  Per creare un array partendo dai valori elementari esiste BUILD ARRAY, per l’inverso si sfrutta INDEX ARRAY  In LabView gli array sono dinamici, quindi non hanno un numero fisso di elementi, ma possono essere ampliati con l’aggiunta di altri elementi tramite la funzione BUILD ARRAY  Gli array possono contenere qualsiasi tipo di dato gestito da LabView, persino altri array, ma, a differenza dei cluster, non possono contenere elementi di tipi diversi  Tutti gli array in LabView partono dall’elemento di indice 0

34 Esercizio 007 prova tu:  autoindexing  Riprendere l’esercizio 006  Sfruttando un build array ed uno shift register visualizzare min, max, media e deviazione standard anche di TUTTI I SET di dati generati dall’avvio del vi.

35 Cluster  I CLUSTER sono aggregati, non necessariamente omogenei, di dati diversi.  Per creare un cluster partendo dai dati elementari sfruttiamo l’operatore BUNDLE, per ottenere i dati elementari dal cluster si ricorre a UNBUNDLE  Un cluster può anche definire delle etichette per i dati, ad esempio il tipo di dato ERRORE è un cluster contenente un booleano “STATUS” ed un intero “ERROR CODE”): sfruttiamo le funzioni “BY NAME”  Un array può essere sempre convertito in cluster, ma non sempre è possibile l’inverso

36 Esercizio 008 prova tu:  Cluster ed operazioni su cluster  Riprendere l’esercizio 007  Alleggerire il ricorso alla memoria memorizzando e visualizzando le informazioni di max,min, media e dev.st solo sotto forma di cluster (per facilitare il calcolo aggiungere al cluster anche l’informazione del numero di campioni da cui i dati derivano)  Mantenere in memoria solo i dati dell’ultima generazione di dati  Visualizzare sia l’ultimo set di dati che lo storico temporale  [eliminare il pulsante calcola e fare in modo che si avvii automaticamente al termine della generazione di numeri]

37 WaveForms & Signals  Oltre ai dati classici già presentati esistono alcuni tipi di dati particolari dedicati a generare, rappresentare ed analizzare forme d’onda  Un tipo di dato fondamentale è il waveform, per il quale esistono una serie di VI ed operatori già definiti  Molti indicatori od operatori sono POLIMORFICI e si adattano al tipo di dato che viene collegato, waveform e signals compresi  Questi tipi di dati sfruttano un set di VI autonomi per lettura e scrittura su file

38 Esercizio 009 prova tu:  Riprendere l’esercizio 008  Sfruttando gli operatori per la costruzione di waveform aggiungere ai dati generati casualmente l’informazione della frequenza di campionamento impostabile tramite un controllore numerico letto in avvio.  [Impostare come istante di inizio della waveform l’ora attuale tramite gli operatori TIME/DATE]

39 Esercizio 010 prova tu:  Mantenere il block diagram ordinato!  Riprendere l’esercizio 009  Sostituire all’operatore di costruzione delle waveform un operatore specifico di generazione di waveform a rumore bianco  Sommare alla waveform a rumore bianco una sinusoidale generata secondo gli stessi parametri, di cui siano impostabili frequenza e ampiezza  [Fare in modo che siano sommabili N sinusoidi]

40 LabView EXPRESS  I componenti express consentono di sviluppare rapidamente applicazioni di analisi ed interpretazione misure  Sono VI polimorfici con un apposito wizard di configurazione  Spesso richiedono di riavviare il VI per poter funzionare correttamente (son progettati per un VI “monouso”)

41 Esercizio 011 prova tu:  Componenti express  Riprendere l’esercitazion 010  Sfruttando un operatore EXPRESS visualizzare su di un grafico a parte la componente in ampiezza della FFT del segnale generato  [Fare in modo che l’FFT visualizzata sia il risultato di una media di N generazioni]  [In caso di errore visualizzarlo all’utente ed interrompere l’esecuzione del programma]

42 Elaborato 02  Prendere confidenza con i vari tipi di strutture di controllo  Capire la distinzione tra TUNNEL, SHIFT REGISTER ed INDEX  Controlli e operatori waveform  Controlli express per l’analisi modale

43 Labview III: Lettura e scrittura da file

44 Leggere Dati da File  I più comuni sono i file SPREADSHEET, file ASCII che rappresentano numeri a virgola mobile separati in righe e colonne da tabulatori od altro, ad esempio i CSV, separati da “;” e facilmente leggibili in EXCEL  Un’alternativa sono FILE DI TESTO, file ASCII che riportano solo array di stringhe (una per riga), ma che richiedono una conversione tramite parsing  I FILE BINARI scritti da LabView sono di lettura immediata e riproducono esattamente i valori salvati senza bisogno di alcuna conversione.  I DATALOG possono essere letti direttamente senza conversione, prestando però attenzione alla sequenzialità con cui sono stati salvati in origine Esistono vari tipi di file che LabView può leggere, sia nativamente che interpretando stringhe formattate

45 Salvare Dati su File  I più comuni sono i file SPREADSHEET, file ASCII che rappresentano numeri a virgola mobile separati in righe e colonne da tabulatori od altro  Un’alternativa sono FILE DI TESTO, file ASCII che riportano solo array di stringhe (una per riga)  I FILE BINARI rappresentano qualsiasi tipo di dato, ma sono leggibili solo da LabView  I DATALOG sono file binari ad accesso rapido, utili per tracciare l’andamento di valori nel corso dell’esecuzione del programma Esistono vari tipi di file che LabView può scrivere, da utilizzare a seconda del dato che si vuole salvare

46 Componenti EXPRESS Esistono anche funzioni ExpressVI per la lettura e la scrittura di forme d’onda e di vari dati dinamici Questi file sono chiamati MEASUREMENT FILES e possono essere sia binari che testuali L’uso di questi ExpressVI permette di configurare rapidamente un gran numero di opzioni di salvataggio

47 Esercizio 012 prova tu: OBIETTIVO: Permettere di salvare dei dati generati in formato testuale Permettere di salvare stringhe e cluster in formato binario  Sfruttando l’operatore uniform white noise generare una forma d’onda di durata impostabile dall’utente e frequenza fissa a 10kHz composta dalla sovrapposizione di una sinusoide (di ampiezza e frequenza impostabili dall’utente) e del rumore bianco di ampiezza massima 1V  Salvare la forma d’onda così generata in un formato testuale (csv)  Salvare la forma d’onda in un file binario  Salvare in un cluster i parametri di generazione (frequenze, ampiezze) e salvarlo in un file binario

48 Esercizio 013 prova tu: OBIETTIVO: Permettere di leggere dei dati importati in formato testuale Permettere di leggere dati in formato binario  Riprendere i file salvati nell’esercizio 012  Importare la forma d’onda da un formato testuale (csv) in Excel  Importare la forma d’onda da un formato binario e visualizzarla su di un grafico  Visualizzare su controlli opportuni le impostazioni precedentemente salvata in un cluster e salvate su binario

49 Elaborato 03  Prendere confidenza con i vari tipi di formato di salvataggio  Comprendere i vantaggi e gli svantaggi del salvataggio in file testuali  Valutare le dimensioni dei file binari e testuali  Salvare un file in maniera continua  Utilizzare i datalog

50 Labview IV: Gestione degli errori e subvi

51 subVI  La programmazione in LabView, essendo prettamente grafica, richiede più che in altri ambiti modularità e possibilità di riutilizzo  L’obiettivo nello sviluppare un VI è quello di realizzare un block diagram autoesplicativo  Per ottenere tutto ciò si fa ricorso ai subVI, ovvero alla possibilità di ogni VI di essere richiamato all’interno di un altro VI

52 Icona dei Connettori  Ogni VI può essere a sua volta incluso in un altro VI come un subVI.  Ogni operatore dello schema a blocchi è in realtà un subVI  L’icona dei connettori definisce input ed output di ogni subVI  Un subVI espone la sua icona dei connettori al posto del pannello frontale

53 Icona dei Connettori  Anche per la definizione di input ed output si procede per via grafica  L’icona dei connettori, in modalità show connectors, permette di associare ogni elemento del front panel ad un terminale del VI  Ogni terminale può essere consigliato (default), obbligatorio od opzionale  È importante mantenere la convenzione che vuole gli input a sinistra e gli output a destra

54 Esercizio 014 prova tu:  RIPRENDERE L’ESERCIZIO 012 OBIETTIVO: Trasformare il vi di generazione della sinusoide in un subVI  Separare il vi precedente in due blocchi distinti: generazione e salvataggio  Rimuovere tutti gli elementi il cui UNICO scopo è l’interazione con l’utente  Facendo attenzione all’uso delle icone e dei connettori creare due subvi: uno per la generazione della forma d’onda, l’altro per il salvataggio  ATTENZIONE ALL’USO DI INPUT E OUTPUT!! MANTENERE SEMPRE LA LETTURA DA SINISTRA A DESTRA!

55 Modalità di Esecuzione  Grazie alla finestra VI properties possiamo definire varie proprietà di esecuzione del subVI, la principale rimane però la modalità di esecuzione  L’esecuzione è detta reentrant se possono esistere più istanze del medesimo subVI in esecuzione in contemporanea  L’esecuzione è invece non-reentrant se esiste una sola istanza del subVI cui accedono successivamente i vari VI che lo richiamano  In entrambi i casi un unica istanza del subVI viene collegata ad ogni VI che l’ha richiamata, rendendo quindi possibili operazioni iterative in successione (ad esempio un inizializzazione di una risorsa solo alla prima chiamata od un contatore interno)

56 Errori RunTime  Gli errori si distinguono a seconda dell’utilizzatore che li genera:  se avvengono mentre stiamo progettando il VI sono errori di DESIGN TIME e impediscono l’avvio del VI stesso  se avvengono quando il VI è in esecuzione sono errori di RUNTIME e non sono prevedibili a priori  Ogni subVI in grado di generare errori deve prevedere un errore in input ed uno in output

57 Il Flusso degli Errori  Ogni VI che può generare un errore RunTime dispone di due connettori, chiamati error in (no error) ed error out  Il tipo di dati che gestiscono questi terminali è un cluster particolare, composto da status, codice e messaggio  Alcuni controlli, come il blocco case, sono in grado di adattarsi al tipo di dato errore grazie al polimorfismo

58 Il Flusso degli Errori  un VI che trovi un error in diverso da no error non viene eseguito, ma passa l’errore al terminale error out direttamente  un VI che riscontri un errore RunTime scrive sul suo terminale error out l’errore riscontrato, se nulla è collegato ad error out, compare una finestra di errore standard all’utente

59 Sequenze di esecuzione  Lavorando in dataflow non si possono controllare le sequenze di operazioni ma solo il flusso di dati  Flussi paralleli avvengono secondo le disponibilità del processore e dell’hardware e non possiamo quindi definirne la sequenza  Nel caso delle operazioni debbano necessariamente essere eseguite in successione possiamo ricorrere al FLUSSO DEGLI ERRORI per imporre una sequenza specifica  Oltre agli errori anche altri tipi di dato contenenti risorse (task, handle, file) sfruttano una catena di connettori IN/OUT utili per creare sequenze

60 Esercizio 015 prova tu:  RIPRENDERE L’ESERCIZIO 014 OBIETTIVO: Aggiungere al subVi la gestione degli errori  Aggiungere ai subvi i terminali di errore ed evitare che vengano eseguiti in caso di errore (comportamento standard)  Fare in modo che la forma d’onda generata sia la somma di due forme d’onda definite indipendentemente  Provare a ripetere la medesima operazione con subvi reentrant  ATTENZIONE ALLA CATENA DEGLI ERRORI!

61 Labview V: Progetti, librerie ed eseguibili

62 Progetti  Qualora sia necessario sviluppare un’applicazione od un vi complesso (formato da più subvi) è utile riunire tutti i vi generati in un gruppo più esteso: il progetto  Un progetto è dato dall’unione di vari elementi fondamentali:  Uno o più TARGET (su che hardware vogliamo sviluppare)  Uno o più VI all’interno del target eventualmente ragruppati in cartelle virtuali per comodità  Eventualmente una o più LIBRERIE che riuniscono VI con funzioni coordinate tra di loro (anche non sviluppate da noi)  Una o più BUILD SPECIFICATIONS e cioè  Uno o più eseguibili da compilare unendo i vi creati  Uno o più installer per installare i programmi creati

63 TARGET Progetto VI Libreria VI da cui dipende il progetto Eseguibile Installer

64 Librerie  Consentono di riunire VI che abbiano funzioni coordinate tra di loro  Consentono il trasferimento in maniera semplice di gruppi di vi molto ramificati  Offrono l’opportunità di introdurre elementi aggiuntivi ai vi: le variabili di rete  Offrono molti vantaggi se usati in combinazione con i file collettori LLB (gruppi di vi compressi in un unico file per facilitarne il trasferimento)  Possono essere compilate e trasferite in forma vincolata ad un terzo utilizzatore

65 Elaborato 04  Riunire tutti i vi svolti finora in un unico progetto  Comprendere le implicazioni dell’uso di progetti, librerie ed llb  Creare un eseguibile ed un installer  DEFINIRE UN PROPRIO PROGETTO ED UNA LIBRERIA DI VI

66 Labview VI: Introduzione teorica all’acquisizione, LabView, NI MAX e DAQmx

67 L’ACQUISIZIONE DIGITALE DEI SEGNALI

68 I vantaggi principali dei sistemi digitali consistono in:  elevata insensibilità ai disturbi  bassa incertezza con costi relativamente contenuti  compatibilità intrinseca coi sistemi di calcolo  facilità di manipolazione, trasmissione, registrazione, riproduzione

69 TEORIA DELLA QUANTIZZAZIONE problemi relativi all’asse delle ordinate

70 La conversione A/D consta di due fasi: - quantizzazione - codifica

71 Quantizzazione il dato analogico viene suddiviso in un insieme di stati discreti

72 Codifica si assegna una parola digitale (stringa di caratteri) ad ogni stato discreto secondo un codice opportuno

73 stringa di caratteri = N bit codifica binaria = O od 1 insensibilità ai disturbi facilità di: manipolazionetrasmissioneregistrazione

74 RISOLUZIONE Se ho una stringa di N bit  2 N stati diversi 3 bit  2 3 =8 stati diversi0 0 0 1° stato 0 0 1 2° “ 0 1 0 3° “..... 1 1 0 7° “ 1 1 1 8° “

75 Con 8 bit  2 8 =256 stati diversi (8 bit = 1 byte) Con 10 bit  2 10 =1024 stati diversi (1 k) Con 12 bit  2 12 =4096 stati diversi Con 16 bit  2 16 =65536 stati diversi

76 Funzione di trasferimento del “quantizzatore” non è lineare: uscita = 2 N stati discreti ingresso = grandezza continua

77 Risoluzione = minima variazione della grandezza di ingresso apprezzabile dal quantizzatore Corrisponde al valore del bit meno significativo e viene detta LSB=“least significant bit” 1 LSB = FS / 2 N

78 Quindi la risoluzione migliora al crescere del numero N di bit Es:se FS=10 VN=3 bit LSB=1.25 V se FS=10 VN=8 bit LSB=39 mV se FS=10 VN=12 bit LSB=2.44mV

79 Esempio di segnale tra 0 e 10 V quantizzato con differente risoluzione

80 Quindi incertezza minima ± LSB/2 Se segnale G « FS  incertezza relativa  Es:FS = 10 V eG=0.9 V se N=8 bit incertezza ±39 mV ± 4.3 % di G Soluzione: amplificare G affinchè sia usata tutta la scala del convertitore A/D

81 Amplificatore di ingresso: serve ad amplificare i segnali prima della conversione A / D affinchè il valore G MAX  FS Si minimizza l’incertezza relativa G(t) A/D T A

82 In definitiva, poichè il valore del LSB, ossia la risoluzione sulla scala delle ordinate è: per migliorare la qualità del segnale campionato vi è la possibilità o di agire sul numero di bit del convertitore, o di agire sul fondo scala del singolo canale acquisito per trovare la migliore soluzione di compromesso tra risoluzione e necessità di non “perdere” parte del segnale

83 IL CAMPIONAMENTO DEI SEGNALI problemi relativi all’asse delle ascisse

84 Campionamento di un segnale analogico V(t)  conversione del segnale in una sequenza di dati digitali (t i,V i ) V (t i, V i ) i=1,...... N t t V

85 Pertanto in un segnale campionato sia la grandezza V che il tempo t sono espressi in forma discreta Tra due campioni c’è  t C = t i - t i-1 Frequenza di campionamento f C = 1 /  t C t V t i-1 t i t i+1

86 A che frequenza occorre campionare un segnale per rappresentarlo correttamente? t V t V Entrambe OK, ma diverso dettaglio

87 Ma se la frequenza di campionamento diminuisce si va incontro al problema dell’ “aliasing” t V Il segnale campionato non è più riconoscibile e sembra avere una frequenza più bassa del segnale analogico originario

88 Il problema è legato alla relazione tra frequenza del segnale f S e frequenza di campionamento f C ; se f C < 2 f S  l’ “aliasing” si manifesta f C > 2 f S f C = 2 f S f C < 2 f S

89 f C = f S CASO MOLTO PARTICOLARE LO STESSO FATTO PUO’ ESSERE VISTO NEL DOMINIO DELLE FREQUENZE f reale segnale f apparente segnale fCfCfCfC f C /2 2f C 45°

90 Teorema del campionamento: se un segnale continuo a banda limitata contiene solo frequenze inferiori ad f Smax  il segnale sarà campionato correttamente se f C  2 f Smax

91 Poichè: f C = 1 /  t C ed f S = 1 / T S essendo f C  2f S   t C  T S / 2 quindi occorrono almeno due campioni sul semiperiodo

92 L’aliasing può essere interpretato nel dominio della frequenza come lo spostamento di armoniche dalle alte frequenze verso le basse frequenze

93 Dispositivi elettronici per l’acquisizione dei segnali

94 Acquisizione e ADC MISURANDO CATENA DI MISURA STRUMENTO Segnale elettrico Informazione SCHEDA DI ACQUISIZIONE ADC Dato Numerico PC

95 Campionamento

96 Scheda d’Acquisizione  Frequenza di Campionamento (massima)  Numero Canali Input  Risoluzione Convertitore ADC  Range di Input (minimo e massimo) Es: NI USB-6009  48 kS/s  8 Differential / 4 Single-Ended  14 bit differential / 13 single-ended  ±20V, ±10V, ±5V, ±4V, ±2.5V, ±1.25V, ±1V

97 Acquisizione  Frequenza di Campionamento  Durata Acquisizione  Range di Input Es:  150 Hz  5 s  ±4V

98 Architettura software per l’acquisizione dei segnali

99 Architettura DAQmx DAQmx uno dei driver più flessibili per schede d’acquisizione multiuso, gestisce la comunicazione tra il sistema operativo e l’hardware di campionamento vero e proprio MAX Measurement and Automation eXplorer consente di configurare l’hardware per misure ed automazione permette anche di configurare trasduttori e scale di conversione LabView

100 DAQmx  DEVICE:es “dev1” hardware di acquisizione o generazione segnale. Il nome viene generato in automatico all’installazione.  CHANNEL:es “dev1\ai0” canale di lettura o scrittura dei segnali, appartiene ad un device fisico ed è numerato partendo da 0.  TASK:es “MyTask” sessione di acquisizione o generazione di uno o più segnali su uno o più canali di uno stesso device. DEVICE dev0 ai0  ai1  ai2  ao0  ao1  TASK MyTask  dev0/ai0  dev0/ai2 “P” [Pa]  “x” [mm]  CHANNELS

101 Definire un Task  Un TASK non è altro che un processo di acquisizione od output su uno o più canali  Elenca i canali su cui scrivere o da cui leggere, la loro configurazione, l’eventuale scala di conversione ed il range da usare  Definisce modalità e frequenza di campionamento, numero di campioni, eventuali trigger e clock  Sia nel MAX che in LabView è possibile definire un task tramite il DAQ ASSISTANT

102 Definire un Canale  Definisce un canale fisico corrispondente  Permette di impostare nomi intuitivi, sensibilità e offset  Può avere ulteriori parametri di configurazione  Può essere connesso in tre modi: -Differenziale (misuro la tensione tra due poli ignorando eventuali ground comuni) -Referenced Single Ended (misuro la tensione tra un polo ed il ground comune tra scheda e trasduttore) -Non Referenced Single Ended (misuro la tensione tra un polo ed un ground diverso tra scheda e trasduttore)  Tutti i canali di un task devono essere dello stesso tipo (analog output, analog input, digital output, digital input)

103 Scale di Conversione  Permettono di convertire già in fase di acquisizione il valore di tensione o corrente uscito dal trasduttore nel valore del misurando  Ogni scala è fissa e globale: è quindi utile ricorrervi quando si usi spesso un trasduttore o si usino trasduttori con la stessa sensibilità  Quello che ci permette di definire la scala è il diagramma di taratura della catena di misura a monte della scheda di acquisizione  In assenza di una scala di conversione dobbiamo ricordarci che leggiamo solamente il segnale elettrico, ed è quindi necessario convertire il segnale a posteriori

104 M easurement & A utomation e X plorer  Configurare hardware and software NI  Creare canali, task ed interfacce virtuali  Eseguire la diagnostica dell’hardware NI  Visualizzare sistemi remoti  Definire scale e conversioni personalizzate Tutto ciò che è definito in MAX è visibile e considerato GLOBALE nei VI di LabView

105 MAX: Elementi Accessibili

106 Esercizio 016 prova tu:  Utilizzare il Measurement and Automation eXplorer  Connessione e test delle schede  Collegare una scheda di acquisizione al pc, individuarne il tipo e le caratteristiche fondamentali.  Verificarne la corretta connessione sfruttando il test panel del MAX, quindi creare un task di acquisizione di test che acquisisca tutti i canali alla massima frequenza possibile.

107 Esercizio 017 prova tu:  Utilizzare il Measurement and Automation eXplorer  Scale e sensibilità  Su un nuovo VI creare un task di acquisizione semplice che visualizzi su un grafico il risultato dell’acquisizione  Creare un task di acquisizione che legga m/s² e N rispettivamente supponendo di avere un accelerometro sul canale ai0 con sensibilità 8.175V/g e che indichi 0V con un’accelerazione di 9.81m/s² ed una cella di carico con sensibilità 200mV/N e tensione nulla a cella scarica sul canale ai1

108 Esercizio 018 prova tu:  Riprendere l’esercizio 011  Sostituire alla forma d’onda generata quella acquisita tramite il canale AI0 della scheda di acquisizione  Visualizzare la FFT del segnale acquisito aggiungendo un puntatore

109 Esercizio 019 prova tu:  Riprendere l’esercizio 018  Identificare le capacità e caratteristiche del modulo di acquisizione a disposizione  Sostituire i canali in ingresso con un canale adatto al tipo di modulo di a disposizione  Effettuare e visualizzare un’acquisizione di 10secondi in modalità discontinua

110 Esercizio 020 prova tu:  Riprendere l’esercizio 019  Modificare il vi ed il DAQ assistant in modo da poter operare un’acquisizione in modalità continua.  Effettuare un’acquisizione di 30s in modalità continua e visualizzarla a schermo.

111 Esercizio 021 prova tu:  RIPRENDERE L’ESERCIZIO 020  Aggiungere un pulsante SALVA TIME HISTORY ed un pulsante SALVA FFT OBIETTIVO: Permettere di salvare sia i dati acquisiti che lo spettro calcolato tramite la FFT  Sfruttare il componente express WRITE MEAS. FILE  Alla pressione di SALVA TIME HISTORY il VI deve chiedere all’utente il nome del file da scrivere e salvare i segnali già acquisiti in formato TESTO -è preferibile salvare aggiungendo (manualmente) l’estensione CSV -per comodità mantenere uno shift register con i segnali acquisiti -aggiungere una sola colonna di tempo per tutti i segnali -se il file già esiste salva con un nuovo nome  Alla pressione di SALVA FFT deve fare lo stesso ma salvare lo spettro SALVARE UN PAIO DI ACQUISIZIONI ED UN PAIO DI SPETTRI

112 Esercizio 022 prova tu:  CREARE UN NUOVO VI SENZA INTERAZIONE CON L’UTENTE  RIPRENDERE L’ESERCIZIO 020 OBIETTIVO: Creare un nuovo operatore subVI in grado di calcolare la media, la varianza, il massimo ed il minimo di un segnale dato un segnale ed i valori storici di acquisizioni precedenti (vedi esercizio 008  Collegare all’icona dei connettori i controlli double ed il grafico -rispettare le convenzioni input=sinistra output=destra!! -cambiare l’icona in modo che sia significativa  Alterare le proprietà del vi in modo che non si apra quando viene chiamato (vi properties->execution->open when called)  Impostare i valori di default dei vari controlli non obbligatori (data operation->make current value default)  NEL VI DELL’ESERCIZIO 018 aggiungere (sfruttando il nuovo operatore) anche un canale che mostri il valore del modulo del vettore accelerazione sullo stesso grafico, nonché il valore RMS su un indicatore di tipo GAUGE

113 Esercizio 023 prova tu:  RIPRENDE GLI ESERCIZI 019 E 020 OBIETTIVO: Poter visualizzare sulla finestra principale del sistema di acquisizione composizioni di file letti sfruttando il vi già creato  Creare un flusso degli errori corretto per l’esercizio 017 e 018 (inserire in fondo al vi 017 un visualizzatore di un eventuale errore con general error handler, e terminare il vi se l’errore è stato generato)  Inserire nell’icona dei connettori dell’esercizio 018 i terminali per ERROR IN, ERROR OUT e SEGNALI LETTI  Inserire nel vi dell’es. 017 un pulsante LEGGI alla cui pressione la catena degli errori venga passata al vi 018 (usare SELECT A VI…)  Sfruttando il terminale SEGNALI LETTI del vi 018 passare i segnali letti al grafico principale ed all’FFT LEGGERE 3 FILE TRA GLI ESEMPI PRECEDENTEMENTE SALVATI

114 Esercizio 024 prova tu:  ESERCIZIO COMPLESSO! OBIETTIVO: Creare un sistema di acquisizione completo in grado di:  Acquisire segnali da più canali sia in modalità continua che discontinua  Salvare i dati delle time histories su file  Leggere i dati da file  Calcolare FFT da dati salvati o acquisiti  Salvare le FFT calcolate su file di testo  Prendere spunto dalle esercitazioni precedenti  Ricorrere il meno possibile agli operatori express  Sfruttare in maniera intensiva subVI e cluster

115 Labview VII: Property nodes, variabili e buone norme di programmazione

116 Property Nodes  Consentono di manipolare gli elementi grafici del front panel oltre che modificandone il valore anche alterandone le caratteristiche (dimensione, colore, assi, etichette…)  Possono interrogare le proprietà grafiche degli elementi del front panel (livello di zoom, frazione selezionata)  Utili per inizializzare il front panel od interagire con l’utente, ma devono essere usati con cautela

117 Invoke Nodes  Consentono di manipolare gli elementi grafici del front panel con azioni che tipicamente invoca l’utente  Possono effettuare operazioni anche complesse in automatico evitando passaggi tramite utente  E’ necessario usarli solo quando indispensabili e comunque con molta cautela per evitare ERRORI runtime

118 Esercizio 025 prova tu:  Property nodes e invoke nodes OBIETTIVO: Fare in modo che uno zooming in un grafico venga automaticamente seguito dagli altri grafici Prendere spunto dalle esercitazioni precedenti  Creare un nuovo vi che mostri su tre grafici diversi tre forme d’onda (usare i subvi di generazione salvati in precedenza alla pressione di un tasto)  Fare in modo che ad ogni zoom nel primo grafico da parte dell’utente gli altri due grafici si adattino mostrando la stessa frazione temporale  Alla pressione di un tasto salvare su file l’immagine del grafico usando l’invoke node “EXPORT IMAGE”

119 Variabili condivise  Consentono di memorizzare e trasmettere dati in maniera indipendente dai flussi dati  Costituiscono un’eccezione alla programmazione a flussi e quindi vanno usate solo con SOMMA CAUTELA per evitare problemi di aggiornamento falsato  Devono necessariamente appartenere ad una libreria  Possono essere:  SHARED: condivise da tutti i vi della medesima libreria  NETWORK PUBLISHED: pubblicate via rete su un server SVE (ogni computer con labview ne ha uno a bordo, ma anche alcune schede di acquisizione avanzate ne son dotate) che può consentire ad altri computer di scriverle e leggerle in remoto

120 Buone pratiche di programmazione  Mantenere il block diagram pulito ed intuitivo  Scrivere sempre da sinistra a destra  Non andare oltre le dimensioni dello schermo  Disegnare icone intuitive ed usare nomi estesi  Rendere il programma il più modulare possibile  Se qualcosa può essere delegato ad un subvi, farlo  Testare individualmente ogni subvi sviluppato  Sfruttare al massimo librerie e progetti  Se si pensa che una serie i funzioni sia correlata,usare una libreria  Se si pensa che qualcosa potrebbe essere riusato, metterlo in una libreria  Mantenere il progetto ordinato con cartelle virtuali e librerie

121 Buone pratiche di programmazione  Scegliere uno dei due approcci e trarne vantaggio:  BOTTOM-UP:  identificare i compiti più difficoltosi del progetto, sviluppare un vi che lo assolve, quindi integrarlo in vi successivi come subvi  utile solo se il progetto è semplice, ma il risultato dubbio e si vuole valutarne la fattibilità  TOP-DOWN:  definire in linea di massima il funzionamento del progetto, partendo da uno schema logico di funzionamento, e delegare i vari compiti a subvi template (solo input-output) che verranno realizzati poi  Utile quando il progetto non preveda vincoli di fattibilità tecnica, anche in casi non complessi!

122 Elaborato 05  Familiarizzare con le variabili di rete ed i property node  Capire quali siano i problemi di trasmissione e temporizzazione delle variabili di rete  Capire quali siano i possibili errori in cui si può incappare con l’uso estensivo di variabili e nodi  Provare a interagire con il server SVE all’indirizzo 192.167.21.156


Scaricare ppt "Labview I: Introduzione a LabView e Fondamenti del DataFlow."

Presentazioni simili


Annunci Google