Ejercicios Labview
Ejercicios Labview
Alfredo Paolillo
[email protected]
La struttura Sequence permette di fissare lordine di esecuzione delle funzioni. Nel diagramma a blocchi
esistono due percorsi di esecuzione non legati dai dati (cio tramite dei fili).
In entrambi i frame della Sequence si invoca un sub-VI ( esempio-sub-VI.vi), il cui codice riportato di
seguito.
12
31
i=0
i=1
i=2
i=3
i=0
Leggi elemento
i-esimo
Incrementa i di 1
S
i > 20 ?
Fine
No
3
Nel codice si fa uso di un sub-Vi che, dati x, a0 e a1, restituisce il valore di y = a0 x2 + a1, e di un ciclo While
che genera i valori di x ai quali si vuole calcolare la y, con la formula seguente
x i-esima = x0 + i * x step
Il ciclo While si arresta quando si raggiunge la condizione x i-esima >= x1.
Le possibili implementazioni equivalenti sono due. La prima usa le funzioni aritmetiche di LabVIew:
Lesempio seguente restituisce, ad ogni passo del While, la frazione (Perc) di numeri casuali finora generati
che sono risultati maggiori di 0.1. La coppia di shift register consente di aggiornare, nel corso
dellesecuzione del While, il valore della frazione finora ottenuta. La funzione Wait Until Next ms
Multiple permette di eseguire il While con una cadenza di (circa) un passo ogni 1000 ms = 1 s.
Si ricordi che la valutazione della condizione, che nellesempio il valore booleano della espressione x >
4, deve essere valutato prima dellistruzione di selezione del codice da eseguire, in questo caso
rappresentata dalla struttura Case.
Nel secondo esempio, si usa la struttura Case con un selettore di tipo intero, prodotto da un controllo di
tipo Ring. A seconda della scelta fatta dallutente sul controllo Ring, si visualizzano finestre di messaggio
diverse (i tre frame del Case sono affiancati per opportunit di stampa).
Nella prima parte (a sinistra) del diagramma a blocchi si genera un vettore di 100 numeri double generati a
caso tra 0 e 1.
Sfruttando il polimorfismo della funzione maggiore di si contano gli elementi del vettore che risultano
maggiori di 0.3 (passaggi: prima si genera un vettore di 100 valori booleani che valgono true se il numero
corrispondente maggiore 0.3 e false altrimenti, poi si convertono i 100 booleani in 100 interi pari a 1 se il
booleano era vero e 0 altrimenti, poi si sommano tutti gli elementi del vattore di 0 e 1).
Nella pate in basso a destra del diagramma si disegna un grafico multi-plot, cio a pi curve, che contiene
il vettore dei numeri casuali cos generato, ed un vettore pari al vettore dei numeri casuali moltiplicati tutti
per 2. Anche in questo caso si utilizza il polimorfismo della funzione moltiplicazione.
11
12
La decimazione con fattore di decimazione D si ottiene aggiungendo i punti alla seconda sequenza (xD, yD)
solo se lindice del For divisibile per D. Si noti luso della divisione intera: i multiplo di D solo se il resto di
i/D ha resto 0.
13
14
15
16
17
18
20 aprile 2010: Gestione remota di strumenti autonomi con bus IEEE 488
Nellesempio, si chiede una misura ad un multimetro di indirizzo IEEE 488 pari a 3.
19
20
21
22
23
Esercizi proposti
1.
2.
3.
4.
5.
Dato un array di numeri double, calcolare la media degli elementi del vettore, escludendo dal
calcolo il valore minimo ed il valore massimo.
6.
Visualizzare il grafico di una funzione a scelta, solo dopo che lutente ha premuto un tasto
Avvia, e stimare lintervallo di tempo necessario alla visualizzazione.
7.
Data una matrice quadrata di dimensioni 3x3, calcolarne il determinante (senza utilizzare la
funzione di libreria) e poi confrontare il risultato ottenuto con la funzione delle librerie
matematiche di LabView.
8.
Dato un array x di valori numerici, determinare un altro array y delle stesse dimensioni, in cui
y[i] sia uguale alla somma di x[i], x[i-1], x[i-2], , x[0], e visualizzare entrambi gli array in un
grafico.
9.
Dato un numero intero positivo, calcolare un valore booleano che sia true quando il numero
un numero primo, e false viceversa.
10. Dato un array di numeri interi positivi, determinare il numero di numeri primi che contiene.
11. Dato un array x di N numeri double, calcolare un array y di N-1 numeri double in cui li-esimo
numero dato da y[i] = x[x+1]-x[i], e visualizzare entrambi in un grafico (eventualmente
aggiungendo un valore nullo in coda allarray pi corto).
12. Generare una sequenza di valori sinusoidali con una funzione di libreria ed individuare tutti gli
indici ai quali la sequenza attraversa lo zero con pendenza positiva, cio passando da valori
negativi a valori positivi (non usare la funzione di libreria).
24