17.11.2014 Views

Introduzione al linguaggio di programmazione LabVIEW

Introduzione al linguaggio di programmazione LabVIEW

Introduzione al linguaggio di programmazione LabVIEW

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Introduzione</strong> <strong>al</strong> <strong>linguaggio</strong> <strong>di</strong><br />

<strong>programmazione</strong> <strong>LabVIEW</strong><br />

Ing. Gianfranco Miele (g.miele@unicas.it)<br />

www.docente.unicas.it/gianfranco_miele<br />

October 25, 2010


Il <strong>linguaggio</strong> <strong>di</strong> <strong>programmazione</strong> <strong>LabVIEW</strong><br />

25 ottobre 2010<br />

LabView<br />

• Ambiente <strong>di</strong> sviluppo grafico<br />

Co<strong>di</strong>ce<br />

Interfaccia utente<br />

• Modulare<br />

• Compilatore 32 bit<br />

• Elevato numero <strong>di</strong> funzioni<br />

• Librerie per la gestione della strumentazione<br />

• Librerie per l'acquisizione dati<br />

• Possibilità <strong>di</strong> includere routine in <strong>al</strong>tro <strong>linguaggio</strong><br />

Corso <strong>di</strong> Laurea Magistr<strong>al</strong>e in Ingegneria delle Telecomunicazioni<br />

Misure elettroniche per le telecomunicazioni<br />

Università degli<br />

Stu<strong>di</strong> <strong>di</strong> Cassino


Il <strong>linguaggio</strong> <strong>di</strong> <strong>programmazione</strong> <strong>LabVIEW</strong><br />

25 ottobre 2010<br />

Libreria <strong>di</strong> funzioni<br />

• C<strong>al</strong>colo, confronto, cicli <strong>di</strong> controllo<br />

• Operazioni su aggregati <strong>di</strong> dati (stringhe, array, ...)<br />

• I/O su file<br />

• Gestione strumentazione (RS232, IEEE-488, VXI, ...)<br />

• Acquisizione dati<br />

• An<strong>al</strong>isi (Generazione ed elaborazione segn<strong>al</strong>i,<br />

Statistica, Fitting, Algebra lineare, ...)<br />

• Comunicazione (DDE, TCP/IP, Bluetooth, ActiveX)<br />

• Gestione applicazione (DLL, Timers,<br />

Sincronizzazione)<br />

Corso <strong>di</strong> Laurea Magistr<strong>al</strong>e in Ingegneria delle Telecomunicazioni<br />

Misure elettroniche per le telecomunicazioni<br />

Università degli<br />

Stu<strong>di</strong> <strong>di</strong> Cassino


Il <strong>linguaggio</strong> <strong>di</strong> <strong>programmazione</strong> <strong>LabVIEW</strong><br />

25 ottobre 2010<br />

Virtu<strong>al</strong> Instrument (VI)<br />

• Il Front Panel<br />

• Il Block Diagram<br />

• L’icona/connettore<br />

Corso <strong>di</strong> Laurea Magistr<strong>al</strong>e in Ingegneria delle Telecomunicazioni<br />

Misure elettroniche per le telecomunicazioni<br />

Università degli<br />

Stu<strong>di</strong> <strong>di</strong> Cassino


Il <strong>linguaggio</strong> <strong>di</strong> <strong>programmazione</strong> <strong>LabVIEW</strong><br />

25 ottobre 2010<br />

Front Panel<br />

– E’ l’interfaccia utente dell’applicazione<br />

Contiene:<br />

- Controlli<br />

(input)<br />

- In<strong>di</strong>catori<br />

(output)<br />

Corso <strong>di</strong> Laurea Magistr<strong>al</strong>e in Ingegneria delle Telecomunicazioni<br />

Misure elettroniche per le telecomunicazioni<br />

Università degli<br />

Stu<strong>di</strong> <strong>di</strong> Cassino


Il <strong>linguaggio</strong> <strong>di</strong> <strong>programmazione</strong> <strong>LabVIEW</strong><br />

25 ottobre 2010<br />

Front Panel<br />

Icona/Connettore<br />

Toolbar<br />

Controllo<br />

numerico<br />

Controllo<br />

“Knob”<br />

Legenda<br />

Etichetta<br />

In<strong>di</strong>catore<br />

“Chart”<br />

Corso <strong>di</strong> Laurea Magistr<strong>al</strong>e in Ingegneria delle Telecomunicazioni<br />

Misure elettroniche per le telecomunicazioni<br />

Università degli<br />

Stu<strong>di</strong> <strong>di</strong> Cassino


Il <strong>linguaggio</strong> <strong>di</strong> <strong>programmazione</strong> <strong>LabVIEW</strong><br />

Block Diagram<br />

25 ottobre 2010<br />

- E’ il co<strong>di</strong>ce sorgente dell’applicazione (in Linguaggio G)<br />

- Controlli e in<strong>di</strong>catori del pannello appaiono come Termin<strong>al</strong>i<br />

- No<strong>di</strong> o funzioni: ricevono dati dai connettori <strong>di</strong> ingresso e forniscono<br />

dati su quelli in uscita<br />

Corso <strong>di</strong> Laurea Magistr<strong>al</strong>e in Ingegneria delle Telecomunicazioni<br />

Misure elettroniche per le telecomunicazioni<br />

Università degli<br />

Stu<strong>di</strong> <strong>di</strong> Cassino


Il <strong>linguaggio</strong> <strong>di</strong> <strong>programmazione</strong> <strong>LabVIEW</strong><br />

Dataflow programming<br />

• Un nodo è eseguito quando i dati sono <strong>di</strong>sponibili a TUTTI<br />

i suoi termin<strong>al</strong>i <strong>di</strong> ingresso<br />

25 ottobre 2010<br />

• Un nodo fornisce i dati ai suoi termin<strong>al</strong>i <strong>di</strong> uscita quando è<br />

terminata la sua esecuzione<br />

• Se non esiste <strong>di</strong>pendenza tra due no<strong>di</strong>, l’or<strong>di</strong>ne con cui<br />

verranno eseguiti non è preve<strong>di</strong>bile !<br />

Il modello <strong>di</strong> <strong>programmazione</strong> <strong>di</strong> LabView è<br />

• Data driven<br />

Corso <strong>di</strong> Laurea Magistr<strong>al</strong>e in Ingegneria delle Telecomunicazioni<br />

Misure elettroniche per le telecomunicazioni<br />

Università degli<br />

Stu<strong>di</strong> <strong>di</strong> Cassino


Il <strong>linguaggio</strong> <strong>di</strong> <strong>programmazione</strong> <strong>LabVIEW</strong><br />

Dataflow programming<br />

25 ottobre 2010<br />

• Un filo collega un’unica sorgente <strong>di</strong> dati con uno o più no<strong>di</strong><br />

• Il colore e lo spessore del filo in<strong>di</strong>viduano il tipo <strong>di</strong> dato<br />

Sc<strong>al</strong>ar Array 1D Array 2D<br />

Numeri<br />

Arancione (floating point)<br />

Blu (interi)<br />

Booleani<br />

Verde<br />

Stringhe<br />

Viola<br />

Corso <strong>di</strong> Laurea Magistr<strong>al</strong>e in Ingegneria delle Telecomunicazioni<br />

Misure elettroniche per le telecomunicazioni<br />

Università degli<br />

Stu<strong>di</strong> <strong>di</strong> Cassino


Il <strong>linguaggio</strong> <strong>di</strong> <strong>programmazione</strong> <strong>LabVIEW</strong><br />

25 ottobre 2010<br />

L’ambiente <strong>di</strong> sviluppo: Le p<strong>al</strong>ette<br />

P<strong>al</strong>ette delle Funzioni<br />

(Diagramma)<br />

P<strong>al</strong>ette dei Controlli<br />

(Pannello)<br />

Corso <strong>di</strong> Laurea Magistr<strong>al</strong>e in Ingegneria delle Telecomunicazioni<br />

Misure elettroniche per le telecomunicazioni<br />

Università degli<br />

Stu<strong>di</strong> <strong>di</strong> Cassino


Il <strong>linguaggio</strong> <strong>di</strong> <strong>programmazione</strong> <strong>LabVIEW</strong><br />

L’ambiente <strong>di</strong> sviluppo: La toolbar<br />

25 ottobre 2010<br />

Debugging<br />

Stop<br />

Continuous Run<br />

Run<br />

Corso <strong>di</strong> Laurea Magistr<strong>al</strong>e in Ingegneria delle Telecomunicazioni<br />

Misure elettroniche per le telecomunicazioni<br />

Università degli<br />

Stu<strong>di</strong> <strong>di</strong> Cassino


Il <strong>linguaggio</strong> <strong>di</strong> <strong>programmazione</strong> <strong>LabVIEW</strong><br />

L’ambiente <strong>di</strong> sviluppo: i tools<br />

25 ottobre 2010<br />

Operating: Inserimento dati<br />

Positioning: Posizionamento e ri<strong>di</strong>mensionamento<br />

Labeling: Gestione etichette<br />

Wiring: Collegamento (nel Block Diagram)<br />

Object pop-up: Menu dell'oggetto<br />

Scrolling: Scorrimento della finestra<br />

Breakpoint: Inserimento stop (debug)<br />

Probe: Visu<strong>al</strong>izzazione dati nei fili (debug)<br />

Color copy: Copia <strong>di</strong> un colore<br />

Coloring: Per colorare un oggetto<br />

Corso <strong>di</strong> Laurea Magistr<strong>al</strong>e in Ingegneria delle Telecomunicazioni<br />

Misure elettroniche per le telecomunicazioni<br />

Università degli<br />

Stu<strong>di</strong> <strong>di</strong> Cassino


Il <strong>linguaggio</strong> <strong>di</strong> <strong>programmazione</strong> <strong>LabVIEW</strong><br />

Tecniche <strong>di</strong> debug<br />

Click sulla freccia spezzata: Info sull’errore<br />

25 ottobre 2010<br />

Highlighting button: Esecuzione animata<br />

Probe: Mostra il v<strong>al</strong>ore dei dati<br />

mentre scorrono lungo i fili<br />

Breakpoint: ferma l’esecuzione quando i dati sono<br />

<strong>di</strong>sponibili sul filo<br />

Single Step: Esecuzione passo-passo<br />

Step Over: Esecuzione passo-passo, non entra nei<br />

no<strong>di</strong><br />

Step Out: Esecuzione passo-passo, esce dai no<strong>di</strong><br />

nei qu<strong>al</strong>i è entrato<br />

Corso <strong>di</strong> Laurea Magistr<strong>al</strong>e in Ingegneria delle Telecomunicazioni<br />

Misure elettroniche per le telecomunicazioni<br />

Università degli<br />

Stu<strong>di</strong> <strong>di</strong> Cassino


Il <strong>linguaggio</strong> <strong>di</strong> <strong>programmazione</strong> <strong>LabVIEW</strong><br />

25 ottobre 2010<br />

SubVI<br />

• Un VI può essere usato nel Block Diagram <strong>di</strong> un <strong>al</strong>tro VI <strong>di</strong><br />

livello più <strong>al</strong>to<br />

• Nel VI chiamante, un SubVI è rappresentato con la sua icona<br />

Corso <strong>di</strong> Laurea Magistr<strong>al</strong>e in Ingegneria delle Telecomunicazioni<br />

Misure elettroniche per le telecomunicazioni<br />

Università degli<br />

Stu<strong>di</strong> <strong>di</strong> Cassino


Il <strong>linguaggio</strong> <strong>di</strong> <strong>programmazione</strong> <strong>LabVIEW</strong><br />

25 ottobre 2010<br />

Re<strong>al</strong>izzazione <strong>di</strong> un SubVI<br />

• Disegno dell’icona<br />

• Associazione <strong>di</strong> controlli<br />

e in<strong>di</strong>catori <strong>al</strong>le caselle<br />

del connettore<br />

• S<strong>al</strong>vataggio su <strong>di</strong>sco<br />

Corso <strong>di</strong> Laurea Magistr<strong>al</strong>e in Ingegneria delle Telecomunicazioni<br />

Misure elettroniche per le telecomunicazioni<br />

Università degli<br />

Stu<strong>di</strong> <strong>di</strong> Cassino


Il <strong>linguaggio</strong> <strong>di</strong> <strong>programmazione</strong> <strong>LabVIEW</strong><br />

25 ottobre 2010<br />

Re<strong>al</strong>izzazione <strong>di</strong> un SubVI<br />

• Functions >> Select a VI …<br />

• Trascinare l’icona sul <strong>di</strong>agramma<br />

chiamante<br />

Corso <strong>di</strong> Laurea Magistr<strong>al</strong>e in Ingegneria delle Telecomunicazioni<br />

Misure elettroniche per le telecomunicazioni<br />

Università degli<br />

Stu<strong>di</strong> <strong>di</strong> Cassino


Il <strong>linguaggio</strong> <strong>di</strong> <strong>programmazione</strong> <strong>LabVIEW</strong><br />

25 ottobre 2010<br />

Ciclo While<br />

Qui va il co<strong>di</strong>ce da<br />

iterare<br />

Iteration<br />

termin<strong>al</strong><br />

Ripetere?<br />

Con<strong>di</strong>tion<strong>al</strong><br />

termin<strong>al</strong><br />

• Il ciclo termina quando si fornisce FALSE <strong>al</strong> con<strong>di</strong>tion<strong>al</strong> termin<strong>al</strong><br />

• Il co<strong>di</strong>ce è eseguito <strong>al</strong>meno una volta<br />

• L'iteration termin<strong>al</strong> restituisce il numero <strong>di</strong> iterazioni raggiunto<br />

Corso <strong>di</strong> Laurea Magistr<strong>al</strong>e in Ingegneria delle Telecomunicazioni<br />

Misure elettroniche per le telecomunicazioni<br />

Università degli<br />

Stu<strong>di</strong> <strong>di</strong> Cassino


Il <strong>linguaggio</strong> <strong>di</strong> <strong>programmazione</strong> <strong>LabVIEW</strong><br />

Ciclo While<br />

25 ottobre 2010<br />

Corso <strong>di</strong> Laurea Magistr<strong>al</strong>e in Ingegneria delle Telecomunicazioni<br />

Misure elettroniche per le telecomunicazioni<br />

Università degli<br />

Stu<strong>di</strong> <strong>di</strong> Cassino


Il <strong>linguaggio</strong> <strong>di</strong> <strong>programmazione</strong> <strong>LabVIEW</strong><br />

25 ottobre 2010<br />

Waveform Chart<br />

Label<br />

Legenda<br />

P<strong>al</strong>ette<br />

Corso <strong>di</strong> Laurea Magistr<strong>al</strong>e in Ingegneria delle Telecomunicazioni<br />

Misure elettroniche per le telecomunicazioni<br />

Aggiornamento:<br />

• Strip chart<br />

• Scope chart<br />

• Sweep chart<br />

Università degli<br />

Stu<strong>di</strong> <strong>di</strong> Cassino


Il <strong>linguaggio</strong> <strong>di</strong> <strong>programmazione</strong> <strong>LabVIEW</strong><br />

25 ottobre 2010<br />

Visu<strong>al</strong>izzazione con Waveform Chart<br />

Ad ogni iterazione il waveform chart riceve uno<br />

sc<strong>al</strong>are<br />

Corso <strong>di</strong> Laurea Magistr<strong>al</strong>e in Ingegneria delle Telecomunicazioni<br />

Misure elettroniche per le telecomunicazioni<br />

Università degli<br />

Stu<strong>di</strong> <strong>di</strong> Cassino


Il <strong>linguaggio</strong> <strong>di</strong> <strong>programmazione</strong> <strong>LabVIEW</strong><br />

25 ottobre 2010<br />

Tipi numerici e conversioni<br />

• Interi con segno: I8, I16, I32<br />

• Interi senza segno: U8, U16, U32<br />

• In virgola mobile: SGL (32), DBL (64), EXT<br />

• Complessi<br />

Coercion dot<br />

I 16<br />

DBL<br />

DBL<br />

Corso <strong>di</strong> Laurea Magistr<strong>al</strong>e in Ingegneria delle Telecomunicazioni<br />

Misure elettroniche per le telecomunicazioni<br />

Università degli<br />

Stu<strong>di</strong> <strong>di</strong> Cassino


Il <strong>linguaggio</strong> <strong>di</strong> <strong>programmazione</strong> <strong>LabVIEW</strong><br />

25 ottobre 2010<br />

Comportamento dei controlli booleani<br />

Switch - Commuta<br />

per pressione e<br />

rilascio<br />

Latch – Ritorna<br />

nello stato <strong>di</strong><br />

default quando<br />

viene letto d<strong>al</strong><br />

<strong>di</strong>agramma<br />

• When pressed<br />

• When released<br />

• Until released<br />

Corso <strong>di</strong> Laurea Magistr<strong>al</strong>e in Ingegneria delle Telecomunicazioni<br />

Misure elettroniche per le telecomunicazioni<br />

Università degli<br />

Stu<strong>di</strong> <strong>di</strong> Cassino


Il <strong>linguaggio</strong> <strong>di</strong> <strong>programmazione</strong> <strong>LabVIEW</strong><br />

25 ottobre 2010<br />

Ciclo While temporizzato<br />

• Esecuzione <strong>di</strong> azioni<br />

ad interv<strong>al</strong>li prestabiliti<br />

• Impegno limitato <strong>di</strong><br />

risorse<br />

• Adeguamento ai tempi<br />

<strong>di</strong> risposta dell'utente<br />

Corso <strong>di</strong> Laurea Magistr<strong>al</strong>e in Ingegneria delle Telecomunicazioni<br />

Misure elettroniche per le telecomunicazioni<br />

Università degli<br />

Stu<strong>di</strong> <strong>di</strong> Cassino


Il <strong>linguaggio</strong> <strong>di</strong> <strong>programmazione</strong> <strong>LabVIEW</strong><br />

25 ottobre 2010<br />

Grafici multiple-plot<br />

• Bundle (nella p<strong>al</strong>ette Functions >> Cluster): assembla i<br />

suoi ingressi in un unico cluster<br />

• Un cluster è una struttura che raccoglie più elementi in un<br />

nuovo tipo <strong>di</strong> dato<br />

Corso <strong>di</strong> Laurea Magistr<strong>al</strong>e in Ingegneria delle Telecomunicazioni<br />

Misure elettroniche per le telecomunicazioni<br />

Università degli<br />

Stu<strong>di</strong> <strong>di</strong> Cassino


Il <strong>linguaggio</strong> <strong>di</strong> <strong>programmazione</strong> <strong>LabVIEW</strong><br />

25 ottobre 2010<br />

Shift register<br />

• Trasferiscono dati da una iterazione <strong>al</strong>la successiva<br />

• Si inseriscono con un right-click sul bordo del loop<br />

• Il termin<strong>al</strong>e destro conserva il dato <strong>al</strong>la fine della<br />

iterazione<br />

• Il termin<strong>al</strong>e sinistro fornisce il dato <strong>al</strong>la iterazione<br />

successiva<br />

Inizi<strong>al</strong>izzazione<br />

Da<br />

passo<br />

precedente<br />

Per il<br />

prossimo<br />

passo<br />

Corso <strong>di</strong> Laurea Magistr<strong>al</strong>e in Ingegneria delle Telecomunicazioni<br />

Misure elettroniche per le telecomunicazioni<br />

Università degli<br />

Stu<strong>di</strong> <strong>di</strong> Cassino


Il <strong>linguaggio</strong> <strong>di</strong> <strong>programmazione</strong> <strong>LabVIEW</strong><br />

Shift register<br />

25 ottobre 2010<br />

Corso <strong>di</strong> Laurea Magistr<strong>al</strong>e in Ingegneria delle Telecomunicazioni<br />

Misure elettroniche per le telecomunicazioni<br />

Università degli<br />

Stu<strong>di</strong> <strong>di</strong> Cassino


Il <strong>linguaggio</strong> <strong>di</strong> <strong>programmazione</strong> <strong>LabVIEW</strong><br />

25 ottobre 2010<br />

Shift register<br />

1 loop prima<br />

2 loop prima<br />

3 loop prima<br />

L'ultimo v<strong>al</strong>ore<br />

va passato qui<br />

Si possono aggiungere <strong>al</strong>tri shift register per ottenere<br />

v<strong>al</strong>ori <strong>di</strong> iterazioni precedenti<br />

Corso <strong>di</strong> Laurea Magistr<strong>al</strong>e in Ingegneria delle Telecomunicazioni<br />

Misure elettroniche per le telecomunicazioni<br />

Università degli<br />

Stu<strong>di</strong> <strong>di</strong> Cassino


Il <strong>linguaggio</strong> <strong>di</strong> <strong>programmazione</strong> <strong>LabVIEW</strong><br />

Shift register<br />

25 ottobre 2010<br />

Corso <strong>di</strong> Laurea Magistr<strong>al</strong>e in Ingegneria delle Telecomunicazioni<br />

Misure elettroniche per le telecomunicazioni<br />

Università degli<br />

Stu<strong>di</strong> <strong>di</strong> Cassino


Il <strong>linguaggio</strong> <strong>di</strong> <strong>programmazione</strong> <strong>LabVIEW</strong><br />

25 ottobre 2010<br />

Ciclo for<br />

Numero <strong>di</strong> iterazioni<br />

da eseguire<br />

Numero corrente <strong>di</strong><br />

iterazioni<br />

Esegue il co<strong>di</strong>ce <strong>al</strong> suo interno un numero<br />

prestabilito <strong>di</strong> volte<br />

Corso <strong>di</strong> Laurea Magistr<strong>al</strong>e in Ingegneria delle Telecomunicazioni<br />

Misure elettroniche per le telecomunicazioni<br />

Università degli<br />

Stu<strong>di</strong> <strong>di</strong> Cassino


Il <strong>linguaggio</strong> <strong>di</strong> <strong>programmazione</strong> <strong>LabVIEW</strong><br />

25 ottobre 2010<br />

Array<br />

• Collezioni <strong>di</strong> elementi (dati) dello stesso tipo<br />

• Una o più <strong>di</strong>mensioni, fino a 2 31 elementi per <strong>di</strong>mensione<br />

• Si accede agli elementi con un in<strong>di</strong>ce per <strong>di</strong>mensione<br />

• Il primo elemento ha sempre in<strong>di</strong>ce 0<br />

In<strong>di</strong>ce<br />

array <strong>di</strong> 10 elementi<br />

0 1 2 3 4 5 6 7 8 9<br />

1.2 3.2 8.2 8.0 4.8 5.1 6.0 1.0 2.5 1.7<br />

Array<br />

bi<strong>di</strong>mension<strong>al</strong>e<br />

0<br />

1<br />

2<br />

3<br />

4<br />

0 1 2 3 4 5 6<br />

Corso <strong>di</strong> Laurea Magistr<strong>al</strong>e in Ingegneria delle Telecomunicazioni<br />

Misure elettroniche per le telecomunicazioni<br />

Università degli<br />

Stu<strong>di</strong> <strong>di</strong> Cassino


Il <strong>linguaggio</strong> <strong>di</strong> <strong>programmazione</strong> <strong>LabVIEW</strong><br />

25 ottobre 2010<br />

Controlli ed in<strong>di</strong>catori per gli array<br />

1. Selezionare Array d<strong>al</strong>la p<strong>al</strong>ette dei controlli<br />

2.<br />

Inserire un controllo del tipo desiderato<br />

nella Array Shell<br />

Procedura an<strong>al</strong>oga per le<br />

costanti array<br />

Add<br />

Dimension<br />

per 2D<br />

arrays<br />

Corso <strong>di</strong> Laurea Magistr<strong>al</strong>e in Ingegneria delle Telecomunicazioni<br />

Misure elettroniche per le telecomunicazioni<br />

Università degli<br />

Stu<strong>di</strong> <strong>di</strong> Cassino


Il <strong>linguaggio</strong> <strong>di</strong> <strong>programmazione</strong> <strong>LabVIEW</strong><br />

Autoindexing<br />

25 ottobre 2010<br />

•Il loop accumula l'array <strong>al</strong> suo margine<br />

Auto-Indexing<br />

abilitato<br />

(Default nel For)<br />

1D arr ay<br />

0 1 2 3 4 5<br />

Auto-Indexing<br />

<strong>di</strong>sabilitato<br />

(Default nel While)<br />

Sc<strong>al</strong>are risultato<br />

dell'ultima iterazione<br />

Corso <strong>di</strong> Laurea Magistr<strong>al</strong>e in Ingegneria delle Telecomunicazioni<br />

Misure elettroniche per le telecomunicazioni<br />

Università degli<br />

Stu<strong>di</strong> <strong>di</strong> Cassino


Il <strong>linguaggio</strong> <strong>di</strong> <strong>programmazione</strong> <strong>LabVIEW</strong><br />

Creazione array 2D<br />

25 ottobre 2010<br />

1D array<br />

# righe<br />

0 1 2 3 4 5<br />

# colonne<br />

0<br />

1<br />

2<br />

3<br />

2D array<br />

•Il loop interno crea gli elementi <strong>di</strong> ogni riga<br />

•Il loop esterno sovrappone le righe<br />

Corso <strong>di</strong> Laurea Magistr<strong>al</strong>e in Ingegneria delle Telecomunicazioni<br />

Misure elettroniche per le telecomunicazioni<br />

Università degli<br />

Stu<strong>di</strong> <strong>di</strong> Cassino


Il <strong>linguaggio</strong> <strong>di</strong> <strong>programmazione</strong> <strong>LabVIEW</strong><br />

Autoindexing e lettura <strong>di</strong> array<br />

25 ottobre 2010<br />

Non deve essere impostato<br />

<strong>di</strong>rettamente<br />

Il ciclo viene eseguito per un numero <strong>di</strong> volte<br />

pari <strong>al</strong> numero <strong>di</strong> elementi dell'array collegato<br />

Corso <strong>di</strong> Laurea Magistr<strong>al</strong>e in Ingegneria delle Telecomunicazioni<br />

Misure elettroniche per le telecomunicazioni<br />

Università degli<br />

Stu<strong>di</strong> <strong>di</strong> Cassino


Il <strong>linguaggio</strong> <strong>di</strong> <strong>programmazione</strong> <strong>LabVIEW</strong><br />

Funzioni per gli array<br />

25 ottobre 2010<br />

Array<br />

7 3 2 5<br />

4<br />

Number of<br />

Elements<br />

element<br />

<strong>di</strong>mension<br />

size<br />

Initi<strong>al</strong>ize Array<br />

initi<strong>al</strong>ized<br />

array<br />

10<br />

4<br />

10 10 10 10<br />

Corso <strong>di</strong> Laurea Magistr<strong>al</strong>e in Ingegneria delle Telecomunicazioni<br />

Misure elettroniche per le telecomunicazioni<br />

Università degli<br />

Stu<strong>di</strong> <strong>di</strong> Cassino


Il <strong>linguaggio</strong> <strong>di</strong> <strong>programmazione</strong> <strong>LabVIEW</strong><br />

Funzioni per gli array<br />

25 ottobre 2010<br />

array<br />

Elemento<br />

Array<br />

Elemento<br />

Array<br />

3 2 5<br />

7<br />

1 4 2<br />

Build Array<br />

Array con il nuovo elemento accodato<br />

3 2 5<br />

7 1 4 2<br />

La funzione Build Array<br />

è resizable<br />

Nuovo array<br />

1D Array<br />

1D Array<br />

3 2 5<br />

1 4 2<br />

3 2 5<br />

1 4 2<br />

2D Array<br />

D<strong>al</strong> menu <strong>di</strong> contesto:<br />

“change to element”<br />

“change to array”<br />

1D Array<br />

1D Array<br />

3 2 5<br />

1 4 2<br />

3 2 5<br />

1 4 2<br />

1D Array<br />

Corso <strong>di</strong> Laurea Magistr<strong>al</strong>e in Ingegneria delle Telecomunicazioni<br />

Misure elettroniche per le telecomunicazioni<br />

Università degli<br />

Stu<strong>di</strong> <strong>di</strong> Cassino


Il <strong>linguaggio</strong> <strong>di</strong> <strong>programmazione</strong> <strong>LabVIEW</strong><br />

Funzioni per gli array<br />

25 ottobre 2010<br />

array<br />

index(0)<br />

length<br />

subarray<br />

Array Subset<br />

Array<br />

1 2 7 3 2 5 8<br />

Index<br />

Length<br />

2<br />

4<br />

7<br />

3 2 5<br />

Array Subset<br />

array<br />

index<br />

element<br />

Array<br />

3 2 5<br />

7 1 4 2<br />

Index<br />

2<br />

Element<br />

5<br />

Index Array<br />

2D Array<br />

3 2 5<br />

1 4 2<br />

Row Index<br />

Column Index<br />

0<br />

2<br />

Element<br />

5<br />

Corso <strong>di</strong> Laurea Magistr<strong>al</strong>e in Ingegneria delle Telecomunicazioni<br />

Misure elettroniche per le telecomunicazioni<br />

Università degli<br />

Stu<strong>di</strong> <strong>di</strong> Cassino


Il <strong>linguaggio</strong> <strong>di</strong> <strong>programmazione</strong> <strong>LabVIEW</strong><br />

Funzioni per gli array<br />

Index array<br />

Estrae una colonna<br />

25 ottobre 2010<br />

0<br />

0<br />

0<br />

Estrae una riga<br />

D<strong>al</strong> menu <strong>di</strong> contesto della Index<br />

Array:<br />

" Add <strong>di</strong>mension<br />

" Disable input<br />

Corso <strong>di</strong> Laurea Magistr<strong>al</strong>e in Ingegneria delle Telecomunicazioni<br />

Misure elettroniche per le telecomunicazioni<br />

Università degli<br />

Stu<strong>di</strong> <strong>di</strong> Cassino


Il <strong>linguaggio</strong> <strong>di</strong> <strong>programmazione</strong> <strong>LabVIEW</strong><br />

25 ottobre 2010<br />

Polimorfismo<br />

• Ingressi delle funzioni <strong>di</strong> tipo <strong>di</strong>verso<br />

• Comportamento <strong>di</strong>pendente d<strong>al</strong> tipo degli ingressi<br />

• Tutte le funzioni aritmetiche sono polimorfiche<br />

Combinazione<br />

Sc<strong>al</strong>are + Sc<strong>al</strong>are<br />

5<br />

2<br />

7<br />

Risultato<br />

Sc<strong>al</strong>are<br />

Array + Sc<strong>al</strong>are<br />

1 4 2<br />

2<br />

3 6 4<br />

Array<br />

Array + Array 3 2 5<br />

1 4 2<br />

4 6 7<br />

Array<br />

Array + Array 1 4 2<br />

3 2 5 7<br />

4 6 7<br />

Array<br />

Corso <strong>di</strong> Laurea Magistr<strong>al</strong>e in Ingegneria delle Telecomunicazioni<br />

Misure elettroniche per le telecomunicazioni<br />

Università degli<br />

Stu<strong>di</strong> <strong>di</strong> Cassino


Il <strong>linguaggio</strong> <strong>di</strong> <strong>programmazione</strong> <strong>LabVIEW</strong><br />

25 ottobre 2010<br />

Waveform graph<br />

Tracciano un array <strong>di</strong> v<strong>al</strong>ori numerici rispetto <strong>al</strong>l'in<strong>di</strong>ce<br />

Legenda<br />

P<strong>al</strong>ette<br />

Corso <strong>di</strong> Laurea Magistr<strong>al</strong>e in Ingegneria delle Telecomunicazioni<br />

Misure elettroniche per le telecomunicazioni<br />

Università degli<br />

Stu<strong>di</strong> <strong>di</strong> Cassino


Il <strong>linguaggio</strong> <strong>di</strong> <strong>programmazione</strong> <strong>LabVIEW</strong><br />

25 ottobre 2010<br />

Single plot waveform graph<br />

1D Array<br />

Termin<strong>al</strong>e del Waveform<br />

Graph (è un Array 1D)<br />

1D Array<br />

Termin<strong>al</strong>e del Waveform<br />

Graph (è un Cluster)<br />

" X0 è il v<strong>al</strong>ore inizi<strong>al</strong>e per le ascisse<br />

" deltaX è la <strong>di</strong>stanza orizzont<strong>al</strong>e tra i punti del grafico<br />

Corso <strong>di</strong> Laurea Magistr<strong>al</strong>e in Ingegneria delle Telecomunicazioni<br />

Misure elettroniche per le telecomunicazioni<br />

Università degli<br />

Stu<strong>di</strong> <strong>di</strong> Cassino


Il <strong>linguaggio</strong> <strong>di</strong> <strong>programmazione</strong> <strong>LabVIEW</strong><br />

25 ottobre 2010<br />

Multiple plot waveform graph<br />

Build Array<br />

1D Arrays<br />

2D array<br />

Termin<strong>al</strong>e del<br />

Waveform Graph (è un<br />

Array 2D)<br />

clusters<br />

cluste<br />

r array<br />

Termin<strong>al</strong>e del Waveform<br />

Graph (è un Array <strong>di</strong><br />

Cluster)<br />

Corso <strong>di</strong> Laurea Magistr<strong>al</strong>e in Ingegneria delle Telecomunicazioni<br />

Misure elettroniche per le telecomunicazioni<br />

Università degli<br />

Stu<strong>di</strong> <strong>di</strong> Cassino


Il <strong>linguaggio</strong> <strong>di</strong> <strong>programmazione</strong> <strong>LabVIEW</strong><br />

25 ottobre 2010<br />

XY graph<br />

Single-plot XY Graph<br />

Multi-plot XY Graph<br />

Corso <strong>di</strong> Laurea Magistr<strong>al</strong>e in Ingegneria delle Telecomunicazioni<br />

Misure elettroniche per le telecomunicazioni<br />

Università degli<br />

Stu<strong>di</strong> <strong>di</strong> Cassino


Il <strong>linguaggio</strong> <strong>di</strong> <strong>programmazione</strong> <strong>LabVIEW</strong><br />

25 ottobre 2010<br />

Cluster<br />

• Combinano più strutture dati in un nuovo tipo dati<br />

• Possono contenere elementi <strong>di</strong> tipo <strong>di</strong>verso<br />

• Si possono definire costanti, controlli e in<strong>di</strong>catori <strong>di</strong> tipo Cluster<br />

• L'or<strong>di</strong>ne degli elementi è importante<br />

Unbundle<br />

Corso <strong>di</strong> Laurea Magistr<strong>al</strong>e in Ingegneria delle Telecomunicazioni<br />

Misure elettroniche per le telecomunicazioni<br />

Università degli<br />

Stu<strong>di</strong> <strong>di</strong> Cassino


Il <strong>linguaggio</strong> <strong>di</strong> <strong>programmazione</strong> <strong>LabVIEW</strong><br />

25 ottobre 2010<br />

Funzioni per i cluster<br />

Mo<strong>di</strong>fica <strong>di</strong> un elemento<br />

<strong>di</strong> un Cluster:<br />

Corso <strong>di</strong> Laurea Magistr<strong>al</strong>e in Ingegneria delle Telecomunicazioni<br />

Misure elettroniche per le telecomunicazioni<br />

Università degli<br />

Stu<strong>di</strong> <strong>di</strong> Cassino


Il <strong>linguaggio</strong> <strong>di</strong> <strong>programmazione</strong> <strong>LabVIEW</strong><br />

25 ottobre 2010<br />

Case<br />

• Solo un sotto<strong>di</strong>agramma viene eseguito<br />

• Il v<strong>al</strong>ore passato <strong>al</strong> selettore determina il co<strong>di</strong>ce da eseguire<br />

• Il selettore può essere booleano, numerico o stringa<br />

Selettore booleano:<br />

if...then...else<br />

Corso <strong>di</strong> Laurea Magistr<strong>al</strong>e in Ingegneria delle Telecomunicazioni<br />

Misure elettroniche per le telecomunicazioni<br />

Università degli<br />

Stu<strong>di</strong> <strong>di</strong> Cassino


Il <strong>linguaggio</strong> <strong>di</strong> <strong>programmazione</strong> <strong>LabVIEW</strong><br />

25 ottobre 2010<br />

Case<br />

• Con selettori <strong>di</strong> tipo numerico o stringa si possono gestire scelte<br />

multiple<br />

• “Add Case” d<strong>al</strong> menu <strong>di</strong> contesto per aggiungere nuove scelte<br />

• Un Case deve essere quello <strong>di</strong> default<br />

Corso <strong>di</strong> Laurea Magistr<strong>al</strong>e in Ingegneria delle Telecomunicazioni<br />

Misure elettroniche per le telecomunicazioni<br />

Università degli<br />

Stu<strong>di</strong> <strong>di</strong> Cassino


Il <strong>linguaggio</strong> <strong>di</strong> <strong>programmazione</strong> <strong>LabVIEW</strong><br />

Ingressi ed uscite del case (tunnel)<br />

25 ottobre 2010<br />

Tunnel <strong>di</strong><br />

uscita<br />

• In TUTTI i case devono essere collegati TUTTI i tunnel<br />

Corso <strong>di</strong> Laurea Magistr<strong>al</strong>e in Ingegneria delle Telecomunicazioni<br />

Misure elettroniche per le telecomunicazioni<br />

Università degli<br />

Stu<strong>di</strong> <strong>di</strong> Cassino


Il <strong>linguaggio</strong> <strong>di</strong> <strong>programmazione</strong> <strong>LabVIEW</strong><br />

25 ottobre 2010<br />

Sequence<br />

• I sotto<strong>di</strong>agrammi vengono eseguiti uno dopo l'<strong>al</strong>tro<br />

• Consente <strong>di</strong> fissare l'or<strong>di</strong>ne <strong>di</strong> esecuzione <strong>di</strong> VI non <strong>di</strong>pendenti<br />

Corso <strong>di</strong> Laurea Magistr<strong>al</strong>e in Ingegneria delle Telecomunicazioni<br />

Misure elettroniche per le telecomunicazioni<br />

Università degli<br />

Stu<strong>di</strong> <strong>di</strong> Cassino


Il <strong>linguaggio</strong> <strong>di</strong> <strong>programmazione</strong> <strong>LabVIEW</strong><br />

Sequence loc<strong>al</strong>s<br />

25 ottobre 2010<br />

• Passano dati da un frame <strong>al</strong> solo frame successivo<br />

• Si definiscono sul bordo della Sequence<br />

Dati non<br />

<strong>di</strong>sponibili<br />

Sequence loc<strong>al</strong><br />

in uscita d<strong>al</strong><br />

Frame 1<br />

Dati<br />

<strong>di</strong>sponibili<br />

Corso <strong>di</strong> Laurea Magistr<strong>al</strong>e in Ingegneria delle Telecomunicazioni<br />

Misure elettroniche per le telecomunicazioni<br />

Università degli<br />

Stu<strong>di</strong> <strong>di</strong> Cassino


Il <strong>linguaggio</strong> <strong>di</strong> <strong>programmazione</strong> <strong>LabVIEW</strong><br />

25 ottobre 2010<br />

Formula node<br />

- Implementazione <strong>di</strong> equazioni complicate<br />

- Variabili create sul bordo<br />

- I nomi delle variabili sono case sensitive<br />

- Ogni istruzione deve terminare con un punto e virgola (;)<br />

- per l'elenco delle funzioni <strong>di</strong>sponibili<br />

Corso <strong>di</strong> Laurea Magistr<strong>al</strong>e in Ingegneria delle Telecomunicazioni<br />

Misure elettroniche per le telecomunicazioni<br />

Università degli<br />

Stu<strong>di</strong> <strong>di</strong> Cassino


Il <strong>linguaggio</strong> <strong>di</strong> <strong>programmazione</strong> <strong>LabVIEW</strong><br />

25 ottobre 2010<br />

Formula Node: con<strong>di</strong>tion<strong>al</strong> branching<br />

if (x >= 0) then<br />

y = sqrt(x)<br />

else<br />

y = -99999.0<br />

end if<br />

Con<strong>di</strong>tion<strong>al</strong> Operator<br />

F<strong>al</strong>se Con<strong>di</strong>tion<br />

Con<strong>di</strong>tion<br />

True Con<strong>di</strong>tion<br />

Corso <strong>di</strong> Laurea Magistr<strong>al</strong>e in Ingegneria delle Telecomunicazioni<br />

Misure elettroniche per le telecomunicazioni<br />

Università degli<br />

Stu<strong>di</strong> <strong>di</strong> Cassino


Il <strong>linguaggio</strong> <strong>di</strong> <strong>programmazione</strong> <strong>LabVIEW</strong><br />

25 ottobre 2010<br />

Formula Node: variabili temporanee<br />

Si definiscono come uscite, ma non vengono collegate<br />

Corso <strong>di</strong> Laurea Magistr<strong>al</strong>e in Ingegneria delle Telecomunicazioni<br />

Misure elettroniche per le telecomunicazioni<br />

Università degli<br />

Stu<strong>di</strong> <strong>di</strong> Cassino

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!