Title: Misure industriali con labview®
1Misure industriali con labview
- Labview I
- Introduzione a LabView e
- Fondamenti del DataFlow
2Introduzione a LabView
- LabView è una piattaforma specificatamente
pensata per sviluppare sistemi di acquisizione,
analisi e trattamento dati. - I programmi in LabView sono definitiVirtual
Instruments o VI in quanto simulano il
comportamento di strumenti fisici reali.
3Introduzione 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 luso
dellapplicazione.
4Il Pannello Frontale
- Il pannello frontale è lINTERFACCIA che il VI
presenta allutente finale - Deve contenere tutti i controlli necessari per
interagire con il VI. - Ogni dato da visualizzare allutente deve essere
riportato qui.
5Il Pannello Frontale
- tutti gli elementi del pannello frontale sono
- CONTROLLI, cioè oggetti a cui lutente può
fornire dati - oppure
- INDICATORI, cioè oggetti da cui lutente può
ottenere dati
6Lo 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
7Lo Schema a Blocchi
costante
operatore
- Oltre ai CONTROLLI ed agli INDICATORI sullo
schema a blocchi troviamo anche - COSTANTI, cioè fonti di dati non definibili
dallutente - OPERATORI, in grado di svolgere operazioni sulle
linee di dati
operatore
costante
8Icona 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 - Licona dei connettori definisce input ed output
di ogni subVI - Un subVI espone la sua icona dei connettori al
posto del pannello frontale
9Esercizio 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
dellaspetto grafico - Verificare di aver creato 7 controlli e 3
indicatori - NB-la barra verticale, slide è un
controllo-tralasciare lo sfondo azzurro è solo
indicativo
10Esercizio 001
11Lavorare in DataFlow
- Il DataFlow specifica il PERCORSO che i dati
devono compiere ma NON LORDINE 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
12Tipi 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
13Tipi di Dati
- Numerici (Interi, Decimali, Virgola Mobile, Date)
- Booleani
- Stringhe (Stringhe e Percorsi)
- Aggregati (Array, Matrici e Cluster)
- Forme dOnda
- Dati Dinamici (Segnali ed Errori)
- Enumeratori
14Modalità Debug
- È utile per visualizzare il flusso di dati nel
diagramma a blocchi - Rallenta lesecuzione 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
15Esercizio 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 p - Collegare ad ogni INDICATORE presente un
controllo del tipo corrispondente
16Strutture Fondamentali
- Le strutture principali sono le medesime dei
linguaggi di programmazione usualiWHILE, FOR e
CASE - I dati entrano ed escono dalle strutture tramite
TUNNEL letti solo allavvio (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 allutente di interagire
17Strutture 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
flussoingressi a sinistra ed uscite a destra,
in modo da leggere il flusso di dati da sinistra
a destra
18Ciclo WHILE
- Quello che si trova allinterno del ciclo viene
ripetuto finchè la condizione di stop (dato
booleano) è FALSE - Ogni VI che interagisce con lutente 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
19Esercizio 003
- prova tu
- Ciclo WHILE generale con interruttore e WAIT
- Uso delloperatore SELECT
- Mechanical action
- Riprendere lesercizio 002
- Racchiudere lintero front panel in un blocco
WHILE con un operatore WAIT ms multiple a 500 ms
che si interrompa alla pressione di STOP - Sfruttando loperatore di confronto SELECT fare
in modo che la fase venga visualizzata in gradi
se linterruttore è off, in radianti se on - Impostare la mechanical action di START su LATCH
e quella dellinterruttore su SWITCH, quindi
provare ad invertirle
20Ciclo FOR
- Quel che si trova allinterno del ciclo viene
ripetuto N volte lindice i va da 0 a N-1 - Se un tunnel in ingresso trasporta un dato di
tipo ARRAY allinterno del ciclo automaticamente
avremo lelemento i-esimo dellarray (indexing),
viceversa in uscita possiamo scegliere di creare
un array partendo dalla successione di dati
21Esercizio 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
22Struttura CASE
- Esegue solo ciò che è allinterno 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.
23Esercizio 005
- prova tu
- Differenze tra CHART e GRAPH
- Struttura While, Case e For
- Creare un blocco while di interazione con
lutente (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 dellinterruttore GENERATE RANDOM
NUMBERS
24Esercizio 005
25- 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
26Misure industriali con labview
- Labview II
- Array e Cluster
- Shift Register
- Forme dOnda
27Riepilogo 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
28Ciclo WHILE
- Quello che si trova allinterno del ciclo viene
ripetuto finchè la condizione di stop (dato
booleano) è FALSE - Ogni VI che interagisce con lutente 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
29Struttura CASE
- Esegue solo ciò che è allinterno 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.
30Ciclo FOR
- Quel che si trova allinterno del ciclo viene
ripetuto N volte lindice i va da 0 a N-1 - Se un tunnel in ingresso trasporta un dato di
tipo ARRAY allinterno del ciclo automaticamente
avremo lelemento i-esimo dellarray (indexing)
31Shift Register
- Spesso è utile passare dei dati tra uniterazione
e la successiva allinterno 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 loperatore BUILD ARRAY
32Esercizio 006
- prova tu
- Shift register come memoria
- Riprendere lesercizio 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 dellultimo set di campioni
generati alla pressione di un pulsante boolean
CALCOLA (ma NON durante la generazione)
33Array 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 linverso si
sfrutta INDEX ARRAY - In LabView gli array sono dinamici, quindi non
hanno un numero fisso di elementi, ma possono
essere ampliati con laggiunta 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 dallelemento
di indice 0
34Esercizio 007
- prova tu
- autoindexing
- Riprendere lesercizio 006
- Sfruttando un build array ed uno shift register
visualizzare min, max, media e deviazione
standard anche di TUTTI I SET di dati generati
dallavvio del vi.
35Cluster
- I CLUSTER sono aggregati, non necessariamente
omogenei, di dati diversi. - Per creare un cluster partendo dai dati
elementari sfruttiamo loperatore 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 linverso
36Esercizio 008
- prova tu
- Cluster ed operazioni su cluster
- Riprendere lesercizio 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
linformazione del numero di campioni da cui i
dati derivano) - Mantenere in memoria solo i dati dellultima
generazione di dati - Visualizzare sia lultimo 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
37WaveForms Signals
- Oltre ai dati classici già presentati esistono
alcuni tipi di dati particolari dedicati a
generare, rappresentare ed analizzare forme
donda - 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
38Esercizio 009
- prova tu
- Riprendere lesercizio 008
- Sfruttando gli operatori per la costruzione di
waveform aggiungere ai dati generati casualmente
linformazione della frequenza di campionamento
impostabile tramite un controllore numerico letto
in avvio. - Impostare come istante di inizio della waveform
lora attuale tramite gli operatori TIME/DATE
39Esercizio 010
- prova tu
- Mantenere il block diagram ordinato!
- Riprendere lesercizio 009
- Sostituire alloperatore 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
40LabView 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)
41Esercizio 011
- prova tu
- Componenti express
- Riprendere lesercitazion 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 lFFT visualizzata sia il
risultato di una media di N generazioni - In caso di errore visualizzarlo allutente ed
interrompere lesecuzione del programma
42- 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 lanalisi modale
43Misure industriali con labview
- Labview III
- Lettura e scrittura da file
44Leggere Dati da File
- Esistono vari tipi di file che LabView può
leggere, sia nativamente che interpretando
stringhe formattate
- 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 - Unalternativa 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
45Salvare Dati su File
- Esistono vari tipi di file che LabView può
scrivere, da utilizzare a seconda del dato che si
vuole salvare
- I più comuni sono i file SPREADSHEET, file ASCII
che rappresentano numeri a virgola mobile
separati in righe e colonne da tabulatori od
altro - Unalternativa 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 landamento di valori nel
corso dellesecuzione del programma
46Componenti EXPRESS
- Esistono anche funzioni ExpressVI per la lettura
e la scrittura di forme donda e di vari dati
dinamici - Questi file sono chiamati MEASUREMENT FILES e
possono essere sia binari che testuali - Luso di questi ExpressVI permette di configurare
rapidamente un gran numero di opzioni di
salvataggio
47Esercizio 012
- prova tu
- OBIETTIVOPermettere di salvare dei dati
generati in formato testuale - Permettere di salvare stringhe e cluster in
formato binario - Sfruttando loperatore uniform white noise
generare una forma donda di durata impostabile
dallutente e frequenza fissa a 10kHz composta
dalla sovrapposizione di una sinusoide (di
ampiezza e frequenza impostabili dallutente) e
del rumore bianco di ampiezza massima 1V - Salvare la forma donda così generata in un
formato testuale (csv) - Salvare la forma donda in un file binario
- Salvare in un cluster i parametri di generazione
(frequenze, ampiezze) e salvarlo in un file
binario
48Esercizio 013
- prova tu
- OBIETTIVOPermettere di leggere dei dati
importati in formato testuale - Permettere di leggere dati in formato binario
- Riprendere i file salvati nellesercizio 012
- Importare la forma donda da un formato testuale
(csv) in Excel - Importare la forma donda 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- 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
50Misure industriali con labview
- Labview IV
- Gestione degli errori e subvi
51subVI
- La programmazione in LabView, essendo prettamente
grafica, richiede più che in altri ambiti
modularità e possibilità di riutilizzo - Lobiettivo 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 allinterno di un altro VI
52Icona 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 - Licona dei connettori definisce input ed output
di ogni subVI - Un subVI espone la sua icona dei connettori al
posto del pannello frontale
53Icona dei Connettori
- Anche per la definizione di input ed output si
procede per via grafica - Licona 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
54Esercizio 014
- prova tu
- RIPRENDERE LESERCIZIO 012
- OBIETTIVOTrasformare 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 è
linterazione con lutente - Facendo attenzione alluso delle icone e dei
connettori creare due subvi uno per la
generazione della forma donda, laltro per il
salvataggio - ATTENZIONE ALLUSO DI INPUT E OUTPUT!!MANTENERE
SEMPRE LA LETTURA DA SINISTRA A DESTRA!
55Modalità di Esecuzione
- Grazie alla finestra VI properties possiamo
definire varie proprietà di esecuzione del subVI,
la principale rimane però la modalità di
esecuzione - Lesecuzione è detta reentrant se possono
esistere più istanze del medesimo subVI in
esecuzione in contemporanea - Lesecuzione è 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 lha richiamata,
rendendo quindi possibili operazioni iterative in
successione (ad esempio un inizializzazione di
una risorsa solo alla prima chiamata od un
contatore interno)
56Errori RunTime
- Gli errori si distinguono a seconda
dellutilizzatore che li genera - se avvengono mentre stiamo progettando il VI sono
errori di DESIGN TIME e impediscono lavvio 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
57Il 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
58Il Flusso degli Errori
- un VI che trovi un error in diverso da no error
non viene eseguito, ma passa lerrore al
terminale error out direttamente - un VI che riscontri un errore RunTime scrive sul
suo terminale error out lerrore riscontrato, se
nulla è collegato ad error out, compare una
finestra di errore standard allutente
59Sequenze 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 dellhardware 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
60Esercizio 015
- prova tu
- RIPRENDERE LESERCIZIO 014
- OBIETTIVOAggiungere 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 donda generata sia la
somma di due forme donda definite
indipendentemente - Provare a ripetere la medesima operazione con
subvi reentrant - ATTENZIONE ALLA CATENA DEGLI ERRORI!
61Misure industriali con labview
- Labview V
- Progetti, librerie ed eseguibili
62Progetti
- Qualora sia necessario sviluppare unapplicazione
od un vi complesso (formato da più subvi) è utile
riunire tutti i vi generati in un gruppo più
esteso il progetto - Un progetto è dato dallunione di vari elementi
fondamentali - Uno o più TARGET (su che hardware vogliamo
sviluppare) - Uno o più VI allinterno 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
63Progetto
TARGET
VI
Libreria
VI da cuidipendeil progetto
Installer
Eseguibile
64Librerie
- Consentono di riunire VI che abbiano funzioni
coordinate tra di loro - Consentono il trasferimento in maniera semplice
di gruppi di vi molto ramificati - Offrono lopportunità 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- Riunire tutti i vi svolti finora in un unico
progetto - Comprendere le implicazioni delluso di progetti,
librerie ed llb - Creare un eseguibile ed un installer
- DEFINIRE UN PROPRIO PROGETTO ED UNA LIBRERIA DI
VI
66Misure industriali con labview
- Labview VI
- Introduzione teorica allacquisizione,LabView,
NI MAX e DAQmx
67LACQUISIZIONE DIGITALE DEI SEGNALI
68I 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
69TEORIA DELLA QUANTIZZAZIONEproblemi
relativiallasse delle ordinate
70- La conversione A/D consta di due fasi
- - quantizzazione
- - codifica
71Quantizzazione il dato analogico viene suddiviso
in un insieme di stati discreti
72Codifica 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
- manipolazione
- trasmissione
- registrazione
74- RISOLUZIONE
- Se ho una stringa di N bit ??2N stati diversi
- 3 bit ??23 8 stati diversi 0 0 0 1
stato 0 0 1 2 0 1 0 3
. . . . . 1 1 0 7 1 1 1
8
75- Con 8 bit ??28 256 stati diversi(8 bit 1
byte) - Con 10 bit ??210 1024 stati diversi(1 k)
- Con 12 bit ??212 4096 stati diversi
- Con 16 bit ??216 65536 stati diversi
76- Funzione di trasferimento del quantizzatore non
è lineare uscita 2N 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 dettaLSBleast significant bit - 1 LSB FS / 2N
78Quindi la risoluzione migliora al crescere del
numero N di bit Es se FS10 V N3 bit
LSB1.25 V se FS10 V N8 bit LSB39 mV se
FS10 V N12 bit LSB2.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 e G0.9 V
- se N8 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 GMAX ? FS - Si minimizza lincertezza relativa
82(No Transcript)
83IL CAMPIONAMENTODEI SEGNALIproblemi relativi
allasse delle ascisse
84- Campionamento di un segnale analogico V(t) ?
conversione del segnale in una sequenza di dati
digitali (ti,Vi)
V
t
V
(ti , Vi) i1,...... N
t
85- Pertanto in un segnale campionato sia la
grandezza V che il tempo t sono espressiin forma
discreta - Tra due campioni cè ?tC ti - ti-1
- Frequenza di campionamento fC 1 / ?tC
V
ti-1 ti ti1
t
86- A che frequenza occorre campionare un segnale per
rappresentarlo correttamente?
V
t
V
t
Entrambe OK, ma diverso dettaglio
87- Ma se la frequenza di campionamento diminuisce si
va incontro al problema dell aliasing
V
t
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 fS e frequenza di campionamento
fCse fC lt 2 fS ??? l aliasing si manifesta
fC gt 2 fS
fC 2 fS
fC lt 2 fS
89CASO MOLTO PARTICOLARE
fC fS
LO STESSO FATTO PUO ESSERE VISTO NEL DOMINIO
DELLE FREQUENZE
90- Teorema del campionamento se un segnale continuo
a banda limitata contiene solo frequenze
inferiori ad fSmax ??il segnale sarà campionato
correttamente se fC ? 2 fSmax
91- Poichè f C 1 / ?tC ed fS 1 / TS
- essendo fC ? 2fS???tC ? TS / 2
- quindi occorrono almeno due campioni sul
semiperiodo
92- Laliasing può essere interpretato nel dominio
della frequenza come lo spostamento di armoniche
dalle alte frequenze verso le basse frequenze
93Dispositivi elettronici per lacquisizione dei
segnali
94Acquisizione e ADC
MISURANDO
CATENADI MISURA
SCHEDA DIACQUISIZIONE
STRUMENTO
ADC
PC
95Campionamento
96Scheda dAcquisizione
- 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
97Acquisizione
- Frequenza di Campionamento
- Durata Acquisizione
- Range di Input
- Es
- 150 Hz
- 5 s
- 4V
98Architettura software per lacquisizione dei
segnali
99Architettura DAQmx
100DAQmx
CHANNELS
- DEVICE es dev1hardware di acquisizione o
generazione segnale.Il nome viene generato in
automatico allinstallazione. - CHANNEL es dev1\ai0canale di lettura o
scrittura dei segnali, appartiene ad un device
fisico ed è numerato partendo da 0. - TASK es MyTasksessione di acquisizione o
generazione di uno o più segnalisu uno o più
canali di uno stesso device.
101Definire 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, leventuale 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
102Definire 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)
103Scale 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
104Measurement Automation eXplorer
- Configurare hardware and software NI
- Creare canali, task ed interfacce virtuali
- Eseguire la diagnostica dellhardware NI
- Visualizzare sistemi remoti
- Definire scale e conversioni personalizzate
- Tutto ciò che è definito in MAX è visibile e
considerato GLOBALE nei VI di LabView
105MAX Elementi Accessibili
106Esercizio 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.
107Esercizio 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 dellacquisizione - 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 unaccelerazione di
9.81m/s² ed una cella di carico con sensibilità
200mV/N e tensione nulla a cella scarica sul
canale ai1
108Esercizio 018
- prova tu
- Riprendere lesercizio 011
- Sostituire alla forma donda generata quella
acquisita tramite il canale AI0 della scheda di
acquisizione - Visualizzare la FFT del segnale acquisito
aggiungendo un puntatore
109Esercizio 019
- prova tu
- Riprendere lesercizio 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 unacquisizione di
10secondi in modalità discontinua
110Esercizio 020
- prova tu
- Riprendere lesercizio 019
- Modificare il vi ed il DAQ assistant in modo da
poter operare unacquisizione in modalità
continua. - Effettuare unacquisizione di 30s in modalità
continua e visualizzarla a schermo.
111Esercizio 021
- prova tu
- RIPRENDERE LESERCIZIO 020
- Aggiungere un pulsante SALVA TIME HISTORYed un
pulsante SALVA FFT - OBIETTIVOPermettere 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 allutente il nome del file da scrivere
e salvare i segnali già acquisiti in formato
TESTO-è preferibile salvare aggiungendo
(manualmente) lestensione 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 spettroSALVARE UN PAIO DI
ACQUISIZIONI ED UN PAIO DI SPETTRI
112Esercizio 022
- prova tu
- CREARE UN NUOVO VISENZA INTERAZIONE CON LUTENTE
- RIPRENDERE LESERCIZIO 020
- OBIETTIVOCreare 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 allicona dei connettori i controlli
double ed il grafico-rispettare le convenzioni
inputsinistra outputdestra!!-cambiare licona
in modo che sia significativa - Alterare le proprietà del vi in modo che non si
apra quando viene chiamato(vi properties-gtexecuti
on-gtopen when called) - Impostare i valori di default dei vari controlli
non obbligatori(data operation-gtmake current
value default) - NEL VI DELLESERCIZIO 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
113Esercizio 023
- prova tu
- RIPRENDE GLI ESERCIZI 019 E 020
- OBIETTIVOPoter visualizzare sulla finestra
principale del sistema di acquisizione
composizioni di file letti sfruttando il vi già
creato - Creare un flusso degli errori corretto per
lesercizio 017 e 018(inserire in fondo al vi
017 un visualizzatore di un eventuale errore con
general error handler, e terminare il vi se
lerrore è stato generato) - Inserire nellicona dei connettori dellesercizio
018 i terminali per ERROR IN, ERROR OUT e SEGNALI
LETTI - Inserire nel vi delles. 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
allFFTLEGGERE 3 FILE TRA GLI ESEMPI
PRECEDENTEMENTE SALVATI
114Esercizio 024
- prova tu
- ESERCIZIO COMPLESSO!
- OBIETTIVOCreare 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
115Misure industriali con labview
- Labview VII
- Property nodes, variabili e buone norme di
programmazione
116Property 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 lutente, ma devono essere usati
con cautela
117Invoke Nodes
- Consentono di manipolare gli elementi grafici del
front panel con azioni che tipicamente invoca
lutente - 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
118Esercizio 025
- prova tu
- Property nodes e invoke nodes
- OBIETTIVOFare 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 donda (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 dellutente gli altri due grafici si
adattino mostrando la stessa frazione temporale - Alla pressione di un tasto salvare su file
limmagine del grafico usando linvoke node
EXPORT IMAGE
119Variabili condivise
- Consentono di memorizzare e trasmettere dati in
maniera indipendente dai flussi dati - Costituiscono uneccezione 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
120Buone 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
121Buone 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- 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 luso estensivo di variabili e
nodi - Provare a interagire con il server SVE
allindirizzo 192.167.21.156