Sei sulla pagina 1di 53

Introduzione al linguaggio di

programmazione LabVIEW
Ing. Gianfranco Miele (g.miele@unicas.it)
www.docente.unicas.it/gianfranco_miele
November 3, 2010
Il linguaggio di programmazione LabVIEW 3 novembre 2010

LabView
• Ambiente di sviluppo grafico
Codice
Interfaccia utente
• Modulare
• Compilatore 32 bit
• Elevato numero di funzioni
• Librerie per la gestione della strumentazione
• Librerie per l'acquisizione dati
• Possibilità di includere routine in altro linguaggio
Corso di Laurea Magistrale in Ingegneria Meccanica
Università degli
Strumentazione e Misure per l’Automazione
Studi di Cassino
Il linguaggio di programmazione LabVIEW 3 novembre 2010

Libreria di funzioni
• Calcolo, confronto, cicli di controllo
• Operazioni su aggregati di dati (stringhe, array, ...)
• I/O su file
• Gestione strumentazione (RS232, IEEE-488, VXI, ...)
• Acquisizione dati
• Analisi (Generazione ed elaborazione segnali,
Statistica, Fitting, Algebra lineare, ...)
• Comunicazione (DDE, TCP/IP, Bluetooth, ActiveX)
• Gestione applicazione (DLL, Timers,
Sincronizzazione)
Corso di Laurea Magistrale in Ingegneria Meccanica
Università degli
Strumentazione e Misure per l’Automazione
Studi di Cassino
Il linguaggio di programmazione LabVIEW 3 novembre 2010

Virtual Instrument (VI)


• Il Front Panel
• Il Block Diagram
• L’icona/connettore

Corso di Laurea Magistrale in Ingegneria Meccanica


Università degli
Strumentazione e Misure per l’Automazione
Studi di Cassino
Il linguaggio di programmazione LabVIEW 3 novembre 2010

Front Panel
– E’ l’interfaccia utente dell’applicazione

Contiene:

- Controlli
(input)

- Indicatori
(output)

Corso di Laurea Magistrale in Ingegneria Meccanica


Università degli
Strumentazione e Misure per l’Automazione
Studi di Cassino
Il linguaggio di programmazione LabVIEW 3 novembre 2010

Front Panel Icona/Connettore

Toolbar

Controllo
Controllo “Knob”
numerico

Legenda

Etichetta

Indicatore
“Chart”
Corso di Laurea Magistrale in Ingegneria Meccanica
Università degli
Strumentazione e Misure per l’Automazione
Studi di Cassino
Il linguaggio di programmazione LabVIEW 3 novembre 2010

Block Diagram
- E’ il codice sorgente dell’applicazione (in Linguaggio G)
- Controlli e indicatori del pannello appaiono come Terminali
- Nodi o funzioni: ricevono dati dai connettori di ingresso e forniscono
dati su quelli in uscita

Corso di Laurea Magistrale in Ingegneria Meccanica


Università degli
Strumentazione e Misure per l’Automazione
Studi di Cassino
Il linguaggio di programmazione LabVIEW 3 novembre 2010

Dataflow programming
• Un nodo è eseguito quando i dati sono disponibili a TUTTI
i suoi terminali di ingresso
• Un nodo fornisce i dati ai suoi terminali di uscita quando è
terminata la sua esecuzione
• Se non esiste dipendenza tra due nodi, l’ordine con cui
verranno eseguiti non è prevedibile !

Il modello di programmazione di LabView è


• Data driven
Corso di Laurea Magistrale in Ingegneria Meccanica
Università degli
Strumentazione e Misure per l’Automazione
Studi di Cassino
Il linguaggio di programmazione LabVIEW 3 novembre 2010

Dataflow programming
• Un filo collega un’unica sorgente di dati con uno o più nodi
• Il colore e lo spessore del filo individuano il tipo di dato

Scalar Array 1D Array 2D

Arancione (floating point)


Numeri
Blu (interi)

Booleani Verde

Stringhe Viola

Corso di Laurea Magistrale in Ingegneria Meccanica


Università degli
Strumentazione e Misure per l’Automazione
Studi di Cassino
Il linguaggio di programmazione LabVIEW 3 novembre 2010

L’ambiente di sviluppo: Le palette


Palette delle Funzioni Palette dei Controlli
(Diagramma) (Pannello)

Corso di Laurea Magistrale in Ingegneria Meccanica


Università degli
Strumentazione e Misure per l’Automazione
Studi di Cassino
Il linguaggio di programmazione LabVIEW 3 novembre 2010

L’ambiente di sviluppo: La toolbar

Debugging
Stop
Continuous Run
Run

Corso di Laurea Magistrale in Ingegneria Meccanica


Università degli
Strumentazione e Misure per l’Automazione
Studi di Cassino
Il linguaggio di programmazione LabVIEW 3 novembre 2010

L’ambiente di sviluppo: i tools


Operating: Inserimento dati
Positioning: Posizionamento e ridimensionamento
Labeling: Gestione etichette
Wiring: Collegamento (nel Block Diagram)
Object pop-up: Menu dell'oggetto
Scrolling: Scorrimento della finestra
Breakpoint: Inserimento stop (debug)
Probe: Visualizzazione dati nei fili (debug)
Color copy: Copia di un colore
Coloring: Per colorare un oggetto

Corso di Laurea Magistrale in Ingegneria Meccanica


Università degli
Strumentazione e Misure per l’Automazione
Studi di Cassino
Il linguaggio di programmazione LabVIEW 3 novembre 2010

Tecniche di debug
Click sulla freccia spezzata: Info sull’errore

Highlighting button: Esecuzione animata

Probe: Mostra il valore dei dati


mentre scorrono lungo i fili

Breakpoint: ferma l’esecuzione quando i dati sono


disponibili sul filo

Single Step: Esecuzione passo-passo

Step Over: Esecuzione passo-passo, non entra nei


nodi

Step Out: Esecuzione passo-passo, esce dai nodi


nei quali è entrato
Corso di Laurea Magistrale in Ingegneria Meccanica
Università degli
Strumentazione e Misure per l’Automazione
Studi di Cassino
Il linguaggio di programmazione LabVIEW 3 novembre 2010

SubVI
• Un VI può essere usato nel Block Diagram di un altro VI di
livello più alto
• Nel VI chiamante, un SubVI è rappresentato con la sua icona

Corso di Laurea Magistrale in Ingegneria Meccanica


Università degli
Strumentazione e Misure per l’Automazione
Studi di Cassino
Il linguaggio di programmazione LabVIEW 3 novembre 2010

Realizzazione di un SubVI
• Disegno dell’icona
• Associazione di controlli
e indicatori alle caselle
del connettore
• Salvataggio su disco

Corso di Laurea Magistrale in Ingegneria Meccanica


Università degli
Strumentazione e Misure per l’Automazione
Studi di Cassino
Il linguaggio di programmazione LabVIEW 3 novembre 2010

Realizzazione di un SubVI
• Functions >> Select a VI …
• Trascinare l’icona sul diagramma
chiamante

Corso di Laurea Magistrale in Ingegneria Meccanica


Università degli
Strumentazione e Misure per l’Automazione
Studi di Cassino
Il linguaggio di programmazione LabVIEW 3 novembre 2010

Ciclo While

Qui va il codice da
iterare
Iteration Conditional
terminal Ripetere? terminal

• Il ciclo termina quando si fornisce FALSE al conditional terminal


• Il codice è eseguito almeno una volta
• L'iteration terminal restituisce il numero di iterazioni raggiunto

Corso di Laurea Magistrale in Ingegneria Meccanica


Università degli
Strumentazione e Misure per l’Automazione
Studi di Cassino
Il linguaggio di programmazione LabVIEW 3 novembre 2010

Ciclo While

Corso di Laurea Magistrale in Ingegneria Meccanica


Università degli
Strumentazione e Misure per l’Automazione
Studi di Cassino
Il linguaggio di programmazione LabVIEW 3 novembre 2010

Waveform Chart
Label

Legenda

Aggiornamento:
• Strip chart
• Scope chart
Palette • Sweep chart
Corso di Laurea Magistrale in Ingegneria Meccanica
Università degli
Strumentazione e Misure per l’Automazione
Studi di Cassino
Il linguaggio di programmazione LabVIEW 3 novembre 2010

Visualizzazione con Waveform Chart

Ad ogni iterazione il waveform chart riceve uno


scalare
Corso di Laurea Magistrale in Ingegneria Meccanica
Università degli
Strumentazione e Misure per l’Automazione
Studi di Cassino
Il linguaggio di programmazione LabVIEW 3 novembre 2010

Tipi numerici e conversioni


• Interi con segno: I8, I16, I32
• Interi senza segno: U8, U16, U32
• In virgola mobile: SGL (32), DBL (64), EXT
• Complessi

Coercion dot

I 16 DBL

DBL

Corso di Laurea Magistrale in Ingegneria Meccanica


Università degli
Strumentazione e Misure per l’Automazione
Studi di Cassino
Il linguaggio di programmazione LabVIEW 3 novembre 2010

Comportamento dei controlli booleani


Switch - Commuta
per pressione e
rilascio
Latch – Ritorna
nello stato di
default quando
viene letto dal
diagramma

• When pressed
• When released
• Until released
Corso di Laurea Magistrale in Ingegneria Meccanica
Università degli
Strumentazione e Misure per l’Automazione
Studi di Cassino
Il linguaggio di programmazione LabVIEW 3 novembre 2010

Ciclo While temporizzato

 Esecuzione di azioni
ad intervalli prestabiliti
 Impegno limitato di
risorse
 Adeguamento ai tempi
di risposta dell'utente

Corso di Laurea Magistrale in Ingegneria Meccanica


Università degli
Strumentazione e Misure per l’Automazione
Studi di Cassino
Il linguaggio di programmazione LabVIEW 3 novembre 2010

Grafici multiple-plot

•Bundle (nella palette Functions >> Cluster): assembla i


suoi ingressi in un unico cluster
•Un cluster è una struttura che raccoglie più elementi in un
nuovo tipo di dato
Corso di Laurea Magistrale in Ingegneria Meccanica
Università degli
Strumentazione e Misure per l’Automazione
Studi di Cassino
Il linguaggio di programmazione LabVIEW 3 novembre 2010

Shift register
• Trasferiscono dati da una iterazione alla successiva
• Si inseriscono con un right-click sul bordo del loop
• Il terminale destro conserva il dato alla fine della
iterazione
• Il terminale sinistro fornisce il dato alla iterazione
successiva

Da Per il
passo prossimo
precedente passo

Inizializzazione

Corso di Laurea Magistrale in Ingegneria Meccanica


Università degli
Strumentazione e Misure per l’Automazione
Studi di Cassino
Il linguaggio di programmazione LabVIEW 3 novembre 2010

Shift register

Corso di Laurea Magistrale in Ingegneria Meccanica


Università degli
Strumentazione e Misure per l’Automazione
Studi di Cassino
Il linguaggio di programmazione LabVIEW 3 novembre 2010

Shift register

1 loop prima L'ultimo valore


2 loop prima va passato qui
3 loop prima

Si possono aggiungere altri shift register per ottenere


valori di iterazioni precedenti

Corso di Laurea Magistrale in Ingegneria Meccanica


Università degli
Strumentazione e Misure per l’Automazione
Studi di Cassino
Il linguaggio di programmazione LabVIEW 3 novembre 2010

Shift register

Corso di Laurea Magistrale in Ingegneria Meccanica


Università degli
Strumentazione e Misure per l’Automazione
Studi di Cassino
Il linguaggio di programmazione LabVIEW 3 novembre 2010

Ciclo for
Numero di iterazioni
da eseguire

Numero corrente di
iterazioni

Esegue il codice al suo interno un numero


prestabilito di volte

Corso di Laurea Magistrale in Ingegneria Meccanica


Università degli
Strumentazione e Misure per l’Automazione
Studi di Cassino
Il linguaggio di programmazione LabVIEW 3 novembre 2010

Array
• Collezioni di elementi (dati) dello stesso tipo
• Una o più dimensioni, fino a 231 elementi per dimensione
• Si accede agli elementi con un indice per dimensione
• Il primo elemento ha sempre indice 0
Indice 0 1 2 3 4 5 6 7 8 9
1.2 3.2 8.2 8.0 4.8 5.1 6.0 1.0 2.5 1.7
array di 10 elementi
0 1 2 3 4 5 6
Array 0
bidimensionale 1
2
3
4

Corso di Laurea Magistrale in Ingegneria Meccanica


Università degli
Strumentazione e Misure per l’Automazione
Studi di Cassino
Il linguaggio di programmazione LabVIEW 3 novembre 2010

Controlli ed indicatori per gli array


1. Selezionare Array dalla palette dei controlli

2. Inserire un controllo del tipo desiderato


nella Array Shell

Add
Dimension
per 2D
Procedura analoga per le
arrays
costanti array
Corso di Laurea Magistrale in Ingegneria Meccanica
Università degli
Strumentazione e Misure per l’Automazione
Studi di Cassino
Il linguaggio di programmazione LabVIEW 3 novembre 2010

Autoindexing
•Il loop accumula l'array al suo margine

Auto-Indexing
abilitato 1D arr ay
(Default nel For)
0 1 2 3 4 5

Auto-Indexing
disabilitato
(Default nel While) Scalare risultato
dell'ultima iterazione

Corso di Laurea Magistrale in Ingegneria Meccanica


Università degli
Strumentazione e Misure per l’Automazione
Studi di Cassino
Il linguaggio di programmazione LabVIEW 3 novembre 2010

Creazione array 2D

1D array
0 1 2 3 4 5
# righe

# colonne
2D array
0
1
2
3

•Il loop interno crea gli elementi di ogni riga

•Il loop esterno sovrappone le righe

Corso di Laurea Magistrale in Ingegneria Meccanica


Università degli
Strumentazione e Misure per l’Automazione
Studi di Cassino
Il linguaggio di programmazione LabVIEW 3 novembre 2010

Autoindexing e lettura di array

Non deve essere impostato


direttamente

Il ciclo viene eseguito per un numero di volte


pari al numero di elementi dell'array collegato

Corso di Laurea Magistrale in Ingegneria Meccanica


Università degli
Strumentazione e Misure per l’Automazione
Studi di Cassino
Il linguaggio di programmazione LabVIEW 3 novembre 2010

Funzioni per gli array

Number of
Array 7 3 2 5 4
Elements

element
initialized
dimension array
size
Initialize Array

10
10 10 10 10
4

Corso di Laurea Magistrale in Ingegneria Meccanica


Università degli
Strumentazione e Misure per l’Automazione
Studi di Cassino
Il linguaggio di programmazione LabVIEW 3 novembre 2010

Funzioni per gli array


array Array con il nuovo elemento accodato
Elemento
Build Array
La funzione Build Array
è resizable
Array 3 2 5
Elemento 7 3 2 5 7 1 4 2 Nuovo array
Array 1 4 2

Dal menu di contesto:


1D Array 3 2 5
3 2 5 “change to element”
2D Array
1D Array 1 4 2 1 4 2
“change to array”

1D Array 3 2 5
3 2 5 1 4 2 1D Array
1D Array 1 4 2

Corso di Laurea Magistrale in Ingegneria Meccanica


Università degli
Strumentazione e Misure per l’Automazione
Studi di Cassino
Il linguaggio di programmazione LabVIEW 3 novembre 2010

Funzioni per gli array


array
index(0) subarray
length
Array Subset

Array 1 2 7 3 2 5 8
Index 2 7 3 2 5 Array Subset
Length 4

Array
3 2 5 7 1 4 2
Element
array element 5
index Index 2

Index Array 2D Array


3 2 5
1 4 2 Element
5
Row Index 0
Column Index 2

Corso di Laurea Magistrale in Ingegneria Meccanica


Università degli
Strumentazione e Misure per l’Automazione
Studi di Cassino
Il linguaggio di programmazione LabVIEW 3 novembre 2010

Funzioni per gli array


Index array Estrae una colonna
0

Estrae una riga

Dal menu di contesto della Index


Array:
" Add dimension
" Disable input
Corso di Laurea Magistrale in Ingegneria Meccanica
Università degli
Strumentazione e Misure per l’Automazione
Studi di Cassino
Il linguaggio di programmazione LabVIEW 3 novembre 2010

Polimorfismo
• Ingressi delle funzioni di tipo diverso
• Comportamento dipendente dal tipo degli ingressi
• Tutte le funzioni aritmetiche sono polimorfiche

Combinazione Risultato
5 7
Scalare + Scalare Scalare
2

Array + Scalare 1 4 2 3 6 4 Array


2

Array + Array 3 2 5 4 6 7 Array


1 4 2

Array + Array 1 4 2 4 6 7 Array


3 2 5 7

Corso di Laurea Magistrale in Ingegneria Meccanica


Università degli
Strumentazione e Misure per l’Automazione
Studi di Cassino
Il linguaggio di programmazione LabVIEW 3 novembre 2010

Waveform graph
Tracciano un array di valori numerici rispetto all'indice

Legenda

Palette

Corso di Laurea Magistrale in Ingegneria Meccanica


Università degli
Strumentazione e Misure per l’Automazione
Studi di Cassino
Il linguaggio di programmazione LabVIEW 3 novembre 2010

Single plot waveform graph

Terminale del Waveform


1D Array Graph (è un Array 1D)

Terminale del Waveform


Graph (è un Cluster)
1D Array

" X0 è il valore iniziale per le ascisse


" deltaX è la distanza orizzontale tra i punti del grafico

Corso di Laurea Magistrale in Ingegneria Meccanica


Università degli
Strumentazione e Misure per l’Automazione
Studi di Cassino
Il linguaggio di programmazione LabVIEW 3 novembre 2010

Multiple plot waveform graph

Build Array

Terminale del
1D Arrays 2D array Waveform Graph (è un
Array 2D)

cluste Terminale del Waveform


r array Graph (è un Array di
clusters
Cluster)

Corso di Laurea Magistrale in Ingegneria Meccanica


Università degli
Strumentazione e Misure per l’Automazione
Studi di Cassino
Il linguaggio di programmazione LabVIEW 3 novembre 2010

XY graph

Single-plot XY Graph

Multi-plot XY Graph

Corso di Laurea Magistrale in Ingegneria Meccanica


Università degli
Strumentazione e Misure per l’Automazione
Studi di Cassino
Il linguaggio di programmazione LabVIEW 3 novembre 2010

Cluster
 Combinano più strutture dati in un nuovo tipo dati
 Possono contenere elementi di tipo diverso

 Si possono definire costanti, controlli e indicatori di tipo Cluster

 L'ordine degli elementi è importante

Unbundle

Corso di Laurea Magistrale in Ingegneria Meccanica


Università degli
Strumentazione e Misure per l’Automazione
Studi di Cassino
Il linguaggio di programmazione LabVIEW 3 novembre 2010

Funzioni per i cluster

Modifica di un elemento
di un Cluster:

Corso di Laurea Magistrale in Ingegneria Meccanica


Università degli
Strumentazione e Misure per l’Automazione
Studi di Cassino
Il linguaggio di programmazione LabVIEW 3 novembre 2010

Case
• Solo un sottodiagramma viene eseguito
• Il valore passato al selettore determina il codice da eseguire
• Il selettore può essere booleano, numerico o stringa

Selettore booleano:
if...then...else

Corso di Laurea Magistrale in Ingegneria Meccanica


Università degli
Strumentazione e Misure per l’Automazione
Studi di Cassino
Il linguaggio di programmazione LabVIEW 3 novembre 2010

Case
• Con selettori di tipo numerico o stringa si possono gestire scelte
multiple
• “Add Case” dal menu di contesto per aggiungere nuove scelte
• Un Case deve essere quello di default

Corso di Laurea Magistrale in Ingegneria Meccanica


Università degli
Strumentazione e Misure per l’Automazione
Studi di Cassino
Il linguaggio di programmazione LabVIEW 3 novembre 2010

Ingressi ed uscite del case (tunnel)

Tunnel di
uscita

• In TUTTI i case devono essere collegati TUTTI i tunnel


Corso di Laurea Magistrale in Ingegneria Meccanica
Università degli
Strumentazione e Misure per l’Automazione
Studi di Cassino
Il linguaggio di programmazione LabVIEW 3 novembre 2010

Sequence
• I sottodiagrammi vengono eseguiti uno dopo l'altro
• Consente di fissare l'ordine di esecuzione di VI non dipendenti

Corso di Laurea Magistrale in Ingegneria Meccanica


Università degli
Strumentazione e Misure per l’Automazione
Studi di Cassino
Il linguaggio di programmazione LabVIEW 3 novembre 2010

Sequence locals
• Passano dati da un frame al solo frame successivo
• Si definiscono sul bordo della Sequence

Dati non Sequence local Dati


disponibili in uscita dal disponibili
Frame 1
Corso di Laurea Magistrale in Ingegneria Meccanica
Università degli
Strumentazione e Misure per l’Automazione
Studi di Cassino
Il linguaggio di programmazione LabVIEW 3 novembre 2010

Formula node
- Implementazione di equazioni complicate
- Variabili create sul bordo
- I nomi delle variabili sono case sensitive
- Ogni istruzione deve terminare con un punto e virgola (;)
- <Ctrl-H> per l'elenco delle funzioni disponibili

Corso di Laurea Magistrale in Ingegneria Meccanica


Università degli
Strumentazione e Misure per l’Automazione
Studi di Cassino
Il linguaggio di programmazione LabVIEW 3 novembre 2010

Formula Node: conditional branching


if (x >= 0) then
y = sqrt(x)
else
y = -99999.0
end if Conditional Operator
False Condition

Condition True Condition

Corso di Laurea Magistrale in Ingegneria Meccanica


Università degli
Strumentazione e Misure per l’Automazione
Studi di Cassino
Il linguaggio di programmazione LabVIEW 3 novembre 2010

Formula Node: variabili temporanee

Si definiscono come uscite, ma non vengono collegate

Corso di Laurea Magistrale in Ingegneria Meccanica


Università degli
Strumentazione e Misure per l’Automazione
Studi di Cassino