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
Strumentazione e Misure per lAutomazione

Universit degli
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
Strumentazione e Misure per lAutomazione

Universit degli
Studi di Cassino

Il linguaggio di programmazione LabVIEW

3 novembre 2010

Virtual Instrument (VI)


Il Front Panel
Il Block Diagram
Licona/connettore

Corso di Laurea Magistrale in Ingegneria Meccanica


Strumentazione e Misure per lAutomazione

Universit degli
Studi di Cassino

Il linguaggio di programmazione LabVIEW

3 novembre 2010

Front Panel
E linterfaccia utente dellapplicazione

Contiene:
- Controlli
(input)
- Indicatori
(output)

Corso di Laurea Magistrale in Ingegneria Meccanica


Strumentazione e Misure per lAutomazione

Universit degli
Studi di Cassino

Il linguaggio di programmazione LabVIEW

Front Panel

3 novembre 2010

Icona/Connettore

Toolbar
Controllo
Knob

Controllo
numerico

Legenda

Etichetta

Indicatore
Chart
Corso di Laurea Magistrale in Ingegneria Meccanica
Strumentazione e Misure per lAutomazione

Universit degli
Studi di Cassino

Il linguaggio di programmazione LabVIEW

3 novembre 2010

Block Diagram
- E il codice sorgente dellapplicazione (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


Strumentazione e Misure per lAutomazione

Universit degli
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, lordine con cui


verranno eseguiti non prevedibile !

Il modello di programmazione di LabView


Data driven
Corso di Laurea Magistrale in Ingegneria Meccanica
Strumentazione e Misure per lAutomazione

Universit degli
Studi di Cassino

Il linguaggio di programmazione LabVIEW

3 novembre 2010

Dataflow programming
Un filo collega ununica 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


Strumentazione e Misure per lAutomazione

Universit degli
Studi di Cassino

Il linguaggio di programmazione LabVIEW

3 novembre 2010

Lambiente di sviluppo: Le palette


Palette delle Funzioni

Palette dei Controlli

(Diagramma)

(Pannello)

Corso di Laurea Magistrale in Ingegneria Meccanica


Strumentazione e Misure per lAutomazione

Universit degli
Studi di Cassino

Il linguaggio di programmazione LabVIEW

3 novembre 2010

Lambiente di sviluppo: La toolbar

Debugging
Stop
Continuous Run

Run
Corso di Laurea Magistrale in Ingegneria Meccanica
Strumentazione e Misure per lAutomazione

Universit degli
Studi di Cassino

Il linguaggio di programmazione LabVIEW

3 novembre 2010

Lambiente 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
Strumentazione e Misure per lAutomazione

Universit degli
Studi di Cassino

Il linguaggio di programmazione LabVIEW

3 novembre 2010

Tecniche di debug
Click sulla freccia spezzata: Info sullerrore
Highlighting button: Esecuzione animata
Probe: Mostra il valore dei dati
mentre scorrono lungo i fili

Breakpoint: ferma lesecuzione 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
Strumentazione e Misure per lAutomazione

Universit degli
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


Strumentazione e Misure per lAutomazione

Universit degli
Studi di Cassino

Il linguaggio di programmazione LabVIEW

3 novembre 2010

Realizzazione di un SubVI
Disegno dellicona
Associazione di controlli
e indicatori alle caselle
del connettore
Salvataggio su disco

Corso di Laurea Magistrale in Ingegneria Meccanica


Strumentazione e Misure per lAutomazione

Universit degli
Studi di Cassino

Il linguaggio di programmazione LabVIEW

3 novembre 2010

Realizzazione di un SubVI
Functions >> Select a VI
Trascinare licona sul diagramma
chiamante

Corso di Laurea Magistrale in Ingegneria Meccanica


Strumentazione e Misure per lAutomazione

Universit degli
Studi di Cassino

Il linguaggio di programmazione LabVIEW

3 novembre 2010

Ciclo While
Qui va il codice da
iterare
Iteration
terminal

Ripetere?

Conditional
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
Strumentazione e Misure per lAutomazione

Universit degli
Studi di Cassino

Il linguaggio di programmazione LabVIEW

3 novembre 2010

Ciclo While

Corso di Laurea Magistrale in Ingegneria Meccanica


Strumentazione e Misure per lAutomazione

Universit degli
Studi di Cassino

Il linguaggio di programmazione LabVIEW

3 novembre 2010

Waveform Chart
Label

Legenda

Aggiornamento:
Strip chart
Scope chart
Sweep chart

Palette
Corso di Laurea Magistrale in Ingegneria Meccanica
Strumentazione e Misure per lAutomazione

Universit degli
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
Strumentazione e Misure per lAutomazione

Universit degli
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


Strumentazione e Misure per lAutomazione

Universit degli
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
Strumentazione e Misure per lAutomazione

Universit degli
Studi di Cassino

Il linguaggio di programmazione LabVIEW

3 novembre 2010

Ciclo While temporizzato

Corso di Laurea Magistrale in Ingegneria Meccanica


Strumentazione e Misure per lAutomazione

Esecuzione di azioni
ad intervalli prestabiliti

Impegno limitato di
risorse

Adeguamento ai tempi
di risposta dell'utente

Universit degli
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


Strumentazione e Misure per lAutomazione

Universit degli
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
passo
precedente

Per il
prossimo
passo

Inizializzazione

Corso di Laurea Magistrale in Ingegneria Meccanica


Strumentazione e Misure per lAutomazione

Universit degli
Studi di Cassino

Il linguaggio di programmazione LabVIEW

3 novembre 2010

Shift register

Corso di Laurea Magistrale in Ingegneria Meccanica


Strumentazione e Misure per lAutomazione

Universit degli
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
Strumentazione e Misure per lAutomazione

Universit degli
Studi di Cassino

Il linguaggio di programmazione LabVIEW

3 novembre 2010

Shift register

Corso di Laurea Magistrale in Ingegneria Meccanica


Strumentazione e Misure per lAutomazione

Universit degli
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
Strumentazione e Misure per lAutomazione

Universit degli
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
array di 10 elementi

1.2 3.2 8.2 8.0 4.8 5.1 6.0 1.0 2.5 1.7

Array 0
bidimensionale 1
2
3
4
Corso di Laurea Magistrale in Ingegneria Meccanica
Strumentazione e Misure per lAutomazione

Universit degli
Studi di Cassino

Il linguaggio di programmazione LabVIEW

3 novembre 2010

Controlli ed indicatori per gli array


1.

Selezionare

Array dalla palette dei controlli

un controllo del tipo desiderato


2. Inserire
nella Array Shell

Add
Dimension
per 2D
Procedura analoga per le
arrays
costanti array

Corso di Laurea Magistrale in Ingegneria Meccanica


Strumentazione e Misure per lAutomazione

Universit degli
Studi di Cassino

Il linguaggio di programmazione LabVIEW

3 novembre 2010

Autoindexing
Il loop accumula l'array al suo margine

Auto-Indexing
abilitato
(Default nel For)

1D arr ay

Auto-Indexing
disabilitato
(Default nel While)

Corso di Laurea Magistrale in Ingegneria Meccanica


Strumentazione e Misure per lAutomazione

Scalare risultato
dell'ultima iterazione

Universit degli
Studi di Cassino

Il linguaggio di programmazione LabVIEW

3 novembre 2010

Creazione array 2D
1D array
0 1 2 3 4 5

# righe
# colonne
0
1
2
3

2D array

Il loop interno crea gli elementi di ogni riga


Il loop esterno sovrappone le righe
Corso di Laurea Magistrale in Ingegneria Meccanica
Strumentazione e Misure per lAutomazione

Universit degli
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
Strumentazione e Misure per lAutomazione

Universit degli
Studi di Cassino

Il linguaggio di programmazione LabVIEW

3 novembre 2010

Funzioni per gli array

Array

element

Number of
Elements

initialized
array

dimension
size

Initialize Array

10

10

10

10

10

Corso di Laurea Magistrale in Ingegneria Meccanica


Strumentazione e Misure per lAutomazione

Universit degli
Studi di Cassino

Il linguaggio di programmazione LabVIEW

3 novembre 2010

Funzioni per gli array


array
Elemento

Array con il nuovo elemento accodato


Build Array

La funzione Build Array


resizable
Array 3
Elemento
Array 1

1D Array

1D Array

1D Array
1D Array

5
3

7
4

Nuovo array

3
1

2
4

5
2

Dal menu di contesto:


change to element
change to array

2D Array

5
3 2

1 4

1D Array

Corso di Laurea Magistrale in Ingegneria Meccanica


Strumentazione e Misure per lAutomazione

Universit degli
Studi di Cassino

Il linguaggio di programmazione LabVIEW

3 novembre 2010

Funzioni per gli array


array
index(0)
length

subarray
Array Subset

Array

Index
Length

8
2

element
Index Array

Array Subset

Array
array
index

Index

Element
5

2D Array
3
1

2
4

5
2

Row Index 0
Column Index 2
Corso di Laurea Magistrale in Ingegneria Meccanica
Strumentazione e Misure per lAutomazione

Element
5

Universit degli
Studi di Cassino

Il linguaggio di programmazione LabVIEW

3 novembre 2010

Funzioni per gli array


Index array

Estrae una colonna


0

0
0

Estrae una riga

Dal menu di contesto della Index


Array:
"

Add dimension

"

Disable input
Corso di Laurea Magistrale in Ingegneria Meccanica
Strumentazione e Misure per lAutomazione

Universit degli
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

Scalare + Scalare

Scalare

Array + Scalare

Array

Array

Array + Array

Array + Array
3

Corso di Laurea Magistrale in Ingegneria Meccanica


Strumentazione e Misure per lAutomazione

Array

Universit degli
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


Strumentazione e Misure per lAutomazione

Universit degli
Studi di Cassino

Il linguaggio di programmazione LabVIEW

3 novembre 2010

Single plot waveform graph

1D Array

1D Array

Terminale del Waveform


Graph ( un Array 1D)

Terminale del Waveform


Graph ( un Cluster)

"

X0 il valore iniziale per le ascisse

"

deltaX la distanza orizzontale tra i punti del grafico

Corso di Laurea Magistrale in Ingegneria Meccanica


Strumentazione e Misure per lAutomazione

Universit degli
Studi di Cassino

Il linguaggio di programmazione LabVIEW

3 novembre 2010

Multiple plot waveform graph


Build Array

1D Arrays

clusters

2D array

cluste
r array

Corso di Laurea Magistrale in Ingegneria Meccanica


Strumentazione e Misure per lAutomazione

Terminale del
Waveform Graph ( un
Array 2D)

Terminale del Waveform


Graph ( un Array di
Cluster)

Universit degli
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


Strumentazione e Misure per lAutomazione

Universit degli
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


Strumentazione e Misure per lAutomazione

Universit degli
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


Strumentazione e Misure per lAutomazione

Universit degli
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


Strumentazione e Misure per lAutomazione

Universit degli
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


Strumentazione e Misure per lAutomazione

Universit degli
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
Strumentazione e Misure per lAutomazione

Universit degli
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


Strumentazione e Misure per lAutomazione

Universit degli
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
disponibili

Sequence local
in uscita dal
Frame 1

Corso di Laurea Magistrale in Ingegneria Meccanica


Strumentazione e Misure per lAutomazione

Dati
disponibili
Universit degli
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


Strumentazione e Misure per lAutomazione

Universit degli
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


Strumentazione e Misure per lAutomazione

Universit degli
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


Strumentazione e Misure per lAutomazione

Universit degli
Studi di Cassino