Sei sulla pagina 1di 272

LabVIEW

Corso Base II

Corso sulla versione software 6.0


Edizione settembre 2000
Part Number 320629G-01
Traduzione Luglio 2001

A Survey of Modern Computer-Based Experiments


Copyright
Copyright 2000 National Instruments Corporation. Tutti i diritti riservati. In base alle leggi sul copyright
questa pubblicazione non pu essere riprodotta o trasmessa in alcuna forma elettronica o meccanica, inclusa
la fotocopia, la registrazione, la memorizzazione in banche dati, o tradotta, completamente o parzialmente,
senza il consenso preventivo della National Instruments Corporation. I prodotti e i nomi delle societ elencati
sono marchi o nomi commerciali registrati delle rispettive societ.
Marchi
LabVIEW, National Instrument e ni.com sono marchi registrati di National Instruments Corporation.
I prodotti o le societ citate sono marchi registrati o marchi delle rispettive societ.

Indice

Worldwide Technical Support and Product Information


ni.com
National Instruments Corporate Headquarters
11500 North Mopac Expressway Austin, Texas 78759-3504 USA Tel: 512 794 0100
Worldwide Offices
Australia 03 9879 5166, Austria 0662 45 79 90 0, Belgium 02 757 00 20, Brazil 011 284 5011, Canada (Calgary) 403 274
9391,
Canada (Ontario) 905 785 0085, Canada (Qubec) 514 694 8521, China 0755 3904939, Denmark 45 76 26 00,
Finland 09 725 725 11, France 01 48 14 24 24, Germany 089 741 31 30, Greece 30 1 42 96 427, Hong Kong 2645 3186,
India 91805275406, Israel 03 6120092, Italy 02 413091, Japan 03 5472 2970, Korea 02 596 7456, Mexico (D.F.) 5 280
7625,
Mexico (Monterrey) 8 357 7695, Netherlands 0348 433466, New Zealand 09 914 0488, Norway 32 27 73 00,
Poland 0 22 528 94 06, Portugal 351 1 726 9011, Singapore 2265886, Spain 91 640 0085, Sweden 08 587 895 00,
Switzerland 056 200 51 51, Taiwan 02 2528 7227, United Kingdom 01635 523545

LabVIEW Corso Base II

ii

National Instruments Corporation

Indice

Indice
Guida per lo studente
A. Descrizione di questo manuale ...................................................................... GS-1
B. Prerequisiti ..................................................................................................... GS-3
C. Installazione del software per il corso ........................................................... GS-4
D. Obiettivi del corso.......................................................................................... GS-5
E. Tavola dorientamento ................................................................................... GS-6
F. Convenzioni adottate nel corso ...................................................................... GS-7

Lezione 1
Pianificazione di applicazioni in LabVIEW
A. Il processo di pianificazione e di progetto..................................................... 1-2
B. Il processo di implementazione ..................................................................... 1-3
C. Tecniche di gestione degli errori.................................................................... 1-4
D. Architetture di programmazione in LabVIEW .............................................. 1-10
E. Modelli di VI.................................................................................................. 1-21
Sommario, trucchi e consigli .............................................................................. 1-24

Lezione 2
Progettazione di pannelli frontali
A. Nozioni fondamentali sullinterfaccia utente................................................. 2-2
B. Utilizzo di cluster booleani come menu......................................................... 2-14
C. Nodi propriet ................................................................................................ 2-24
Propriet comuni................................................................................................. 2-27
D. Propriet dei grafici ....................................................................................... 2-37
E. Riferimenti al controllo .................................................................................. 2-46
F. Menu run-time di LabVIEW (opzionale)....................................................... 2-51
G. Diagrammi dintensit ................................................................................... 2-60
Sommario, trucchi e consigli .............................................................................. 2-64
Esercizi aggiuntivi .............................................................................................. 2-66

National Instruments Corporation

iii

LabVIEW Corso Base I

Indice

Lezione 3
Tecniche di gestione dei dati
A. Tecniche di gestione dei dati in LabVIEW.................................................... 3-2
B. Variabili locali ............................................................................................... 3-4
C. Variabili globali ............................................................................................. 3-14
D. Avvertenze importanti su variabili locali e globali........................................ 3-23
E. DataSocket ..................................................................................................... 3-26
Sommario, trucchi e consigli .............................................................................. 3-34
Esercizi aggiuntivi .............................................................................................. 3-35

Lezione 4
Tecniche avanzate di I/O su file
A. Lavorare con file a flusso di byte .................................................................. 4-2
B. File datalog di LabVIEW............................................................................... 4-12
C. Salvataggio di dati su disco............................................................................ 4-19
Sommario, trucchi e consigli .............................................................................. 4-20
Esercizi aggiuntivi .............................................................................................. 4-21

Lezione 5
Sviluppo di grandi applicazioni in LabVIEW
A. Assemblaggio di unapplicazione in LabVIEW ............................................ 5-2
B. Caratteristiche di LabVIEW per lo sviluppo di progetti................................ 5-14
C. Strumenti di LabVIEW per la gestione di progetti ........................................ 5-22
Sommario, trucchi e consigli .............................................................................. 5-34
Esercizi aggiuntivi .............................................................................................. 5-35

Lezione 6
Controllo delle prestazioni
A. Panoramica sul multithreading e il multitasking in LabVIEW ..................... 6-2
B. La finestra Profile .......................................................................................... 6-6
C. Velocizzare i VI ............................................................................................. 6-13
D. Memoria di sistema........................................................................................ 6-26
E. Ottimizzazione delluso della memoria da parte dei VI................................. 6-29
Sommario, trucchi e consigli .............................................................................. 6-47

Appendice
A. SubVI polimorfici.......................................................................................... A-2
B. Grafica personalizzata in LabVIEW .............................................................. A-7
C. Il Web Server in LabVIEW ........................................................................... A-14
D. Informazioni aggiuntive................................................................................. A-19
E. Tabella delle corrispondenze dei caratteri ASCII .......................................... A-21

LabVIEW Corso Base II

iv

National Instruments Corporation

Guida per lo studente


Grazie per aver acquistato il kit del Corso Base II di LabVIEW. Voi
potrete iniziare a sviluppare unapplicazione subito dopo aver completato
gli esercizi di questo manuale. Questo manuale e il software di
accompagnamento vengono utilizzati nel Corso Base II di LabVIEW a
carattere pratico della durata di due giorni. Voi potete utilizzare lacquisto
di questo kit per iscrivervi al corso senza versare la corrispondente quota
di registrazione se vi registrate entro 90 giorni dallacquisto del kit.
Visitate la sezione Customer Education del sito ni.com per i programmi
dei corsi online, i prospetti, i centri di formazione, e la registrazione di
classi.

A. Descrizione di questo manuale


Questo manuale vi insegna ad utilizzare LabVIEW per sviluppare
applicazioni di test e misure, di acquisizione dati, di controllo degli
strumenti, di memorizzazione dati, di analisi delle misure e di
generazione di rapporti. Questo manuale presuppone che abbiate
familiarit con Windows, Macintosh o Unix e che abbiate esperienza
nella scrittura di algoritmi sotto forma di diagrammi di flusso o di schemi
a blocchi e che inoltre abbiate svolto il Corso Base I o abbiate
unesperienza equivalente.
Il manuale suddiviso in lezioni, ognuna delle quali copre un argomento
o un insieme di argomenti. Ogni lezione consiste in:
y

Unintroduzione che descrive lo scopo della lezione e che cosa


imparerete

Una descrizione degli argomenti trattati nella lezione

Un insieme di esercizi per fissare gli argomenti

Un insieme di esercizi aggiuntivi per approfondimenti se il tempo lo


consente

Un sommario che sottolinea concetti importanti e le conoscenze


impartite nella lezione

National Instruments Corporation

GS-1

LabVIEW Corso Base II

Guida per lo studente

Diversi esercizi presenti in questo manuale utilizzano un dispositivo plugin multifunzione per lacquisizione dati (DAQ) collegato ad un DAQ
Signal Accessory contenente un sensore di temperatura, un generatore di
funzioni e dei LED.
Se non possedete questo hardware, potete completare comunque la
maggior parte degli esercizi. Assicuratevi di utilizzare le versioni demo
dei VI quando lavorate con gli esercizi. Gli esercizi che richiedono
esplicitamente dellhardware sono contrassegnati con licona mostrata a
lato. Potete anche utilizzare altro hardware rispetto a quello indicato
precedentemente. Per esempio potete utilizzare un altro dispositivo DAQ
della National Instruments collegato ad una sorgente di segnale, come ad
esempio un generatore di funzioni.
Ogni esercizio mostra una figura con un pannello frontale finito e lo
schema a blocchi dopo che avete mandato in esecuzione il VI, come
mostrato nellillustrazione seguente. Dopo ogni schema a blocchi segue
una descrizione di ogni oggetto presente nello schema a blocchi.

1 Pannello frontale

LabVIEW Corso Base II

2 Schema a blocchi

GS-2

Commenti (questi non li


inserite)

National Instruments Corporation

Guida per lo studente

B. Prerequisiti
Prima di utilizzare questo manuale, assicuratevi di avere i seguenti:

(Windows) Windows 95 o successivi installato sul vostro computer;


(Macintosh) Power Macintosh con sistema operativo MacOS 7.6.1 o
successivi; (UNIX) workstation Sun con Solaris 2.5 o successivi e

software di sistema XWindows, una workstation modello HP 9000


serie 700 con HP-UX 10.20 o successivi o un PC con Linux kernel
2.0.x o successivi per architetture Intel x86.

(Windows) Dispositivo DAQ multifunzione configurato come device 1


utilizzando Measurement & Automation Explorer; (Macintosh)

Dispositivo DAQ multifunzione nello Slot 1

DAQ Signal Accessory, conduttori e cavi

LabView Professional Development System 6.0 o successivi

(Opzionale) Unapplicazione per word processing come (Windows)


Notepad, WordPad, (Macintosh) TeachText, (UNIX) Text Editor, vi o
vuepad

I dischetti del Corso Base II di LabVIEW, contenenti i seguenti file:

Nome file
LVB2SW.exe
LVB2Sol.exe
LVB2Read.txt

National Instruments Corporation

Descrizione
Archivio contenente i VI utilizzati nel corso
Archivio contenente gli esercizi completi del
corso
File di testo che descrive la procedura di
installazione del software del corso

GS-3

LabVIEW Corso Base II

Guida per lo studente

C. Installazione del software per il corso


Seguite i passi seguenti per installare il software di LabVIEW Corso
Base.

Windows
1. Avviate il programma denominato LVB2SW.exe. I file del corso
verranno estratti nella directory c:\exercises\LV Basics 2.
Basics2.llb verr installata nella directory LabVIEW\user.lib.
Quando avviate LabVIEW, comparir una palette denominata Basics
2 Course nella palette User Libraries della palette Functions.

2. (Opzionale) Cliccate due volte su LVB2Sol.exe per installare le


soluzioni di tutti gli esercizi nella directory c:\solutions\LV
Basics 2.

Macintosh
1. Come mostrato nei punti 1 e 2 dellinstallazione sotto Windows,
utilizzate un PC con Windows per estrarre i file e trasferirli nel vostro
Macintosh. Se non avete accesso ad un PC, contattate National
Instruments per i file decompressi.
2. Copiate i file sul vostro hard disk utilizzando la struttura a directory
descritta nella sezione Windows.

UNIX
1. Come mostrato nei punti 1 e 2 dellinstallazione sotto Windows,
utilizzate un PC con Windows per estrarre i file e trasferirli nella
vostra workstation. Se non avete accesso ad un PC, contattate
National Instruments per i file decompressi.
2. Caricate il disco PC che state utilizzando per trasferire i file. Il corso
presuppone la struttura a directory descritta nella sezione Windows.
Copiate tutti i file nelle opportune locazioni.

LabVIEW Corso Base II

GS-4

National Instruments Corporation

Guida per lo studente

D. Obiettivi del corso


Il corso vi fornisce una preparazione che vi consente di:
y

Comprendere il processo di sviluppo dei VI.

Comprendere alcune architetture comuni di programmazione di VI.

Progettare interfacce utente (pannelli frontali) efficaci.

Utilizzare le tecniche di gestione dei dati nei VI.

Utilizzare le tecniche avanzate di I/O su file.

Utilizzare LabVIEW per creare le vostre applicazioni.

Migliorare lutilizzo della memoria e le prestazioni dei vostri VI.

Applicherete questi concetti nella Lezione 5, Sviluppo di applicazioni pi


grandi in LabVIEW. Nella Lezione 5, voi realizzerete un progetto che
utilizza i VI che avete creato nelle Lezioni 1, 2, 3 e 4. Mentre questi VI
singolarmente illustrano concetti e caratteristiche specifici di LabVIEW,
essi fanno parte di un progetto pi grande che completerete nella Lezione
5.
Il progetto che realizzerete dovr soddisfare i punti seguenti:
y

Fornire uninterfaccia utente a menu.

Richiedere allutente di entrare nel programma con un nome e una


password corretti.

Se limmissione dei dati da parte dellutente non corretta,


disabilitare le altre caratteristiche.

Acquisire dati con la specifica configurazione dellutente.

Lutente pu analizzare un sottoinsieme di dati e salvare i risultati su


file.

Lutente pu caricare e visualizzare


precedentemente salvati su disco.

risultati

dellanalisi

Questo corso non vi fornisce le descrizioni seguenti:


y

Metodi di programmazione in LabVIEW coperti dal LabVIEW Corso


Base I.

Teoria della programmazione

Ogni VI interno, funzione o oggetto

Lo sviluppo di unapplicazione completa per ogni studente della


classe.

National Instruments Corporation

GS-5

LabVIEW Corso Base II

Guida per lo studente

E. Tavola dorientamento
Pianificazione di
applicazioni in
LabVIEW

Sviluppo di diagrammi di flusso


per il VI Application Exercise

Progettazione
di pannelli frontali

Realizzazione di:
Menu di interfaccia utente,
VI Acquire Data,
VI Analyze & Present Data,
VI Disable Controls

Tecniche di
gestione dei dati

Realizzazione del VI Login

Tecniche avanzate
di I/O su file

Creazione di progetti
pi grandi

Realizzazione del VI Save Data


to File (completa il VI Analysis &
Present Data)
Studio del VI View Analysis File
Assemblaggio di parti per
realizzare il VI Application
Exercise e terminare il progetto

Considerazioni
sulle prestazioni

LabVIEW Corso Base II

GS-6

National Instruments Corporation

Guida per lo studente

F. Convenzioni adottate nel corso


Nel manuale del corso vengono adottate le convenzioni seguenti:

Il simbolo vi guida attraverso i menu nidificati e le opzioni delle


finestre di dialogo fino allazione finale. La sequenza FilePage
SetupOptions vi indica che dovete partire dal menu File, scegliere la
voce Page Setup e quindi scegliere Options dallultima finestra di
dialogo.
Questa icona indica una nota, e vi avverte di leggere una informazione
importante.
Questa icona vi indica che lesercitazione richiede uninterfaccia GPIB
plug-in o un dispositivo DAQ.

bold

Il testo in grassetto vi indica le voci che voi dovete selezionare o su cui


cliccare del software, come le voci di menu e le opzioni della finestra di
dialogo. Il testo in grassetto indica anche nomi di parametro, controlli e
pulsanti del pannello frontale, finestre di dialogo, sezioni di finestre di
dialogo, nomi di menu e nomi di palette.

italic

Il testo in corsivo indica variabili, enfasi, un riferimento incrociato o


unintroduzione ad un concetto chiave. Questo font indica anche del testo
che dovete introdurre o un valore che dovete applicare.

courier

Il testo in questo font indica testo o caratteri che dovete inserire da


tastiera, sezioni di codice, esempi di programmazione, ed esempi di
sintassi. Questo font viene usato anche per nomi propri di drive di dischi,
percorsi, directory, sottoprogrammi, nomi di dispositivi, funzioni,
operazioni, variabili, nomi file ed estensioni, parti di codice.

courier
bold
Arial
narrow

Il testo in questo font indica una piattaforma specifica e indica che il testo
seguente si applica solo a quella piattaforma.

Click tasto destro

(Macintosh) Premere <Command> e cliccare per ottenere la stessa azione

di un click col tasto destro del mouse.

National Instruments Corporation

GS-7

LabVIEW Corso Base II

Guida per lo studente

LabVIEW Corso Base II

GS-8

National Instruments Corporation

Lezione 1
Pianificazione di
applicazioni in LabVIEW
Questa lezione descrive alcuni argomenti riguardanti lo sviluppo di
applicazioni in LabVIEW, incluso il processo di progettazione,
lorganizzazione di subVI componenti e il processo di combinazione di
questi componenti per creare unapplicazione completa. Questa lezione
descrive anche le comuni architetture di programmazione in LabVIEW
tramite alcuni strumenti che vi aiutano nella realizzazione di VI.

Imparerete:
A. A pianificare e progettare nel modo migliore lo sviluppo di
applicazioni in LabVIEW
B. A convertire le vostre linee guida in subVI di LabVIEW
C. A conoscere le tecniche di gestione degli errori
D. A conoscere le architetture di programmazione in LabVIEW pi
comuni
E. A conoscere i modelli dei VI

National Instruments Corporation

1-1

LabVIEW Corso Base II

Lezione 1

Pianificazione di applicazioni in LabVIEW

A. Il processo di pianificazione e di progetto


Per impostare grandi progetti in LabVIEW, vedrete che di solito inizierete
con un approccio di tipo top-down. Questo vuol dire che inizialmente
definite le caratteristiche e le specifiche generali. Dopo aver definito i
requisiti dellapplicazione in base alle esigenze del vostro cliente, iniziate
a sviluppare i subVI che volete eventualmente assemblare per creare il
progetto completo. Questo stadio rappresenta il periodo di sviluppo
bottom-up. Il riscontro con il cliente vi aiuta a determinare nuove
caratteristiche e miglioramenti per la successiva versione del prodotto,
riportandovi alla fase progettuale. Lo schema seguente illustra questo
processo di sviluppo del progetto.

Processo di
confronto con il
cliente

Definizione del
progetto

Prove e rilascio
del prodotto finale

Progetto del
diagramma di
flusso

Integrazione di
subVI nel progetto

Implementazione
dei nodi come VI

Prove sui subVI

Top-Down

Bottom-up

Processo di sviluppo dei progetti in LabVIEW

Progettare un diagramma di flusso vi aiuta a visualizzare il


funzionamento della vostra applicazione e ad impostare la gerarchia
complessiva del vostro progetto. Siccome LabVIEW un linguaggio di
programmazione a flusso di dati e i suoi schemi a blocchi sono simili a
diagrammi di flusso tipici, importante pianificare con cura questo
diagramma. Potete implementare direttamente molti nodi del diagramma
di flusso come subVI di LabVIEW. Pianificando con cura il diagramma
di flusso prima dellimplementazione della vostra applicazione in
LabVIEW, potrete risparmiare del tempo successivamente.

LabVIEW Corso Base II

1-2

National Instruments Corporation

Lezione 1

Pianificazione di applicazioni in LabVIEW

Tenete comunque presente le seguenti linee guida per lo sviluppo del


progetto:

Definite accuratamente le specifiche del sistema.

Determinate in maniera chiara le aspettative dellutente finale.

Documentate che cosa deve effettuare lapplicazione.

Pianificate per il futuro modifiche ed aggiunte.

B. Il processo di implementazione
Dopo aver completato il processo di pianificazione, implementate la
vostra applicazione sviluppando i subVI che corrispondono ai nodi del
diagramma di flusso. Sebbene non possiate sempre adottare questo
approccio, esso vi aiuta a rendere la vostra applicazione modulare.
Definendo in maniera chiara una gerarchia delle specifiche della vostra
applicazione, create uno schema per lorganizzazione dei VI che
sviluppate.
Inoltre, la struttura a moduli rende pi facile il test di piccole parti di
unapplicazione prima di passare ad una loro combinazione. Se realizzate
unintera applicazione su un unico schema a blocchi senza subVI, potreste
non essere in grado di iniziare un test senza prima aver realizzato la
maggior parte dellapplicazione. A quel punto, risulta molto difficile
risolvere problemi che si dovessero presentare. Inoltre, effettuando test su
parti pi piccole di VI, pi specifiche, potete determinare difetti di
programmazione iniziali e correggerli prima di investire ore in
implementazione.
Prevedendo uno sviluppo modulare e gerarchico, pi facile mantenere il
controllo del codice sorgente del vostro progetto e dello stato del
progetto. Un altro vantaggio che deriva dallutilizzo di subVI che sar
pi facile in futuro apportare modifiche e miglioramenti allapplicazione.
Dopo aver realizzato e testato i subVI necessari, potrete completare
lapplicazione in LabVIEW. Questa la parte di sviluppo bottom-up.

National Instruments Corporation

1-3

LabVIEW Corso Base II

Lezione 1

Pianificazione di applicazioni in LabVIEW

C. Tecniche di gestione degli errori


Nel LabVIEW Corso Base I, avete utilizzato i cluster di error in e di
error out per trasferire le informazioni sugli errori tra funzioni e subVI.
Questi cluster di errore contengono tre parti di informazioneun
booleano di stato che indica un valore true per un errore, un numero che
indica il codice di errore e la stringa sorgente che visualizza quale
funzione o subVI ha generato lerrore. Potete utilizzare la funzione
Unbundle o Unbundle By Name che si trova nella palette
FunctionsCluster per estrarre questa informazione come indicato nello
schema a blocchi seguente.

Cluster di errore

Lesempio precedente illustra un tipico uso dellapproccio error in/error


out. I VI di I/O su File e le funzioni utilizzano i cluster di errore per
passare le informazioni da unoperazione alla successiva. Potete quindi
utilizzare i VI di gestione degli errori dalla riga in basso della palette
Time&Dialog per avvisare lutente di ogni condizione di errore
verificatasi.

I VI di gestione degli errori


Il VI Simple Error Handler prende il cluster error in o il valore del codice
di errore e in caso di errore apre una finestra di dialogo che descrive
lerrore e le possibili ragioni di esso. Potete anche modificare il tipo di
finestra di dialogo che si apre visualizzando un pulsante OK, non
visualizzare per niente una finestra di dialogo o visualizzare una finestra
di dialogo e fornire allutente la possibilit di continuare o di arrestare il
VI.

Il VI General Error Handler accetta il cluster error in o il valore del


codice di errore e in caso di errore appare una finestra di dialogo del tipo
specificato. Comunque potete anche impostare una lista di gestione degli
errori per fare in modo che gli errori specificati siano cancellati o
impostati quando occorre.

LabVIEW Corso Base II

1-4

National Instruments Corporation

Lezione 1

Pianificazione di applicazioni in LabVIEW

Potete inoltre utilizzare il VI General Error Handler per aggiungere errori


alla tabella interna di descrizione degli errori. La tabella di descrizione
degli errori descrive tutti gli errori di LabVIEW e le operazioni relative.
Perci potete aggiungere i vostri codici di errore e le descrizioni ai VI di
gestione degli errori. Fate riferimento a LabVIEW Help per informazioni
su come modificare i vostri VI di gestione degli errori.

In caso di errore, i VI Simple Error Handler e General Error Handler


aprono una finestra di dialogo che visualizza le informazioni contenute
nel cluster di errore e i possibili motivi di quellerrore come descritto
nella tabella interna di descrizione degli errori.
Talvolta avete linee separate di operazioni che vengono eseguite in
parallelo da LabVIEW e ogni operazione mantiene i propri cluster di
errore. Potete utilizzare il VI Merge Errors per combinare diversi cluster
di errore in uno.

Il VI Merge Errors controlla i cluster di errore in arrivo o la matrice dei


cluster di errore e pone in uscita il primo errore trovato. Se non ci sono
errori, LabVIEW restituisce il primo messaggio di avviso e il codice di
errore un valore positivo. Altrimenti LabVIEW fornisce una condizione
di assenza di errore.

National Instruments Corporation

1-5

LabVIEW Corso Base II

Lezione 1

Pianificazione di applicazioni in LabVIEW

Inserimento della gestione degli errori nei vostri VI


Dovreste inserire la gestione degli errori nei vostri VI in aggiunta
allutilizzo dei cluster di errore per VI e funzioni interne. Per esempio,
quando state costruendo un subVI da utilizzare in un progetto pi grande,
potreste non volere lesecuzione di subVI in caso di errore occorso
precedentemente. Potete collegare i cluster di errore ad una struttura Case
per considerare le condizioni di Error o No Error come mostrato
nellesempio seguente.

Inserite qui il codice da


eseguire quando non ci
sono stati errori

Come mostrato nellesempio precedente, inserite il codice che volete


eseguire nella condizione No Error e quindi definite il valore di errore in
uscita corrispondente alla condizione in funzione di quello che avviene in
quella condizione.
Nellesercizio successivo realizzerete un VI che genera dati, li analizza e
li presenta sul pannello frontale utilizzando i cluster di errore in modo
appropriato.

LabVIEW Corso Base II

1-6

National Instruments Corporation

Lezione 1

Esercitazione 1-1
Obiettivo:

Pianificazione di applicazioni in LabVIEW

VI Generate & Analyze Data

Realizzare un VI che generi, analizzi e visualizzi i dati utilizzando tecniche di


gestione degli errori
Realizzerete un VI che genera una sinusoide con rumore, calcola la
risposta in frequenza di questi dati e rappresenta gli andamenti temporali
e in frequenza su due grafici. Utilizzerete i cluster di errore e i VI di
gestione degli errori per monitorare correttamente le condizioni di errore

Nota Utilizzerete questo VI nellappendice.

Pannello frontale

1. Aprite un nuovo VI.


2. Aggiungete tre cursori verticali che si trovano nella palette
ControlsNumeric, il pulsante Stop che si trova nella palette
ControlsBoolean, e due grafici di forme donda che si trovano nella
palette ControlsGraph, come indicato nel pannello frontale
precedente.
Etichettateli
opportunamente.
Creerete
due
clusterSampling Info e averaging parametersdallo schema a
blocchi.

National Instruments Corporation

1-7

LabVIEW Corso Base II

Lezione 1

Pianificazione di applicazioni in LabVIEW

Schema a blocchi

3. Aprite e realizzate lo schema a blocchi utilizzando i componenti


seguenti.
a. Inserite un ciclo While che si trova nella palette
FunctionsStructures. Questo impone al VI di continuare a
generare e ad analizzare i dati finch lutente clicca sul pulsante di
Stop. Cliccate con il tasto destro del mouse sul terminale
condizionale e selezionate Stop If True.
b. Inserite il VI Sine Waveform che si trova nella palette
FunctionsAnalyzeWaveform Generation. Questo VI genera
una forma donda sinusoidale con una data frequenza, ampiezza e
impostazioni sul campionamento. Per creare il controllo del
cluster con le impostazioni sul campionamento, cliccate con il
tasto destro del mouse sul terminale dingresso e selezionate
CreateControl dal menu rapido.
c. Inserite il VI Uniform White Noise Waveform che si trova nella
palette FunctionsAnalyzeWaveform Generation. Questo VI
genera un rumore bianco uniforme definito da ampiezza e
informazioni sul campionamento.
d. Inserite il VI Merge Errors che si trova nella palette
FunctionsTime & Dialog. Questo VI combina i cluster di errore
che provengono dai VI Sine e Noise in un unico cluster di errore.
e. Inserite il VI Add Waveforms che si trova nella palette
FunctionsWaveformWaveform Operations. Questa funzione
somma le due forme donda per ottenere una sinusoide con
rumore.
f. Inserite il VI FFT Power Spectrum che si trova nella palette
FunctionsAnalyzeWaveform Measurements. Questo VI
calcola la risposta in frequenza dellingresso della forma donda
tempo-variante e media i dati secondo i parametri specificati.

LabVIEW Corso Base II

1-8

National Instruments Corporation

Lezione 1

Pianificazione di applicazioni in LabVIEW

Per creare il controllo del cluster dei parametri della media,


cliccate con il tasto destro del mouse sul terminale dingresso e
selezionate CreateControl dal menu rapido.
g. Inserite la funzione Wait Until Next ms Multiple che si trova nella
palette FunctionsTime & Dialog. Questa funzione determina
lesecuzione del ciclo While ogni mezzo secondo. Per creare una
costante, cliccate con il tasto destro del mouse sul terminale
dingresso e selezionate CreateConstant dal menu rapido.
h. Inserite la funzione Unbundle By Name che si trova nella palette
FunctionsCluster. Questa funzione estrae il booleano di stato
dal cluster di errore in modo da arrestare il ciclo in caso di errore.
i. Inserite la funzione Or che si trova nella palette
FunctionsBoolean. Questa funzione combina il Boolean dello
stato di errore e il pulsante Stop del pannello frontale affinch il
ciclo si fermi se uno di questi valori diventa True.
j. Inserite il VI Simple Error Handler che si trova nella palette
FunctionsTime & Dialog. Una finestra di dialogo appare in
questo VI in caso di errore e visualizza informazioni sullerrore.
4. Salvate questo VI come Generate & Analyze Data.vi nella
directory c:\exercises\LV Basics 2.
5. Osservate come i VI che avete utilizzato nello schema a blocchi
gestiscono gli errori. Cliccate due volte sul VI Sine Waveform e aprite
il suo schema a blocchi. Notate che la prima cosa che fa di osservare
lerrore nel cluster per verificare lesistenza di errori precedenti. Se
c stato un errore, LabVIEW fornisce una forma donda vuota e
passa allesterno le informazioni sullerrore. Se non ci sono stati
errori, LabVIEW genera una forma donda sinusoidale con i parametri
dingresso specificati.
6. Avviate il VI. Potete regolare i controlli del pannello frontale per
vedere i cambiamenti temporali e in frequenza delle forme donda.
Potete forzare un errore inserendo valori sbagliati in questi controlli.
Per esempio, una frequenza di campionamento Fs troppo bassa o
troppo alta fornisce un errore.
Attivando laveraging mode, potete estrarre il picco della sinusoide
dal rumore indipendentemente dalle ampiezze. Notate come agiscono
le diverse tecniche di media sul segnale.
7. Fermate il VI e chiudetelo quando avete finito.

Fine dellesercitazione 1-1

National Instruments Corporation

1-9

LabVIEW Corso Base II

Lezione 1

Pianificazione di applicazioni in LabVIEW

D. Architetture di programmazione in LabVIEW


Potete sviluppare meglio programmi in LabVIEW e in altri linguaggi di
programmazione se seguite tecniche e architetture di programmazione
coerenti. I programmi strutturati sono pi facili da mantenere e da capire.
Ora che avete creato diversi VI in LabVIEW sia nel LabVIEW Corso
Base I che in esperienze di programmazione simili, questo concetto di
programmazione strutturata viene descritto pi in dettaglio.
Uno dei modi migliori per creare unarchitettura di programmazione che
sia facile da comprendere di seguire tecniche di programmazione
modulare e realizzare subVI per operazioni ripetute o raggruppabili per
analogia. Per esempio, fate riferimento al VI che avete realizzato
nellesercitazione 1-1. I subVI che avete utilizzato rendono il VI molto
facile da seguire e da capire ed ogni parte pu essere riutilizzata in altri
VI. Con la documentazione dello schema a blocchi e quella presente
nellopzione FileVI PropertiesDocumentation, un VI modulare
facile da capire e da modificare nel futuro.
Potete strutturare i VI in maniera diversa a seconda della funzionalit che
volete assegnarli. Questa sezione descrive alcuni tipi comuni di
architetture per VI, con i loro vantaggi/svantaggisemplice, generale, a
cicli paralleli, a condizioni multiple e a macchine di stato.

Architettura di VI semplice
Quando fate dei calcoli o effettuate delle misure veloci di laboratorio, non
avete bisogno di unarchitettura complessa. Il vostro programma potrebbe
essere un singolo VI che esegue una misura, o un calcolo e visualizza o
registra i dati su disco. Larchitettura di VI semplice di solito non richiede
unazione specifica di avvio o di stop da parte dellutente e il VI pu
essere attivato quando lutente clicca sul pulsante di run. Oltre ad essere
utilizzata per semplici applicazioni, questa architettura viene usata per
componenti funzionali allinterno di applicazioni pi grandi. Potete
convertire questi semplici VI in subVI che vengono usati come blocchi
costituenti di applicazioni pi grandi.

LabVIEW Corso Base II

1-10

National Instruments Corporation

Lezione 1

Pianificazione di applicazioni in LabVIEW

Il pannello frontale e lo schema a blocchi precedente sono del VI Convert


C to F che avete realizzato nel LabVIEW Corso Base I. Questo VI esegue
lunico compito di convertire un valore da gradi Celsius in gradi
Fahrenheit. Potete utilizzare questo semplice VI in altre applicazioni che
necessitano di questa conversione senza aver bisogno di ricordare
lequazione.

Architettura generale di un VI
Nel progettare unapplicazione, generalmente dovete passare attraverso
tre fasi:
Inizializzazione

Questa sezione viene utilizzata per


inizializzare lhardware, leggere le
informazioni di configurazione dai
file o per richiedere allutente la
posizione dei file.

Applicazione principale

Questa sezione in generale consiste


in almeno un ciclo che viene
ripetuto fino a quando lutente
decide di uscire dal programma o il
programma si arresta per altri
motivi come il completamento di
un I/O.

Chiusura

Questa sezione di solito si occupa di


chiudere i file, di scrivere le
informazioni di configurazione su
disco o di ripristinare lI/O sullo
stato di default.

Lo schema a blocchi seguente mostra questa architettura generale. Per


applicazioni semplici, il ciclo dellapplicazione principale pu essere
abbastanza semplice. Quando avete interfacce utente complicate o eventi
multipli, come ad esempio azioni dellutente, trigger sullI/O e cos via,
questa sezione pu diventare pi complicata. Le illustrazioni successive
mostrano le strategie di progetto che potete adottare per progettare grandi
applicazioni.

Inserite qui il vostro codice

National Instruments Corporation

1-11

LabVIEW Corso Base II

Lezione 1

Pianificazione di applicazioni in LabVIEW

Notate nello schema a blocchi precedente che i collegamenti del cluster di


errore controllano lordine di esecuzione delle tre sezioni. Il ciclo While
non pu iniziare lesecuzione se il VI Startup non ha finito lesecuzione e
ha fornito il cluster di errore. Di conseguenza, il VI Shutdown non pu
essere eseguito finch il programma principale allinterno del ciclo While
non ha terminato lesecuzione e il cluster di errore passato allesterno
del ciclo. Unaltra cosa da notare nello schema a blocchi precedente la
funzione di attesa. Una funzione di attesa necessaria in molti cicli
soprattutto se quel ciclo sta monitorando un ingresso da parte dellutente
sul pannello frontale. Senza la funzione di attesa, il ciclo potrebbe
rimanere in esecuzione continuativamente, utilizzando tutte le risorse del
sistema. La funzione di attesa forza lesecuzione asincrona del ciclo anche
se lintervallo di attesa viene impostato su zero millisecondi. Se le
operazioni allinterno del ciclo principale dipendono da azioni dellutente,
allora il periodo di attesa pu essere aumentato ad un livello accettabile
per i tempi di reazione. Unattesa di 100-200 ms di solito buona per la
maggior parte degli utenti che non si accorgono del ritardo tra la
pressione di un pulsante e la successiva esecuzione di unazione.

Architettura di VI a cicli paralleli


Alcune applicazioni richiedono che il programma risponda a diversi
eventi concorrenti e li esegua. Un modo di progettare la sezione
principale di questa applicazione di assegnare un ciclo differente ad
ogni evento. Per esempio, potreste avere un ciclo differente per ogni
pulsante del pannello frontale associato ad unazione e per ogni altro
genere di eventi, come una selezione di menu, trigger su I/O e cos via. Lo
schema a blocchi seguente mostra larchitettura di VI a cicli paralleli.

Inserite qui il codice per


il primo processo

Inserite qui il codice per


il secondo processo

Questa struttura lineare e va bene per alcuni VI semplici del tipo a menu
in cui si aspetta che lutente selezioni un pulsante tra tanti che portano ad
azioni differenti. Questa architettura di VI vantaggiosa rispetto ad altre
tecniche anche nel consentire che un evento non vi impedisca di

LabVIEW Corso Base II

1-12

National Instruments Corporation

Lezione 1

Pianificazione di applicazioni in LabVIEW

rispondere ad altri eventi aggiuntivi. Per esempio, se un utente seleziona


un pulsante che determina la comparsa di una finestra di dialogo, i cicli
paralleli possono continuare a rispondere ad eventi di I/O. Quindi, il
vantaggio principale dellarchitettura di VI a cicli paralleli la sua abilit
nel gestire processi multipli indipendenti e contemporanei.
Gli svantaggi principali dellarchitettura a cicli paralleli riguardano il
coordinamento e la comunicazione tra cicli differenti. Il pulsante Stop per
il secondo ciclo nello schema a blocchi precedente una variabile locale.
Non potete utilizzare delle linee per passare i dati tra i cicli, perch ci
impedirebbe lesecuzione in parallelo dei cicli. Invece dovete usare delle
tecniche globali per passare le informazioni tra i processi. Ci pu portare
a condizioni di conflitto in cui compiti differenti tentano di leggere e di
modificare gli stessi dati contemporaneamente determinando risultati
inconsistenti e rendendo difficile la ricerca degli errori.
Fate riferimento alla Lezione 3, Tecniche di gestione dei dati, di questo
corso, per ulteriori informazioni sulle variabili globali, sulle variabili locali e le
condizioni di conflitto.

Nota

Architettura di VI con strutture Case multiple


Lo schema a blocchi seguente mostra come progettare un VI che possa
gestire eventi multipli che possono passare dati in avanti e allindietro.
Invece di usare cicli multipli, potete utilizzare un singolo ciclo che
contenga strutture Case separate per ogni evento. Questa architettura di
VI dovrebbe essere usata anche nella situazione in cui avete diversi
pulsanti sul pannello frontale e ognuno attiva eventi diversi. Le condizioni
FALSE seguenti sono vuote.

Codice della
Azione 1

Codice della
Azione 2

Un vantaggio di questa architettura che potete utilizzare delle linee per


passare i dati. Ci aumenta la leggibilit. Inoltre riduce il bisogno di
utilizzare dati globali e di conseguenza rende meno probabile che
incontriate situazioni di conflitto. Potete utilizzare i registri a scorrimento
sulla cornice del ciclo per riportare i valori da uniterazione alla
successiva, passando anche i dati.

National Instruments Corporation

1-13

LabVIEW Corso Base II

Lezione 1

Pianificazione di applicazioni in LabVIEW

Esistono diversi svantaggi nellarchitettura di VI con strutture Case


multiple. Innanzitutto potete finire con lavere schemi a blocchi che sono
molto grandi e difficili da leggere, modificare e correggere. Inoltre,
siccome tutti i gestori degli eventi sono nello stesso ciclo, ognuno viene
gestito in modo seriale. Di conseguenza, se un evento prende molto
tempo, il vostro ciclo non riesce a gestire altri eventi. Un problema
collegato che gli eventi sono gestiti alla stessa velocit siccome nessun
evento pu essere ripetuto finch tutti gli oggetti nel ciclo While hanno
terminato. In alcune applicazioni, potreste aver bisogno di impostare la
priorit degli eventi sullinterfaccia utente per renderli sufficientemente
confrontabili con gli eventi di I/O.

Architettura di VI con macchine a stati


Potete realizzare schemi a blocchi pi compatti utilizzando una singola
struttura Case per gestire tutti i vostri eventi. Larchitettura di VI con
macchine a stati un metodo per il controllo dellesecuzione di VI in
modo non lineare. Questa tecnica di programmazione molto utile in VI
che sono frazionabili in diversi compiti semplici, come nei VI che
agiscono come interfaccia utente.
Create una macchina a stati in LabVIEW con un ciclo While, una
struttura Case e un registro a scorrimento. Ogni stato della macchina a
stati una condizione nella struttura Case. Inserite i VI e altro codice che
volete eseguire nella condizione corretta. Un registro a scorrimento
memorizza lo stato da eseguire fino alliterazione successiva del ciclo. Lo
schema a blocchi della macchina a stati mostrato nelle figure seguenti.

LabVIEW Corso Base II

1-14

National Instruments Corporation

Lezione 1

Pianificazione di applicazioni in LabVIEW

Codice della
Azione 1

Codice della
Azione 2

In questa architettura, progettate lelenco dei possibili eventi, o stati, e


quindi mappateli ognuno su una condizione. Per il VI dello schema a
blocchi precedente, gli stati possibili sono startup, idle, event 1, event 2 e
shutdown. Questi stati sono memorizzati in una costante. Ogni stato ha la
sua condizione in cui potete inserire i nodi opportuni. Mentre una
condizione in esecuzione, lo stato successivo viene determinato sulla
base del risultato corrente. Lo stato successivo viene memorizzato nel
registro a scorrimento. In caso di errore in uno degli stati, viene
richiamata la condizione shutdown.
Il vantaggio dellarchitettura con macchine a stati che lo schema a
blocchi pu diventare molto pi piccolo, rendendone pi facile la lettura e
la correzione. Un inconveniente della struttura Sequence che non si pu
saltare o interrompere un frame. Larchitettura con macchine a stati
risolve questo problema perch ogni condizione determina quale stato
devessere eseguito successivamente.
Uno svantaggio dellarchitettura con macchine a stati che con questo
approccio potete perdere degli eventi. Se due eventi si presentano nello
stesso istante, questo modello gestisce il primo e perde il secondo. Ci
pu condurre ad errori che sono difficili da correggere perch possono
presentarsi solo occasionalmente. Versioni pi complesse dei VI con
architettura con macchine a stati contengono codice aggiuntivo che
realizza una coda di eventi e stati e cos non li perdete.

National Instruments Corporation

1-15

LabVIEW Corso Base II

Lezione 1

Pianificazione di applicazioni in LabVIEW

Note aggiuntive sulle architetture di programmazione


Come con altri linguaggi di programmazione, vengono usati diversi
metodi e tecniche di programmazione quando si progetta un VI in
LabVIEW. Le architetture mostrate in questa sezione costituiscono dei
metodi comuni per fornirvi unidea di come si deve affrontare la scrittura
di un VI.
Le strutture dei VI diventano molto pi complicate al crescere delle
dimensioni delle applicazioni e quando vengono combinati diversi tipi di
hardware, di interfacce utente e metodi di verifica degli errori. Tuttavia,
vedrete utilizzare queste stesse architetture di programmazione di base.
Esaminate gli esempi pi grandi e le demo che vengono fornite con
LabVIEW e descrivete quale architettura di VI viene usata e perch.
Risorse aggiuntive per la realizzazione di applicazioni in LabVIEW sono
descritte nel manuale LabVIEW Development Guidelines.
Nel paragrafo successivo realizzerete un VI che utilizza una semplice
architettura di VI per verificare il nome e la password di un utente.

LabVIEW Corso Base II

1-16

National Instruments Corporation

Lezione 1

Esercitazione 1-2
Obiettivo:

Pianificazione di applicazioni in LabVIEW

VI Verify Information

Realizzare un VI che mostri una semplice architettura.


Realizzerete un VI che accetta un nome e una password e verifica la
corrispondenza in una tabella contenente le informazioni degli impiegati.
Se il nome e la password coincidono, vengono forniti, come verifica, il
nome e un oggetto booleano.

Nota Utilizzerete questo VI nella Lezione 3.

Pannello frontale

1. Aprite un VI e realizzate il pannello frontale precedente. Modificate i


controlli a stringa come descritto nelle etichette cliccando con il tasto
destro del mouse sul controllo. Il controllo Table che si trova nella
palette ControlsList & Table una matrice bidimensionale di
stringhe in cui la prima cella lelemento 0,0.
2. Inserite le informazioni mostrate nel pannello frontale precedente in
Table e salvate questi valori come default cliccando con il tasto destro
del mouse su Table e selezionando Data OperationsMake Current
Value Default dal menu rapido.

National Instruments Corporation

1-17

LabVIEW Corso Base II

Lezione 1

Pianificazione di applicazioni in LabVIEW

Schema a blocchi

Il nome
corrisponde

Il nome non
corrisponde

3. Aprite e realizzate lo schema a blocchi precedente utilizzando i


componenti seguenti.
a. Inserite un ciclo While che si trova nella palette
FunctionsStructures. Questo consente al VI di effettuare
continuamente verifiche finch c una corrispondenza di nome o
non ci sono pi righe nella tabella. Notate che abilitata
lindicizzazione sulla matrice dei nomi ma non sulle altre due voci
inserite allinterno del ciclo While. Abilitate lindicizzazione
cliccando con il tasto destro del mouse sul tunnel e selezionando
Enable Indexing dal menu rapido.
b. Inserite una struttura Case che si trova nella palette
FunctionsStructures. Se lingresso Nome coincide con una
voce presente nellelenco della prima colonna della tabella, allora
vengono verificate anche le password. Se Nome non corrisponde
allinserimento corrente, il ciclo passa alliterazione successiva.
Prima di creare una costante booleana nella condizione False,
completate i collegamenti della condizione True. Quindi
selezionate la condizione False e cliccate con il tasto destro del
mouse il tunnel bordato di verde e selezionate CreateConstant
dal menu rapido.
c. Inserite la funzione Index Array che si trova nella palette
FunctionsArray. Questa funzione viene utilizzata per tirare
fuori la matrice dei nomi dalla tabella. Quando collegate la tabella
allingresso della matrice di questa funzione, appaiono due indici,
di riga e di colonna.

LabVIEW Corso Base II

1-18

National Instruments Corporation

Lezione 1

Pianificazione di applicazioni in LabVIEW

Cliccate con il tasto destro del mouse sullindice inferiore, di


colonna, e selezionate CreateConstant dal menu rapido.
Utilizzerete due di queste funzioni, quindi fatene una copia e
inseritela nella struttura Case alla condizione True.
d. Inserite la funzione Array Size che si trova nella palette
FunctionsArray. Questa funzione fornisce le dimensioni della
matrice dei nomi.
e. Inserite la funzione Decrement che si trova nella palette
FunctionsNumeric. Questa funzione decrementa di uno il
numero dei nomi della matrice cos si pu controllare il ciclo
While che parte da 0.
f. Inserite la funzione Equal? che si trova nella palette
FunctionsComparison. Utilizzerete due di queste funzioni per
verificare se lingresso Nome coincide con una voce della tabella
e analogamente per Password.
g. Inserite la funzione Less Than? che si trova nella palette
FunctionsComparison. Questa funzione controlla il terminale
condizionale del ciclo While. Il ciclo continua ad essere eseguito
finch il numero di iterazione corrente inferiore al numero di
righe nella tabella.
h. Inserite la funzione Not Or che si trova nella palette
FunctionsBoolean. Questa funzione controlla anchessa il
terminale condizionale del ciclo While affinch il ciclo continui
fino a quando viene trovata una coincidenza o non ci sono pi
righe nella tabella.
i. Inserite la costante Empty String che si trova nella palette
FunctionsString. Utilizzerete due di queste costanti, una per la
condizione True e laltra per la False. Se i nomi corrispondono ma
non le password o se nessuno dei due corrisponde, allora viene
fornita una stringa vuota nellindicatore Nome Confermato.
j. Inserite la funzione Select che si trova nella palette
FunctionsComparison. Questa funzione viene usata con la
verifica della password. Se la password corrisponde, il nome
corrente viene inviato allindicatore Nome Confermato;
altrimenti viene inviata la stringa vuota.
4. Salvate il VI come Verify Information.vi.
5. Andate sul pannello frontale ed assicuratevi di avere alcuni nomi, i
nomi non devono essere gli stessi usati nel manuale del corso, e
password nel controllo della tabella. Se non lo avete gi fatto, cliccate
con il pulsante destro del mouse sulla tabella e selezionate Data
OperationsMake Current Values Default cos nomi e password
vengono memorizzati permanentemente nella tabella.

National Instruments Corporation

1-19

LabVIEW Corso Base II

Lezione 1

Pianificazione di applicazioni in LabVIEW

6. Inserite i valori nei controlli Nome e Password ed avviate il VI.


Se Nome e Password coincidono con una delle righe presenti in
tabella, viene fornito il nome nellindicatore Nome Confermato e si
accende il LED Verificato. Altrimenti viene fornita una stringa vuota
e il LED spento. Assicuratevi di provare diverse combinazioni di
nomi e password per verificare il comportamento corretto del VI.
7. Create unicona per questo VI perch lo utilizzerete come subVI in un
esercizio pi avanti. Per creare licona, cliccate con il tasto destro del
mouse sullicona nellangolo superiore destro del pannello frontale o
dello schema a blocchi e selezionate Edit Icon dal menu. Disegnate
unicona simile a quella mostrata qui.

8. Create il riquadro dei connettori per questo VI cliccando con il tasto


destro del mouse sullicona del pannello frontale e selezionando Show
Connector dal menu rapido. Selezionate uno schema e collegate gli
oggetti del pannello frontale ai terminali come mostrato nel riquadro
dei connettori seguente.

9. Salvate il VI con lo stesso nome.


10. Arrestate e chiudete il VI quando avete finito.

Fine dellesercitazione 1-2

LabVIEW Corso Base II

1-20

National Instruments Corporation

Lezione 1

Pianificazione di applicazioni in LabVIEW

E. Modelli di VI
Nellultima sezione, avete imparato qualcosa sulle architetture di
programmazione dei VI. Affinch non dobbiate partire da zero nella
realizzazione di un nuovo VI con un pannello frontale e uno schema a
blocchi vuoto, vengono inclusi nel pacchetto di LabVIEW alcuni modelli.
Questi modelli si trovano nella directory LabVIEW 6\Templates e
contengono file con lestensione .vit. LabVIEW fornisce alcuni modelli
di base e comunque non tutte le architetture di VI descritte sono
disponibili come modelli.
Potete salvare un VI che avete creato come modelli utilizzando lopzione
FileSave with Options come mostrato nella seguente finestra di
dialogo.

Questa opzione vi consente di salvare architetture di VI e altre strutture di


programmazione che utilizzate spesso per i vostri modelli. Ora
esaminerete un paio di modelli.

National Instruments Corporation

1-21

LabVIEW Corso Base II

Lezione 1

Pianificazione di applicazioni in LabVIEW

Esercitazione 1-3
Obiettivo:

VIT Timed While Loop with Stop e


State Machine

Esaminare due modelli di VI forniti con LabVIEW.

Esaminerete i modelli di VI che mostrano sia larchitettura con la


macchina a stati sia quella generale.

Pannello frontale

1. Aprite il Timed While Loop with Stop.vit dalla directory


LabVIEW 6\Templates. Il pannello frontale contiene solo il
pulsante di Stop.

Schema a blocchi

2. Aprite ed esaminate lo schema a blocchi.


3. Noterete come questo VI possieda larchitettura generale di un VI.
Esso contiene un ciclo While che si arresta quando cliccate sul
pulsante del pannello frontale e una funzione di attesa nel ciclo
assicura che questo ciclo non utilizzi tutte le risorse del sistema.
4. Tornate al pannello frontale ed avviate il VI. Esso non fa niente ma
continua lesecuzione fino a quando premete il pulsante di Stop.
5. Arrestate e chiudete il VI quando avete finito.
6. Aprite

State
Machine.vit dalla
6\Templates. Il pannello frontale vuoto.

LabVIEW Corso Base II

il

1-22

directory

LabVIEW

National Instruments Corporation

Lezione 1

Pianificazione di applicazioni in LabVIEW

Schema a blocchi

7. Aprite ed esaminate lo schema a blocchi.


8. Questa architettura con macchine a stati implementata in un modo
leggermente diverso da quello descritto precedentemente. Questo VI
utilizza una costante di stringa per contenere gli stati della struttura
Case mentre il VI mostrato precedentemente usava una del tipo
enumerated, simile al controllo di tipo ring, per controllare gli stati.
Siccome la struttura Case accetta sia numeri che stringhe, non importa
come avete specificato i differenti stati. La chiave nellarchitettura con
macchine a stati che avete un ciclo While con una struttura Case
allinterno in cui ogni condizione uno stato differente
dellapplicazione complessiva. Lo stato successivo viene determinato
mentre il VI in esecuzione sulla base di quello che accade nello stato
corrente.
9. Chiudete il VI quando avete finito.

Fine dellesercitazione 1-3

National Instruments Corporation

1-23

LabVIEW Corso Base II

Lezione 1

Pianificazione di applicazioni in LabVIEW

Sommario, trucchi e consigli

LabVIEW Corso Base II

In molti casi viene usato un approccio del tipo top-down per


pianificare la strategia complessiva di un progetto. Lo sviluppo e
limplementazione di unapplicazione di solito del tipo bottom-up.

Nella progettazione di unapplicazione in LabVIEW, importante


determinare laspettativa finale dellutente, cosa deve realizzare
esattamente lapplicazione e quali modifiche future potrebbero essere
necessarie prima di investire una gran quantit di tempo nello
sviluppo di subVI. Dovreste realizzare un diagramma di flusso che vi
aiuti a capire come dovrebbe operare lapplicazione e discuterne in
dettaglio con il vostro cliente.

Dopo aver realizzato il diagramma di flusso, potete sviluppare VI per


implementarne i vari passi. una buona idea di rendere modulare la
vostra applicazione in compiti logici elementari, quando possibile.
Lavorando con piccoli moduli, potete correggere unapplicazione
testando ogni modulo singolarmente. Questo approccio rende molto
pi facile dellapplicazione in futuro.

I cluster di errore sono un metodo potente di gestione degli errori


usato in quasi tutti i VI di I/O e le funzioni di LabVIEW. Questi
cluster passano le informazioni sugli errori da un VI al successivo.

Un gestore degli errori alla fine del flusso dei dati pu ricevere il
cluster di errore e visualizzare le informazioni sugli errori in una
finestra di dialogo.

Le architetture di VI pi comuni sono quella semplice, quella


generale, quella a cicli paralleli, quella a strutture Case multiple e
quella a macchine a stati. Ciascuna di queste architetture ha i suoi
vantaggi e svantaggi in funzione di quello che deve fare
lapplicazione.

Larchitettura di VI con macchine a stati molto utile per VI


dinterfaccia utente e genera un codice semplice e chiaro.

Molti modelli di VI vengono forniti con LabVIEW cos non avete


bisogno ogni volta di iniziare lo sviluppo di un VI da pannelli frontali
e schemi a blocchi vuoti.

Fate riferimento al manuale LabVIEW Development Guidelines per


ulteriori informazioni sulla progettazione e realizzazione di VI.

1-24

National Instruments Corporation

Lezione 1

Pianificazione di applicazioni in LabVIEW

Note

National Instruments Corporation

1-25

LabVIEW Corso Base II

Lezione 1

Pianificazione di applicazioni in LabVIEW

Note

LabVIEW Corso Base II

1-26

National Instruments Corporation

Lezione 2
Progettazione di pannelli frontali
Questa lezione vi introduce alla progettazione e realizzazione di
interfacce utente per i vostri VI. Dapprima una panoramica ed un elenco
di cose da considerare durante la realizzazione del pannello frontale.
Quindi in alcune sezioni successive vengono descritti alcuni metodi e
strumenti comuni per la personalizzazione dei pannelli. Le sezioni
conclusive descrivono parti aggiuntive e oggetti dei pannelli utilizzati per
lo sviluppo di interfacce utente.

Imparerete:
A. A conoscere gli elementi fondamentali dellinterfaccia utente.
B. Ad utilizzare cluster booleani come menu.
C. A conoscere i Property Nodes.
D. A conoscere le propriet dei grafici.
E. Ad utilizzare i Control References.
F. A conoscere i menu run-time di LabVIEW.
G. A conoscere gli Intensity Plots.

National Instruments Corporation

2-1

LabVIEW Corso Base II

Lezione 2

Progettazione di pannelli frontali

A. Nozioni fondamentali sullinterfaccia utente


Quando sviluppate applicazioni che vengono utilizzate da altre persone,
dovete seguire alcune regole fondamentali riguardanti linterfaccia utente.
Se il pannello frontale contiene troppi oggetti o presenta un miscuglio di
colori e di testo, gli utenti potrebbero non utilizzare correttamente il VI o
non ottenere le informazioni importanti dai dati. Questa sezione descrive
alcuni elementi da considerare nella realizzazione di pannelli frontali.
Una regola da seguire durante la realizzazione di uninterfaccia utente di
un VI di mostrare solamente le parti nel pannello frontale che lutente
ha bisogno di vedere in quel momento. Lesempio seguente mostra un
subVI che richiede allutente un nome come login. Ci sono dei cluster di
errore perch un subVI ma lutente non ha bisogno di vedere quelle
parti o il nome del percorso del file.

Lesempio successivo mostra lo stesso subVI dopo che il pannello


frontale stato ridimensionato e la barra dei menu, le barre di scorrimento
e la barra degli strumenti sono stati rimossi con lopzione VI
PropertiesWindow AppearanceDialog.

LabVIEW Corso Base II

2-2

National Instruments Corporation

Lezione 2

Progettazione di pannelli frontali

Utilizzo dei colori


Un uso corretto dei colori pu migliorare laspetto e la funzionalit del
vostro pannello frontale. Lutilizzo di troppi colori, tuttavia, pu causare
contrasti che fanno apparire i pannelli frontali troppo pieni e dispersivi.
Ecco alcuni suggerimenti sugli abbinamenti dei colori:
y

Iniziate con il grigioselezionate uno o due toni di grigio ed


evidenziate i colori che hanno un buon contrasto con lo sfondo.

Aggiungete i colori con parsimoniasui grafici, sui pulsanti


dinterruzione ed eventualmente sui cursori per le impostazioni
importanti. Gli oggetti piccoli hanno bisogno di colori pi brillanti e
di pi contrasto rispetto a quelli pi grandi.

Utilizzate spaziature ed allineamenti per raggruppare gli oggetti


invece di adottare i colori.

Dei luoghi buoni per imparare ad utilizzare i colori sono i pannelli


degli strumenti stand-alone, le cartine, i giornali e la natura.

Inoltre ricordate che circa il venti per cento degli ingegneri non
riconoscono tutti i colori. Essi si basano sui contrasti piuttosto che sui
colori quando devono distinguere gli oggetti.

Spaziatura ed allineamento
Gli spazi vuoti e lallineamento sono probabilmente le tecniche pi
importanti per raggruppare e separare. Pi sono gli oggetti che i vostri
occhi possono trovare su una linea, pi chiara lorganizzazione. Quando
gli oggetti sono disposti su una linea locchio segue la linea da sinistra a
destra o dallalto verso il basso. Questo collegato alla direzione della
scrittura. Sebbene alcune culture procedano da destra a sinistra, quasi tutti
seguono dallalto verso il basso.
Oggetti centrati sono meglio di quelli disposti casualmente, ma meno
ordinati rispetto a quelli allineati a sinistra o a destra. Una fascia di spazio
vuoto agisce come un vero strumento di allineamento. Gli oggetti centrati
hanno i bordi non allineati e lordine non chiaro.

National Instruments Corporation

2-3

LabVIEW Corso Base II

Lezione 2

Progettazione di pannelli frontali

I menu sono allineati a sinistra e i collegamenti relativi a destra come


mostrato nellesempio in basso a sinistra del menu File di LabVIEW. E
pi difficile individuare voci nel menu con allineamento al centro come
mostrato nellesempio in basso a destra. Notate come delle semplici linee
che dividono sezioni del menu vi aiutino a trovare le voci pi
rapidamente, rafforzando le relazioni tra le voci della sezione.

Testo e font
Il testo pi facile da leggere e linformazione ha pi senso quando la
visualizzazione ordinata. Per tenerne conto durante la realizzazione di
pannelli frontali, provate a raggruppare controlli correlati, utilizzando
spazi vuoti o linee. Questi metodi funzionano meglio quando non
distraggono dal contenuto informativo.
Usare troppi font rende il vostro pannello frontale troppo pieno e
disorganizzato. E meglio utilizzare due o tre dimensioni diverse dello
stesso tipo di font. Il Serif aiuta le persone a riconoscere intere parole a
distanza. Se state utilizzando pi di una dimensione di un font,
assicuratevi che le dimensioni siano abbastanza diverse. Altrimenti
apparir come un errore. Analogamente, se utilizzate due diversi tipi di
font, assicuratevi che siano distinguibili.
Alcune stazioni di operatori possono essere abbagliate o gli utenti
potrebbero aver bisogno di leggerle a grande distanza rispetto ai normali
computer o con un touch screen. Perci dovreste utilizzare font pi grandi
e maggior contrasto.

Consigli e strumenti per linterfaccia utente


Non necessario o non intelligente perdere tempo a rendere ogni
pannello frontale chiaroconcentratevi su quelli che gli utenti vedono di
pi.

LabVIEW Corso Base II

2-4

National Instruments Corporation

Lezione 2

Progettazione di pannelli frontali

Alcuni degli strumenti interni di LabVIEW per rendere i pannelli frontali


user-friendly, comprendono controlli di dialogo, controlli tab,
decorazioni, menu e ridimensionamento automatico degli oggetti del
pannello frontale.

Controlli di dialogo
Una tecnica comune che si usa per linterfaccia utente di avere finestre
di dialogo che compaiono al momento opportuno per interagire con
lutente. Potete fare in modo che un VI appaia come una finestra di
dialogo selezionando quellopzione nella finestra di dialogo FileVI
PropertiesWindow Appearance. La palette ControlsDialog
Controls contiene alcuni tipi di oggetti disponibili nelle finestre di
dialogo di sistema.
Dovreste utilizzare questi controlli di dialogo per realizzare finestre di
dialogo tipo quelle di sistema. I controlli di dialogo cambiano aspetto
secondo il sistema operativo e le impostazioni di Window Appearance e
di solito ignorano i click a colori eccetto quello trasparente. Se state
integrando un grafico o controlli non di dialogo nel pannello frontale,
provate a modificarli nascondendo alcune cornici o selezionando colori
simili a quelli di sistema.

Controlli Tab
Gli strumenti fisici di solito hanno delle buone interfacce utente. Prendete
spunto da questi ma considerate controlli pi piccoli o pi efficienti, come
quelli tipo ring o controlli tab laddove ha senso. I controlli tab si trovano
nella palette ControlsDialog Controls o nella palette ControlsArray
& Cluster e offrono un modo conveniente per raggruppare insieme
oggetti del pannello frontale.

Il modo di utilizzare il controllo tab di disporlo sul pannello frontale


come mostrato precedentemente. Aggiungete tab cliccando con il tasto
destro del mouse su un tab esistente e selezionando Add Page After, Add
Page Before o Duplicate Page dal menu. Rietichettate i tab con lo
strumento Testo ed inserite altri oggetti sul pannello frontale nelle pagine
appropriate. I terminali di questi oggetti sono presenti nello schema a
blocchi cos come lo sono terminali di ogni altro oggetto del pannello
frontale.

National Instruments Corporation

2-5

LabVIEW Corso Base II

Lezione 2

Progettazione di pannelli frontali

Il controllo tab si collega direttamente ad una struttura Case come


mostrato precedentemente e il nome della pagina compare in alto come
nome della condizione. Potete quindi collegare i dati agli altri terminali a
seconda delle necessit.

Decorazioni
Uno dei metodi pi semplici e spesso trascurato per raggruppare o
separare oggetti di utilizzare una delle possibilit offerte dalla palette
ControlsDecorations. Potete scegliere di utilizzare vari tipi di riquadri,
frecce e linee dalla palette nel modo seguente:

Potete trovare ulteriori decorazioni nella palette ControlsClassic


Controls. La palette seguente mostra i diversi riquadri, cornici, linee,
frecce, cerchi e triangoli.

LabVIEW Corso Base II

2-6

National Instruments Corporation

Lezione 2

Progettazione di pannelli frontali

Menu
I menu costituiscono un buon modo di presentare la maggior parte delle
funzionalit del pannello frontale in modo ordinato e in uno spazio
relativamente piccolo. In tal modo si lascia spazio sul pannello frontale
per azioni necessarie in caso di emergenza, voci per principianti, voci
necessarie per la produttivit e voci che non rientrano nei menu.
Assicuratevi anche di aggiungere pulsanti rapidi per i menu per le voci
richieste pi frequentemente. Pi avanti nella lezione imparerete a creare i
vostri menu in un VI.

Ridimensionamento automatico di oggetti del pannello frontale


Come gi detto precedentemente, potete utilizzare le opzioni in VI
PropertiesWindow Appearance per modificare laspetto del pannello
frontale quando un VI in esecuzione. Con le opzioni in VI
PropertiesWindow Size potete impostare le dimensioni minime di una
finestra, mantenere le proporzioni della finestra al variare dello schermo e
impostare il ridimensionamento degli oggetti del pannello frontale in due
modi diversi. La maggior parte delle applicazioni professionali non
ridimensiona ogni controllo quando le dimensioni della finestra variano,
ma prendono una tabella, un grafico o un elenco per adattarlo alla
finestra, lasciando gli altri oggetti vicino al bordo della finestra. Per
ridimensionare un oggetto del pannello frontale al variare del pannello
frontale, selezionate quelloggetto e quindi EditScale Object With
Panel.
Lesercizio seguente utilizza alcune delle tecniche descritte per creare un
VI con uninterfaccia utente facile da usare.

National Instruments Corporation

2-7

LabVIEW Corso Base II

Lezione 2

Progettazione di pannelli frontali

Esercitazione 2-1
Obiettivo:

VI Scope Panel

Disporre e separare in modo logico gli oggetti del pannello frontale per rendere
linterfaccia utente di un VI pi semplice da leggere e da utilizzare.
Ridimensionerete, riorganizzerete e disporrete in modo diverso gli oggetti
del pannello frontale per rendere linterfaccia utente pi semplice da
utilizzare.

Pannello frontale

1. Aprite il VI Scope Panel dalla directory c:\exercises\LV basics


2. Il pannello frontale quello mostrato sopra.
2. Spostate i controlli per raggruppare in maniera logica quelli che
presentano delle affinit (non tutti possono essere collegati ad un
gruppo). Per esempio il pulsante ON/OFF, il potenziometro di
posizionamento e il potenziometro Volts/Div etichettati con Channel
A operano tutti sul canale A e quindi ha senso disporli vicini luno
allaltro. Altri due esempi di gruppi potrebbero essere i controlli del
Channel B e i tre controlli di trigger.
Ricordatevi di utilizzare le possibilit offerte nella barra degli
strumenti da Align Objects e Distribute Objects.
Consiglio

3. Dopo aver raggruppato i controlli, utilizzate la decorazione Raised


Box sulla palette ControlsDecorations per rendere pi visibili le
separazioni tra i gruppi.

LabVIEW Corso Base II

2-8

National Instruments Corporation

Lezione 2

Progettazione di pannelli frontali

Ridimensionate la finestra affinch il pannello frontale si adatti alla


finestra, come mostrato nellesempio seguente.

Dovete utilizzare il pulsante Reorder sulla barra degli strumenti


delle decorazioni per scegliere Move to Back, affinch i controlli siano visibili
al di sopra dei riquadri evidenziati inseriti.
Consiglio

4. Selezionate FileVI Properties per visualizzare la finestra di dialogo


VI Properties. Selezionate Window Size dal menu a tendina
superiore della finestra di dialogo VI Properties. Nella sezione
Minimum Panel Size, cliccate sul pulsante <<Set to Current
Window Size per impostare le dimensioni minime dello schermo
sulle dimensioni correnti della finestra. Cliccate su OK per tornare al
pannello frontale.
5. Selezionate il grafico del pannello frontale e selezionate EditScale
Object With Panel. LabVIEW ridimensiona il grafico quando viene
ridimensionata lintera finestra e sposta gli altri oggetti.
6. Salvate il VI con lo stesso nome.
7. Ridimensionate la finestra. Notate che il grafico si ridimensiona con la
finestra e i controlli mantengono una distanza proporzionale con il
grafico e tra di loro, ma non si allargano o si restringono. Tuttavia
notate che le decorazioni non si ridimensionano. Per ottenere ci,
dovete utilizzare pulsanti booleani che sembrano gli stessi in ogni
condizione e li ridimensionate da programma. Ci richiede luso di
Property Nodes e largomento verr trattato pi avanti in questa
lezione.
8. Chiudete il VI quando avete finito.

Fine dellesercitazione 2-1

National Instruments Corporation

2-9

LabVIEW Corso Base II

Lezione 2

Progettazione di pannelli frontali

Esercitazione 2-2
Obiettivo:

VI Acquire Data

Modificare un VI per utilizzare il controllo tab con tecniche appropriate di


progettazione dellinterfaccia utente
Modificherete il VI Generate & Analyze affinch utilizzi il controlo tab.
Una pagina del tab servir per la generazione dei dati come prima e la
seconda pagina servir per lacquisizione dati da un dispositivo DAQ.

Nota Utilizzerete questo VI nel progetto della Lezione 5.

Pannello frontale

1. Aprite il VI Generate & Analyze che avete realizzato


nellesercitazione 1-1. Ridimensionate il pannello frontale per fare
spazio alla sinistra degli altri oggetti del pannello frontale visto che
aggiungerete il controllo tab.
2. Inserite nel pannello frontale un controllo tab che si trova nella palette
ControlsArray & Cluster come mostrato precedentemente.
Selezionate i controlli Sine Frequency, Sine Amplitude, Sampling
Info e Noise Amplitude e inseriteli nella prima pagina del controllo
tab.

LabVIEW Corso Base II

2-10

National Instruments Corporation

Lezione 2

Progettazione di pannelli frontali

3. Nominate le due pagine del controllo tab Simulate e DAQ


rispettivamente. Cliccate sulla pagina DAQ e aggiungete oggetti nel
modo seguente:

4. Salvate il VI come Acquire Data.vi.


5. Cliccate con il tasto destro del mouse sul controllo DAQ Channel
Name e assicuratevi che sia selezionata lopzione Allow Undefined
Names.
6. Per cambiare la scala sul potenziometro per leggere 20.0k invece di
20,000, cliccate con il tasto destro del mouse sul potenziometro e
selezionate Format & Precision. Selezionate Engineering Notation
e il k viene aggiunto per rappresentare le migliaia.

National Instruments Corporation

2-11

LabVIEW Corso Base II

Lezione 2

Progettazione di pannelli frontali

Schema a blocchi

7. Aprite e modificate lo schema a blocchi come


precedentemente utilizzando i seguenti componenti:

mostrato

a. Inserite una struttura Case che si trova nella palette


FunctionsStructures dello schema a blocchi. Quando
utilizzata con un controllo tab, una condizione corrisponde alla
pagina Simulate e laltra alla pagina DAQ.
b. Inserite il VI AI Acquire Waveform che si trova nella palette
FunctionsData AcquisitionAnalog Input dello schema a
blocchi. Questo VI acquisisce dati da un canale dingresso
analogico sul dispositivo DAQ.
Nota Se non avete un dispositivo DAQ o una DAQ Signal Accessory, utilizzate

il VI Demo Acquire Waveform che si trova nella palette FunctionsUser


LibrariesBasic 2 Course dello schema a blocchi al posto del VI Acquire
Waveform. Il VI Demo Acquire Waveform simula lacquisizione dati da un
canale dingresso analogico ad una frequenza di campionamento specificata e
fornisce in uscita il numero di campioni specificato.

LabVIEW Corso Base II

2-12

National Instruments Corporation

Lezione 2

Progettazione di pannelli frontali

c. Create una costante di cluster cliccando con il tasto destro del


mouse sul tunnel della struttura Case e selezionando
CreateConstant dal menu rapido. Questa costante passa in
uscita i valori di default per il cluster di errore corrispondenti alla
condizione DAQ.
8. Salvate il VI.
9. Osservate come avete aggiunto nuove funzionalit a questo VI senza
complicare troppo il codice. Lutilizzo dei controlli tab un modo
molto efficiente per aggiungere nuovi oggetti sul pannello frontale per
linterfaccia utente e anche per aggiungere funzionalit allo schema a
blocchi senza ingrandire troppo le finestre del pannello frontale e
dello schema a blocchi.
10. Avviate il VI. Potete anche regolare i controlli del pannello frontale
per vedere cambiare gli andamenti temporali e in frequenza. Passate
dalla pagina Simulate a quella DAQ del controllo tab.
11. Arrestate e chiudete il VI quando avete finito.

Fine dellesercitazione 2-2

National Instruments Corporation

2-13

LabVIEW Corso Base II

Lezione 2

Progettazione di pannelli frontali

B. Utilizzo di cluster booleani come menu


Potete utilizzare pulsanti booleani in un cluster per realizzare un menu per
unapplicazione. Considerate per esempio unapplicazione in cui un
operatore configura un sistema e pu eseguire due test. Un possibile VI a
menu per questa applicazione il seguente.

Cluster di pulsanti etichettati (azione meccanica latch when released)


Ordine del cluster:
(0) Pulsante Configure
(1) Pulsante Test 1
(2) Pulsante Test 2

La funzione Cluster to Array converte il cluster booleano in una matrice


booleana a tre elementi. Quindi ogni elemento del cluster rappresenta un
elemento della matrice. La funzione Search 1D Array della palette
FunctionsArray ricerca nella matrice monodimensionale di valori
booleani creata dalla funzione Cluster to Array il valore TRUE. Un valore
TRUE per un qualsiasi elemento della matrice indica che avete cliccato su
un pulsante del cluster. La funzione Search 1D Array restituisce lindice
del primo valore TRUE che trova nella matrice. Se non cliccate su un
pulsante, Search 1D Array fornisce un valore dellindice di 1. Se nessun
pulsante viene premuto, viene eseguita la condizione 1, cio nulla viene
eseguito. Cliccando sul pulsante Configure si esegue la condizione 0, che
potrebbe, per esempio, chiamare il subVI Configure. Cliccando sul
pulsante Test 1 si esegue la condizione 1, che potrebbe chiamare il subVI
Test 1 e cliccando sul pulsante Test 2 si esegue la condizione 2. Il ciclo
While testa ripetutamente lo stato dei controlli booleani fino a quando
cliccate sul pulsante Stop. Lo schema a blocchi del VI il seguente.

LabVIEW Corso Base II

2-14

National Instruments Corporation

Lezione 2

Progettazione di pannelli frontali

Vuoto.
Search 1D Array
fornisce 1 se non
ci sono bottoni
premuti

Richiama il subVI
Configure

Richiama il subVI Test 1


Search 1D Array
fornisce 1 se viene
premuto il pulsante
Test 1

Search 1D Array
fornisce 0 se viene
premuto il pulsante
Configure

Richiama il subVI
Test 2
Search 1D Array
fornisce 2 se viene
premuto il pulsante
Test 2

Conversione di cluster
Potete convertire un cluster in una matrice se tutti i componenti del
cluster hanno lo stesso tipo di dati (per esempio, tutti booleani o tutti
numerici). Con tale conversione, potete utilizzare le funzioni delle matrici
per processare i componenti allinterno del cluster.
La funzione Cluster to Array presente nelle palette FunctionsCluster e
in FunctionsArray converte un cluster di componenti dello stesso tipo
in una matrice monodimensionale di dati dello stesso tipo.

Lesempio seguente mostra un cluster booleano a quattro componenti


convertito in una matrice booleana a quattro elementi. Lindice di ogni
elemento della matrice corrisponde allordine logico del componente nel
cluster. Per esempio, Button 1 (componente 0) corrisponde al primo
elemento (indice 0) della matrice, Button 2 (componente 1) al secondo
elemento (indice 1), e cos via.

National Instruments Corporation

2-15

LabVIEW Corso Base II

Lezione 2

Progettazione di pannelli frontali

3
1 Pannello frontale

2 Pannello del cluster

3 Schema a blocchi

La funzione Array to Cluster (nelle palette FunctionsCluster e in


FunctionsArray) converte una matrice monodimensionale in un cluster
in cui ogni componente del cluster dello stesso tipo dellelemento della
matrice.

Nota Dovete cliccare con il tasto destro del mouse sullicona della funzione per

impostare il numero di componenti nel cluster. Il numero di default dei


componenti nel cluster di uscita nove.
Potete combinare il concetto di una macchina a stati con un cluster di
menu booleano per fornire un potente sistema di menu. Per esempio, pu
darsi che dobbiate realizzare lapplicazione seguente, che pu essere
suddivisa in una serie di stati.
Valore di stato Nome di stato
Descrizione
-1, Deafult
No Event
Menu booleano
di controllo per
determinare
lo
stato successivo

LabVIEW Corso Base II

Login

Configure

Acquire

2-16

Accesso
dellutente
Configura
lacquisizione
Acquisisce dati

Stato successivo
Dipende
dal
pulsante premuto.
Se non viene
premuto
alcun
pulsante, lo stato
successivo No
Event.
No Event (0)
Acquire (2)
No Event (0)

National Instruments Corporation

Lezione 2

Progettazione di pannelli frontali

Lesempio seguente rappresenta una macchina a stati per questa


applicazione.

Il pannello frontale consiste in un cluster di pulsanti booleani, in cui ogni


pulsante corrisponde ad uno stato nella macchina a stati. Nello stato 1
(stato No Event), il cluster di pulsanti booleani viene controllato per
vedere se un pulsante stato premuto. La funzione Search 1D Array
fornisce lindice del pulsante premuto (o 1 se non vengono premuti
pulsanti) per determinare lo stato successivo da eseguire. Il valore di stato
corrispondente viene caricato nel registro a scorrimento, e cos
alliterazione successiva del ciclo While viene eseguito lo stato
selezionato.
In ognuno degli altri stati, il registro a scorrimento viene caricato con lo
stato successivo da eseguire utilizzando una costante numerica.
Normalmente questo lo stato 1, e quindi il menu booleano verr
verificato di nuovo ma nello stato 1 (Configure) lo stato successivo lo
stato 2 (Acquire).

National Instruments Corporation

2-17

LabVIEW Corso Base II

Lezione 2

Progettazione di pannelli frontali

Esercitazione 2-3

VI Menu

Obiettivo: Realizzare un sistema di menu per unapplicazione


Esiste un insieme di dipendenze tra le diverse operazioni
dellapplicazione da realizzare in questo corso. In molte circostanze, dopo
aver eseguito una certa operazione, lapplicazione dovrebbe tornare nello
stato No Event, in cui lapplicazione controlla un menu per vedere
quale pulsante stato premuto.
Le dipendenze dellapplicazione possono essere descritte come una
semplice macchina a stati, in cui ogni stato numerico porta ad uno stato
successivo. La tabella seguente riassume questa serie di dipendenze.
Valore di stato Nome di stato
Descrizione
-1, Default
No Event
Menu booleano
di controllo per
determinare
lo
stato successivo

Login

1
2

Acquire
Analyze

View

Stop

Accesso
dellutente
Acquisisce dati
Analizza dati e
possibilmente li
salva su file
Visualizza i file
dati salvati
Arresta il VI

Stato successivo
Dipende
dal
pulsante premuto.
Se non viene
premuto
alcun
pulsante, lo stato
successivo No
Event.
No Event
No Event
No Event
No Event
No Event

In questa esercitazione realizzerete la macchina a stati da utilizzare in


questa applicazione osservando il suo funzionamento.
Nota Utilizzerete questo VI nella Lezione 5.

LabVIEW Corso Base II

2-18

National Instruments Corporation

Lezione 2

Progettazione di pannelli frontali

Pannello frontale

1. Aprite un nuovo VI.


2. Realizzate il pannello frontale seguendo lesempio precedente. Ogni
pulsante nel cluster, quando viene premuto, attiva uno stato
opportuno. Quando realizzate il pannello frontale, assicuratevi che il
pulsante Login sia il cluster di ordine 0. Acquire Data il cluster di
ordine 1, Analyze & Present Data il cluster di ordine 2, View
Analysis File il cluster di ordine 3 e Stop il cluster di ordine 4.
Lordine del cluster del cluster dei menu determina il numero dello
stato che verr eseguito.
Suggerimenti:
y

Create per primo il pulsante con letichetta pi grande.

Impostate lazione meccanica su Latch When Released.

Utilizzate Copy e Paste per creare altri pulsanti.

Utilizzate Align e Distribute nella disposizione dei pulsanti.

National Instruments Corporation

2-19

LabVIEW Corso Base II

Lezione 2

Progettazione di pannelli frontali

Schema a blocchi

1. Costruite lo schema a blocchi come mostrato in precedenza.


a. Inserite nello schema a blocchi un ciclo While che si trova
nella palette FunctionsStructures. In tal modo il VI
continua a generare ed analizzare i dati fino a quando lutente
preme il pulsante Stop. Create il registro a scorrimento
cliccando con il tasto destro del mouse sul bordo sinistro o
destro del ciclo e selezionando Add Shift Register dal menu
rapido.

LabVIEW Corso Base II

2-20

National Instruments Corporation

Lezione 2

Progettazione di pannelli frontali

b. Inserite nello schema a blocchi una struttura Case che si trova


nella palette FunctionsStructures. Questa struttura genera
gli stati per la macchina a stati. Aggiungete condizioni
cliccando con il tasto destro del mouse sulla cornice della
struttura Case. Assicuratevi di definire la condizione 1 come
default.
c. Inserite la funzione Wait Until Next ms Multiple che si trova
nella palette FunctionsTime & Dialog. Questa funzione
determina lesecuzione del ciclo While dieci volte al secondo.
Create una costante cliccando con il tasto destro del mouse sul
terminale dingresso e selezionando CreateConstant.
d. Inserite la funzione Cluster to Array che si trova nella palette
FunctionsCluster o FunctionsArray. In questa
esercitazione questa funzione converte il cluster di pulsanti
booleani in una matrice di dati booleani. Loggetto booleano
del cluster di ordine 0 diventa lelemento booleano di indice 0
della matrice, quello di ordine 1 del cluster diventa lelemento
di indice 1 della matrice e cos via.
e. Inserite la funzione Search 1D Array che si trova nella palette
FunctionsArray. In questa esercitazione, questa funzione
ricerca nella matrice booleana fornita da Cluster to Array un
valore TRUE. Un valore TRUE di un qualsiasi elemento
indica che avete cliccato sul pulsante corrispondente. La
funzione fornisce un valore 1 se non avete cliccato su un
pulsante.
f. Inserite la funzione One Button Dialog che si trova nella
palette FunctionsTime & Dialog. Utilizzerete quattro di
queste funzioni per indicare quale stato stato selezionato e
caricato nel registro a scorrimento.
2. Salvate il VI come Menu.vi.
3. Avviate il VI, Quando cliccate sui pulsanti Login, Acquire Data,
Analyze & Present Data o Data File View, compare una finestra
di dialogo per indicare lo stato corrispondente in cui vi trovate.
4. Utilizzando lesecuzione passo-passo e evidenziata, osservate
come viene eseguito il VI. Notate che finch non premete un
pulsante, la funzione Search 1D Array fornisce un valore 1, che
determina lesecuzione continua da parte del ciclo While dello
stato -1. Una volta che viene premuto un pulsante, comunque,
lindice dei dati booleani viene usato per determinare lo stato
successivo da eseguire. Notate come gli stati del VI corrispondano
agli stati nella tabella precedente lesercitazione.
Nelle ultime esercitazioni sostituirete i VI che avete creato per le
funzioni One Button Dialog per realizzare lapplicazione.

National Instruments Corporation

2-21

LabVIEW Corso Base II

Lezione 2

Progettazione di pannelli frontali

5. Cliccate sul pulsante Stop per arrestare lesecuzione.


6. Chiudete il VI quando avete finito.

Fine dellesercitazione 2-3

LabVIEW Corso Base II

2-22

National Instruments Corporation

Lezione 2

Progettazione di pannelli frontali

Esercitazione 2-4 VI Cluster Conversion Example (Opzionale)


Obiettivo: Esaminare un VI che utilizza cluster per processare dati.

Esaminerete un VI che utilizza cluster per processare dati. Il VI


rappresenta un cluster contenente quattro pulsanti etichettati. Il VI tiene
traccia del numero di volte che avete cliccato su ogni pulsante.

Pannello frontale

1. Aprite il VI Cluster Conversion Example che si trova in


c:\exercises\LV Basics 2.

Schema a blocchi

La condizione False vuota e serve solo per passare il cluster dal registro
a scorrimento di sinistra a quello di destra.
2. Aprite ed esaminate lo schema a blocchi.
3. Avviate il VI. Cliccate su un pulsante. Lindicatore digitale
corrispondente dovrebbe incrementarsi ogni volta che cliccate su un
pulsante.
4. Chiudete il VI. Non salvate le modifiche.

Fine dellesercitazione 2-4

National Instruments Corporation

2-23

LabVIEW Corso Base II

Lezione 2

Progettazione di pannelli frontali

C. Nodi Propriet
In alcune applicazioni, potreste aver bisogno di modificare da programma
laspetto degli oggetti del pannello frontale in risposta a certi ingressi. Per
esempio, se un utente inserisce una password non valida, potreste causare
laccensione di un LED rosso. Un altro esempio potrebbe essere di
cambiare il colore della traccia su un grafico. Quando i punti si trovano al
di sopra di una certa soglia, potreste attivare una traccia rossa invece che
verde. Anche ridimensionare gli oggetti del pannello frontale, nascondere
parti del pannello frontale e aggiungere cursori al grafico pu essere fatto
da programma utilizzando i Nodi Propriet.
I Nodi Propriet in LabVIEW sono molto potenti e consentono molti
utilizzi. Questo corso copre solo un utilizzo dei Nodi Propriet per
modificare da programma laspetto e le caratteristiche funzionali degli
oggetti del pannello frontale. Potete impostare propriet come i colori del
display, la visibilit, la posizione, le dimensioni, il lampeggiamento, le
stringhe di menu, le scale dei grafici, i cursori dei grafici e molto altro.
Fate riferimento a HelpContents and Index in LabVIEW per ulteriori
informazioni sui Nodi Propriet.

Creazione di Nodi Propriet


Create Nodi Propriet selezionando lopzione CreateProperty Node dal
menu rapido di un oggetto del pannello frontale o dal suo terminale sullo
schema a blocchi. Selezionando CreateProperty Node si crea un nuovo
nodo sullo schema a blocchi vicino al terminale delloggetto. Se loggetto
ha una propria etichetta, il Nodo Propriet ha la stessa etichetta. Potete
modificare letichetta dopo aver creato il nodo. Potete creare un qualsiasi
numero di Nodi Propriet per un oggetto del pannello frontale.
Siccome ci sono molte propriet differenti per gli oggetti del pannello
frontale, copriremo soltanto le propriet comuni. Selezionate
HelpContents and Index per trovare informazioni su una propriet
particolare.

Utilizzo dei Nodi Propriet


Quando create un Nodo Propriet, esso inizialmente possiede un
terminale che rappresenta una propriet che potete modificare per
loggetto corrispondente del pannello frontale. Utilizzando questo
terminale sul Nodo Propriet, potete sia impostare (scrivere) la propriet
che leggere lo stato corrente di quella propriet.
Per esempio, se create un Nodo Propriet per un controllo digitale, esso
appare sullo schema a blocchi con la propriet Visible mostrata nel suo
terminale. Una piccola freccia appare sul lato destro di quel terminale, ad
indicare che potete leggere un valore dalla propriet Visible del controllo
digitale.

LabVIEW Corso Base II

2-24

National Instruments Corporation

Lezione 2

Progettazione di pannelli frontali

Potete modificarla in una propriet di scrittura cliccando con il tasto


destro del mouse sul nodo e selezionando Change To Write dal menu
rapido. Collegando un FALSE booleano a quel terminale si provocher la
sparizione del controllo digitale dal pannello frontale quando il Nodo
Propriet riceve i dati. Collegando un TRUE si determina la ricomparsa
del controllo.

Potete leggere lo stato corrente di una propriet cliccando con il tasto


destro del mouse sul terminale Nodo Propriet e selezionando Change To
Read. Quando viene chiamato il Nodo Propriet, porr in uscita un
booleano TRUE se il controllo visibile o un booleano FALSE se
invisibile.
Dal terminale sul Nodo Propriet, potete selezionare le propriet
cliccando sul nodo con lo strumento Modifica, mostrato a sinistra, e
selezionando la propriet desiderata dal menu rapido.
Potete leggere o impostare pi di una propriet sullo stesso nodo
allargando il Nodo Propriet. Utilizzando lo strumento Posiziona,
mostrato a sinistra, cliccate sullangolo inferiore del Nodo Propriet e
trascinate langolo verso il basso per allargare il nodo. Quando allargate il
nodo, aggiungete terminali. Potete quindi associare ogni terminale del
Nodo Propriet con una propriet dal suo menu rapido.

Alcune propriet sono cluster. Questi cluster contengono diverse propriet


che voi potete separare utilizzando la funzione Unbundle che si trova
nella palette FunctionsCluster. Per scrivere su queste propriet
necessaria la funzione Bundle:

Lettura di propriet raggruppate

Scrittura di propriet raggruppate

National Instruments Corporation

2-25

LabVIEW Corso Base II

Lezione 2

Progettazione di pannelli frontali

Per accedere alle propriet raggruppate, selezionate lopzione All


Elements dal menu rapido della propriet. Per esempio, potete accedere a
tutti gli elementi nella propriet Position selezionando PositionAll
Elements o potete accedere ad un singolo elemento da quel gruppo.

Ordine di esecuzione di Nodi Propriet


I terminali del Nodo Propriet vengono eseguiti dallalto verso il basso.
Nellesempio seguente, nel Nodo Propriet di un grafico di forme donda,
il grafico viene dapprima reso visibile. Quindi Plot 0 viene impostato
come traccia attiva, il suo colore rosso e il nome della traccia nella
legenda viene aggiornato. Infine, Plot 1 viene impostato come traccia
attiva, il suo colore il verde e il nome della traccia nella legenda viene
cambiato.

Ordine di
esecuzione

Utilizzo della finestra Context Help


Utilizzate la finestra di LabVIEW Context Help e HelpContents and
Index per trovare descrizioni, tipi di dati e valori accettabili per i Nodi
Propriet. Con la finestra di Context Help attiva, passate il cursore sopra i
terminali del Nodo Propriet per visualizzare informazioni. Lesempio
seguente mostra lhelp per una singola propriet ed un cluster con diverse
propriet.

LabVIEW Corso Base II

2-26

National Instruments Corporation

Lezione 2

Progettazione di pannelli frontali

Propriet comuni
Ci sono molte propriet disponibili in LabVIEW per i vari oggetti del
pannello frontale. Questa sezione descrive le propriet Visible, Disable,
Key Focus, Blink, Position, Bounds e Value, che sono comuni a tutti gli
oggetti del pannello frontale. Vengono inoltre introdotti alcuni Nodi
Propriet per alcuni tipi particolari di controlli e indicatori.

Propriet Visible
La propriet Visible, mostrata a sinistra, imposta o legge la visibilit di un
oggetto del pannello frontale. Loggetto associato visibile quando
TRUE, nascosto quando FALSE.
Esempio di collegamentoImpostate un controllo digitale su uno stato
invisibile. Un booleano TRUE rende visibile il controllo, come mostrato.
Schema a blocchi

Pannello frontale
Visible = TRUE

Visible = FALSE

Propriet Disabled
La propriet Disabled, mostrata a sinistra, imposta o legge lo stato di
accesso dellutente ad un oggetto. Un valore di 0 abilita un oggetto
affinch lutente possa lavorarci. Un valore di 1 disabilita loggetto,
impedendone il funzionamento. Un valore di 2 disabilita e fa diventare
grigio loggetto.
Esempio di collegamentoDisabilitate laccesso dellutente al controllo
digitale. Il controllo non cambia aspetto quando viene disabilitato.

National Instruments Corporation

2-27

LabVIEW Corso Base II

Lezione 2

Progettazione di pannelli frontali

Esempio di collegamentoDisabilitate laccesso dellutente al controllo e


fatelo diventare grigio

Propriet Key Focus


La propriet Key Focus, mostrata a sinistra, imposta o legge il key focus
di un oggetto del pannello frontale. Quando TRUE, il cursore attivo
nelloggetto associato. Nella maggior parte dei controlli, potete inserire
valori nel controllo digitandoli con la tastiera. Potete anche impostare il
key focus sul pannello frontale premendo il tasto <Tab> mentre si in
esecuzione o premendo il tasto associato al controllo (assegnato
utilizzando lopzione Key Navigation).
Esempio di collegamentoAttivate sul controllo digitale il key focus.
Potete allora inserire un nuovo valore nel controllo senza selezionarlo con
il cursore.

Propriet Blinking
La propriet Blinking, mostrata a sinistra, legge o imposta lo stato di
lampeggiamento di un oggetto. Impostando questa propriet su TRUE, un
oggetto inizier a lampeggiare. Potete impostare la frequenza di
lampeggiamento e i colori selezionando ToolsOptions e quindi Front
Panel e Colors dal menu a tendina. Quando questa propriet impostata
su FALSE, loggetto smette di lampeggiare.
Esempio di collegamentoAbilitate il lampeggiamento di un controllo
digitale.

1
1 Schema a blocchi

2
2 Pannello frontale:
Normale

3
3 Pannello frontale:
lampeggiante

Propriet Value
La propriet Value, mostrata a sinistra, legge o imposta il valore corrente
di un oggetto. Quando impostate la propriet Value in scrittura, essa
scrive il valore collegato alloggetto sia nel caso di un controllo che di un
indicatore.

LabVIEW Corso Base II

2-28

National Instruments Corporation

Lezione 2

Progettazione di pannelli frontali

Quando impostate la propriet Value in lettura, essa legge il valore


collegato alloggetto sia nel caso di un controllo che di un indicatore.
Lesempio seguente mostra un valore di pi greco scritto su un controllo
numerico e il valore allinterno di una stringa scritto su unaltra stringa.

Propriet Position
La propriet Position, mostrata a sinistra, imposta o legge la posizione
dellangolo superiore sinistro di un oggetto sul pannello frontale. La
posizione determinata in unit di pixel relative allangolo superiore
sinistro del panello frontale. Questa propriet consiste in un cluster di due
interi di tipo long senza segno. Il primo elemento nel cluster (Left) la
posizione del bordo sinistro del controllo relativamente al bordo sinistro
del pannello frontale, e il secondo elemento nel cluster (Top) la
posizione del bordo superiore del controllo relativamente al bordo
superiore del pannello frontale.
Esempio di collegamentoFate cambiare posizione al controllo digitale
sul pannello frontale.

National Instruments Corporation

2-29

LabVIEW Corso Base II

Lezione 2

Progettazione di pannelli frontali

Propriet Bounds
La propriet Bounds, mostrata a sinistra, legge i limiti di un oggetto sul
pannello frontale in unit di pixel. Il valore include il controllo e tutte le
sue parti, inclusa letichetta, la legenda, la scala e cos via. Questa
propriet consiste in un cluster di due interi di tipo long senza segno. Il
primo elemento nel cluster (Width) la larghezza delloggetto in pixel, e
il secondo (Height) laltezza delloggetto in pixel. Questa una propriet
di sola lettura. Essa non ridimensiona un controllo o un indicatore del
pannello frontale. Alcuni oggetti hanno altre propriet per il
ridimensionamento, come la propriet Plot Area Size per i grafici.
Esempio di collegamentoDeterminate i limiti di un controllo digitale.

Propriet Numeric: Format and Precision


La propriet Format and Precision, mostrata a sinistra, imposta o legge il
formato (tipo di notazione) e precisione (numero di cifre visualizzate
dopo il punto decimale) degli oggetti numerici del pannello frontale.
Lingresso un cluster di due interi di tipo long senza segno. Il primo
elemento imposta il formato e il secondo imposta la precisione. La
propriet Format pu assumere uno dei seguenti valori interi:
0 - Notazione decimale
1 - Notazione scientifica
2 - Notazione ingegneristica
3 - Notazione binaria
4 - Notazione ottale
5 - Notazione esadecimale
6 - Notazione tempo relativo
Esempio di collegamentoImpostate il formato del controllo digitale
sulla notazione scientifica e 4 cifre di precisione.

LabVIEW Corso Base II

2-30

National Instruments Corporation

Lezione 2

Progettazione di pannelli frontali

Propriet booleana: Strings [4]


La propriet Strings [4], mostrata a sinistra, imposta o legge le etichette
su un controllo booleano. Lingresso una matrice di quattro stringhe che
corrispondono agli stati False, True, True Tracking e False Tracking.
True and False: gli stati On e Off delloggetto booleano.
True e False Tracking: livelli di transizione temporanea tra stati
booleani. True Tracking lo stato di transizione quando loggetto
booleano passa da True a False. Il tracking si applica solo ad oggetti
booleani aventi le azioni meccaniche Switch When Released e Latch
When Released. Queste azioni meccaniche sono in uno stato
transizionale fino a quando rilasciate il mouse. Le stringhe di testo True
Tracking e False Tracking vengono visualizzate durante la
transizione.
Esempio di collegamentoImpostate le stringhe del display per il
controllo Switch sulle scelte Stop, Run, Stop? E Run?.

Propriet String: Display Style


La propriet Display Style, mostrata a sinistra, imposta o legge il display
di un controllo o indicatore di stringa. Un intero di tipo long senza segno
determina il modo del display.
0 - Normal Display
1 - \ Codes Display
2 - Password Display
3 - Hex Display

National Instruments Corporation

2-31

LabVIEW Corso Base II

Lezione 2

Progettazione di pannelli frontali

Esempio di collegamentoMostrate il testo nel controllo di stringa negli


altri modi.

LabVIEW Corso Base II

2-32

National Instruments Corporation

Lezione 2

Progettazione di pannelli frontali

Esercitazione 2-5 VI Property Node Exercise


Obiettivo:

Realizzare un VI che utilizzi i Nodi Propriet per modificare le caratteristiche


comuni degli oggetti del pannello frontale.
Realizzerete un VI che da programma modifica le propriet position,
disabled e color degli oggetti del pannello frontale.

Pannello Frontale

1. Aprite un nuovo VI e realizzate il pannello frontale mostrato sopra.

Schema a blocchi

National Instruments Corporation

2-33

LabVIEW Corso Base II

Lezione 2

Progettazione di pannelli frontali

2. Aprite e realizzate lo schema a blocchi mostrato precedentemente


utilizzando i componenti seguenti.
a. Inserite il ciclo While che si trova nella palette
FunctionsStructures. Questo determina lesecuzione del VI fino
a quando lutente preme il pulsante Stop. Cliccate con il tasto
destro del mouse sul terminale condizionale e selezionate Stop If
True.
b. Inserite la funzione Wait Until Next ms Multiple che si trova nella
palette FunctionsTime & Dialog. Questa funzione determina
lesecuzione del ciclo While una volta al secondo. Create la
costante cliccando con il tasto destro del mouse sul terminale
dingresso e selezionando CreateConstant.
c. Inserite la funzione Random Number (0-1) che si trova nella
palette FunctionsNumeric. Essa crea un numero casuale tra zero
e uno.
d. Inserite la funzione Multiply che si trova nella palette
FunctionsNumeric. Essa moltiplica due numeri e viene usata
qui per riportare il numero casuale tra 0 e 10.
e. Inserite la funzione Greater? che si trova nella palette
FunctionsComparison. Essa confronta due valori, in questo
caso il valore casuale e quello limite e fornisce True se il valore
casuale pi grande di quello limite. Altrimenti fornisce False.
f. Inserite la funzione Select che si trova nella palette
FunctionsComparison. Utilizzerete due di queste funzioni.
Questa funzione prende un ingresso booleano ed emette il valore
superiore se il booleano True e il valore inferiore se il booleano
False.
g. Inserite la costante Color Box che si trova nella palette
FunctionsNumericAdditional Numeric Constants. Questa
costante viene utilizzata per colorare gli oggetti del pannello
attraverso il Nodo Propriet. Avete bisogno di due di queste
costanti. Utilizzate lo strumento modifica per selezionare il colore
e rendere una rossa e laltra blu.
h. Create il Nodo Propriet per il Tank. Per creare questo nodo,
cliccate con il tasto destro del mouse sul terminale Tank e
dal menu rapido.
selezionate CreateProperty Node
Ridimensionate questo nodo trascinando langolo con lo
strumento Posiziona per mostrare tre terminali. Selezionate le
propriet indicate cliccando con il tasto destro del mouse su ogni
terminale e selezionando la voce dal menu Properties. Cliccate
con il tasto destro su quel nodo e selezionate Change All To
Write dal menu.
i. Inserite la funzione Bundle che si trova nella palette
FunctionsCluster. Questa funzione unisce le posizioni left e top
nella propriet Position del serbatoio.

LabVIEW Corso Base II

2-34

National Instruments Corporation

Lezione 2

Progettazione di pannelli frontali

j. Create il Nodo Propriet per il booleano. Per creare questo nodo,


cliccate con il tasto destro del mouse sul terminale Boolean e
selezionate CreateProperty Node dal menu rapido. Selezionate
la propriet Disabled cliccando con il tasto destro del mouse sul
terminale e selezionandola dal menu Properties. Cliccate con il
tasto destro su quel nodo e selezionate Change To Write dal
menu rapido.
k. Create il Nodo Propriet per la stringa. Per creare questo nodo,
cliccate con il tasto destro del mouse sul terminale String e
selezionate CreateProperty Node dal menu rapido. Selezionate
la propriet Disabled cliccando con il tasto destro del mouse sul
terminale e selezionandola dal menu Properties. Cliccate con il
tasto destro su quel nodo e selezionate Change To Write dal
menu rapido.
l. Create il Nodo Propriet per il limite. Per creare questo nodo,
cliccate con il tasto destro del mouse sul terminale Limit e
selezionate CreateProperty Node dal menu rapido. Selezionate
la propriet Disabled cliccando con il tasto destro del mouse sul
terminale e selezionandola dal menu Properties. Cliccate con il
tasto destro su quel nodo e selezionate Change To Write dal
menu rapido.
m. Create il Nodo Propriet per la posizione verticale del serbatoio.
Per creare questo nodo, cliccate con il tasto destro del mouse sul
terminale Tank Vertical Position e selezionate CreateProperty
Node dal menu rapido. Selezionate la propriet Disabled
cliccando con il tasto destro del mouse sul terminale e
selezionandola dal menu Properties. Cliccate con il tasto destro
su quel nodo e selezionate Change To Write dal menu rapido.
n. Create il Nodo Propriet per la posizione orizzontale del serbatoio.
Per creare questo nodo, cliccate con il tasto destro del mouse sul
terminale
Tank
Horizontal
Position
e
selezionate
CreateProperty Node dal menu rapido. Selezionate la propriet
Disabled cliccando con il tasto destro del mouse sul terminale e
selezionandola dal menu Properties. Cliccate con il tasto destro
su quel nodo e selezionate Change To Write dal menu rapido
3. Salvate questo VI come Property Node Exercise.vi.
4. Tornate al pannello frontale ed avviate il VI. Dovrebbero succedere
molte cose.
5. Innanzitutto quando nuovi numeri casuali vengono generati e scritti
sul serbatoio, il colore di riempimento rosso se il numero casuale
pi grande del valore limite e diventa blu se inferiore.
6. I due cursori cambiano la posizione del serbatoio sul pannello.
Spostateli e vedete come si sposta il serbatoio.

National Instruments Corporation

2-35

LabVIEW Corso Base II

Lezione 2

Progettazione di pannelli frontali

7. Linterruttore Disable controlla se potete modificare i valori. Portate


linterruttore Disable su True e tutti gli oggetti del pannello eccetto
Disable e il pulsante Stop diventano grigi e non potete modificarne i
valori.
8. Arrestate e chiudete il VI quando avete finito.

Fine dellesercitazione 2-5

LabVIEW Corso Base II

2-36

National Instruments Corporation

Lezione 2

Progettazione di pannelli frontali

D. Propriet dei grafici


I Nodi Propriet aumentano notevolmente la flessibilit da programma dei
grafici. Potete controllare la maggior parte delle caratteristiche dei grafici
con i Nodi Propriet. Alcune di queste propriet sono il colore della
traccia, informazioni sulle scale X e Y, la visibilit delle legende e della
palette, le dimensioni dellarea di rappresentazione e i cursori.

Legenda della
rappresentazione

Palette del grafico

Legenda delle scale

Legende dei cursori

Potete avere molte opzioni di scala per i grafici. Con i Nodi Propriet,
potete impostare o leggere le informazioni di scala per le X e le Y. Per
ogni asse il VI pu leggere o impostare i valori minimo, massimo e di
incremento.
Potete anche utilizzare i Nodi Propriet per impostare o leggere da
programma i colori della traccia e dello sfondo e i colori della griglia X e
Y. Potete utilizzare questa possibilit per impostare i colori della traccia e
dello sfondo in funzione delle condizioni del programma come ad
esempio valori out of range o di errore.
Per cambiare le dimensioni di un grafico, utilizzate la propriet Plot
AreaSize. Se volete che una traccia particolare appaia in una piccola
finestra durante unapplicazione ma appaia pi grande pi avanti, potete
utilizzare questa propriet insieme con altre propriet che modificano le
dimensioni di un pannello di VI.
Utilizzando i Nodi Propriet, avete accesso alle informazioni che i cursori
forniscono sui grafici. Utilizzate i cursori per spostare un selettore di
grafico sulla traccia. Un cursore pu essere bloccato sulla traccia o pu
muoversi sulla superficie di rappresentazione. I valori provenienti da
ciascun cursore vengono forniti su un display opzionale del pannello
frontale.

National Instruments Corporation

2-37

LabVIEW Corso Base II

Lezione 2

Progettazione di pannelli frontali

I Nodi Propriet offrono un modo per impostare o leggere da programma


la posizione del cursore sul grafico, consentendo allutente un accesso dai
cursori del VI.

Propriet X (o Y) Range
La propriet X (o Y) Range, mostrata a sinistra, imposta o legge
lintervallo e lincremento degli assi del grafico. La propriet accetta un
cluster di cinque valori numerici, in funzione del tipo di grafico: valore
minimo dellasse X, valore massimo dellasse X, incrementi maggiori e
minori tra i marcatori dellasse X e il valore di inizio della scala. Per
creare questa propriet, selezionate X ScaleRangeAll Elements
dallelenco delle propriet. Se non c abbastanza spazio per visualizzare
tutti i valori incrementali che avete specificato, LabVIEW selezioner un
valore incrementale alternativo.
Esempio di collegamentoImpostate lintervallo dellasse X tra 0 e 50
con lincremento maggiore dellasse di 10, quello minimo di 1 e un valore
iniziale di zero.

Propriet Active Plot e Plot Color


Le propriet mostrate a sinistra impostano o leggono la traccia attiva (la
traccia per cui le propriet relative vengono impostate o lette) e il colore
della traccia attiva. Active Plot un intero corrispondente alla traccia
desiderata e Plot Color un intero che rappresenta un colore. La propriet
Plot Color si trova in PlotPlot Color dallelenco delle propriet.
Esempio di collegamentoImpostate il colore della traccia attiva
utilizzando una costante Color Box (impostata sul rosso in questo
esempio). Quando selezionate la traccia attiva, il terminale Active Plot
deve precedere (appare prima) il terminale Plot Color.

LabVIEW Corso Base II

2-38

National Instruments Corporation

Lezione 2

Progettazione di pannelli frontali

Propriet Active Cursor, Cursor Position e Cursor Index


Le propriet mostrate a sinistra impostano o leggono il cursore attivo, la
sua posizione nel grafico e lindice (posizione dellasse X) nella traccia in
cui risiede il cursore. La propriet Active Cursor accetta un intero
corrispondente al cursore desiderato quando c pi di un cursore sul
grafico.
Cursor Position consiste in un cluster di due numeri a virgola mobile che
rappresentano le posizioni X e Y sulla traccia. Per creare la propriet
Cursor Position, selezionate CursorCursor PositionAll Elements.
Cursor Index accetta un intero corrispondente ad un elemento nella
matrice (traccia). Per accedere alla propriet Cursor Index, selezionate
CursorCursor Index.
Esempio di collegamentoInserite un cursore nella posizione (55.5,
34.8). Quando selezionate il cursore, il terminale Active Cursor deve
precedere il terminale Cursor Position. Siccome il nodo viene eseguito
dallalto verso il basso, potete impostare unaltra posizione di cursore
aggiungendo un altro insieme di propriet Active Cursor e Cursor
Position a questo nodo.

Plot AreaSize Property


Per leggere o modificare le dimensioni di un grafico, inviate nuovi valori
di Width e Height alla propriet Plot Area Size. Width e Height sono
espressi in pixel.
Esempio di collegamentoRidimensionate un grafico per aumentare del
25% laltezza e la larghezza.

Dopo lesecuzione
Prima dellesecuzione

National Instruments Corporation

2-39

LabVIEW Corso Base II

Lezione 2

Progettazione di pannelli frontali

Esercitazione 2-6 VI Temperature Limit


Obiettivo:

Creare un VI che utilizzi i Nodi Propriet per cancellare un grafico e avvisare


lutente se i dati superano un limite.
Completerete la realizzazione di un VI che utilizza i Nodi Propriet per
eseguire le azioni seguenti:
y

Impostare il valore delta X del grafico sulla frequenza di


campionamento in secondi.

Cancellare il grafico affinch inizialmente non contenga dati.

Modificare il colore di una traccia se i dati superano un certo valore.

Far lampeggiare un indicatore di allarme se i dati superano un certo


valore.

Pannello frontale

1. Aprite il VI Temperature Limit che si trova nella directory


c:\exercises\LV Basics 2. Il pannello frontale e parte dello
schema a blocchi sono gi stati realizzati.

LabVIEW Corso Base II

2-40

National Instruments Corporation

Lezione 2

Progettazione di pannelli frontali

Schema a blocchi

2. Modificate il VI in maniera tale che imposti il valore delta X sulla


frequenza di campionamento e cancelli il grafico della temperatura
prima dellavvio. Mentre il VI acquisisce i dati, la linea High Limit
dovrebbe diventare rossa quando la temperatura supera il valore limite
e il LED Out of Range dovrebbe lampeggiare.
a. Nella struttura Sequence, create un Nodo Propriet per il grafico
Temperature che ha due terminali. Un terminale dovrebbe essere
la
propriet
multiplier,
X
ScaleOffset
and
MultiplierMultiplier e laltro terminale dovrebbe essere la
propriet History Data. Per cancellare un grafico dallo schema a
blocchi, inviate una matrice di dati vuota alla propriet History
Data. Per fare questo, cliccate con il tasto destro del mouse sulla
propriet e selezionate CreateConstant. Assicuratevi che la
costante della matrice sia vuota.
b. Nella struttura Case allinterno del ciclo While, create un Nodo
Propriet per il grafico di temperatura che abbia due terminali. Il
terminale superiore dovrebbe essere la propriet Active Plot e
quello inferiore la propriet Plot Color, PlotPlot Color. Avete
bisogno di queste propriet in entrambe le condizioni della
struttura Case. La traccia High Limit plot 1, quindi impostate la
propriet Active Plot su uno prima di impostare la propriet Plot
Color. Se i dati superano High Limit, impostate il colore su rosso.
Altrimenti su giallo. Utilizzate una costante Color Box per inviare
il valore del colore su questa propriet.
c. Cliccate con il tasto destro sullindicatore Out of Range per creare
un Nodo Propriet Blink. Lindicatore dovrebbe lampeggiare
quando la temperatura supera High Limit.

National Instruments Corporation

2-41

LabVIEW Corso Base II

Lezione 2

Progettazione di pannelli frontali

3. Salvate il VI con lo stesso nome.


4. Avviate il VI per avere conferma che funziona correttamente.

Fine dellesercitazione 2-6

LabVIEW Corso Base II

2-42

National Instruments Corporation

Lezione 2

Progettazione di pannelli frontali

Esercitazione 2-7 VI Analyze & Present Data


Obiettivo: Utilizzare i Nodi Propriet con i cursori dei grafici.

Creerete un VI che utilizza i cursori del grafico per selezionare un


sottoinsieme di dati per lanalisi. In un esercizio successivo realizzerete
un subVI che salva i risultati su disco. Utilizzerete anche la propriet
Value per inizializzare un indicatore.
Nota Utilizzerete questo VI nel progetto della Lezione 5.

Pannello frontale

1. Aprite il VI Analyze & Present Data che si trova nella directory


c:\exercises\LV Basics 2. Il pannello frontale di questo VI
gi realizzato. Voi completerete lo schema a blocchi.
Utilizzerete i due cursori indicati per selezionare un sottoinsieme di
dati da analizzare. Un cursore pu muoversi liberamente o pu essere
bloccato sulla traccia. Potete controllare questa azione utilizzando il
pulsante Lock Control che si trova sul lato destro del display del
cursore.
Movimento vincolato sui punti della traccia.
Movimento libero nellarea di rappresentazione.
In questa esercitazione, utilizzate i cursori vincolati sulla traccia.
Utilizzate i Nodi Propriet per impostare inizialmente gli indici del
cursore allinizio e alla fine della matrice di dati quando si avvia il VI.
Quando un utente clicca sul pulsante Analyze Selected Subset,
leggete la posizione di ogni cursore e utilizzate questa informazione
per trovare i valori DC, RMS, di frequenza, di ampiezza e di fase del
sottoinsieme di dati.

National Instruments Corporation

2-43

LabVIEW Corso Base II

Lezione 2

Progettazione di pannelli frontali

Schema a blocchi

2. Completate lo schema a blocchi precedente.


Per creare i Nodi Propriet, cliccate con il tasto destro del mouse sui
terminali Data e Analysis Result e selezionate CreateProperty
Node dal menu rapido. Utilizzate lo strumento Posiziona per
ridimensionare il Nodo Propriet affinch abbia un numero sufficiente
di terminali. Potete scegliere la propriet cliccando con il tasto destro
del mouse sul nodo creato per ultimo e selezionando la propriet dal
menu Propriet. La propriet Cursor Index si trova in
CursorCursor Index.
Inserite la funzione Array Subset che si trova nella palette
FunctionsArray. In questa esercitazione, questa funzione estrae
linsieme di dati da analizzare.
Inserite la funzione Max & Min che si trova nella palette
FunctionsComparison. In questa esercitazione, questa funzione
determina il primo e lultimo indice per trovare il sottoinsieme di dati
da analizzare.

LabVIEW Corso Base II

2-44

National Instruments Corporation

Lezione 2

Progettazione di pannelli frontali

Inserite il VI Basic Averaged DC-RMS che si trova nella palette


FunctionsAnalyzeWaveforms Measurements. Il VI prende la
forma donda dingresso e calcola i valori DC e RMS.
Inserite il VI Extract Single Tone Information che si trova nella
palette FunctionsAnalyzeWaveforms Measurements. Il VI
prende la forma donda dingresso, calcola la risposta in frequenza e
fornisce un singolo tono relativo allampiezza superiore. LabVIEW
fornisce lampiezza, la frequenza e i valori di fase di quel singolo
tono.
3. Salvate il VI con lo stesso nome.
4. Avviate il VI. Spostate i cursori lungo il grafico per selezionare un
sottoinsieme di dati da analizzare e quindi cliccate sul pulsante
Analyze Selected Subset. Il risultato appare nel cluster Analysis
Results. Quando avete finito, cliccate sul pulsante Return.
5. Chiudete il VI quando avete finito.

Fine dellesercitazione 2-7

National Instruments Corporation

2-45

LabVIEW Corso Base II

Lezione 2

Progettazione di pannelli frontali

E. Riferimenti al controllo
Nelle due sezioni precedenti avete utilizzato i Nodi Propriet per
modificare da programma le caratteristiche degli oggetti del pannello
frontale. Se state realizzando un grande VI che contiene molti Nodi
Propriet o state utilizzando la stessa propriet per diversi controlli e
indicatori, potreste anche pensare di inserire il Nodo Propriet in un
subVI ed utilizzare i riferimenti al controllo per accedere a quel nodo. Un
Control Reference un numero riferito ad un controllo specifico. Questa
sezione mostra solo un modo di utilizzo di questi oggetti versatili. Fate
riferimento ai manuali in LabVIEW per ulteriori informazioni sui
riferimenti al controllo.

Creazione di riferimenti al controllo


Create un riferimento al controllo per un oggetto del pannello frontale sia
cliccando con il tasto destro del mouse sulloggetto sia sul terminale di
quelloggetto e selezionando CreateReference dal menu rapido.
Quindi collegate questo Control Reference ad un subVI che contiene i
Nodi Propriet. Comunque, il subVI deve contenere un terminale che sia
Control Refnum. Create il Control Refnum selezionando
ControlsRefnum come segue.

Utilizzo dei riferimenti al controllo


Lo schema a blocchi seguente del subVI mostra come potete utilizzare un
riferimento al controllo per impostare molte delle propriet di un oggetto
del pannello frontale.

I Nodi Propriet utilizzano cluster di errore come molte delle funzioni di


I/O in LabVIEW e quindi potete utilizzare i sistemi di gestione dellerrore
per tenere traccia delle condizioni di errore. Il VI che chiama questo
subVI pu utilizzarlo per modificare le propriet di ogni tipo di controllo.
Lesempio seguente mostra il subVI che disabilita un numerico e imposta
un oggetto booleano come key focus.

LabVIEW Corso Base II

2-46

National Instruments Corporation

Lezione 2

Progettazione di pannelli frontali

Pi avanti realizzerete un subVI che modifica la propriet disabled per


una matrice di controlli utilizzando i riferimenti al controllo.

National Instruments Corporation

2-47

LabVIEW Corso Base II

Lezione 2

Progettazione di pannelli frontali

Esercitazione 2-8 VI Disable Controls e Control Refs Example


Obiettivo:

Realizzare un VI che utilizzi i riferimenti al controllo per accedere ai Nodi


Propriet da un sub VI.
Inizierete con il VI Property Node Exercise che avete realizzato
nellesercitazione 2-5. Costruirete un subVI che accede ad una matrice di
riferimenti di controllo ed assegna la propriet Disabled. Quindi
modificherete il VI Property Node Exercise per utilizzare il subVI
piuttosto che i Nodi Propriet originali.

Nota Utilizzerete questo VI nel progetto della Lezione 5.

Pannello frontale

1. Aprite un nuovo VI e realizzate il pannello frontale precedente.


Schema a blocchi

2. Aprite e costruite lo schema a blocchi precedente utilizzando i


componenti seguenti:
a. Inserite un ciclo For che si trova nella palette
FunctionsStructures. Il ciclo For viene utilizzato per
lautoindicizzazione attraverso la matrice di refnum di controllo in
maniera tale che ogni refnum e propriet sia gestito separatamente.
b. Inserite un Nodo Propriet che si trova nella palette
FunctionsApplication Control. Utilizzerete questo Nodo
Propriet come controllo generico. Quando collegate il Refnum
Array al terminale di ingresso di refnum, la funzione cambia
leggermente come si vede dallesempio seguente:

LabVIEW Corso Base II

2-48

National Instruments Corporation

Lezione 2

Progettazione di pannelli frontali

c. Cliccate con il tasto destro del mouse sul terminale Property e


selezionate PropertiesDisabled. Cliccate nuovamente con il
tasto destro sul terminale e selezionate Change To Write.
d. Inserite la funzione Select che si trova nella palette
FunctionsComparison. Questa funzione accetta un ingresso
booleano ed emette un valore superiore di 0 (enabled) se il
booleano True e un valore inferiore di 2 (disabled) se il booleano
False.
e. Inserite una costante numerica che si trova nella palette
FunctionsNumeric. Avete bisogno di due di queste costanti una
con il valore di 0 e laltra di 2 per la funzione Select.
3. Salvate il VI come Disabled Controls.vi.
4. Tornate al pannello frontale. Ora realizzerete per il VI unicona e il
riquadro connettori come mostrato di seguito.

5. Salvate e chiudete questo VI. Ora realizzerete un VI chiamante per


questo subVI.

6. Aprite il VI Property Node Exercise che avete realizzato


nellesercitazione 2-5. Non modificate il pannello frontale.
7. Selezionate FileSave As e rinominate questo VI Control Refs
Exercise.vi.

National Instruments Corporation

2-49

LabVIEW Corso Base II

Lezione 2

Progettazione di pannelli frontali

8. Aprite lo schema a blocchi e modificatelo come indicato.


a. Create i riferimenti di controllo per i sei controlli cliccando con il
tasto destro del mouse sui loro terminali e selezionando
CreateReference dal menu rapido.
b. Utilizzate la funzione Build Array che si trova nella palette
FunctionsArray per combinare tutti i riferimenti di controllo in
una matrice per passarla al subVI Disable Controls che si trova
nella palette FunctionsSelect A VI.
c. Avete bisogno anche della funzione Not che si trova nella palette
FunctionsBoolean per invertire il valore allingresso del subVI.
9. Salvate il VI.
10. Tornate al pannello frontale ed avviate il VI. Notate che quando
impostate il selettore su True, tutti i controlli diventano grigi come
prima.
11. Chiudete il VI quando avete finito.

Fine dellesercitazione 2-8

LabVIEW Corso Base II

2-50

National Instruments Corporation

Lezione 2

Progettazione di pannelli frontali

F. Menu run-time di LabVIEW (opzionale)


Potete personalizzare la barra dei menu per ogni VI che realizzate in
modo tale da avere un menu a tendina personalizzato mentre un VI in
esecuzione. Ci sono due parti che consentono la personalizzazione di
menula creazione di menu e la gestione di menu.
Potete realizzare menu personalizzati in due modistaticamente durante
la fase di creazione o dinamicamente durante lesecuzione. Potete
memorizzare staticamente un modello di menu in un file chiamato runtime menu (RTM). Potete associare un file RTM ad un VI durante la fase
di creazione. Quando un VI in esecuzione, esso carica il menu dal file
RTM associato. Potete anche inserire, cancellare e modificare da
programma le voci di menu in fase di esecuzione dallo schema a blocchi
utilizzando diverse funzioni di LabVIEW. Inoltre potete determinare da
programma se unopzione della barra dei menu selezionata e da
programma gestire la selezione. Con queste caratteristiche, potete
personalizzare un menu a tendina per la vostra applicazione.

Menu statici
I menu statici sono memorizzati in file RTM. Potete abilitare, creare o
modificare un file RTM per un VI selezionando EditRun-Time Menu.
Compare la finestra di dialogo Menu Editor.

Sul lato sinistro di questa finestra di dialogo compare lorganizzazione


generale delle voci di menu. Le voci di menu sono classificate in tre tipi:
User Item, Application Item o Separator.
Un User Item pu essere gestito da programma nello schema a blocchi.
Essa possiede un name, che la stringa che compare nel menu attuale, e
un tag, che un identificatore di stringa (non tiene conto di maiuscole o
minuscole). Un tag identifica uno User Item nello schema a blocchi.

National Instruments Corporation

2-51

LabVIEW Corso Base II

Lezione 2

Progettazione di pannelli frontali

Per semplicit, in fase di creazione, quando inserite il nome, viene copiato


nel tag. Comunque, potete sempre modificare il tag per renderlo
differente dal nome. Perch una voce di menu sia valida, il suo tag non
dovrebbe essere vuoto. Le voci di menu non valide appaiono come ???.
Un Application Item viene fornito da LabVIEW. Queste voci fanno parte
del menu di default di LabVIEW. Per selezionare una voce particolare di
LabVIEW, cliccate sul pulsante a freccia vicino a Item Name. Potete
aggiungere voci singole o interi sottomenu utilizzando questo processo.
Gli Application Items vengono gestiti in modo implicito da LabVIEW.
Questi tag di voci non compaiono nello schema a blocchi. Non potete
alterare il nome, il tag o altre propriet di un Application Item. LabVIEW
riserva dei tag che iniziano con APP_ per gli Application Item.
Un Separator inserisce una linea di separazione nel menu. Non potete
impostare tutte le propriet per una voce Separator.
Il Menu Editor garantisce che un tag sia unico per una data gerarchia di
menu aggiungendo dei numeri, se necessario. Uno User Item pu essere
abilitato/disabilitato o verificato/non verificato impostando le propriet
relative. Potete impostare una combinazione rapida di tasti (acceleratore)
per uno User Item, selezionando unopportuna combinazione di tasti.
Il Menu Editor vi consente di inserire, cancellare o riordinare delle voci
di menu nella gerarchia dei menu. Cliccando sul pulsante + si aggiunge
una nuova voce di menu. Potete anche modificare il tipo di voce di menu
selezionandola da Item Type. Inoltre potete riordinare le voci di menu e
creare sottomenu utilizzando i pulsanti a freccia. Infine, cliccando sul
pulsante Delete Item si cancellano le voci di menu selezionate.
La parte di anteprima del Menu Editor fornisce una vista aggiornata del
menu run-time. Sul menu a tendina Menu Editor, i pulsanti Open, New,
Save e Save As vi consentono di caricare e salvare file RTM. Una volta
che avete chiuso il Menu Editor, avete la possibilit di aggiornare i menu
run-time dei VI con il menu che avete creato.

Menu dinamici
Mentre un VI in esecuzione, potete modificare le voci della barra dei
menu del VI utilizzando le funzioni di gestione dei menu descritte nella
sezione seguente. Tutte queste
funzioni si trovano
in
FunctionsApplication ControlMenu. Queste funzioni operano su un
refnum del menu ricavato utilizzando la funzione Current VIs Menu.

LabVIEW Corso Base II

2-52

National Instruments Corporation

Lezione 2

Progettazione di pannelli frontali

Insert Menu Items

Inserisce una voce di menu (o una matrice di voci di menu) individuata da


item names o item tags in un menu (barra dei menu o sottomenu). La
posizione della voce viene specificata sia attraverso il parametro after
item che attraverso una combinazione della coppia menu tag e after
item.

Delete Menu Items

Cancella una voce di menu (o una matrice di voci di menu) individuata da


items in un menu individuato da menu tag (dalla barra dei menu, se non
viene specificato menu tag). Items pu essere un tag, una matrice di tag,
un numero di posizione o una matrice di numeri di posizione.

Get Menu Item Info

Fornisce le propriet della voce di menu definita attraverso item tag (o


menubar se item tag non specificato). Le propriet comprendono item
name, enabled, checked e shortcut. Se la voce ha un sottomenu
collegato, i suoi tag vengono forniti in submenu tags.

National Instruments Corporation

2-53

LabVIEW Corso Base II

Lezione 2

Progettazione di pannelli frontali

Set Menu Item Info

Imposta le propriet della voce di menu individuata da item tag. Le


propriet della voce comprendono item name, enabled, checked e
shortcut. Le propriet non collegate rimangono invariate.

Get Menu Shortcut Info

Fornisce la voce di menu che accessibile tramite una certa


combinazione rapida.

Gestione di Menu Selection


Le funzioni Menu Selection gestiscono le vostre selezioni di menu. I
menu potrebbero essere stati costruiti staticamente in VI Properties o
dinamicamente durante lesecuzione. Per impostare lo schema a blocchi
affinch gestisca le selezioni di menu, prendete il controllo sul processo
di selezione dei menu con la funzione Get Menu Selection. Mentre il VI
controlla la selezione dei menu, aspetta una voce di menu selezionata
utilizzando la stessa funzione, Get Menu Selection. Tutte le voci di menu
in LabVIEW sono gestite in maniera implicita da LabVIEWsolo le
selezioni del menu utente vengono ottenute attraverso Get Menu
Selection.
Una volta che avete selezionato una voce, non potete selezionarne
unaltra finch la funzione Get Menu Selection non ha letto la prima voce.
In tali condizioni, Get Menu Selection viene chiamata in modalit blocco
menu, in cui il tracciamento del menu viene bloccato dopo che stata
letta una selezione. Il menu viene abilitato dopo che avete processato la
selezione utilizzando la funzione Enable Menu Tracking.

Current VIs Menubar

Fornisce il refnum menubar del VI corrente. Questa funzione devessere


eseguita prima che siano richiamate altre funzioni di gestione dei menu.

LabVIEW Corso Base II

2-54

National Instruments Corporation

Lezione 2

Progettazione di pannelli frontali

Get Menu Selection

Fornisce item tag dellultima voce di menu selezionata, opzionalmente


aspettando un periodo di tempo specificato da timeout. Item path una
stringa che descrive la posizione della voce nella gerarchia dei menu. La
selezione dei menu viene bloccata dopo che una voce stata letta se
block menu viene impostato su TRUE.

Enable Menu Tracking

Questa funzione abilita o disabilita il tracciamento dei menu. Una volta


che un menu stato bloccato utilizzando la funzione Get Menu Selection,
devessere eseguito Enable Menu Tracking per riabilitare il menu a
tendina.

National Instruments Corporation

2-55

LabVIEW Corso Base II

Lezione 2

Progettazione di pannelli frontali

Esercitazione 2-9 VI Pull-down Menu (Opzionale)


Obiettivo: Realizzare un VI utilizzando un menu run-time personalizzato.

Questo VI illustra come modificare e controllare da programma un menu


personalizzato in unapplicazione in LabVIEW.
1. Aprite il VI Pull-down Menu che si trova in c:\exercises\LV
Basics 2. Il pannello frontale e lo schema a blocchi sono
parzialmente completi. Realizzerete un menu run-time personalizzato
per questo VI utilizzando il Menu Editor e completerete lo schema a
blocchi in maniera tale da poter accedere a questo menu.
2. Selezionate EditRun-Time Menu per visualizzare la finestra di
dialogo Menu Editor.

Il menu run-time corrente per lapplicazione il menu di default di


LabVIEW. Nei prossimi passi sostituirete questo menu con un elenco
personalizzato di selezioni.
3. Modificate il controllo superiore di tipo ring in Menu Editor da
Default a Custom. Il menu elencato nella parte sinistra della finestra
di dialogo dovrebbe essere sostituito da ??? che rappresenta una
singola voce senza nome.
4. Nel controllo di tipo ring Item Type, selezionate Application
ItemOperateEntire Menu. Il menu di LabVIEW Operate
dovrebbe essere aggiunto al menu personalizzato. Le opzioni di
default in LabVIEW, cos come le selezioni che avete creato, possono
essere aggiunte ad un menu personalizzato.
Provate un momento a navigare nel menu Operate delleditor. Notate
che potete scegliere varie voci e aprire sottomenu utilizzando le icone
a triangolo. Quando selezionate singole voci del menu, il loro Item
Name e Item Tag appaiono nella finestra Item Properties delleditor.
Quando avete finito, chiudete il menu Operate cliccando sul triangolo
accanto allopzione Operate.

LabVIEW Corso Base II

2-56

National Instruments Corporation

Lezione 2

Progettazione di pannelli frontali

Ora dovreste vedere solo la voce Operate nellelenco dei menu.


5. Cliccate sul pulsante + nella barra degli strumenti di Menu Editor.
Nellelenco compare una nuova voce senza nome, ???. Quando questa
voce evidenziata, inserite Test nella propriet Item Name. Questa
voce di menu ora ha un nome e un tag Test.
6. Cliccate nuovamente sul pulsante + per aggiungere unaltra voce sotto
quella di Test. Cliccate sul pulsante con la freccia a destra e questa
opzione senza nome diventa una sotto-voce del menu Test. Digitate
Test 1 per questa nuova voce.
7. Aggiungete due nuove sotto-voci a Test chiamandole Test 2 e Test
3. La finestra di dialogo Menu Editor dovrebbe avere ora laspetto
seguente:

Nellarea Preview del Menu Editor, potete vedere come sar il menu
personalizzato durante lesecuzione.
8. Selezionate FileSave dalla finestra di dialogo Menu Editor. Salvate
il menu run-time come Menu Exercise.rtm nella directory
c:\exercises\LV Basics 2. Chiudete la finestra di dialogo
Menu Editor. Quando LabVIEW vi chiede se volete adottare come
menu run-time Menu Exercise.rtm selezionate Yes. Avete cos
configurato un menu a tendina personalizzato che sar richiamato
mentre il VI in esecuzione.

National Instruments Corporation

2-57

LabVIEW Corso Base II

Lezione 2

Progettazione di pannelli frontali

Schema a blocchi

9. Modificate lo schema a blocchi del VI e completatelo come mostrato


precedentemente.
a. Inserite la funzione Current VIs Menubar che si trova nella
palette FunctionsApplication ControlMenu. Questa funzione
fornisce un refnum per il menu a tendina del VI selezionato,
affinch possa essere utilizzato.
b. Inserite la funzione Get Menu Selection che si trova nella palette
FunctionsApplication ControlMenu. Ogni volta che viene
eseguito il ciclo While, la funzione Get Menu Selection fornisce
un Item Tag per ogni voce selezionata dallutente nel menu runtime. Se nessuna voce stata selezionata, Item Tag fornisce una
stringa vuota. Questa funzione configurata in maniera tale che
ogni volta che legge la barra dei menu, impedisce allutente di
effettuare unaltra scelta nel menu finch non viene eseguita
Enable Menu Tracking.
c. Inserite la funzione Enable Menu Tracking che si trova nella
palette FunctionsApplication ControlMenu. Questa funzione
abilita il menu a tendina, dopo che stato disabilitato dalla
funzione Get Menu Selection.
10. Salvate il VI ed avviatelo. Quando il VI in esecuzione, compare sul
pannello frontale il menu run-time personalizzato. Se selezionate una
delle voci presenti nel menu a tendina Test, il nome relativo compare
nellindicatore Item Tag e compare una finestra di dialogo con il
nome del test allinterno. A questo punto, se provate a selezionare
unaltra voce dal menu a tendina, noterete che il menu disabilitato
(ci causato dal parametro di blocco menu della funzione Get Menu
Selection). Se cliccate su OK nella finestra di dialogo, lindicatore
Item Tag viene cancellato e il menu abilitato nuovamente dalla
funzione Enable Menu Tracking.

LabVIEW Corso Base II

2-58

National Instruments Corporation

Lezione 2

Progettazione di pannelli frontali

Inoltre, notate che le voci del menu a tendina Operate non vengono
mostrate nella stringa Item Tagsolo le voci dellutente vengono
fornite dallopzione Get Menu Selection.
Per osservare il flusso del VI, potreste utilizzare lesecuzione
evidenziata e passo-passo ed esaminare lo schema a blocchi. Cliccate
su Stop del pannello frontale del VI per arrestare lesecuzione del
programma.
11. Utilizzando il Menu Editor, potete assegnare combinazioni rapide di
tasti alle voci che avete creato. Assegnate combinazioni rapide di tasti
alle opzioni di test secondo la tabella seguente:
Voce del Menu

Combinazione di
tasti per Windows

Combinazione di
tasti per
Macintosh

Test 1

<Ctrl-1>

<option-1>

Test 2

<Ctrl-2>

<option-2>

Test 3

<Ctrl-3>

<option-3>

Oltre alle impostazioni precedenti, su piattaforme Windows potete


assegnare alle voci di menu delle combinazioni con ALT. Ci si
realizza facendo precedere da un underscore la lettera del nome di
menu scelta per la combinazione. Per esempio, per assegnare ALT-X
ad una voce di menu chiamata Execute, date allopzione Execute un
Item Name di E_xecute. In questa esercitazione, assegnate ALT-T
allopzione Test del menu.
12. Salvate il menu con le assegnazioni rapide di tasti ed avviate il VI.
Ora dovreste essere in grado di utilizzare tali combinazioni di tasti al
posto del cursore, per selezionare le diverse opzioni di test.
13. Chiudete il VI.

Fine dellesercitazione 2-9

National Instruments Corporation

2-59

LabVIEW Corso Base II

Lezione 2

Progettazione di pannelli frontali

G. Diagrammi dintensit
I diagrammi dintensit sono estremamente utili per la visualizzazione di
dati campionati. Per esempio, i diagrammi funzionano meglio per la
visualizzazione del terreno, in cui lampiezza rappresenta laltitudine.
Inoltre, potete rappresentare dati di temperatura con i diagrammi
dintensit. Come per i grafici tipo chart e tipo graph, il diagramma
dintensit tipo chart rappresenta un display con scorrimento, mentre
quello tipo graph mostra un display fisso. Questi display accettano un
blocco dati e mappano ogni valore con un colore associato, con un
massimo di 256 colori disponibili.

Opzioni dei diagrammi dintensit


I display dei diagrammi dintensit tipo chart e tipo graph utilizzano
molte delle stesse opzioni delle loro controparti (grafici). Il pannello
frontale seguente mostra molte delle opzioni disponibili. I diagrammi
dintensit forniscono anche delle opzioni non disponibili negli altri tipi
di grafici. Siccome visualizzano un terzo valore (colore), disponibile
una scala dei colori. Potete utilizzare queste opzioni per impostare e
visualizzare lo schema di mappatura dei colori. Il grafico dintensit
aggiunge anche un terzo valore, il valore z, al display del cursore.

Scala dei colori


Asse Z

Asse Y

Palette del grafico

Asse X

Legenda della scala

Legenda del cursore

Per modificare il colore associato ad uno specifico valore dintensit,


cliccate con il tasto destro del mouse sul marcatore che compare accanto
alla scala dei colori e selezionate Marker Color dal menu. Compare la
palette dei colori, da cui potete selezionare un colore per associarlo con
un particolare valore numerico. Per aggiungere pi valori alla scala dei
colori, cliccate con il tasto destro del mouse su di essa e selezionate Add
Marker. Potete trascinare nellopportuna posizione della scala dei colori
il marcatore a bordo spesso che appare, o selezionare il marcatore con lo
strumento Testo e digitare la posizione del marcatore. Dopo che avete
inserito il marcatore in unopportuna posizione nella scala, cliccate con il
tasto destro del mouse su di esso e selezionate Marker Color.

LabVIEW Corso Base II

2-60

National Instruments Corporation

Lezione 2

Progettazione di pannelli frontali

Tipi di dati per i diagrammi di intensit


I diagrammi di intensit di tipo chart e di tipo graph accettano una matrice
bidimensionale di numeri. La posizione di ogni elemento nella matrice (i
suoi indici di riga e di colonna) corrisponde ai valori di X e di Y.
Lampiezza di ogni elemento della matrice corrisponde ad un colore.
Lesempio seguente mostra una matrice 4 x 3 rappresentata su un
diagramma di intensit. Notate come Intensity Graph trasponga gli
elementi della matrice.

National Instruments Corporation

2-61

LabVIEW Corso Base II

Lezione 2

Progettazione di pannelli frontali

Esercitazione 2-10 VI Intensity Graph Example


Obiettivo: Utilizzare un diagramma di intensit.

Utilizzerete un VI che visualizza dei dati di unonda dinterferenza su un


diagramma di intensit. Utilizzerete il VI anche per rappresentare una
matrice bidimensionale di dati sul grafico.
1. Aprite ed avviate il VI Intensity Graph Example che si trova nella
directory c:\exercises\LV Basics 2. Di default il VI
rappresenta una forma donda dinterferenza. Un Nodo Propriet sullo
schema a blocchi definisce lintervallo dei colori utilizzati nel
diagramma dintensit. Potete modificare lintervallo dei colori
aprendo lo schema a blocchi e modificando la costante Color Array.

2. Cambiate la posizione del selettore Plot sul pannello frontale,


portandola su User Data ed inserite i valori tra 0.0 e 10.0 nei controlli
della matrice User Data. Avviate il VI. Notate come lampiezza di
ogni elemento sia riportata sul grafico dintensit.

LabVIEW Corso Base II

2-62

National Instruments Corporation

Lezione 2

Progettazione di pannelli frontali

3. Chiudete il VI. Non salvate i cambiamenti.

Fine dellesercitazione 2-10

National Instruments Corporation

2-63

LabVIEW Corso Base II

Lezione 2

Progettazione di pannelli frontali

Sommario, trucchi e consigli

LabVIEW Corso Base II

Quando progettate interfacce utente, tenete presente: il numero di


oggetti nel pannello frontale, il colore, la spaziatura e lallineamento
degli oggetti, il testo e i font utilizzati.

LabVIEW possiede gli strumenti seguenti per aiutarvi a creare


interfacce utente: finestre di controllo, controlli tab, decorazioni,
menu e ridimensionamento automatico degli oggetti del pannello
frontale.

I pulsanti Latched Boolean in un cluster possono essere utilizzati per


realizzare menu per le applicazioni.

Potete convertire un cluster che contiene componenti con lo stesso


tipo di dato in una matrice e quindi utilizzare le funzioni delle matrici
per processare i componenti del cluster. La funzione Cluster To Array
(palette FunctionsCluster o FunctionsArray) converte un cluster
in una matrice monodimensionale.

I Nodi Propriet sono strumenti potenti per lampliamento delle


potenzialit dellinterfaccia utente. Utilizzate i Nodi Propriet per
modificare da programma laspetto e le caratteristiche funzionali dei
controlli e degli indicatori del pannello frontale.

Create Nodi Propriet dal menu rapido Create di un controllo o di un


indicatore (o di un terminale di un controllo o di un indicatore sullo
schema a blocchi).

Potete creare diversi terminali Nodi Propriet per un singolo oggetto


del pannello frontale, e cos potete configurare le propriet da diverse
posizioni nello schema a blocchi.

Potete impostare o leggere le propriet come laccesso dellutente


(enable, disable, gray out), i colori, la visibilit, la posizione e il
lampeggiamento.

I Nodi Propriet aumentano notevolmente la funzionalit dei grafici


cambiando le dimensioni delle rappresentazioni, regolando i valori
delle scale e azionando i cursori o leggendo da essi.

Utilizzate la finestra Context Help per saperne di pi sulle singole


propriet.

Potete utilizzare i riferimenti al controllo e i refnum per accedere ai


Nodi Propriet allinterno dei subVI.

Per creare i vostri menu run-time, selezionate EditRun-Time Menu


per visualizzare la finestra di dialogo Menu Editor.

Potete creare e leggere da programma menu run-time con le funzioni


presenti nella palette FunctionsApplication ControlMenu.

Potete utilizzare diagrammi di intensit per rappresentare dati


tridimensionali. La terza dimensione rappresentata da colori
differenti corrispondenti alla mappatura dei colori da voi definita.

2-64

National Instruments Corporation

Lezione 2

Progettazione di pannelli frontali

I diagrammi di intensit sono usati comunemente con lanalisi


spettrale, la visualizzazione di temperatura e lelaborazione delle
immagini.

National Instruments Corporation

2-65

LabVIEW Corso Base II

Lezione 2

Progettazione di pannelli frontali

Esercizi aggiuntivi

LabVIEW Corso Base II

2-11

Modificate lesercitazione 2-4 aggiungendo un cluster con quattro


pulsanti etichettati. Ogni volta che cliccate su un pulsante nel
nuovo cluster, decrementate il display di uno. Utilizzate il
pannello frontale come segue per iniziare. Salvate il VI come
Cluster Example 2.vi.

2-12

Realizzate un VI che modifichi un controllo di un pulsante sul


pannello frontale. Il pulsante dovrebbe controllare lesecuzione del
VI (cio terminare il ciclo While). Utilizzate un Dialog Ring per
selezionare le opzioni seguenti: pulsanti Enable e Show, pulsante
Disable, pulsante Grey out e pulsante Hide. Utilizzate i Nodi
Propriet per implementare le azioni che il Dialog Ring definisce.
Provate i diversi modi di funzionamento del pulsante mentre
provate ad arrestare il VI. Salvate il VI come Button Input.vi
quando avete finito.

2-13

Aprite il VI Analyze & Present Data che avete sviluppato


nellesercitazione 2-7 e modificate il VI in maniera tale che se il
numero di punti nel sottoinsieme sia un punto o meno, il pulsante
Log Results to File viene reso opaco.

2-66

National Instruments Corporation

Lezione 2

Progettazione di pannelli frontali

Note

National Instruments Corporation

2-67

LabVIEW Corso Base II

Lezione 2

Progettazione di pannelli frontali

Note

LabVIEW Corso Base II

2-68

National Instruments Corporation

Lezione 3
Tecniche di gestione dei dati
Questa lezione descrive come potete organizzare gli schemi a blocchi dei
vostri VI basandosi sul modo di trasferite i dati da un posto allaltro.
Innanzitutto vi verr ricordato come LabVIEW avvia un VI. Quindi
imparerete ad utilizzare i dati locali e globali per passare i dati fra i VI e
al loro interno e vi saranno forniti consigli per utilizzare questi dati in
maniera efficiente. Da ultimo imparerete ad utilizzare DataSocket per
passare i dati tra VI e computer.

Imparerete:
A. A conoscere le tecniche di gestione dei dati in LabVIEW
B. Ad utilizzare le variabili locali
C. Ad utilizzare le variabili globali
D. A conoscere qualche sistema di utilizzazione di variabili locali e
globali
E. Ad utilizzare DataSocket.

National Instruments Corporation

3-1

LabVIEW Corso Base II

Lezione 3

Tecniche di gestione dei dati

A. Tecniche di gestione dei dati in LabVIEW


La lezione precedente descriveva come realizzare linterfaccia utente o
pannello frontale di un VI. Questa lezione si concentra su alcune funzioni
dello schema a blocchi, come passare i dati tra i nodi e controllare
lordine di esecuzione.
Come gi sapete, il principio che governa lesecuzione di un programma
in LabVIEW viene chiamato a flusso di dati. Le regole del flusso di dati
sono:
y

Un nodo viene eseguito solo quando i dati sono disponibili a tutti i


suoi terminali dingresso.

Un nodo fornisce i dati a tutti i suoi terminali di uscita quando ha


completato lesecuzione.

I dati fluiscono attraverso i collegamenti istantaneamente.

Quindi uno schema a blocchi non viene eseguito dallalto verso il basso o
da sinistra a destra, ma secondo le regole del flusso di dati. Ci contrasta
con il metodo del controllo del flusso di esecuzione di un programma
convenzionale in cui le istruzioni vengono eseguite nella sequenza in cui
sono scritte.
I collegamenti sono la chiave per comprendere come il flusso di dati
opera in LabVIEW. Quando i fili sono direttamente collegati da un nodo
al successivo, lordine di esecuzione definito. Se non ci sono
collegamenti tra due nodi, allora quei nodi possono essere eseguiti
contemporaneamente. Se dovete eseguire quei due nodi in ordine, dovete
utilizzare una struttura Sequence o, se i nodi sono subVI, creare delle
dipendenze dei dati da programma come i cluster di errore per controllare
lesecuzione del programma.

Quando non potete usare collegamenti


I fili sono il metodo pi efficace per passare i dati da un nodo al
successivo quando utilizzate la programmazione a flusso di dati. Sullo
schema a blocchi i dati vengono trasferiti da una funzione o da un VI ad
un altro collegandoli con un filo. I dati allora fluiscono dal produttore al
consumatore.
Nodo
1

LabVIEW Corso Base II

3-2

Nodo
2

National Instruments Corporation

Lezione 3

Tecniche di gestione dei dati

Questo approccio non funziona se avete bisogno di scambiare dati tra


schemi a blocchi che operano in parallelo. Schemi a blocchi in parallelo
possono trovarsi in due cicli paralleli dello stesso schema a blocchi o in
due VI che sono richiamati senza che ci sia dipendenza nel flusso dei dati.
Considerate lo schema a blocchi seguente.

Nodo
1

Nodo
2

Questo schema a blocchi non esegue i due cicli in parallelo perch c un


collegamento tra i due subVI. Il collegamento crea una dipendenza dei
dati in cui il secondo ciclo non si avvia finch il primo non ha finito e
passa i dati attraverso il suo tunnel. Il solo modo di eseguire i due cicli
contemporaneamente di rimuovere il collegamento. Tuttavia i subVI
non possono scambiarsi dati a meno che non utilizziate unaltra tecnica di
gestione dei dati. Questa lezione descrive le variabili locali, le variabili
globali e DataSocket come metodi per passare i dati attraverso parti dello
stesso schema a blocchi e tra schemi a blocchi differenti.

National Instruments Corporation

3-3

LabVIEW Corso Base II

Lezione 3

Tecniche di gestione dei dati

B. Variabili locali
Fino ad ora, avete letto o aggiornato i dati da un oggetto del pannello
frontale utilizzando il suo terminale sullo schema a blocchi. Tuttavia un
oggetto del pannello frontale ha solo un terminale sullo schema a blocchi
e potreste aver bisogno di aggiornare o leggere un oggetto del pannello
frontale da diversi posti dello schema a blocchi. Utilizzando le variabili
locali, potete accedere ad oggetti del pannello frontale in diversi posti e
passare i dati attraverso strutture che non possono essere collegate da un
filo.

Creazione di variabili locali


Ci sono due modi per creare variabili locali sullo schema a blocchi. Se
avete gi creato un oggetto del pannello frontale, potete creare una
variabile locale cliccando con il tasto destro del mouse sulloggetto e
selezionando CreateLocal Variable dal menu rapido. Potete utilizzare
questo metodo sul pannello frontale o sullo schema a blocchi. Appare
unicona della variabile locale per loggetto del pannello frontale accanto
al terminale dello schema a blocchi. Quando cliccate con il tasto destro
del mouse sul terminale per creare una variabile locale, la variabile locale
si riferisce alloggetto su cui avete cliccato per creare licona.
Potete anche selezionare Local Variable dalla palette Structures. Sullo
schema a blocchi appare un nodo di variabile locale, mostrato a sinistra.
Potete selezionare loggetto del pannello frontale al quale volete accedere
cliccando con il tasto destro del mouse sul nodo della variabile e
selezionando un oggetto dal menu Select Item. Questo menu elenca le
etichette dei controlli e degli indicatori del pannello frontale. Per questo
motivo etichettate sempre i vostri controlli e indicatori del pannello
frontale con nomi descrittivi utilizzando le etichette.

Per esempio, se il primo oggetto che avete creato sul pannello frontale
etichettato come number in, appare licona di variabile locale mostrata a
sinistra. Dopo che avete inserito la variabile locale nello schema a
blocchi, potete selezionare loggetto del pannello frontale opportuno
cliccando sulla variabile con lo strumento Modifica o cliccando con il
tasto destro del mouse su di esso e selezionando loggetto del pannello
frontale dal menu Select Item.

LabVIEW Corso Base II

3-4

National Instruments Corporation

Lezione 3

Pannello frontale

Tecniche di gestione dei dati

Schema a blocchi

Read Local e Write Local


Potete leggere dati da una variabile locale oppure scriverci sopra. Dopo
che avete inserito la variabile locale nello schema a blocchi, dovete
decidere come utilizzarla.
Di default, una variabile locale assume di ricevere dati. Quindi, questo
tipo di variabile locale agisce come un indicatore ed una write local.
Quando scrivete nuovi dati nella variabile locale, il controllo o
lindicatore relativo del pannello frontale si aggiornano per prendere il
nuovo dato.
Potete modificare la configurazione di una variabile locale affinch agisca
come sorgente di dati o read local. Per fare questo, cliccate con il tasto
destro del mouse sulla variabile e selezionate Change To Read. Sullo
schema a blocchi, unicona read local si comporta proprio come un
controllo. Quando questo nodo viene eseguito sullo schema a blocchi, il
vostro programma legge i dati nel relativo controllo o indicatore del
pannello frontale.
Per trasformare una read local in write local, cliccate con il tasto destro
del mouse sulla variabile e selezionate Change To Write. La variabile
locale modificher la direzione dei dati per riceverli invece di fornirli.
Sullo schema a blocchi, potete distinguere visivamente i due tipi di
variabili locali proprio come distinguete i controlli dagli indicatori. Una
read local ha un bordo spesso, mettendo in evidenza che una sorgente di
dati, analogamente ad un controllo. Una write local ha un bordo sottile,
perch agisce come un ricevitore di dati, analogamente ad un indicatore.
Nella figura seguente, entrambe le variabili locali si riferiscono allo stesso
oggetto del pannello frontale.
Read Local

National Instruments Corporation

3-5

Write Local

LabVIEW Corso Base II

Lezione 3

Tecniche di gestione dei dati

Esempio di variabile locale


Come esempio che mostri quando potete aver bisogno di una variabile
locale, considerate come dovreste usare un singolo interruttore sul
pannello frontale per controllare due cicli While in parallelo. I due cicli
non sono collegati e vengono eseguiti contemporaneamente. Dapprima
studieremo due metodi errati che utilizzano un terminale per linterruttore
sullo schema a blocchi (Metodo 1 e Metodo 2). Quindi mostreremo come
una variabile locale risolva il problema (Metodo 3). Il pannello frontale di
questo VI di esempio appare di seguito.

Metodo 1 (errato)
Come primo tentativo, inseriamo il terminale di controllo dei cicli
allesterno di entrambi e colleghiamolo ad ogni terminale condizionale. In
questo caso, il terminale di controllo dei cicli viene letto una volta, prima
che ogni ciclo While inizi lesecuzione. Ricordiamo che questo accade
perch LabVIEW un linguaggio di programmazione a flusso di dati e lo
stato del controllo booleano costituisce un ingresso per entrambi i cicli.
Se viene passato un TRUE allinterno dei cicli, i cicli saranno
permanentemente in esecuzione. Spegnere linterruttore non arresta il VI
perch linterruttore non viene letto durante le iterazioni dei due cicli.
Questa soluzione non funziona.

Metodo 2 (errato)
Ora spostate il terminale di controllo dei cicli allinterno del ciclo 1
affinch venga letto ad ogni iterazione del ciclo 1. Sebbene il ciclo 1 si
arresti correttamente, c un problema in questo approccio. Il ciclo 2 non
va in esecuzione se non riceve i suoi dati dingresso.

LabVIEW Corso Base II

3-6

National Instruments Corporation

Lezione 3

Tecniche di gestione dei dati

Ricordate che il ciclo 1 non passa i dati allesterno se non viene arrestata
lesecuzione del ciclo. Quindi il ciclo 2 deve aspettare il valore finale del
controllo del ciclo, disponibile solo dopo che il ciclo 1 ha terminato.
Quindi i cicli non vengono eseguiti in parallelo. Inoltre il ciclo 2 viene
eseguito per una sola iterazione perch il suo terminale condizionale
riceve un valore di FALSE dallinterruttore di controllo nel ciclo 1.

Metodo 3 (corretto)
In questo esempio, il ciclo 1 nuovamente controllato dallinterruttore,
ma questa volta, il ciclo 2 legge una variabile locale associata
allinterruttore. Quando impostate linterruttore su FALSE sul pannello
frontale, il terminale dellinterruttore nel ciclo 1 scrive FALSE sul
terminale condizionale del ciclo 1. Il ciclo 2 legge la variabile locale
dellinterruttore e scrive FALSE sul terminale condizionale del ciclo 2.
Quindi i cicli While operano in parallelo e terminano
contemporaneamente quando lunico interruttore sul pannello frontale
viene spento.

Questo semplice esempio dimostra lutilit delle variabili locali. Come


mostrato precedentemente, lutilizzo di variabili locali fornisce laccesso
ad un unico oggetto del pannello frontale da posti diversi dello schema a
blocchi. Le variabili locali sono anche necessarie quando non potete
raggiungere i vostri obbiettivi utilizzando dei fili per trasportare i dati.
Fin qui avete imparato che potete leggere dati di ingresso da controlli e
inviare i risultati su un indicatore. Ma, per esempio, cosa fate se volete
determinare quali parametri erano stati usati per avviare un VI
precedentemente e volete inserire quei valori nei controlli per consentirne
la modifica allutente? Come potete scrivere quei valori in un controllo?

National Instruments Corporation

3-7

LabVIEW Corso Base II

Lezione 3

Tecniche di gestione dei dati

Non potete farlo con controlli e indicatori standard. Utilizzando le


variabili locali potete superare questa limitazione. Potete aggiornare un
controllo dallo schema a blocchi. Inoltre, potete avere un qualsiasi
numero di riferimenti di variabili locali per un dato controllo del pannello
frontale, alcuni in modalit di scrittura e altri in modalit di lettura. Con
un riferimento di variabile locale, potete accedere ad un oggetto del
pannello frontale come ingresso e come uscita.
Per comprendere questo concetto, esamineremo un esempio che mostra
un altro uso delle variabili locali. Qui sotto c un unico indicatore di
stringa. Supponete di volerlo aggiornare per visualizzare il ciclo in
esecuzione. Senza una variabile locale, non c modo di risolvere il
problema. Potete inserire il terminale indicatore in un solo ciclo.
Tuttavia, utilizzando una variabile locale, potete accedere allo stesso
indicatore del pannello frontale da pi di un posto dello schema a blocchi,
consentendo ad un unico indicatore di visualizzare il ciclo che in
esecuzione. Lindicatore Quale ciclo? viene inserito nel ciclo 1 e una
variabile locale di quellindicatore viene inserita nel ciclo 2. Sebbene
questo esempio sia semplice, esso mostra come un indicatore possa essere
aggiornato da due posti separati dello schema a blocchi.

LabVIEW Corso Base II

3-8

National Instruments Corporation

Lezione 3

Esercitazione 3-1

Tecniche di gestione dei dati

VI Login

Obiettivo: Utilizzare variabili locali per inizializzare controlli del pannello frontale
Nota Utilizzate questo VI nel progetto della Lezione 5.

Pannello frontale

1. Aprite il VI Login che si trova nella directory c:\exercises\LV


Basics 2. Il pannello frontale gi stato creato. Completate lo
schema a blocchi.

Schema a blocchi

2. Notate che le variabili locali sono incluse in una struttura Sequence a


singolo frame e che la costante stringa vuota collegata alla cornice
del ciclo While. Questa impostazione assicura che entrambe le
variabili locali siano aggiornate prima che parta il ciclo While.
a. La variabile locale Login Name impostata su write
localRipristina il login del nome su una stringa vuota. Per creare
questa variabile locale, cliccate con il tasto destro del mouse sul
terminale Login Name e selezionate CreateLocal Variable dal
menu rapido.
b. La variabile locale Password impostata su write
localRipristina la stringa della password su una stringa vuota.
Per creare questa variabile locale, cliccate con il tasto destro del
mouse sul terminale Password e selezionate CreateLocal
Variable dal menu rapido.

National Instruments Corporation

3-9

LabVIEW Corso Base II

Lezione 3

Tecniche di gestione dei dati

c. Costante
Empty
String,
disponibile
nella
palette
FunctionsStringPassa i valori della stringa alle variabili locali
Login Name e Password.
d. Nodo Propriet Login NamePer creare questo nodo, cliccate
con il tasto destro del mouse sul terminale Login Name e
selezionate CreateProperty Node. Scegliete la propriet key
focus e collegate una costante booleana TRUE ad esso.
e. Inserite il VI Verify Information. Per selezionare questo VI,
selezionate
FunctionsSelect
a
VI,
andate
su
c:\exercises\LV Basics 2, cliccate due volte sul VI Verify
Information che avete realizzato nellesercitazione 1-2 e inseritelo
nello schema a blocchi. Questo VI utilizza il nome e la password e
verifica se c corrispondenza in una tabella con le informazioni
sugli impiegati.
Se avete problemi nel collegare la costante di stringa ad una variabile
locale, cliccate con il tasto destro sulla variabile locale e selezionate Change to
Write Local.
Nota

3. Salvate il VI con lo stesso nome.


4. Ritornate al pannello frontale ed avviate il VI. Notate che i controlli
Login Name e Password si reimpostano su stringhe vuote quando
avviate il VI.
5. Ora ridimensionate il pannello frontale per mostrare solo gli oggetti
necessari nel modo seguente:

6. Salvate e chiudete il VI.

Fine dellesercitazione 3-1

LabVIEW Corso Base II

3-10

National Instruments Corporation

Lezione 3

Esercitazione 3-2
Obiettivo:

Tecniche di gestione dei dati

VI Select and Plot Waveform (Opzionale)

Utilizzare le variabili locali per modificare sia gli indicatori che i controlli del
pannello frontale

Pannello frontale

1. Aprite il VI Select and Plot Waveform che si trova nella directory


c:\exercises\LV Basics 2. Il pannello frontale gi stato
creato. Completate lo schema a blocchi.
2. Aprite ed esaminate lo schema a blocchi.

National Instruments Corporation

3-11

LabVIEW Corso Base II

Lezione 3

Tecniche di gestione dei dati

Schema a blocchi

3. Completate lo schema a blocchi con le seguenti:


a. String
Constant,
che
si
trova
nella
palette
FunctionsStringInvia i valori di testo allindicatore del
pannello frontale Current Activity.
b. Numeric
Constant,
che
si
trova
nella
palette
FunctionsNumericReimposta la finestra di dialogo di tipo
ring Select Waveform su zero (Stand By) dopo che la forma
donda stata acquisita.
c. Variabile locale New Waveform impostata su read localLegge i
dati nel grafico New Waveform e li passa al grafico Previous
Waveform. Per creare questa variabile locale, cliccate con il tasto
destro del mouse sul terminale New Waveform e selezionate
CreateLocal Variable dal menu rapido. Quindi cliccate con il
tasto destro del mouse sulla variabile locale e selezionate Change
To Read.
d. Variabile locale Current Activity impostata su write
localInserisce nuovo testo nellindicatore Current Activity. Ci
sono diverse copie di questa variabile locale nello schema a
blocchi, mostrandovi come potete accedere ad un oggetto del
pannello frontale da diversi posti dello schema a blocchi. Per
creare una variabile locale, cliccate con il tasto destro del mouse
sul terminale Current Activity e selezionate CreateLocal
Variable dal menu rapido. Quindi fate due copie in pi di questa
variabile locale.

LabVIEW Corso Base II

3-12

National Instruments Corporation

Lezione 3

Tecniche di gestione dei dati

e. Variabile locale Select Waveform impostata su write


localReimposta il controllo Select Waveform sulla modalit
Stand By. Per creare questa variabile locale, cliccate con il tasto
destro del mouse sul terminale Select Waveform e selezionate
CreateLocal Variable dal menu rapido.
Assicuratevi di aver impostato correttamente ciascuna variabile locale
come read local o write local. Per passare da write local a read local, cliccate
con il tasto destro del mouse sullicona e selezionate Change to read Local dal
menu rapido. Per passare da read local a write local, cliccate con il tasto destro
del mouse sullicona e selezionate Change to Write.
Nota

f. Funzione Wait (ms), che si trova nella palette FunctionsTime


& DialogGenera un ritardo che vi consente di osservare le
attivit del pannello frontale.
g. VI Acquire Signal, che si trova nella palette User
LibrariesBasics 2 CourseGenera i dati per la forma donda
specificata dal controllo Select Waveform.
4. Salvate il VI con lo stesso nome.
5. Tornate al pannello frontale ed avviate il VI. Notate che il VI aggiorna
lindicatore di stringa e immagazzina la vecchia forma donda nel
grafico Previous Waveform. Inoltre osservate che dopo che la nuova
forma donda stata acquisita e inviata sullo schermo, il controllo
Select Waveform viene reimpostato su Stand By (zero).
6. Chiudete il VI quando avete finito.

Fine dellesercitazione 3-2

National Instruments Corporation

3-13

LabVIEW Corso Base II

Lezione 3

Tecniche di gestione dei dati

C. Variabili globali
Ricordate che potete utilizzare le variabili locali per accedere ad oggetti
del pannello frontale da varie posizioni dello schema a blocchi. Queste
variabili locali sono accessibili solo in quel singolo VI. Supponete di aver
bisogno di passare i dati tra diversi VI che operano contemporaneamente,
o i cui subVI hanno delle icone che non possono essere collegate tramite
fili nello schema a blocchi. Potete utilizzare una variabile globale per
ottenere questo. Le variabili globali sono simili a quelle locali, ma invece
di essere limitate alluso in un singolo VI, le variabili globali possono
passare valori tra diversi VI.
Considerate lesempio seguente. Supponete di avere due VI che
funzionano contemporaneamente. Ogni VI scrive un dato su un grafico
tipo chart. Il primo VI contiene anche un booleano per arrestare entrambi
i VI. Ricordate che qualora entrambi i cicli fossero sullo stesso schema a
blocchi, avreste bisogno di utilizzare una variabile locale per arrestare i
cicli. Adesso che ogni ciclo si trova in un VI distinto, dovete utilizzare
una variabile globale per arrestare i cicli.

Creazione di variabili globali


Le variabili globali sono oggetti interni di LabVIEW. Essi appaiono come
VI speciali nella memoria del computer. Una variabile globale ha un
pannello frontale in cui potete inserire controlli e indicatori di ogni tipo.
Tuttavia, una variabile globale non ha schema a blocchi. Il pannello
frontale semplicemente un contenitore da cui potete prelevare dati da
altri VI.

LabVIEW Corso Base II

3-14

National Instruments Corporation

Lezione 3

Tecniche di gestione dei dati

Per creare una variabile globale, selezionate Global Variable dalla


palette Structures. Un nodo di variabile globale appare sullo schema a
blocchi. Licona di una variabile globale sullo schema a blocchi simile a
quella di una variabile locale, a parte una piccola figura di un mondo che
appare sulla sinistra del nome della variabile globale.
Aprite il pannello di una variabile globale cliccando due volte sul nodo
relativo. Inserite controlli e indicatori sul pannello frontale allo stesso
modo con cui lo fate in un pannello frontale di un VI standard.
Dovete etichettare ogni controllo o indicatore (con unetichetta propria)
perch una variabile globale si riferisce ad un oggetto tramite il suo nome.
Nota

Lesempio seguente mostra il pannello frontale di una variabile globale


con tre oggettiun numero, una stringa e un cluster contenente un
controllo digitale e uno booleano. Notate che la barra degli strumenti
della finestra non mostra le stesse voci di un normale pannello frontale.

Dopo che avete finito di inserire gli oggetti sul pannello frontale della
variabile globale, salvate la variabile globale e tornate allo schema a
blocchi del VI originario. Selezionate loggetto specifico nel VI della
variabile globale al quale volete accedere. Per selezionare un dato
oggetto, cliccate con il tasto destro del mouse sul nodo della variabile
globale e selezionate loggetto dal menu Select Item. Questo menu elenca
le etichette proprie di tutti gli oggetti del pannello frontale. Notate che
potete anche aprire il pannello frontale contenente gli oggetti nella
variabile globale da questo menu rapido.

National Instruments Corporation

3-15

LabVIEW Corso Base II

Lezione 3

Tecniche di gestione dei dati

Potete anche cliccare sul nodo con lo strumento Modifica e selezionare la


variabile globale cui volete accedere.
Dopo aver selezionato loggetto specifico della variabile globale al quale
volete accedere, il nodo cambia aspetto, dalla figura mostrata a sinistra
passa a visualizzare loggetto che avete scelto, ad esempio un numero.
Potete utilizzare questa variabile globale in altri VI. Siccome una
variabile globale un tipo speciale di VI, potete inserirla in altri VI
utilizzando lopzione Select a VI nella palette Function. Quindi cliccate
con il tasto destro del mouse sul nodo per selezionare un oggetto specifico
della variabile globale al quale volete accedere, come descritto sopra.
Un pannello frontale di variabile globale pu contenere riferimenti a
molti oggetti singoli che sono accessibili globalmente. Non avete bisogno di
creare un VI di variabile globale separato per ogni oggetto su cui avete bisogno
di accedere in modo globale.
Nota

Lettura e scrittura delle variabili globali


Come per le variabili locali, potete sia leggere che scrivere dati su una
variabile globale. Di default una variabile globale write global quando
la create. Potete scrivere un nuovo valore in una variabile globale e allora
la variabile globale si comporta da indicatore.
Potete modificare la configurazione di una variabile globale affinch
agisca come sorgente di dati, o read global. Per far questo, cliccate con il
tasto destro del mouse sulla variabile e selezionate Change To Read.
Sullo schema a blocchi, unicona read global si comporta come un
controllo. Quando questo nodo in esecuzione sullo schema a blocchi, il
programma legge dati nelloggetto associato del pannello frontale.
Per modificare una read global in una write global, cliccate con il tasto
destro del mouse sulla variabile e selezionate Change To Write. La
variabile globale modificher la direzione dei dati per ricevere dati invece
di fornirli. Quando questo nodo in esecuzione sullo schema a blocchi, il
programma invia un nuovo dato nella variabile globale.
Nello schema a blocchi potete distinguere visivamente le variabili globali
in lettura rispetto a quelle in scrittura proprio come fate con i controlli e
gli indicatori. Una variabile globale in lettura ha un bordo spesso,
mettendo in evidenza che una sorgente di dati. Una variabile globale in
scrittura ha un bordo sottile, perch agisce come serbatoio di dati. Nella
figura sotto, entrambe le variabili locali si riferiscono allo stesso oggetto
del pannello frontale della variabile globale.
Write Global

Read Global

LabVIEW Corso Base II

3-16

National Instruments Corporation

Lezione 3

Esercitazione 3-3

Tecniche di gestione dei dati

VI Data to Global

Obiettivo: Realizzare un VI che scriva dati in una variabile globale


Create una variabile globale e utilizzatela per inviare dati al VI
dellesercizio successivo.

1. Aprite un nuovo VI e realizzate il pannello frontale precedente.

Schema a blocchi

2. Realizzate lo schema a blocchi precedente.


a. Struttura
Sequence,
che
si
trova
nella
palette
FunctionsStructuresInizializza una variabile globale
utilizzando una dipendenza dei dati artificiale con la costante
booleana, che si trova nella palette FunctionsBoolean, e il ciclo
While.
b. Ciclo
While,
che
si
trova
nella
palette
FunctionsStructuresDetermina lesecuzione continua del VI
finch una variabile globale booleana invia un valore TRUE.
Cliccate con il tasto destro del mouse sul terminale Conditional e
selezionate Stop If True.
c. Funzione Wait Until Next ms Multiple, che si trova nella palette
FunctionsTime & DialogGarantisce che i dati siano scritti
sulla variabile globale ogni 50 ms. Create la costante cliccando
con il tasto destro del mouse sul terminale input e selezionando
CreateConstant.
d. Funzione
Divide,
che
si
trova
nella
palette
FunctionsNumericDivide il contatore di iterazione del ciclo
While per 20. Create la costante cliccando con il tasto destro del
mouse sul terminale inferiore input e selezionando
CreateConstant.

National Instruments Corporation

3-17

LabVIEW Corso Base II

Lezione 3

Tecniche di gestione dei dati

e. Funzione
Sine,
che
si
trova
nella
palette
FunctionsNumericTrigonometricAccetta
un
valore
dingresso in radianti e produce in uscita il seno di quel valore.
3. VI My Globals per le variabili globaliPassa i valori tra due VI che
operano contemporaneamente. Completate i passi seguenti per creare
e configurare le variabili globali.
a. Nello schema a blocchi selezionate Global Variable dalla palette
Structures.
b. Cliccate due volte sul nodo per attivare il pannello frontale della
variabile globale. Create il pannello frontale della variabile
globale come indicato nella figura seguente. Etichettate i controlli
con etichette proprie. Notate che non c schema a blocchi
associato al pannello frontale della variabile globale.
Pannello della variabile globale

c. Salvate e chiudete la variabile globale.


Globals.vi.

Chiamatela My

d. Ritornate allo schema a blocchi di Data to Global.


e. Cliccate con il tasto destro del mouse sul nodo della variabile
globale e selezionate Visible ItemsLabel.
f. Usando lo strumento Modifica, cliccate sul nodo della variabile
globale e selezionate Stop. Potete modificare la variabile per
renderla di lettura o di scrittura, cliccandoci sopra con il tasto
destro del mouse.
g. Fate un numero sufficiente di copie della variabile My
Global.vi. Utilizzate lo strumento Modifica per selezionare la
voce corretta di cui avete bisogno dalla variabile globale.
Inizializzate la variabile globale Stop allinterno della struttura
Sequence scrivendoci un FALSE. La costante collegata al bordo del
ciclo per forzare la variabile globale allinizializzazione prima che il
ciclo inizi lesecuzione. Questo evita la lettura del ciclo While da
parte di una variabile non inizializzata o da una che ha un valore
sconosciuto.
4. Salvate il VI come Data to Global.vi. Tenetelo aperto perch
dovete eseguirlo nellesercizio successivo.

Fine dellesercitazione 3-3

LabVIEW Corso Base II

3-18

National Instruments Corporation

Lezione 3

Esercitazione 3-4

Tecniche di gestione dei dati

VI Display Global Data

Obiettivo: Realizzare un VI che legga dati da una variabile globale


Realizzate un VI che legga i dati da una variabile globale che avete creato
nellesercizio precedente e visualizzi i dati su un grafico tipo chart.

Pannello frontale

1. Aprite un nuovo VI e realizzate il pannello frontale precedente.

Schema a blocchi

2. Realizzate lo schema a blocchi come indicato precedentemente.


a. Ciclo
While,
che
si
trova
nella
palette
FunctionsStructuresDetermina lesecuzione continua del VI
finch non viene premuto il pulsante di Stop. Cliccate con il tasto
destro del mouse sul terminale Conditional e selezionate Stop If
True.
b. Funzione Wait Until Next ms Multiple, che si trova nella palette
FunctionsTime & DialogImposta la frequenza di esecuzione
del ciclo. Assicuratevi che di default sia di 20 iterazioni al secondo
o 50 ms.

National Instruments Corporation

3-19

LabVIEW Corso Base II

Lezione 3

Tecniche di gestione dei dati

3. VI My Globals per le variabili globaliPassa i valori tra due VI che


operano contemporaneamente. Queste variabili globali non sono state
create da un nodo di variabile globale su questo schema a blocchi, per
cui i passi per creare e configurare le variabili globali sono i seguenti.
a. Selezionate

FunctionsSelect a VI e selezionate My
Globals.vi dalla directory c:\exercises\Basics 2, in cui
avete salvato la variabile globale che avete creato
nellesercitazione 3-3. Loggetto della variabile globale
visualizzato nel nodo Stop o Data Value, a seconda dellordine
in cui sono stati disposti sul pannello frontale della variabile
globale.

b. Copiate la variabile globale in maniera tale da averne due, una di


Stop e laltra Data Value. Per accedere ad un oggetto differente
della variabile globale, cliccate sul nodo con lo strumento
Modifica e selezionate loggetto desiderato.
c. Rendete la variabile Data Value di tipo read cliccando con il tasto
destro del mouse sul modo e selezionando Change To Read dal
menu rapido.
Il VI legge un valore da Data Value e lo passa al grafico. Esso scrive
anche il valore corrente del pulsante di Stop sulla relativa variabile
globale ad ogni ciclo. Utilizzando una variabile globale, il valore
booleano viene letto nel VI Data to Global per controllarne il ciclo
While.
4. Salvate il VI come Display Global Data.vi.
5. Passate al pannello frontale del VI Data to Global e posizionate i due
pannelli frontali affinch siano visibili entrambi.
6. Avviate Data to Global. Tornate al VI Display Global Data ed
avviatelo. Il grafico sul pannello frontale del VI Display Global Data
visualizza i dati. Data to Global scrive continuamente il valore che
calcola sulloggetto della variabile globale Data Value. Lesempio
seguente mostra Display Global Data che legge loggetto della
variabile globale e aggiorna il grafico.

LabVIEW Corso Base II

3-20

National Instruments Corporation

Lezione 3

Tecniche di gestione dei dati

Il controllo Time Delay stabilisce ogni quanto tempo viene letta la


variabile globale. Notate come Time Delay influenza i valori
rappresentati sul grafico. Se impostate Time Delay su 0, lo stesso
valore Data Value viene letto dalla variabile globale diverse volte,
facendo apparire una diminuzione della frequenza della sinusoide
generata in Data to Global. Se impostate Time Delay ad un valore pi
grande di 50 ms, pu darsi che Display Global Data non riesca a
leggere alcuni valori generati in Data to Global e la frequenza della
sinusoide sembra diminuire. Se impostate Time Delay su 50 ms, cio
sulla stessa frequenza utilizzata nel ciclo While di Data to Global,
Display Global Data legge e visualizza ogni punto della variabile
globale Data Value una sola volta.
Quando utilizzate le variabili globali, se non fate attenzione, potete
leggere dei valori pi di una volta, o potete non leggerli tutti. Se dovete
processare ogni singolo aggiornamento, fate particolare attenzione ad assicurare
che un nuovo valore non sia scritto nella variabile globale fino a quando il
precedente non stato letto, e che dopo che una variabile globale stata letta,
non venga letta di nuovo finch un altro valore non stato scritto sulla variabile
globale.
Nota

7. Premete il pulsante STOP sul pannello frontale di Display Global


Data per arrestare il VI. Notate che sia Display Global Data che Data
to Global si arrestano. Il VI scrive continuamente il valore del
pulsante STOP sulloggetto Stop della variabile globale. Quel valore

National Instruments Corporation

3-21

LabVIEW Corso Base II

Lezione 3

Tecniche di gestione dei dati

viene quindi letto in Data to Global e passato al terminale


condizionale per controllarne il ciclo. Quando premete il pulsante
STOP, un valore TRUE passa attraverso la variabile globale a Data to
Global, in cui viene letto per arrestare anche quel VI.
8. Chiudete entrambi i VI.

Fine dellesercitazione 3-4

LabVIEW Corso Base II

3-22

National Instruments Corporation

Lezione 3

Tecniche di gestione dei dati

D. Avvertenze importanti su variabili locali e globali


Inizializzazione di variabili locali e globali
Verificate che le vostre variabili locali e globali contengano dei valori
noti prima che il programma inizi. Altrimenti, le variabili potrebbero
contenere dati in grado di causare dei malfunzionamenti del programma.
Se non inizializzate una variabile locale prima di leggere i dati da essa,
essa conterr il valore corrente del controllo. La prima volta che il vostro
programma legge una variabile globale, essa contiene il valore di default
delloggetto che legge, a meno che non abbiate inizializzato
precedentemente la variabile globale.

Condizioni di conflitto
Le variabili locali e globali di LabVIEW non si comportano come le
variabili locali e globali nei linguaggi di programmazione testuali.
Ricordate che LabVIEW un linguaggio a flusso di dati, non un
linguaggio di programmazione sequenziale. Labuso di variabili locali e
globali pu portare a comportamenti inattesi del vostro programma,
perch le funzioni potrebbero non essere eseguite nellordine corretto.
Considerate il semplice esempio di variabile locale qui sotto. Il codice in
LabVIEW appare accanto al codice equivalente di un linguaggio di
programmazione sequenziale.
Codice in LabVIEW

Codice sequenziale
x=x+5
x=x+2
o

x=x+2
x=x+5

Quando eseguite il codice sequenziale, la soluzione per un dato valore di


x chiaro perch le istruzioni vengono eseguite dallalto verso il basso.
Tuttavia, il codice in LabVIEW non segue tale convenzione perch un
linguaggio a flusso di dati. Ogni nodo viene eseguito quando tutti i suoi
dati sono disponibili. Non ci sono dipendenze di dati per garantire
lordine desiderato di esecuzione nello schema a blocchi sopra. Infatti, ci
sono diverse soluzioni possibili, in funzione di come il VI viene
compilato. Non potete assumere che il codice che si trova nello schema a
blocchi in basso sia eseguito dopo il codice al di sopra di esso.
Lesempio mostrato sopra illustra quello che noto come condizione di
conflitto. Il risultato del vostro programma dipende dallordine in cui
vengono eseguite le istruzioni e il codice potrebbe non seguire lordine
che presupponete. Se utilizzate variabili locali e globali, potreste avere

National Instruments Corporation

3-23

LabVIEW Corso Base II

Lezione 3

Tecniche di gestione dei dati

condizioni di conflitto se notate che il vostro codice viene eseguito


correttamente solo alcune volte, o che viene eseguito correttamente
durante lesecuzione evidenziata ma non durante la normale esecuzione.
Per evitare situazioni di conflitto, scrivete su una variabile locale o
globale in una locazione separata rispetto a quella da cui lavete lettain
posizioni diverse dello schema a blocchi o della struttura, o in diverse
strutture o VI. Quando si utilizzano variabili globali in VI che vengono
eseguiti in parallelo, potreste aver bisogno di utilizzare una variabile
globale booleana aggiuntiva che indica quando un dato di variabile
globale stato modificato. Altri VI possono monitorare questo booleano
per vedere se il dato stato modificato e leggere il nuovo valore.

Utilizzare variabili locali e globali solo quando necessario


Le variabili locali e globali sono uno strumento potente che potete
utilizzare per raggiungere determinati obiettivi. Per esempio, potete creare
su un singolo schema a blocchi cicli paralleli che vengono controllati con
un oggetto da pannello frontale, oppure potete scambiare dati tra VI in
esecuzione separata. Comunque, le variabili locali e globali non fanno
parte intrinsecamente del concetto di programmazione a flusso di dati di
LabVIEW. Gli schemi a blocchi possono diventare pi difficili da leggere
quando si utilizzano variabili locali o globali. Le condizioni di conflitto
possono causare comportamenti inattesi. Laccesso ai dati immagazzinati
ad una variabile locale o globale pi lento rispetto al flusso di dati e
meno efficiente dal punto di vista di utilizzo della memoria. Quindi,
utilizzate con parsimonia le variabili locali e globali e solo quando
necessario. Per esempio, non utilizzate variabili locali e globali per
evitare lunghi collegamenti nello schema a blocchi o per accedere in ogni
frame di una struttura Sequence.

LabVIEW Corso Base II

3-24

National Instruments Corporation

Lezione 3

Tecniche di gestione dei dati

Considerate lo schema a blocchi precedente.


La struttura Sequence a tre frame esegue i soliti compiti di tutti i VI. Il
Frame 0 legge i controlli sul pannello per la configurazione del sistema di
test, il Frame 1 utilizza le variabili locali per i controlli per acquisire i dati
e il Frame 2 utilizza le variabili locali per scrivere dati su file. Sebbene
non ci sia fondamentalmente nulla di sbagliato nellutilizzo della struttura
sequence e delle variabili locali in questo modo, esso non costituisce il
metodo pi efficiente di utilizzo della programmazione a flusso di dati.
Quando osservate uno dei frame, non semplice capire da dove
provengono i valori delle variabili locali e dove sono stati aggiornati
lultima volta.

Lo schema a blocchi mostrato sopra elimina luso delle variabili locali


disponendo i terminali di controllo originali al di fuori della struttura
sequence cosicch ogni frame della sequenza ora ha accesso ai valori. I
dati vengono passati tra i frame della sequenza attraverso una variabile
locale della sequenza.

Lo schema a blocchi mostrato sopra rimuove la struttura sequence ed


utilizza il flusso dei dati per definire le modalit operative del
programma. I cluster di errore definiscono lordine di esecuzione dei
subVI e mantengono anche le condizioni di errore che vengono verificate
alla fine con il VI di gestione degli errori. Questo un modo pi efficiente
di realizzare un programma e di gestire i dati in LabVIEW. Non solo lo
schema a blocchi pi piccolo e pi facile da leggere, ma trasferire i dati
attraverso i fili di collegamento il metodo di gestione migliore della
memoria.

National Instruments Corporation

3-25

LabVIEW Corso Base II

Lezione 3

Tecniche di gestione dei dati

E. DataSocket
Finora in questa lezione avete imparato tre cose principali:
y

Il modo pi efficiente per gestire i dati nello schema a blocchi


tramite un collegamento diretto.

Le variabili locali possono essere usate per accedere ad oggetti del


pannello frontale da posti diversi dello schema a blocchi.

Le variabili globali possono essere usate per passare i dati tra VI


distinti senza utilizzare un collegamento.

Ci sono molti altri modi di gestire dati in LabVIEW. Questa lezione copre
un altro metodo, DataSocket. DataSocket una tecnologia di
programmazione di Internet basata su protocollo TCP/IP che semplifica lo
scambio di dati tra computer ed applicazioni. Con DataSocket potete
trasferire dati su Internet in modo efficiente e rispondere a pi utenti
senza la complessit della programmazione TCP a basso livello.
Quindi potete usare DataSocket per passare dati non solo tra VI in
esecuzione sulla stessa macchina ma anche tra computer distinti che sono
collegati tramite la rete. Potete anche utilizzare DataSocket per
comunicare tra LabVIEW ed un qualsiasi altro linguaggio di
programmazione che supporta il protocollo TCP/IP, come Excel, Visual
Basic, C e cos via.

Come opera DataSocket?


DataSocket consiste in due componenti, DataSocket API e DataSocket
Server. DataSocket API presenta una singola interfaccia utente per la
comunicazione con diversi tipi di dati provenienti da altri linguaggi di
programmazione. DataSocket Server semplifica la comunicazione in
Internet tramite la gestione della programmazione del protocollo TCP/IP.

DataSocket API
DataSocket un singolo API, unificato per lutente finale, basato su URL
per il collegamento a misure e a dati di automazione che si possono
trovare dovunque, su un computer locale o su Internet. E un API
indipendente dal protocollo, dal linguaggio e dal sistema operativo,
progettato per semplificare la gestione di dati binari. Il DataSocket API
viene implementato affinch possiate utilizzarlo in ogni ambiente di
programmazione e con un qualsiasi sistema operativo.
Il DataSocket API converte automaticamente le vostre misure in una
sequenza di byte che viene inviata in rete. Lapplicazione DataSocket
converte la sequenza di byte nella sua forma originaria. Questa
conversione automatica elimina la complessit della rete, che comporta la
scrittura di una gran quantit di codice quando utilizzate librerie TCP/IP.

LabVIEW Corso Base II

3-26

National Instruments Corporation

Lezione 3

Tecniche di gestione dei dati

DataSocket Server
Il DataSocket Server un componente leggero, stand-alone con cui i
programmi utilizzanti DataSocket API possono trasmettere misure in
corso a velocit elevate, usando Internet, a diversi client remoti
contemporaneamente.
Il DataSocket Server semplifica la programmazione TCP gestendo in
maniera automatica connessioni su client. Potete accedere a DataSocket
Server
selezionando
StartProgramsNational
Instruments
DataSocketDataSocket Server. Quando selezionate il DataSocket
Server, si apre la finestra seguente e il server va in esecuzione.

Come mostrato sopra, il DataSocket Server tiene traccia del numero di


client connessi e del numero di pacchetti di dati che sono stati scambiati.
Potete scegliere di avere DataSocket Server operante in maniera non
visibile selezionando Hide DataSocket Server dal menu Server.
La trasmissione dati con DataSocket Server richiede tre attorichi
pubblica, il DataSocket Server e chi sottoscrive. Unapplicazione di
pubblicazione utilizza DataSocket API per scrivere dati sul server.
Unapplicazione di sottoscrizione utilizza DataSocket API per leggere
dati dal server. Entrambe le applicazioni sono client nei confronti di
DataSocket Server. I tre attori possono risiedere sulla stessa macchina ma
pi frequente il caso che si trovino su macchine diverse. La possibilit
di eseguire il DataSocket Server su unaltra macchina aumenta le
prestazioni e fornisce la sicurezza isolando collegamenti di rete dalla
vostra applicazione di misura. Il DataSocket Server limita laccesso ai
dati amministrando la sicurezza e i permessi. Con DataSocket potete
condividere misure riservate su Internet impedendo laccesso a persone
non autorizzate.

Una URL per ogni sorgente di dati


Prima che possiate iniziare ad utilizzare le funzioni DataSocket in
LabVIEW, dovete capire come DataSocket si collega a differenti
tecnologie di I/O e come nominare il dispositivo o la risorsa con la quale
state scambiando dati. Per esempio nellI/O di file il nome della risorsa
un percorso ad un file. Per il TCP/IP ci sono due parti del nome, un nome
di macchina e un numero di porta. Con DataSocket, il nome della risorsa
sotto forma di URL, o uniform resource locator, simile allindirizzo web
utilizzato da un browser. Considerate come potrebbe interpretare un

National Instruments Corporation

3-27

LabVIEW Corso Base II

Lezione 3

Tecniche di gestione dei dati

browser la URL ni.com/datasocket. Essa dice al browser di usare un


protocollo basato TCP/IP chiamato HTTP, o hyper text transfer protocol,
per collegarsi alla macchina denominata ni.com e prendere la pagina
web chiamata datasocket.
La URL differente dai nomi utilizzati dalla maggior parte delle
tecnologie di I/O perch non solo definisce a che cosa siete interessati ma
indica anche come prenderlo. Il come, codificato nella prima parte della
URL, viene chiamato metodo di accesso del protocollo. I web browser
utilizzano tipicamente molti metodi di accesso, come HTTP, HTTPS
(encrypted HTTP), FTP (file transfer protocol) e FILE (per leggere file
sulla vostra macchina locale). DataSocket presenta lo stesso approccio per
le misure. Per esempio, DataSocket pu utilizzare la URL seguente per
collegarsi ad un insieme di dati: dstp://mytestmachine/wave1. Il
dstp allinizio dice a DataSocket di aprire un collegamento con il
protocollo di trasferimento data socket e di prendere un segnale
denominato wave1. Se la URL fosse iniziata con file, i dati sarebbero stati
presi da un file invece che dal DataSocket server.

Le funzioni DataSocket
DataSocket API in LabVIEW un insieme di funzioni e di VI che si trova
nella palette FunctionsCommunicationDataSocket.
La comunicazione in DataSocket semplice. Potete eseguire tutte le
operazioni di base con le funzioni e i VI seguenti.

La funzione DataSocket Write scrive lingresso dei dati sulla URL


specificata. I dati possono essere in un qualsiasi formato del tipo dato di
LabVIEW. I cluster error in e error out mantengono le condizioni di
errore.

La funzione DataSocket Read legge i dati di tipo specificato dalla URL


specificata. Il valore ms timeout di default di 10 s e potete specificare
un diverso valore di timeout. Il booleano timed out indica TRUE se
questa funzione scaduta. I cluster error in e error out mantengono le
condizioni di errore.

LabVIEW Corso Base II

3-28

National Instruments Corporation

Lezione 3

Tecniche di gestione dei dati

Il VI DataSocket Select URL viene usato solo quando non sapete la URL
di un oggetto e volete cercare una sorgente di dati o una destinazione da
finestra di dialogo.

Collegamento DataSocket diretto ad un qualsiasi oggetto del pannello


Non avete bisogno di utilizzare le funzioni DataSocket Write e
DataSocket Read per pubblicare e sottoscrivere dati utilizzando
DataSocket Server. Potete stabilire un collegamento DataSocket diretto da
un oggetto del pannello frontale. Cliccate con il tasto destro del mouse su
un
oggetto
del
pannello
frontale
e
selezionate
Data
OperationsDataSocket Connection per Visualizzare la finestra di
dialogo DataSocket Connection.
Nel campo Connect To, inserite una URL e scegliete se volete
pubblicare, sottoscrivere o entrambe le cose. Quindi contrassegnate il
riquadro Enabled.
Quando cliccate sul pulsante Attach, loggetto del pannello frontale
diventa disponibile alla URL specificata nel DataSocket Server. Compare
un piccolo rettangolo nella parte superiore destra del controllo o
dellindicatore, ad indicare lo stato del collegamento DataSocket. Se il
rettangolo verde, il collegamento buono.

Se il rettangolo grigio, non c collegamento al server. Se il rettangolo


rosso, c un errore nel collegamento.
Ora realizzate due VI che trasferiscono dati utilizzando DataSocket.

National Instruments Corporation

3-29

LabVIEW Corso Base II

Lezione 3

Tecniche di gestione dei dati

Esercitazione 3-5

VI DS Generate Data e VI DS Read Data

Obiettivo: Realizzare due VI che utilizzino DataSocket per trasferire i dati

Realizzate un VI che generi un numero casuale e visualizzi questo valore


su uno strumento misuratore e invii i dati ad una URL DataSocket. Quindi
realizzate un secondo VI che legga la URL DataSocket e visualizzi il
valore in un indicatore tipo slide. Infine, utilizzate le caratteristiche di
pubblicazione e di sottoscrizione automatica per inviare dati su un
collegamento DataSocket.

Pannello frontale

1. Aprite un nuovo VI e realizzate il pannello frontale mostrato sopra.


Loggetto URL un controllo di stringa.

Schema a blocchi

2. Aprite e realizzate lo schema a blocchi mostrato sopra utilizzando i


componenti seguenti.
a. Ciclo
While,
che
si
trova
nella
palette
FunctionsStructuresDetermina lesecuzione continua del VI
finch non viene premuto il pulsante di Stop. Cliccate con il tasto
destro del mouse sul terminale Conditional e selezionate Stop If
True.
b. Funzione Wait Until Next ms Multiple, che si trova nella palette
FunctionsTime & DialogDetermina lesecuzione del ciclo
While una volta al secondo. Create la costante cliccando con il
tasto destro del mouse sul terminale input e selezionando
CreateConstant.

LabVIEW Corso Base II

3-30

National Instruments Corporation

Lezione 3

Tecniche di gestione dei dati

c. Funzione Random Number (0-1), che si trova nella palette


FunctionsNumericCrea un numero casuale tra zero e uno.
d. Funzione
Multiply,
che
si
trova
nella
palette
FunctionsNumericMoltiplica due numeri e viene usato qui
per riportare il numero casuale nella scala tra 0 e 10.
e. Funzione DataSocket Write, che si trova nella palette
FunctionsCommunicationDataSocketScrive il numero
casuale sulla URL specificata.
f. VI Simple Error Handler, che si trova nella palette
FunctionsTime & DialogApre una finestra di dialogo in caso
di errore e visualizza le informazioni di errore.
3. Salvate questo VI come DS Generate Data.vi.
4. Ora realizzate il secondo VI per leggere il valore casuale.

Pannello frontale

1. Aprite un nuovo VI e realizzate il pannello frontale mostrato sopra.


Loggetto URL un controllo di stringa. Per mostrare la scala
sullindicatore a scorrimento, cliccateci sopra con il tasto destro del
mouse e selezionate ScaleStyle.

Schema a blocchi

2. Aprite e realizzate lo schema a blocchi mostrato sopra utilizzando i


componenti seguenti:
a. Ciclo
While,
che
si
trova
nella
palette
FunctionsStructuresDetermina lesecuzione continua del VI
finch non viene premuto il pulsante di Stop. Cliccate con il tasto
destro del mouse sul terminale Conditional e selezionate Stop If
True.

National Instruments Corporation

3-31

LabVIEW Corso Base II

Lezione 3

Tecniche di gestione dei dati

b. Funzione Wait Until Next ms Multiple, che si trova nella palette


FunctionsTime & DialogImpone lesecuzione del ciclo ogni
secondo. Create la costante cliccando con il tasto destro del mouse
sul terminale input e selezionando CreateConstant.
c. Costante
Numeric,
che
si
trova
nella
palette
FunctionsNumericCrea il tipo di dato corretto per leggere il
valore attraverso DataSocket. Assicuratevi che questa costante sia
una DBL cliccandoci sopra con il tasto destro del mouse e
selezionando RepresentationDouble Precision dal menu
rapido.
d. Funzione DataSocket Read, che si trova nella palette
FunctionsCommunicationDataSocketLegge il numero
casuale dalla URL specificata.
e. VI Simple Error Handler, che si trova nella palette
FunctionsTime & DialogApre una finestra di dialogo in caso
di errore e visualizza le informazioni di errore.
3. Salvate il VI come DS Read Data.vi.
4. Posizionate i pannelli frontali dei VI DS Generate Data e DS Read
Data in maniera tale che li possiate vedere entrambi.
5. Avviate DataSocket Server dal menu Start e selezionate
StartProgramsNational InstrumentsDataSocketDataSocket
Server. Compare la finestra DataSocket Server, simile a quella
mostrata sotto.

6. Tornate ai due pannelli frontali dei VI ed assicuratevi che siano state


inserite le stesse URL in entrambi i VI.
y

dstpIl protocollo di trasferimento DataSocket.

localhostIl computer che state utilizzando.

data1il nome dato al numero casuale che invierete.

7. Avviate i VI DS Generate Data e DS Read Data.


La finestra DataSocket Server mostra un processo connesso e il
valore Number of packets si incrementa ogni secondo quando il
misuratore e il cursore mostrano gli stessi numeri casuali.
8. Arrestate entrambi i VI quando avete finito. Ora modificate i VI per
utilizzare la pubblicazione e sottoscrizione automatiche degli oggetti
del pannello frontale.

LabVIEW Corso Base II

3-32

National Instruments Corporation

Lezione 3

Tecniche di gestione dei dati

Pannello frontale

9. Inserite un indicatore digitale sul pannello forntale del VI DS Read


Data come mostrato sopra.
10. Cliccate con il tasto destro del mouse sul nuovo indicatore digitale e
selezionate Data OperationsDataSocket Connection dal menu
rapido. Inserite i valori seguenti.

11. Cliccate sul pulsante Attach e un piccolo rettangolo grigio appare in


alto sul lato destro dellindicatore digitale. Ci indica che la
connessione DataSocket non attiva.
12. Avviate nuovamente i VI DS Generate Data e DS Read Data.
Il rettangolo vicino allindicatore Random Number diventa verde e il
valore corrisponde ai valori mostrati nel misuratore e nellindicatore a
scorrimento.
Nota Se il vostro computer in rete con altri computer utilizzati in aula, potete

digitare nelle URL gli indirizzi di altre macchine in rete e trasferire i valori tra
computer della classe. Ricordate che potete utilizzare un qualsiasi linguaggio di
programmazione o sistema operativo con le connessioni DataSocket. Andate
alla pagina web su DataSocket della National Instruments allindirizzo
ni.com/datasocket, per ulteriori informazioni.
13. Arrestate e chiudete entrambi i VI e il DataSocket Server quando
avete finito.

Fine dellesercitazione 3-5

National Instruments Corporation

3-33

LabVIEW Corso Base II

Lezione 3

Tecniche di gestione dei dati

Sommario, trucchi e consigli

LabVIEW Corso Base II

DataSocket un metodo di trasferimento dati basato su Internet che


indipendente dalla piattaforma, dal linguaggio di programmazione e
dal protocollo. DataSocket utilizza URL per definire una connessione
dati specifica.

DataSocket consiste in due parti, DataSocket API e DataSocket


Server.

DataSocket
API
di
LabVIEW
consiste
nella
palette
FunctionsCommunicationDataSocket. Le due funzioni principali
sono DataSocket Write e DataSocket Read.

Potete consentire ad ogni controllo o indicatore di pubblicare e/o


sottoscrivere dati attraverso DataSocket Server cliccando sopra
quelloggetto del pannello frontale con il tasto destro del mouse e
utilizzando la finestra Data OperationsDataSocket Connection.

Potete utilizzare variabili globali e locali per accedere ad un


determinato insieme di valori nellambito della vostra applicazione in
LabVIEW. Queste variabili scambiano informazioni tra diversi posti
della vostra applicazione quando non potete utilizzare collegamenti
diretti.

Le variabili locali accedono agli oggetti del pannello frontale del VI in


cui avete inserito la variabile locale.

Quando scrivete su una variabile locale, aggiornate il corrispondente


controllo o indicatore del pannello frontale.

Quando leggete da una variabile locale, leggete il valore corrente del


corrispondente controllo o indicatore del pannello frontale.

Le variabili globali sono oggetti interni a LabVIEW che passano i dati


tra VI. Essi possiedono dei pannelli frontali in cui immagazzinano i
loro dati.

Scrivete sempre un valore sulla variabile globale prima di leggere da


essa, per fare in modo che abbia un valore iniziale noto quando
accedete ad essa.

Scrivete su variabili locali e globali da posizioni diverse rispetto a


quelle da cui le leggete, per evitare situazioni di conflitto.

Utilizzate variabili locali e globali solo quando necessario. Un abuso


pu causare unesecuzione pi lenta ed un utilizzazione inefficiente
della memoria nellambito della vostra applicazione.

Le variabili locali e globali non usano il flusso di dati, e quindi se le


usate troppo di frequente, potete rendere i vostri schemi a blocchi di
difficile comprensione per altre persone. Utilizzate variabili locali e
globali in maniera sapiente.

3-34

National Instruments Corporation

Lezione 3

Tecniche di gestione dei dati

Esercizi aggiuntivi
3-6 Aprite il VI In Range. Esaminate lo schema a blocchi. Questo
semplice VI genera cinque numeri casuali e accende un LED se
lultimo numero generato si trova tra 0.1 e 0.9. Avviate il VI diverse
volte fino a quando si accende il LED. Notate che se il LED si
accende durante unesecuzione del VI, rimane acceso durante la
seconda esecuzione finch il ciclo For terminato e lultimo numero
viene passato alla funzione In Range?, che si trova nella palette
FunctionsComparison. Modificate il VI utilizzando una variabile
locale affinch il LED si spenga quando il VI viene avviato. Salvate il
vostro VI dopo che avete finito.
3-7 Come gi detto prima, il trasferimento dati tramite una variabile
globale non un processo sincronizzato. Se provate a leggere dati da
una variabile globale troppo rapidamente o troppo lentamente,
potreste leggere copie dello stesso valore o perdere completamente dei
dati. Questo stato visto nellesercitazione 3-4, in cui potevate
regolare il ritardo tra le letture della variabile globale Data Value per
ottenere dati pi velocemente o pi lentamente.
Modificate Data to Global e Display Global Data, nellesercitazione
3-3 e 3-4, affinch utilizzino un protocollo di handshake per garantire
che i dati non vengano saltati o letti pi volte. Impostate un ulteriore
booleano in My Global.vi denominato Handshake, che verr usato
per indicare quando i VI sono pronti per inviare o ricevere dati. Nel
VI Data to Global, assicuratevi di impostare la variabile globale
booleana Handshake su FALSE prima che passi un nuovo dato al
numerico Data Value. In Display Global Data impostate il booleano
Handshake su TRUE prima che tenti di leggere il dato numerico. In
entrambi i VI, assicuratevi di impostare il booleano Handshake in
modo tale che altri VI sappiano quando accedere alla variabile.
Chiamate

la nuova variabile globale booleana Handshake


Global.vi e gli altri due VI Data to Handshake Global.vi e
Display Handshake Global.vi.

Sfida
3-8 Aprite il VI Select and Plot Waveform dallesercitazione 3-2.
Utilizzate le informazioni alla fine della Sezione D per riscrivere
questo VI per non utilizzare pi la struttura Sequence e le variabili
locali.
Suggerimento Utilizzate unarchitettura con macchine a stati e trasferite i dati

utilizzando i registri a scorrimento o collegamenti diretti.


Salvate il VI come Select and Plot Waveform2.vi.

National Instruments Corporation

3-35

LabVIEW Corso Base II

Lezione 3

Tecniche di gestione dei dati

Note

LabVIEW Corso Base II

3-36

National Instruments Corporation

Lezione 4
Tecniche avanzate di I/O su file
Quando si implementano subVI per lI/O su file, potreste aver bisogno di
considerare diversi formati di file. Per esempio, se unapplicazione fatta
da altre persone dovesse leggere dati acquisiti da LabVIEW, dovreste
salvare i dati in formato testo perch molte applicazioni supportano i file
di testo. Daltro canto, se solo LabVIEW dovr accedere ai dati e le
dimensioni dei file sono critiche, i file binari risultano essere una scelta
migliore. Tecniche avanzate di I/O su file e le funzioni interne per lI/O di
file consentono questa flessibilit.

Imparerete:
A. A lavorare con file a flusso di byte
B. A creare e a lavorare con file datalog
C. A trasferire i dati su disco
D. A conoscere vantaggi e svantaggi di file testo, binari e datalog.

I subVI che realizzerete consentono di:


A. Salvare dati su file
B. Visualizzare file di analisi

National Instruments Corporation

4-1

LabVIEW Corso Base II

Lezione 4

Tecniche avanzate di I/O su file

A. Lavorare con file a flusso di byte


Le funzioni per lI/O su file di LabVIEW rendono estremamente semplice
lavorare con file a flusso di dati o con file di testo e binari. Utilizzate le
stesse funzioni per manipolare questi file. Tuttavia, quando si lavora con
file binari, i dati generalmente non sono in un formato leggibile. Inoltre,
siccome non potete contare su caratteri speciali come i tasti <Tab> e
<Return>, dovete conoscere la struttura dei dati immagazzinati nel file
prima di leggerlo. Senza questa conoscenza, non potete interpretare con
successo i dati memorizzati nel file binario.

Funzioni per lI/O di file pi frequenti


Prima di descrivere i file a flusso di dati in dettaglio, rivedremo
rapidamente le funzioni per lI/O su file di LabVIEW. Queste funzioni si
trovano nelle palette FunctionsFile I/O e FunctionsFile
I/OAdvanced File Functions.
Fate riferimento a HelpContents and Index per ulteriori informazioni
su queste funzioni.

Nota

La funzione File Dialog nella palette File I/OAdvanced File Functions


visualizza una finestra di dialogo per la selezione di file. Potete scegliere
da questa finestra file nuovi o esistenti oppure directory. Descriveremo
pi avanti nella lezione luso dellingresso datalog type.

La funzione Open File nella palette File I/OAdvanced File Functions


apre un file esistente. Dovete collegare un percorso valido allingresso file
path. Questa funzione non in grado di creare o sostituire file. Essa apre
solo file esistenti. Lingresso datalog type viene usato solo quando si
aprono file datalog di LabVIEW.

La funzione New File nella palette File I/OAdvanced File Functions


crea un nuovo un nuovo file per la lettura o la scrittura. Dovete collegare
un percorso allingresso file path. Utilizzate lingresso datalog type solo
quando si creano nuovi file datalog di LabVIEW.

LabVIEW Corso Base II

4-2

National Instruments Corporation

Lezione 4

Tecniche avanzate di I/O su file

La funzione Write File nella palette FunctionsFile I/O scrive dati su un


file aperto. Il comportamento di questa funzione varia leggermente a
seconda che stiate scrivendo dati su un file a flusso di dati o su un file
datalog di LabVIEW.

La funzione Read File nella palette FunctionsFile I/O legge dati da un


file aperto. Quando si leggono file a flusso di dati, potete utilizzare
lingresso byte stream type per indicare come LabVIEW dovrebbe
interpretare i dati nel file. Descriveremo questo concetti pi avanti in
questa lezione.

La funzione Close File nella palette FunctionsFile I/O chiude il file


associato a refnum.

File a flusso di dati


Potete utilizzare la funzione Write File per creare entrambi i tipi di file a
flusso di datitesto e binario. La creazione di un file testo semplice
come mandare una stringa contenente caratteri alla funzione Write
Function.

Quando utilizzare file testo


I file testo sono utili e diffusi per molte ragioni. Quasi ogni sistema
operativo e la maggior parte delle applicazioni software possono leggere e
scrivere file in formato testo. Storicamente la maggior parte delle
applicazioni di controllo degli strumenti, come la GPIB e la seriale,
utilizzano stringhe di testo per inviare istruzioni di controllo.

National Instruments Corporation

4-3

LabVIEW Corso Base II

Lezione 4

Tecniche avanzate di I/O su file

A causa delluniversalit del formato testo, ci sono diverse situazioni in


cui i file testo sono preferibili per la memorizzazione dei dati. Per
esempio, i file testo sono preferibili quando progettate di leggere o
manipolare dati con altre applicazioni software, come fogli elettronici o
word processor.
I file testo presentano anche degli svantaggi significativi. E difficile
accedere in maniera casuale a dati numerici presenti in file testo. Sebbene
ogni carattere in una stringa occupi esattamente un byte di spazio, lo
spazio necessario per esprimere un numero come testo tipicamente non
viene fissato. Per trovare il nono numero in un file testo, LabVIEW deve
dapprima leggere e convertire i precedenti otto numeri.
Potreste perdere in precisione memorizzando i dati numerici in file di
testo. I computer memorizzano i dati in formato binario, e tipicamente
scrivete dati numerici su un file testo con notazione decimale. Potrebbe
esserci una perdita di precisione quando leggete dati da un file testo. La
perdita di precisione non avviene con i file binari.
Come mostrato nello schema a blocchi precedente, la funzione Write File
scavalca ogni informazione di intestazione che LabVIEW utilizza per
immagazzinare la stringa in memoria e scrive il contenuto del controllo
dati della stringa su file. Infatti la funzione Write File non distingue una
stringa di testo da una binaria quando si scrivono dati su fileessa scrive
i dati su file. Il terminale dati della funzione Write File polimorfico, il
che significa che si adatta ad ogni genere di dato che collegate ad esso.
Perci potete creare un file binario collegando dati binari alla funzione
Write File nellesempio precedente. Tuttavia noterete che le informazioni
di intestazione sono vitali per linterpretazione del file binario.
Per esempio, se collegate una matrice bidimensionale di numeri nel
terminale data, la funzione Write File inserisce una copia byte per byte
dei dati di ingresso nel file. Essa non converte il numero in testo n
inserisce informazioni sul numero di righe o di colonne della matrice nel
file. Anche se sapete che i dati erano originariamente numeri in virgola
mobile e singola precisione, non potete ricostruire con successo la matrice
bidimensionale. Se il file contiene 24 byte di dati e sapendo che i numeri
in virgola mobile e singola precisione utilizzano quattro byte di memoria
ciascuno, potete calcolare che la matrice conteneva sei valori (24/4 = 6).
Tuttavia, i dati originari potrebbero essere stati memorizzati in una
matrice monodimensionale di sei elementi, una matrice bidimensionale
con una riga e sei colonne o una tabella con tre colonne e due righe.

Quando utilizzare file binari


Rispetto ai file di testo, quelli binari richiedono meno spazio sul disco per
memorizzare la stessa mole di informazioni. I file binari vi consentono di
accedere in maniera casuale ai dati memorizzati nel file.

LabVIEW Corso Base II

4-4

National Instruments Corporation

Lezione 4

Tecniche avanzate di I/O su file

Tuttavia i file binari generalmente non sono trasportabili su altre


applicazioni. Inoltre dovete documentare con cura i dettagli necessari ad
estrarre linformazione memorizzata in un file binario.

Creazione di informazioni di intestazione per un file binario


Quando create file binari, ideare unopportuna intestazione del file
spesso lunico compito importante. Potete creare informazioni di
intestazione generando in modo esplicito unintestazione o utilizzando
lingresso header della funzione Write File. Lesempio seguente mostra
come generare esplicitamente unintestazione che contenga il numero di
righe e colonne dei dati.

Potete anche generare lo stesso file utilizzando lingresso header della


funzione Write File. Se collegate un valore booleano TRUE allingresso
header della funzione Write File, essa scrive gli stessi dati sul file come
se aveste scritto manualmente unintestazione. Lesempio seguente
mostra come utilizzare la funzione Write File per creare un file binario
con intestazione.

Utilizzando lesempio dello schema a blocchi precedente, se collegate


nuovamente una matrice bidimensionale di numeri a singola precisione
con tre righe e due colonne, il file dovrebbe contenere 24 byte di dati e
due interi di tipo long aggiuntivi, di quattro byte ciascuno, come
informazioni di intestazione. I primi quattro byte contengono il numero di
righe della matrice; i secondi quattro byte contengono il numero di
colonne.
Come mostrato nellesempio seguente, potete leggere il file binario dagli
esempi precedenti utilizzando la funzione Read File.

National Instruments Corporation

4-5

LabVIEW Corso Base II

Lezione 4

Tecniche avanzate di I/O su file

Notate che lingresso byte stream type della funzione Read File possiede
una matrice bidimensionale di numeri in singola precisione collegata ad
essa. La funzione Read File utilizza solo il tipo di dato di questo ingresso
per leggere i dati nel file, assumendo che abbia le informazioni di
intestazione corrette per quel tipo di dato.

Accesso casuale nei file a flusso di byte


Se memorizzate matrici di dati numerici su un file, potreste avere la
necessit di accedere ai dati in posizioni casuali del file. Non potete
accedere in maniera casuale ai dati memorizzati in file di testo quando i
dati hanno il segno negativo, hanno un numero variabile di cifre su singoli
punti di dati e altri fattori. Per esempio, se avete una matrice di 100
numeri compresi tra 0 e 1000, non potete prevedere dove si trovi un dato
elemento nella matrice allinterno del file di testo. Il problema che nel
testo, il numero 345 richiede tre byte per essere memorizzato mentre il
numero 2 ne richiede solo uno. Quindi non potete prevedere la posizione
di un elemento arbitrario nel file.
Tali ostacoli non si presentano nei file binari. In un file binario, il formato
compatto di un numero in LabVIEW unimmagine binaria del numero
stesso. Quindi ogni numero nella matrice utilizza un numero fissato di
byte di memorizzazione su disco. Se sapete che un file memorizza numeri
in singola precisione, che utilizzano quattro byte per numero, potete
leggere un gruppo arbitrario di elementi dalla matrice, come mostrato
nellesempio seguente.

Calcolate il numero di byte dallinizio


del file per iniziare a leggere i dati

LabVIEW Corso Base II

4-6

National Instruments Corporation

Lezione 4

Tecniche avanzate di I/O su file

Nellesempio dello schema a blocchi precedente, lingresso pos mode


della funzione Read File impostato su start, il che significa che la
funzione inizia a leggere i dati al numero di byte pos offset dallinizio del
file. Il primo byte nel file ha un offset di zero. Quindi la posizione
dellelemento di ordine n in una matrice di numeri in virgola mobile e
singola precisione memorizzati in questo file di 4xn byte dallinizio del
file. Una costante in virgola mobile e singola precisione collegata
allingresso byte stream type, dice alla funzione Read File di leggere i
valori in virgola mobile e singola precisione dal file. Il controllo # values
to read, collegato allingresso count della funzione Read File, dice alla
funzione quanti sono gli elementi in singola precisione da leggere dal file.
Notate che quando lingresso count collegato, LabVIEW inserisce i dati
di uscita in una matrice, perch LabVIEW legge pi di un valore dal file.
Sono importanti da ricordare i seguenti punti relativamente alle
operazioni ad accesso casuale:
y

Quando si eseguono I/O su file di testo e binari, ricordate che i valori


per il terminale pos offset sono misurati in bytes.

Lingresso count nella funzione Read File controlla quanti byte di


informazione sono letti dal file quando lingresso byte stream type
non collegato. I dati letti dal file vengono restituiti in una stringa.

Se lingresso byte stream type collegato, luscita data della


funzione Read File dello stesso tipo dellingresso byte stream type
quando lingresso count non collegato.

Se lingresso byte stream type collegato e lingresso count ha dei


dati collegati ad esso, allora la funzione Read File restituisce una
matrice contenente count elementi dello stesso tipo di dati
dellingresso byte stream type.

Fate riferimento al LabVIEW Help e al LabVIEW User Manual per


ulteriori informazioni sulle operazioni di accesso casuale e sui file a
flusso di dati.

National Instruments Corporation

4-7

LabVIEW Corso Base II

Lezione 4

Tecniche avanzate di I/O su file

Esercitazione 4-1
Obiettivo:

VI Binary File Writer

Realizzare un VI che scriva dati su un file binario con uno schema semplice di
formattazione dei dati
Questo VI salva i dati su un file binario utilizzando uno schema semplice
di formattazione in cui lintestazione del file un intero di tipo long word
(I32) contenente il numero di dati presenti nel file. Nellesercizio
successivo, costruite un VI che legga il file binario.

Pannello frontale
1. Aprite un nuovo VI.
2. Costruite il seguente pannello frontale. Quando create il menu tipo
ring, ricordate che una combinazione rapida di tasti per aggiungere
una nuova voce allelenco di opzioni si ottiene premendo <ShiftEnter> dopo aver immesso il testo per una voce dellelenco. Inserite
Zero for nella voce 0 dellelenco, Sine nella voce uno e cos via.
Per visualizzare il valore numerico del menu tipo ring, cliccate con il
tasto destro del mouse sul controllo e selezionate Visible
ItemsDigital Display.
Macintosh, <Shift-Return>; Sun, <Shift-Return>; HP-UX, <Shift-Enter>; and
Linux, <Shift-Return>.

Laspetto del controllo del menu tipo ring varia da una piattaforma
allaltra.

Nota

3. Aprite lo schema a blocchi.

LabVIEW Corso Base II

4-8

National Instruments Corporation

Lezione 4

Tecniche avanzate di I/O su file

Schema a blocchi
4. Realizzate lo schema a blocchi seguente.

a. Inserite il VI Open/Create/Replace File VI che si trova nella


palette FunctionsFile I/O. Questo VI crea o sostituisce un file.
b. Inserite la funzione Write File che si trova nella palette
FunctionsFile I/O. Questa funzione appare due volte in questa
esercitazione. La prima funzione scrive lintestazione del file
binario, che un intero a quattro byte contenente il numero di
valori scritti sul file. La seconda scrive la matrice di dati su file.
c. Inserite la funzione Close File che si trova nella palette
FunctionsFile I/O. In questa esercitazione questa funzione
chiude il file binario dopo che i dati sono stati scritti in esso.
d. Inserite il VI Simple Error Handler che si trova nella palette
FunctionsTime & Dialog. In caso di errore, questo VI
visualizza una finestra di dialogo con le informazioni sul tipo di
errore e dove avvenuto.
e. Per creare questa costante, cliccate con il tasto destro del mouse
sullingresso pos mode della funzione Write File e selezionate
CreateConstant. Impostate position mode su start per garantire
che i nuovi dati siano scritti relativamente allinizio del file.
f. Per creare questa costante, cliccate con il tasto destro del mouse
sullingresso function del VI Open/Create/Replace File e
selezionate CreateConstant. Selezionando create or replace,
consentite allutente di creare un nuovo file o di sovrascriverne
uno esistente.
g. Inserite il VI Acquire Signal che si trova nella palette
FunctionsUser LibrariesBasics-II Course. In questa
esercitazione, questo VI genera la forma donda selezionata
tramite il controllo Select Waveform.
h. Inserite la funzione Array Size che si trova nella palette
FunctionsArray. In questa esercitazione, questa funzione
restituisce il numero di elementi nella matrice monodimensionale
di dati da scrivere su file.
5. Salvate il VI come Binary File Writer.vi. Avviatelo, salvando
i dati sul file del disco denominato data.bin.

Fine dellesercitazione 4-1

National Instruments Corporation

4-9

LabVIEW Corso Base II

Lezione 4

Tecniche avanzate di I/O su file

Esercitazione 4-2

VI Binary File Reader

Obiettivo: Realizzare un VI che legga il file binario creato nellultima esercitazione.

Pannello frontale
1. Aprite un nuovo VI e realizzate il pannello frontale seguente.

2. Aprite lo schema a blocchi.

Schema a blocchi
3. Realizzate lo schema a blocchi seguente.

a. Inserite il VI Open/Create/Replace File VI che si trova nella


palette FunctionsFile I/O. Questo VI apre un file.
b. Inserite la funzione Read File che si trova nella palette
FunctionsFile I/O. Questa funzione appare due volte in questa
esercitazione. La prima funzione legge lintestazione del file
binario, che un intero a quattro byte contenente il numero di
elementi nella matrice memorizzata sul file. La seconda legge la
matrice di dati dal file.
c. Inserite la funzione Close File che si trova nella palette
FunctionsFile I/O. In questa esercitazione questa funzione
chiude il file binario dopo che i dati sono stati letti da esso.
d. Inserite il VI Simple Error Handler che si trova nella palette
FunctionsTime & Dialog. In caso di errore, questo VI
visualizza una finestra di dialogo con le informazioni sul tipo di
errore e dove avvenuto.

LabVIEW Corso Base II

4-10

National Instruments Corporation

Lezione 4

Tecniche avanzate di I/O su file

e. Inserite la costante Numeric che si trova nella palette


FunctionsNumeric. Dovete creare una costante I32 affinch la
funzione Read File sappia quale tipo di dato aspettarsi. I32 il
tipo di dato di default per le costanti numeriche.
f. Inserite la costante Numeric che si trova nella palette
FunctionsNumeric. Dovete creare una costante in doppia
precisione affinch la funzione Read File sappia quale tipo di dato
aspettarsi. Siccome I32 il tipo di dato di default per le costanti
numeriche, cliccate con il tasto destro del mouse e selezionate
RepresentationDouble Precision.
4. Tornate al pannello frontale. Salvate il VI come Binary File
Reader.vi.
5. Avviate il VI. Aprite il file data.bin creato nellesercitazione 4-1.
Dopo aver aperto il file, la funzione Read File utilizza lingresso byte
stream type, che presenta un intero di tipo long, quattro byte, collegato
ad esso, per leggere i primi quattro byte dal file. La funzione
visualizza il numero nellindicatore Number of Data Points, che
mostra quanti numeri erano memorizzati nel file. Ricordate che questa
intestazione stata creata dalla funzione Write File nel VI Binary File
Writer nellesercitazione 4-1.
La seconda funzione Read File legge la matrice di dati dal file
utilizzando lingresso byte stream, che presenta un valore a virgola
mobile in doppia precisione collegato ad esso. Lingresso count
definisce quanti valori dovrebbero essere letti dal file.
6. Chiudete il VI.

Fine dellesercitazione 4-2

National Instruments Corporation

4-11

LabVIEW Corso Base II

Lezione 4

Tecniche avanzate di I/O su file

B. File datalog di LabVIEW


Se i vostri dati sono di tipo diverso, la formattazione in stringhe di testo o
binario per la memorizzazione pu essere noioso e poco efficiente. I file
datalog di LabVIEW utilizzano un formato di memorizzazione dei dati
per il salvataggio di dati di un qualsiasi tipo. Per esempio potreste voler
salvare dei record di dati che contengono diverse centinaia di punti,
compresa la data e lora per ogni insieme.
Un file datalog memorizza le informazioni come una serie di record di un
qualsiasi tipo di dato. Sebbene tutti i record in un file devono essere dello
stesso tipo, tali record possono essere arbitrariamente complessi. Ogni
record scritto su file come un cluster contenente il nome delloperatore
del test, informazioni sul test, data e ora, e una matrice di valori numerici
per i dati attuali del test.

Utilizzate le stesse funzioni di I/O che avete usato per i file a flusso di
byte per lavorare con i file datalog. Tuttavia, utilizzate lingresso del tipo
di dato in maniera diversa per i file datalog. Per creare un nuovo file
datalog, collegate un cluster che si adatti con il cluster del record di dati al
terminale datalog type della funzione New File. Questo cluster definisce
come i dati vengono scritti sul file. Quindi collegate il record dei dati
attuali al terminale data della funzione Write File. Il cluster datalog type
collegato a New File non deve essere un record di dati attualine avete
bisogno solo per definire il tipo di dato che potete memorizzare nel file.
Lesempio seguente mostra come creare un nuovo file datalog.

LabVIEW Corso Base II

4-12

National Instruments Corporation

Lezione 4

Tecniche avanzate di I/O su file

Per leggere il record delle informazioni dal file datalog, dovete collegare
un ingresso a datalog type della funzione Open File che coincida
esattamente con il tipo di dato dei record memorizzati nel file. Lesempio
seguente mostra come aprire e leggere un file datalog esistente.

Il cluster collegato allingresso datalog type della funzione Open File


devessere identico al cluster utilizzato per creare il file e scriverci i dati,
compresi il tipo di dato numerico e lordine del cluster.
Nota

Quando lingresso count della funzione Read File rimane scollegato, la


funzione legge un singolo record dal file datalog. Se collegate un ingresso
al terminale count, Read File restituisce una matrice di record.

Quando utilizzare i file datalog


Potete utilizzare file datalog per memorizzare e recuperare formati
complessi di dati in LabVIEW. Tuttavi, i file datalog, come quelli binari,
non hanno un formato standard per la memorizzazione. Quindi essi sono
virtualmente impossibile da leggere con applicazioni software diverse da
LabVIEW. I file datalog sono pi utili se intendete accedere ai dati solo
da LabVIEW e avete bisogno di memorizzare strutture complesse di dati.

National Instruments Corporation

4-13

LabVIEW Corso Base II

Lezione 4

Tecniche avanzate di I/O su file

Esercitazione 4-3

VI Save Data to File

Obiettivo: Completare un VI che salvi i dati in un file testo, binario o datalog.


Completando questo VI si abilita lopzione Log Results to File del VI
Analyze and Present Data dellesercitazione 2-7. Ricordatevi che utilizzerete
lesercitazione 4-3 nel progetto della Lezione 5.
Nota

Nellapplicazione che state per sviluppare, avete bisogno di salvare un


insieme di dati diversi su disco. Questo insieme di dati contiene semplici
numeri, matrici di numeri e dati di tipo stringa. Inoltre questi dati
vengono utilizzati solo in LabVIEW. A causa di questi vincoli,
utilizzerete i file datalog per salvare su disco dei sottoinsiemi di dati
dellapplicazione.

Pannello frontale
1. Aprite il VI Save Data to File che si trova nella directory
exercises\Basics2. Il pannello frontale gi realizzato
I due controlli sul pannello frontale sono utilizzati per passare i dati
dellapplicazione a questo VI, che opera come subVI nel progetto
completo. Il Data Cluster conterr il sottoinsieme di dati analizzati da
salvare su disco e la stringa Employee name conterr il nome
delloperatore da salvare su file.

2. Aprite lo schema a blocchi.

LabVIEW Corso Base II

4-14

National Instruments Corporation

Lezione 4

Tecniche avanzate di I/O su file

Schema a blocchi
3. Completate la struttura Case dello schema a blocchi seguente. Le
condizioni che non sono mostrate sono gi realizzate.

a. Cancellate la costante booleana etichettata con Delete Me.


b. Inserite la funzione File Dialog che si trova nella palette
FunctionsFile I/OAdvanced File Functions. Questa funzione
richiede il nome per il nuovo file. Collegate luscita dei terminali
exists e cancelled agli ingressi della funzione OR. Collegate il
valore exists alla struttura Case come mostrato nel precedente
schema a blocchi.
c. Per creare questa costante, cliccate con il tasto destro del mouse
sullingresso select mode della funzione File Dialog e selezionate
CreateConstant. Con lo strumento modifica, impostate questa
costante sul valore new file.
d. Per creare questa costante, cliccate con il tasto destro del mouse
sullingresso prompt della funzione File Dialog e selezionate
CreateConstant. Questa stringa visualizza un messaggio di
richiesta nella finestra di dialogo.
La struttura Case esterna scrive i dati su un file datalog di
LabVIEW. Notate che collegando Employee Name con Data
Cluster si fornisce il tipo di dato per il file datalog.
e. Inserite la funzione New File che si trova nella palette
FunctionsFile I/OAdvanced File Functions. Questa funzione
crea un nuovo file. Notate che lingresso datalog type di questa
funzione deve ricevere un ingresso.
f. Inserite la funzione Write File che si trova nella palette
FunctionsFile I/O. Questa funzione scrive un record su un file
datalog.
g. Inserite la funzione Close File che si trova nella palette
FunctionsFile I/O. In questa esercitazione questa funzione
chiude il file dopo che ci sono stati scritti i dati.

National Instruments Corporation

4-15

LabVIEW Corso Base II

Lezione 4

Tecniche avanzate di I/O su file

h. Inserite il VI Simple Error Handler che si trova nella palette


FunctionsTime & Dialog. In caso di errore, questo VI
visualizza una finestra di dialogo con le informazioni sul tipo di
errore e dove avvenuto.
4. Dopo aver completato il VI, salvatelo e chiudetelo.
5. Aprite Analyze and Present Data.vi, che avete completato
nellesercitazione 3-3. Questo VI richiama il VI Save Data to File.
Quando avviate questo VI e cliccate sul pulsante Log Results to File,
compare una finestra di dialogo nel VI Save Data to File cos potete
dare un nome al file dati da salvare. Una volta che avete scelto il
nome del file, LabVIEW salva linsieme dei dati come file datalog.

Fine dellesercitazione 4-3

LabVIEW Corso Base II

4-16

National Instruments Corporation

Lezione 4

Esercitazione 4-4
Obiettivo:

Tecniche avanzate di I/O su file

VI View Analysis File

Studiare un VI che legga i file dati creati dal VI Save Data to File dallesercitazione
4-3.
Questo VI legge e visualizza i dati memorizzati dal VI Save Data to File.

Nota Utilizzerete questo VI nella Lezione 5.

Pannello frontale
1. Aprite il VI View Analysis File che si trova nella directory
exercises\Basics2. Questo VI gi stato realizzato.

2. Aprite lo schema a blocchi.

National Instruments Corporation

4-17

LabVIEW Corso Base II

Lezione 4

Tecniche avanzate di I/O su file

Schema a blocchi

La condizione True vuota

3. Esaminate il comportamento del VI. Se lutente cancella la finestra di


dialogo, non accade niente.
Notate che lingresso datalog type della funzione File Dialog
collegato ad un cluster dummy dello stesso tipo di quelli da leggere.
Questo collegamento fa s che la finestra di dialogo di LabVIEW
visualizzi solo le directory e i file con un opportuno tipo di dato. Una
volta che il file stato selezionato, viene aperto come file datalog e
viene letto un unico record di dati. Infine, notate luso della verifica
degli errori in questa applicazione.
4. Dopo che avete avviato e testato il VI, chiudetelo. Non salvate i
cambiamenti.

Fine dellesercitazione 4-4

LabVIEW Corso Base II

4-18

National Instruments Corporation

Lezione 4

Tecniche avanzate di I/O su file

C. Salvataggio di dati su disco


Quando la vostra applicazione acquisisce dati e li scrive su disco
ripetutamente, potete migliorare lefficienza delle operazioni di I/O su file
se non aprite e chiudete il file ogni volta che vi accedete. La tecnica per
lasciare aperti i file tra le operazioni di scrittura viene chiamata disk
streaming. Disk streaming una tecnica che abbiamo usato in questo
corso senza descriverne le sue caratteristiche vantaggiose. Fate
riferimento allesercitazione 4-3 per un esempio.
Gli esempi seguenti mostrano i vantaggi che derivano dallutilizzo di
questa tecnica. Nel primo esempio il VI deve aprire e chiudere il file
durante ogni iterazione del ciclo. Il secondo esempio utilizza il disk
streaming per ridurre il numero di volte che il VI interagisce col sistema
operativo per aprire e chiudere il file. Aprendo il file una volta prima che
il ciclo inizi e chiudendolo dopo che il ciclo ha terminato, risparmiate due
operazioni su file ad ogni iterazione del ciclo.

La tecnica di Disk streaming particolarmente importante quando


utilizzate VI ad alto livello, come Write To Spreadsheet File e Write
Characters To File. Questi VI aprono, scrivono e chiudono il file ogni
volta che vengono eseguiti. Perci se richiamate uno di questi VI in un
ciclo, eseguite operazioni di Open File e Close File inutili ad ogni
iterazione del ciclo.

National Instruments Corporation

4-19

LabVIEW Corso Base II

Lezione 4

Tecniche avanzate di I/O su file

Sommario, trucchi e consigli


Potete utilizzare le funzioni di I/O su file di LabVIEW per lavorare con
file di testo, binari o datalog. Le stesse operazioni di base di Open File,
Read File, Write File e Close File operano con tutti i tipi di file.

File di testo
I file di testo sono file in cui tutti i dati sono memorizzati come caratteri
di testo leggibili. I file di testo sono utili perch quasi tutte le applicazioni
software e i sistemi operativi possono leggerli. Tuttavia i file di testo
possono essere pi grandi del necessario e quindi ne vengono rallentati gli
accessi. E anche molto difficile eseguire I/O su file ad accesso casuale
con file di testo. Di solito utilizzate file di testo quando:
y

Altri utenti o applicazioni hanno bisogno di accedere al file dati.

Non avete bisogno di accedere casualmente in lettura o in scrittura al


file dati.

Lo spazio su disco e la velocit di I/O su file non sono cruciali.

File binari
I file di dati binari sono file in cui i dati vengono memorizzati in formato
binario senza conversioni per rappresentarli come testo. I file di dati
binari sono generalmente pi piccoli e vi si accede pi rapidamente. LI/O
su file ad accesso casuale non presenta grandi difficolt. Tuttavia non
esiste un formato standard per i file binari. Quindi dovete mantenere le
informazioni sui tipi di dati e sulle intestazioni utilizzate nei file binari. Vi
consigliamo di utilizzare file di dati binari quando:
y

E improbabile che altri utenti o applicazioni abbiano bisogno di


accedere ai vostri dati.

Avete bisogno di effettuare I/O su file ad accesso casuale.

Lo spazio su disco e la velocit di I/O su file sono importanti.

File datalog
I file datalog sono un tipo particolare di file binario usati per il
salvataggio e il recupero di strutture di dati complesse in LabVIEW.
Come nel caso di file binari, essi non hanno un formato standard.
Consigliamo luso di file datalog quando:

LabVIEW Corso Base II

I vostri dati sono composti da tipi di dati misti o complessi.

E improbabile che altri utenti o applicazioni abbiano bisogno di


accedere ai vostri dati.

La tecnica di Disk streaming viene utilizzata per scrivere dati su un


file pi volte senza chiudere il file dopo ogni operazione di scrittura.
Ricordate che i VI ad alto livello aprono e chiudono i file ogni volta
che vengono eseguiti, determinando lesecuzione di operazioni inutili
ad ogni ciclo.

4-20

National Instruments Corporation

Lezione 4

Tecniche avanzate di I/O su file

Esercizi aggiuntivi
4-5

Scrivete un VI che utilizzi funzioni di I/O su file avanzate per creare


un nuovo file. Quindi scrivete su quel file una stringa singola
composta da una stringa di ingresso da parte dellutente concatenata
con un numero convertito in una stringa di testo utilizzando la
funzione Format Into String. Chiamate il VI File Writer.vi.

4-6

Scrivete un VI che utilizzi funzioni di I/O su file avanzate per


leggere il file creato nellesercitazione 4-5. Chiamate il VI File
Reader.vi.

Consiglio Utilizzate la funzione EOF che si trova nella palette File


I/OAdvanced File Functions per ottenere la lunghezza del file scritto.

National Instruments Corporation

4-21

LabVIEW Corso Base II

Lezione 4

Tecniche avanzate di I/O su file

Note

LabVIEW Corso Base II

4-22

National Instruments Corporation

Lezione 5
Sviluppo di grandi
applicazioni in LabVIEW
Questa lezione descrive alcuni aspetti che si devono considerare quando
si realizzano grandi applicazioni in LabVIEW, incluso il processo di
progettazione, lorganizzazione di subVI componenti e il processo di
combinazione di questi componenti per creare unapplicazione completa.

Imparerete:
A. Ad assemblare la vostra applicazione in LabVIEW a partire da subVI
gi sviluppati.
B. A conoscere le caratteristiche di LabVIEW per la gestione dello
sviluppo del progetto.
C. A conoscere gli strumenti di LabVIEW per la gestione del progetto.

National Instruments Corporation

5-1

LabVIEW Corso Base II

Lezione 5

Sviluppo di grandi applicazioni in LabVIEW

A. Assemblaggio di unapplicazione in LabVIEW


La Lezione 1 di questo corso ha descritto un approccio di tipo generale
allo sviluppo di applicazioni in LabVIEW. Questo approccio includeva
una progettazione di tipo top-down dellapplicazione, seguito da
unimplementazione bottom-up del progetto come serie di subVI. Di
seguito si riporta uno schema di questo ciclo di sviluppo.

Processo di
confronto con il
cliente

Definizione del
progetto

Prove e rilascio
del prodotto finale

Progetto del
diagramma di
flusso

Integrazione di
subVI nel progetto

Implementazione
dei nodi come VI

Prove sui subVI

Top-Down

Bottom-up

Processo di sviluppo dei progetti in LabVIEW

In questa lezione, inserirete i VI costruiti nelle lezioni precedenti in


unapplicazione pi grande. Svilupperete un VI per una generica
acquisizione di dati che soddisfi i seguenti criteri:

LabVIEW Corso Base II

Fornisca uninterfaccia utente a menu.

Richieda allutente di accedere con un nome e una password corretti.

Se lutente non ha inserito i dati corretti, le altre caratteristiche


vengono disabilitate.

Consenta allutente di configurare le impostazioni di acquisizione,


compresa la frequenza di campionamento, il numero di campioni o di
simulare i dati.

Acquisisca dati da forme donda con la configurazione definita


dallutente.

5-2

National Instruments Corporation

Lezione 5

Sviluppo di grandi applicazioni in LabVIEW

Non appena i dati sono stati acquisiti ed ogni volta che lo desidera,
lutente possa selezionare un sottoinsieme di dati acquisiti, li possa
analizzare, salvando i risultati dellanalisi su un file.

Consenta allutente di caricare e visualizzare i risultati dellanalisi


precedentemente salvati su disco.

Arresti lapplicazione con un click del pulsante Stop.

Nelle lezioni dalla 1 alla 4, vi siete concentrati sugli elementi inferiori del
processo di sviluppo, implementando e provando subVI che
corrispondono ai nodi del seguente diagramma di flusso del progetto.
START
No
Monitor
Menu Interfaccia
utente

Selezione
effettuata?

Pulsante di login
selezionato?

No

No
Entrato?

S
Log in

No
Premuto il
pulsante di
uscita?

Configura
impostazioni di
acquisizione

Raccoglie
dati del
processo

Stop

Selezione
del processo
Analizza dati
correnti e
salva su file
Carica e
visualizza
file di analisi

Lo sviluppo di grandi applicazioni in LabVIEW un processo diverso


rispetto alla realizzazione di VI relativamente lineari, essenzialmente
adibiti ad un unico compito, con i quali abbiamo lavorato finora. Quando
sviluppate grandi applicazioni, troverete che lavorare in gruppo,
controllare il codice sorgente e creare uno schema gerarchico intuitivo per
i subVI della vostra applicazione aumenta la produttivit e migliora la
documentazione e le prestazioni dellapplicazione.

National Instruments Corporation

5-3

LabVIEW Corso Base II

Lezione 5

Sviluppo di grandi applicazioni in LabVIEW

Lavoro di gruppo
Gli esperti di business management mettono in rilievo limportanza del
lavoro di gruppo durante la progettazione di compiti grandi e complessi.
Quando si utilizza LabVIEW, il lavoro di gruppo uno strumento potente
per aumentare la produttivit della programmazione grafica. Quando
molte persone lavorano insieme per sviluppare un progetto in LabVIEW,
essenziale che tutti i membri della squadra concordino su un metodo di
controllo del codice e di organizzazione.

Controllo del codice sorgente


Quando il numero di VI utilizzati nel vostro progetto cresce, il vostro
gruppo di sviluppatori dovrebbe adottare misure per controllare il codice
sorgente del progetto. Potete utilizzare la finestra interna VI Revision
History, che si trova in ToolsVI Revision History, per registrare i
cambiamenti che avete fatto ai VI. Quindi potete allestire un sistema di
verifica per i VI.
Strumenti di sviluppo realizzati da altri, che offrono un sistema di verifica
per proteggere i file di progetto, di solito possono lavorare con LabVIEW,
se sono in grado di operare con file binari. Se utilizzate uno di questi
strumenti per gestire i vostri file di progetto, ricordatevi che i VI e LLB,
le librerie di VI, sono file binari. Quindi gli strumenti che uniscono file
sorgente non operano correttamente con i file di LabVIEW.
Se utilizzate un sistema di verifica e i VI sono memorizzati in una LLB,
dovete verificare lintera libreria di VI. Tenete presente questo quando
lavorate su un progetto. Una tecnica di gestione di VI di lavorare su una
copia del VI che volete modificare e di bloccare il VI originale per
indicare agli altri che il VI non devessere modificato. Per bloccare un VI,
abilitate limpostazione Locking selezionando Security dal menu a
tendina della finestra di dialogo FileVI Properties. Dovreste anche
indicare che avete verificato il VI aggiungendo un commento nella
finestra VI Revision History. Quando bloccate un VI, il suo schema a
blocchi non pu essere modificato. Dopo che avete finito di modificare il
VI, sostituite il VI memorizzato nella LLB con la nuova versione e
sbloccatela cos altri sanno che sicura la verifica del VI.
Per documentare i vostri VI, selezionate Description and Tip dal menu a
tendina nella finestra di dialogo FileVI Properties. Le descrizioni di
controllo forniscono anchesse un aiuto online che potete utilizzare nel
prodotto finale.

Utilizzo di librerie di LabVIEW (LLB)


Potete caricare e salvare VI utilizzando un file speciale denominato
libreria di VI (.llb). I file librerie di VI sono utili per lorganizzazione di
VI. Alcuni dei vantaggi che derivano dalluso di LLB sono:

LabVIEW Corso Base II

5-4

National Instruments Corporation

Lezione 5

Sviluppo di grandi applicazioni in LabVIEW

Potete utilizzare nomi lunghi fino a 255 caratteri per i vostri VI.

LLB memorizzano diversi VI in un formato compresso, che fa


risparmiare spazio su disco.

Potete classificare dei VI per metterli in testa alla classifica.

Il trasporto di VI su unaltra piattaforma semplificato perch non


avete bisogno di trasferire molti file.

Ci sono anche alcuni svantaggi quando utilizzate LLB:


y

Il caricamento e il salvataggio per applicazioni che usano un gran


numero di subVI memorizzati in LLB sono generalmente pi lenti
rispetto a subVI che sono memorizzati direttamente su disco
utilizzando directory.

Le librerie di VI non sono gerarchiche. Non potete creare una libreria


di VI in unaltra libreria di VI, e quindi tutti i VI e subVI sono allo
stesso livello.

Quando i file LLB diventano grandi, cio fino a diversi megabyte, il


salvataggio su un VI memorizzato in una LLB prende pi tempo.

Ricordate che il sistema operativo visualizza una LLB come un


singolo file, cos quando salvate un VI in una LLB, LabVIEW e il
sistema operativo devono operare su un file molto grande. Lavorando
con file di tali dimensioni, correte rischi maggiori di superare i limiti
di memoria o di spazio su disco, aumentando la probabilit di rovinare
la libreria e di perdere il lavoro.

Non potete utilizzare gli strumenti di ricerca dei file del vostro sistema
operativo per trovare VI memorizzati in una LLB.

Il controllo del codice sorgente di VI memorizzati in LLB pi


difficile.

Come regola, provate a limitare le dimensioni della vostra LLB a circa 1


MB. Memorizzare i vostri VI in una LLB o direttamente su disco pu
dipendere dalle limitazioni sul nome del file del vostro sistema operativo
o da come scegliete di organizzare i vostri file.
Fate riferimento al manuale LabVIEW Development Guidelines,
disponibile allindirizzo ni.com, per ulteriori informazioni sulla
progettazione, la realizzazione e il test di applicazioni in LabVIEW, con
una guida sugli stili, elenchi di controllo e riferimenti.

Creazione di applicazioni in LabVIEW


Ora state per creare lapplicazione descritta nelle pagine precedenti. Il
primo passo per creare unapplicazione professionale e indipendente
tramite VI di capire larchitettura della vostra applicazione. Voi state
per utilizzare larchitettura a macchine a stati descritta nella Lezione 1.
Questa applicazione contiene un unico VI a livello superiore che richiama
altri VI come subVI.

National Instruments Corporation

5-5

LabVIEW Corso Base II

Lezione 5

Sviluppo di grandi applicazioni in LabVIEW

Nelle quattro esercitazioni successive realizzerete il VI Application


Exercise. Ogni esercitazione aggiunge uno stato o due allapplicazione.
Questo metodo viene utilizzato per consentirvi di testare lapplicazione
man mano che viene costruita.

LabVIEW Corso Base II

5-6

National Instruments Corporation

Lezione 5

Esercitazione 5-1
Obiettivo:

Sviluppo di grandi applicazioni in LabVIEW

VI Application Exercise (5-1)

Utilizzare il VI Login creato nellesercitazione 3-1 per proteggere con password


unapplicazione.
Inizierete a creare unapplicazione che utilizza diversi VI che avete scritto
precedentemente nel corso. Il primo passo di questo processo di sviluppo
di aggiungere una procedura di login al VI Menu creato
nellesercitazione 2-3.

Pannello frontale
1. Aprite il VI Menu che si trova nella directory exercises\Basics2.
Avete creato questo VI nellesercitazione 2-3.

Nota Se non avete completato lesercitazione 2-3, individuate il VI Menu nelle

soluzioni del corso memorizzate sul vostro computer.


2. Aggiungete un indicatore di stringa che si trova nella palette
ControlsString & Path. Etichettatela con Operatore.
3. Aggiungete un Led rettangolare che si trova nella palette
ControlsBoolean ed etichettatela con Accesso consentito.
Scriverete questo VI in maniera tale che, finch non viene
riconosciuto un utente con login corretto, lutente possa utilizzare solo
i pulsanti Login e Stop.
4. Aprite lo schema a blocchi.

National Instruments Corporation

5-7

LabVIEW Corso Base II

Lezione 5

Sviluppo di grandi applicazioni in LabVIEW

Schema a blocchi
5. Modificate il VI seguente. Modificate solo il ciclo While e le
condizioni 1 e 0. Il VI Login viene richiamato quando lutente preme
il pulsante Login sul pannello frontale (condizione 0 della struttura
Case). Ricordatevi di cancellare la funzione One Button Dialog che
avete inserito nella condizione 0 nellesercitazione 2-3.

Nota Se non avete completato lesercitazione 3-1, individuate il VI Login nelle

soluzioni del corso memorizzate sul vostro computer.

LabVIEW Corso Base II

5-8

National Instruments Corporation

Lezione 5

Sviluppo di grandi applicazioni in LabVIEW

6. Inoltre modificate il VI in maniera tale che:


a. Lindicatore Operatore sia inizializzato con una stringa vuota
quando il VI si avvia.
b. Se lutente non ha effettuato il login correttamente, solo i pulsanti
Login e Stop siano in esecuzione.
c. Se il VI Login fornisce un valore FALSE per luscita Accesso
consentito, lindicatore Operatore deve risultare vuoto.
Nota Il VI ha bisogno delle informazioni Operatore e Accesso consentito nelle

successive iterazioni del ciclo. Quindi questo VI utilizza due registri a


scorrimento aggiuntivi per memorizzare i dati. Dovete assicurarvi che le altre
condizioni della struttura Case passino i dati correttamente, in maniera diretta
fra le condizioni.
Utilizzando i registri a scorrimento, notate che solo la condizione 0, in cui
viene eseguito il VI Login, pu modificare i valori Operatore e Accesso
consentito.
Il ciclo verifica che il valore memorizzato nel registro a scorrimento
booleano, che rappresenta lo stato di Accesso consentito, sia TRUE, se
lutente ha premuto il pulsante Login (componente 0 nel cluster di menu)
o quello Stop (componente 4) per determinare quale condizione eseguire.
Se tutte queste condizioni sono FALSE, allora viene eseguita la
condizione 1.
7. Avviate il VI e testatelo per assicurarvi che si comporti correttamente.
Utilizzate gli strumenti di verifica di LabVIEWesecuzione
evidenziata, passo-passo, sonde e punti dinterruzioneper
determinare il flusso di dati del VI.
8. Salvate il VI come Application Exercise (5-1).vi. Non
chiudete il VI.

Fine dellesercitazione 5-1

National Instruments Corporation

5-9

LabVIEW Corso Base II

Lezione 5

Sviluppo di grandi applicazioni in LabVIEW

Esercitazione 5-2

VI Application Exercise (5-2)

Obiettivo: Aggiungere il VI Acquire Data allapplicazione iniziata nellesercitazione 5-1.


Nellesercitazione precedente, avete iniziato a realizzare il VI Application
Exercise. Ora dovete aggiungere il VI Acquire Data, che avete realizzato
nellesercitazione 2-2.

Schema a blocchi
1. Assicuratevi che il VI Application Exercise (5-1) sia aperto. Non
modificherete il pannello frontale in questa esercitazione. Aprite lo
schema a blocchi.

2. Mostrate la condizione 1 della struttura Case e cancellate la funzione


One Button Dialog. Aggiungete il VI Acquire Data, che avete
realizzato nellesercitazione 2-2. Se non avete finito
quellesercitazione, utilizzate il VI delle soluzioni che si trova sul
vostro computer.
3. Aggiungete un registro a scorrimento sulla cornice del ciclo While.
Collegate luscita Time Waveform del VI Acquire Data sul lato
destro del registro a scorrimento.
4. Dovete inizializzare il nuovo registro a scorrimento che avete creato.
a. Cliccate con il tasto destro del mouse sul lato sinistro del registro a
scorrimento che contiene il cluster di configurazione e selezionate
CreateControl dal menu rapido. Questo crea un controllo di
forma donda vuoto sul pannello frontale.
b. Nascondete questo controllo di Time Waveform cliccando con il
tasto destro del mouse sul terminale e selezionando Hide Control
dal menu rapido. Ci rende il controllo invisibile in maniera da
non confondere gli utenti.

LabVIEW Corso Base II

5-10

National Instruments Corporation

Lezione 5

Sviluppo di grandi applicazioni in LabVIEW

5. Modificate le propriet del subVI Acquire Data in maniera tale che


appaia come una finestra di dialogo quando viene richiamato. Cliccate
due volte sul subVI Acquire Data per aprirne il pannello frontale.
Selezionate FileVI Properties e quindi Window Appearance dal
menu a tendina superiore e cliccate sul pulsante Dialog. Cliccate su
OK quindi salvate e chiudete il VI Acquire Data.
6. Ricordate che se una condizione della struttura Case passa i dati
allesterno, anche tutte le altre condizioni della struttura devono farlo.
Completate il VI affinch scambi i dati fra le altre condizioni non
modificate, ricordando il metodo adottato nellesercitazione 5-1.
7. Salvate il VI come Application Exercise (5-2).vi. Avviatelo
e testatelo.

Fine dellesercitazione 5-2

National Instruments Corporation

5-11

LabVIEW Corso Base II

Lezione 5

Sviluppo di grandi applicazioni in LabVIEW

Esercitazione 5-3
Obiettivo:

VI Application Exercise (5-3)

Completare il VI Application Exercise aggiungendo i subVI per i pulsanti Analyze


& Present Data e View Analysis File.
Aggiungerete il VI Analyze & Present Data dellesercitazione 2-7 e il VI
View Analysis File, che avete studiato nellesercitazione 4-4.

Schema a blocchi
1. Assicuratevi che il VI Application Exercise (5-2) sia aperto. Non
modificherete il pannello frontale in questa esercitazione. Aprite lo
schema a blocchi.

LabVIEW Corso Base II

5-12

National Instruments Corporation

Lezione 5

Sviluppo di grandi applicazioni in LabVIEW

2. Cancellate la funzione One Button Dialog nella condizione 2 della


struttura Case. Aggiungete il VI Analyze & Present Data VI a questa
condizione. Avete completato questo VI nellesercitazione 2-7.
a. Collegate la stringa contenente il nome delloperatore allingresso
Operator.
b. Collegate la forma donda contenente i dati raccolti sullingresso
Data.
3. Mostrate la condizione 3 della struttura Case e cancellate la funzione
One Button Dialog. Aggiungete il VI View Analysis File. Non avete
bisogno di fare collegamenti ad esso.
4. Salvate il VI come Application Exercise (5-3).vi ed
avviatelo. Dovreste essere in grado ora di eseguire tutte le opzioni
disponibili nel menu dopo aver effettuato il login con un nome e una
password validi.
Dovete selezionare un sottoinsieme di dati acquisiti quando scegliete
Analyze & Present Data. Dopo aver scelto il sottoinsieme, cliccate sul
pulsante Analyze e quindi selezionate il pulsante per salvare i dati su file.
Altrimenti il file non contiene dati di forma donda.
Nota

Fine dellesercitazione 5-3

National Instruments Corporation

5-13

LabVIEW Corso Base II

Lezione 5

Sviluppo di grandi applicazioni in LabVIEW

B. Caratteristiche di LabVIEW per lo sviluppo di progetti


Storia dei VI
Uno degli strumenti di LabVIEW pi utili per lo sviluppo da parte di
gruppi la finestra VI Revision History. Ogni VI ha una finestra History
che visualizza i commenti registrati da coloro che hanno lavorato sul VI.
Potete utilizzare la finestra VI Revision History per mantenere traccia
delle modifiche e delle revisioni dei VI e delle applicazioni. Potete
configurare LabVIEW con diverse opzioni di VI Revision History, che
possono essere globali o per ogni VI, utilizzando le preferenze di
LabVIEW presenti in ToolsOptions e in FileVI Properties.
Per aprire la finestra Revision History di un VI, selezionate ToolsVI
Revision History.

Dopo aver digitato i vostri commenti nellarea Comment della finestra


Revision History, cliccate su Add per aggiungerli alla storia del VI. La
finestra Revision History memorizza anche del numero di revisioni. Ogni
volta che salvate il VI, il numero di revisioni del VI si incrementa di uno.
Oltre al numero di revisioni e alla data e ora in cui stato aggiunto il
commento alla storia del VI, compare il nome dellutente corrente nel
campo User. Potete configurare le preferenze di LabVIEW per richiedere
un nome utente allavvio, selezionando Revision History dal menu a
tendina superiore nella finestra di dialogo ToolsOptions, oppure potete
modificare il nome dellutente selezionando ToolsUser Name.

LabVIEW Corso Base II

5-14

National Instruments Corporation

Lezione 5

Sviluppo di grandi applicazioni in LabVIEW

Gerarchia dei VI
Uno dei principali vantaggi derivanti dalla scomposizione della vostra
applicazione in subVI il risparmio di memoria. Inoltre, la risposta
delleditor di LabVIEW migliora perch VI pi piccoli sono pi facili da
gestire. Applicazioni gerarchiche sono pi facili da sviluppare, da leggere,
da documentare e da modificare.
Quindi, come regola generale, si consiglia di mantenere lo schema a
blocchi del VI a livello superiore al disotto dei 500 KB. In generale, i
vostri subVI dovrebbero essere significativamente pi piccoli. Per
verificare le dimensioni di uno schema a blocchi, selezionate Memory
Usage dal menu a tendina superiore nella finestra di dialogo FileVI
Properties. Solitamente dovete prendere in considerazione il suddividere
un VI in diversi subVI se il vostro schema a blocchi troppo grande per
entrare completamente nello schermo.

Se trovate che lo schema a blocchi di un VI sta diventando troppo grande.


Potete convertirne una parte in un subVI utilizzando EditCreate SubVI.
Questa possibilit vi fornisce un metodo rapido e facile per creare la
gerarchia della vostra applicazione.
La finestra VI Hierarchy anche un valido strumento per posizionare
subVI e visualizzare il layout complessivo del progetto quando la vostra
applicazione cresce. Per visualizzare la finestra VI Hierarchy, selezionate
BrowseShow VI Hierarchy. Compare una nuova finestra che mostra le
gerarchie di tutti i VI di livello superiore in memoria.
Potete utilizzare le opzioni disponibili nella barra degli strumenti
superiore della finestra VI Hierarchy per mostrare o nascondere varie
categorie di oggetti utilizzati nella gerarchia, come variabili globali o VI
forniti con LabVIEW, cos come la gerarchia che si espande in
orizzontale o in verticale.

National Instruments Corporation

5-15

LabVIEW Corso Base II

Lezione 5

Sviluppo di grandi applicazioni in LabVIEW

Cliccando sulla piccola freccia che compare accanto ad un VI, si espande


o si comprime la vista di quella gerarchia. Potete espandere diversi rami
della gerarchia complessiva.
La finestra Hierarchy seguente contiene la gerarchia dellapplicazione che
avete completato nellesercitazione precedente. I VI della directory di
LabVIEW vi.lib non vengono mostrati. Lintera gerarchia viene
mostrata cliccando con il tasto destro del mouse su unarea libera della
finestra e scegliendo Show All VIs.
Redo Layout

Layout orizzontale
Comprende globali
Comprende
Layout verticale
VI Library
Comprende Type Def

Quando spostate il cursore sulle icone mostrate nella finestra Hierarchy,


compare il nome del VI. Potete cliccare due volte su unicona per aprire il
VI. Potete anche individuare un VI nella gerarchia digitando il nome di un
VI mentre siete nella finestra Hierarchy. Mentre digitate il nome, la
finestra Hierarchy scorre sul relativo VI. Potete anche utilizzare la
caratteristica Find per cercare un VI nella finestra Hierarchy.
La finestra Hierarchy pu anche essere usata come strumento di sviluppo
quando pianificate o implementate il vostro progetto. Per esempio, dopo
aver sviluppato un diagramma di flusso dei VI necessari per
unapplicazione, potete creare, dal basso della gerarchia verso lalto,
ciascuno di questi VI in maniera tale che essi abbiano tutti gli ingressi e le
uscite necessari sul loro pannello frontale, e i subVI che richiamano sul
loro schema a blocchi. Ci realizzer la gerarchia di base
dellapplicazione, che appare nella finestra Hierarchy. Potete quindi
iniziare a sviluppare ciascun subVI, codificando con i colori le icone, che
saranno colorate anche nella finestra Hierarchy, indicando il proprio stato.

LabVIEW Corso Base II

5-16

National Instruments Corporation

Lezione 5

Sviluppo di grandi applicazioni in LabVIEW

Per esempio, icone bianche potrebbero rappresentare VI non toccati,


icone rosse potrebbero rappresentare subVI in corso di sviluppo e icone
blu potrebbero rappresentare VI completati. Mentre questo solo un
esempio di utilizzo della finestra Hierarchy come strumento di sviluppo,
esso dimostra lutilit di questa finestra nellorganizzazione di un
progetto.

Utilizzo dellHelp online nelle vostre applicazioni in LabVIEW


Quando eseguite gli ultimi ritocchi alla vostra applicazione, potreste
decidere di fornire un help online allutente. LabVIEW offre diversi
meccanismi per farlo. Utilizzando lopzione Description and Tip
disponibile su ogni controllo e indicatore del pannello frontale, create non
solo VI ben documentati, ma anche VI che possiedono help online estesi
per lutente.
Se selezionate HelpShow Context Help, compare la finestra Context
Help. Quando muovete il cursore su un oggetto, la finestra Context Help
si modifica per mostrarne la descrizione. Potete da programma mostrare o
nascondere la finestra Context Help con le funzioni Get Help Window
Status e Control Help Window, che trovate nella palette
FunctionsApplication ControlHelp.
Utilizzate questa funzione per determinare se la finestra Context Help
visibile e la posizione dellangolo superiore sinistro della finestra.

Con questa funzione potete controllare la visibilit della finestra Context


Help e dove deve apparire nel caso venga mostrata.

Potete anche utilizzare la funzione Control Online Help per accedere a


LabVIEW Help o a file personalizzati di help che compilate utilizzando
strumenti di altri. Il tipo di strumenti di sviluppo per riferimenti online
che potete utilizzare per creare tale tipo di file dipende dalla piattaforma
su cui gira la vostra applicazione.
y

Windows - Microsoft Help (.hlp files)

Macintosh QuickView

Sun/HP-UX Hyper Help

National Instruments Corporation

5-17

LabVIEW Corso Base II

Lezione 5

Sviluppo di grandi applicazioni in LabVIEW

Con questa funzione potete gestire un file di help online. Potete elencare
il contenuto del file di help, passare alle parole chiave nel file, o chiudere
il file di help online.

Fornire help online e materiale di riferimento per la vostra applicazione


rende pi facile utilizzarla e le conferisce un aspetto pi pulito e
professionale.

Confronto di VI
Il LabVIEW Professional Development System comprende uno strumento
per determinare le differenze tra due VI caricati in memoria. Dal menu a
tendina di LabVIEW selezionate ToolsCompareCompare VIs per
visualizzare la finestra di dialogo Compare VI.

Da questa finestra di dialogo potete selezionare i VI che volete


confrontare, cos come le caratteristiche da verificare nei VI. Quando
confrontate i VI, entrambi saranno visualizzati, con una finestra
Differences che elenca tutte le differenze tra i due VI. In questa finestra
potete scegliere le differenze e i dettagli da visualizzare, che possono
essere cerchiati per chiarezza.

LabVIEW Corso Base II

5-18

National Instruments Corporation

Lezione 5

Sviluppo di grandi applicazioni in LabVIEW

Esercitazione 5-4
Obiettivo:

Esaminare alcune delle caratteristiche interne di LabVIEW per la gestione delle


applicazioni.
In questa esercitazione esplorerete alcune delle caratteristiche interne a
LabVIEW per la gestione delle applicazioni.
1. Aprite il VI Application Exercise(5-3) che avete creato
nellesercitazione precedente. Chiudete ogni altro VI caricato in
memoria.
2. Selezionate ToolsVI Revision History. Appare la finestra della
storia del VI.
3. Cliccate su Reset nella finestra Revision History per cancellare la
storia presente. Cliccate su Yes per confermare la cancellazione e il
ripristino del numero di revisione.
4. Nel riquadro Comment della finestra History digitate Creata
lapplicazione iniziale e quindi cliccate sul pulsante Add. Il
vostro commento dovrebbe apparire nellelenco Revision History,
insieme alla data e allora. Chiudete la finestra Revision History.
5. Selezionate BrowseShow VI Hierarchy. Compare la gerarchia
dellapplicazione.

National Instruments Corporation

5-19

LabVIEW Corso Base II

Lezione 5

Sviluppo di grandi applicazioni in LabVIEW

6. Provate ad espandere e a comprimere la gerarchia. Notate che quando


cliccate sulle piccole frecce nere e rosse della gerarchia, si espandono
o si comprimono rami della gerarchia. Potreste vedere alcune icone
con una freccia rossa accanto, ad indicare che richiamano uno o pi
subVI. Inoltre, potreste vedere anche delle icone con una freccia blu
accanto, che si presenta quando un subVI chiamato da diversi posti
nellambito dellapplicazione, ma non tutte le chiamate sono
correntemente indicate nella gerarchia.
7. Esaminate il funzionamento dei pulsanti nella barra degli strumenti
della gerarchia. Notate come potete disporre la gerarchia utilizzando i
pulsanti Layout o trascinando le icone, oppure come potete includere
vari componenti dellapplicazione utilizzando i pulsanti Include.
Utilizzate Redo Layout per ridisegnare il layout della finestra per
minimizzare gli incroci tra linee e massimizzare la simmetria.
8. Cliccate due volte su ogni icona di subVI della gerarchia per
visualizzare il subVI appropriato. Chiudete il subVI che avete scelto e
chiudete la finestra della gerarchia.
9. Aprite il VI Application Exercise(5-2) che avete creato
nellesercitazione 5-2, passate al pannello frontale del VI Application
Exercise(5-3) e quindi selezionate ToolsCompareCompare VIs
per visualizzare la finestra di dialogo Compare VIs.

10. Utilizzando lopzione Select, assicuratevi che i due Application


Exercise siano elencati nel riquadro VIs to Compare e che le opzioni
di Compare siano impostate come nellesempio precedente.
11. Cliccate su Compare per visualizzare la finestra Differences e
affiancate i due VI. Contrassegnate il riquadro Circle Differences
nella finestra Differences. Quindi selezionate una differenza
dallelenco, selezionate un dettaglio dallelenco Details e quindi
cliccate su Show Detail. Viene evidenziata la differenza tra i due VI.
Esaminate le varie differenze tra i due VI e quindi chiudete la finestra
Differences.

LabVIEW Corso Base II

5-20

National Instruments Corporation

Lezione 5

Sviluppo di grandi applicazioni in LabVIEW

12. Chiudete Application Exercise(5-2).vi.

Fine dellesercitazione 5-4

National Instruments Corporation

5-21

LabVIEW Corso Base II

Lezione 5

Sviluppo di grandi applicazioni in LabVIEW

C. Strumenti di LabVIEW per la gestione di progetti


Ci sono diversi strumenti che potete aggiungere nellambiente di
LabVIEW per avere assistenza nello sviluppo del progetto. La sezione
seguente descrive due di questi strumenti che sono inclusi nel LabVIEW
Professional Development System.

Strumenti di controllo del codice sorgente


Questi strumenti semplificano la gestione di applicazioni pi grandi. La
prima caratteristica aggiunta con questi strumenti un sistema per il
controllo del codice sorgente (SCC) che fortemente integrato
nellambiente di LabVIEW. Questo sistema contiene molte caratteristiche
che si possono trovare in altri sistemi per il controllo del codice sorgente,
come la verifica dei file in ingresso e uscita, il tracciamento delle
revisioni e il supporto per utenti multipli. Inoltre gli strumenti SCC
possono supportare altri sistemi per il controllo del codice sorgente come
il Microsoft Visual SourceSafe. Tuttavia, come gi detto precedentemente
in questa lezione, i VI di un progetto devono essere salvati come singoli
file (invece che allinterno di LLB) perch le caratteristiche di gestione
dei file dei vari sistemi operativi non supportano le librerie di LabVIEW.
Gli strumenti SCC contengono anche uno strumento VI Metrics per
misurare la complessit di unapplicazione analogo al diffuso Source
Lines of Code (SLOCs) per linguaggi testuali. Con lo strumento VI
Metrics potete visualizzare statistiche sui VI, come il numero di nodi
(funzioni, chiamate a subVI, strutture, terminali e cos via) di un VI e dei
suoi subVI. Altre statistiche comprendono il numero e le dimensioni degli
schemi a blocchi, il numero e il tipo di interfacce utente, il numero di
accessi a variabili globali e locali e il numero di chiamate a Code
Interface Node o a librerie condivise. Avete accesso alla seguente finestra
VI Metric dal menu ToolsAdvanced.

LabVIEW Corso Base II

5-22

National Instruments Corporation

Lezione 5

Sviluppo di grandi applicazioni in LabVIEW

E incluso in questo pacchetto anche uno strumento VI Library


Manager. Questa funzione vi consente di copiare, rinominare e
cancellare VI, sia che si trovino o meno in LLB. Il VI Library Manager
pu anche convertire LLB esistenti in file in una subdirectory, per rendere
limplementazione di strumenti SCC pi semplice.

Sono incluse anche le funzioni Compare VIs e Compare VI


Hierarchies. Come descritto precedentemente, esse vengono usate per
determinare le differenze tra due VI o gerarchie.
Il LabVIEW Help e i manuali di questo pacchetto non solo forniscono
materiale di riferimento per le utility precedenti ma anche discussioni
estese sulla gestione di progetti software. Sono descritti in dettaglio vari
modelli di sviluppo, tecniche di sviluppo di prototipi e di progetto, e
metodi di tracciamento del progetto. Anche la documentazione dei VI e i
consigli per lo sviluppo di un codice chiaro sono descritti in dettaglio.

Application Builder di LabVIEW


Potete utilizzare lApplication Builder di LabVIEW per creare programmi
eseguibili indipendenti per utenti che non possiedono il software di
sviluppo di LabVIEW. I VI eseguibili o le librerie condivise possono
includere una gerarchia di VI che avete creato o il VI pu essere
configurato per aprire ed avviare un VI qualsiasi per lutente.

Configurazione di sistema necessaria


Le applicazioni o le librerie condivise che avete creato con lApplication
Builder generalmente avranno gli stessi requisiti del sistema di sviluppo
di LabVIEW. I requisiti di memoria varieranno in funzione delle
dimensioni dellapplicazione creata.

National Instruments Corporation

5-23

LabVIEW Corso Base II

Lezione 5

Sviluppo di grandi applicazioni in LabVIEW

Trasformazione della vostra applicazione in un eseguibile


indipendente
Prima di LabVIEW 5.1, il processo di creazione di unapplicazione
consisteva nel salvare i VI in una libreria, nel creare unapplicazione
utilizzando la finestra di dialogo Build Application e quindi di creare
linstallatore utilizzando la finestra di dialogo Create Distribution Kit.
In LabVIEW 5.1 potete utilizzare la finestra di dialogo Build Application
per svolgere tutte queste operazioni.
Quando selezionate ToolsBuild Application or Shared Library (DLL)
compare una finestra di dialogo con dei tab. Effettuando le impostazioni
nelle varie pagine dei tab della finestra di dialogo, potete definire
lapplicazione che volete realizzare. Potete salvare uno script ed
utilizzarlo successivamente per ricostruire lapplicazione. La finestra di
dialogo Build Application or Shared Library contiene le seguenti
pagine sotto tabTarget, Source Files, VI Settings, Application
Settings e Installer Settings, come mostrato nellesempio seguente.

LabVIEW Corso Base II

Dal tab Target, potete definire se volete creare un eseguibile


indipendente o una libreria condivisa, il nome della vostra
applicazione e la directory in cui crearla. Opzionalmente, potete
scegliere di scrivere i subVI in un file esterno se volete mantenere
piccola lapplicazione principale.

Dal tab Source Files, potete definire i VI che fanno parte della vostra
applicazione. Quando cliccate su Add Top Level VI, aggiungete i VI
principali della vostra applicazione. Dovete selezionare solo i VI ad
alto livello e LabVIEW include automaticamente tutti i subVI e i file
collegati (come i file di menu o DLL). Se il vostro VI chiama
dinamicamente un qualsiasi subVI utilizzando il VI Server, LabVIEW

5-24

National Instruments Corporation

Lezione 5

Sviluppo di grandi applicazioni in LabVIEW

non pu rilevarlo automaticamente, quindi dovete aggiungerli


cliccando sul pulsante Add Dynamic VI. Se volete includere un
qualsiasi file dati nella vostra applicazione, cliccate sul pulsante Add
Support File, e i file dati verranno automaticamente copiati nella
directory della vostra applicazione.
y

Dal tab VI Settings definite le modifiche da effettuare ai vostri VI


come parte della realizzazione. Potete scegliere di disabilitare certe VI
Properties. Queste impostazioni si applicano solo al processo in corso
e non influenzano i vostri VI sorgente originali. LabVIEW crea
automaticamente la vostra applicazione la pi piccola possibile
rimuovendo codice per le correzioni, schemi a blocchi e pannelli
frontali inutili. Se aprite un pannello frontale dinamicamente
utilizzando il VI Server, dovete specificare che il pannello frontale
necessario utilizzando il tab VI Settings.

Dal tab Application Settings potete personalizzare le caratteristiche


della vostra applicazione. Potete scegliere di definire le dimensioni
della memoria per il Macintosh, o personalizzare icone e
caratteristiche di server ActiveX sotto Windows.

Dal tab Installer Settings (solo Windows) create un installatore.


Linstallatore viene scritto sulla directory che contiene la vostra
applicazione.

Quando sviluppate un VI eseguibile con LabVIEW sotto Windows e lo


trasferite su un altro computer, dovete includere anche la DLL Run-Time
di LabVIEW. Il computer su cui viene eseguito il VI deve installare
questa DLL utilizzando Run-Time DLL Installer di LabVIEW prima
dellesecuzione del VI. Se distribuite un VI utilizzando Build
Application, la DLL Run-Time viene eseguita automaticamente.
Dopo aver installato correttamente su una macchina la DLL Run-Time,
essa pu eseguire un qualsiasi VI eseguibile sviluppato in LabVIEW. Dovete
includere solo la DLL Run-Time con il primo VI inviato su ciascun computer.
Nota

Creazione di applicazioni in LabVIEW


Per creare unapplicazione professionale indipendente con dei VI, dovete
aver chiari quattro aspetti:
y

Larchitettura della vostra applicazione

Problemi di programmazione particolari dellapplicazione

Come realizzare la vostra applicazione

Come realizzare un installatore per la vostra applicazione

La prima sezione di questa lezione descrive larchitettura della vostra


applicazione ed ha realizzato lapplicazione nellesercitazione. La vostra
applicazione un unico VI a livello superiore che si avvia quando
lanciate lapplicazione e richiama pannelli frontali da diversi subVI,

National Instruments Corporation

5-25

LabVIEW Corso Base II

Lezione 5

Sviluppo di grandi applicazioni in LabVIEW

quando vengono chiamati. Questa larchitettura pi comune e pi


semplice per la realizzazione di applicazioni indipendenti.

Aspetti della programmazione


Dovreste considerare diversi aspetti della programmazione quando state
realizzando VI che confluiranno in unapplicazione. Il primo aspetto da
conoscere quale codice di uscita viene usato per lapplicazione. Per
esempio, state richiamando una qualche DLL di sistema o personalizzata
o delle librerie condivise? State per processare argomenti sulla linea di
comando? Questi sono esempi avanzati che vanno oltre lo scopo di questo
corso, ma li dovete considerare per lapplicazione.
Un secondo aspetto riguarda i nomi dei percorsi utilizzati nel VI. Un
esempio quando utilizzate la capacit del VI Server di caricare
dinamicamente e di avviare i VI (questo viene descritto nel corso
LabVIEW Advanced I). Una volta che lapplicazione stata costruita, i
VI vengono inclusi in un eseguibile. Supponete di avere un VI
denominato test.vi allinterno dellapplicazione test.exe. Una
richiesta di percorso in test.vi restituisce test.exe\test.vi con
tutto il percorso precedente di test.exe. Facendo attenzione a questi
aspetti imparerete a realizzare applicazioni pi robuste in futuro.
Un ultimo aspetto da considerare che condizioner lapplicazione che
avete realizzato che il VI a livello superiore non esce da LabVIEW n
chiude i pannelli frontali dei VI quando ha completato lesecuzione. Per
uscire completamente e chiudere il VI a livello superiore, dovete
utilizzare la funzione Quit LabVIEW che si trova nella palette
FunctionsApplication Control dello schema a blocchi del VI a livello
superiore.

Realizzazione dellapplicazione
Come gi descritto in questa sezione, utilizzate lApplication Builder di
LabVIEW per creare un eseguibile o una libreria condivisa (DLL) per la
vostra applicazione. Questo corso descrive come realizzare un eseguibile
e il corso LabVIEW Advanced I descrive come realizzare ed utilizzare
una libreria condivisa (DLL).
LApplication Builder di LabVIEW pu compattare la vostra
applicazione in una delle due formecome un singolo eseguibile o come
singolo eseguibile con una libreria di VI. In funzione di come volete che
appaia la vostra applicazione allutente finale, e di quanto complesso
possa essere il processo di installazione, potreste preferire un formato o
laltro.

LabVIEW Corso Base II

5-26

National Instruments Corporation

Lezione 5

Sviluppo di grandi applicazioni in LabVIEW

Di default prevista la compressione dellapplicazione in un singolo file


eseguibile. Tutti i VI che fanno parte dellapplicazione sono inclusi nel
file eseguibile. Questi comprendono i VI a livello superiore, i VI dinamici
e tutti i subVI relativi. Mentre questa compattazione semplice perch
fornisce un singolo file, questi file possono diventare abbastanza grandi in
funzione del numero di VI facenti parte della vostra applicazione.
La seconda opzione di compressione consiste nello spezzare
lapplicazione in un file eseguibile e in una libreria di VI. In questo caso,
lApplication Builder include tutti i VI ad alto livello e i VI dinamici nel
file eseguibile risultante e tutti i subVI relativi vengono inseriti in
ununica libreria di VI. Mentre questa compressione comprende due file,
il file che lutente finale lancia pu essere abbastanza piccolo.
A seconda della natura della vostra applicazione, pu essere necessaria la
presenza di file che non sono VI per funzionare correttamente. I file
comunemente necessari comprendono un file di preferenze (.ini) per
lapplicazione, il file serpdrv di LabVIEW e altri file di help che i vostri
VI richiamano. Il file serpdrv di LabVIEW (Windows e Unix) necessario
per ogni applicazione che utilizza la porta di I/O seriale. Notate che i file
di menu run-time e i file delle librerie condivise richiamate utilizzando il
Call Library Node non sono file di supporto. LApplication Builder
comprende file di menu run-time nei file principali dellapplicazione.
Esso memorizza automaticamente ogni libreria condivisa necessaria nella
directory dei file di supporto dellapplicazione. Anche le subroutine
esterne per CIN vengono memorizzate nei file principali
dellapplicazione.
Nota Fate riferimento al LabVIEW Help in HelpContents and Index per
ulteriori descrizioni su come utilizzare lApplication Builder e costruire un file
con le preferenze per la vostra applicazione.

Realizzazione dellinstallatore
Lultima fase della creazione di unapplicazione professionale
indipendente a partire dai vostri VI quella di creare un installatore.
LApplication Builder di LabVIEW comprende le funzionalit per creare
installatori per Windows. Gli strumenti comuni per creare installatori su
Macintosh sono DragInstall e Vise. Sui sistemi Unix potete creare uno
script shell per installare la vostra applicazione. Gli installatori che create
con lApplication Builder di LabVIEW installano tutti i file che fanno
parte dellelenco dei file sorgente. Dovete aggiungere a questo elenco tutti
i file che volete installare. Definendo destinazioni particolari ai file
sorgente, potete creare strutture a directory arbitrariamente complesse
allinterno della directory di installazione.

National Instruments Corporation

5-27

LabVIEW Corso Base II

Lezione 5

Sviluppo di grandi applicazioni in LabVIEW

Imparerete a conoscere le procedure e le opzioni dellApplication Builder


quando realizzerete unapplicazione nellesercizio successivo. Dopo aver
definito le vostre specifiche utilizzando lApplication Builder, salverete
queste impostazioni su disco sotto forma di file di script (.bld).

LabVIEW Corso Base II

5-28

National Instruments Corporation

Lezione 5

Esercitazione 5-5
Obiettivo:

Sviluppo di grandi applicazioni in LabVIEW

La mia applicazione eseguibile

Creare unapplicazione indipendente con lApplication Builder.

Dovete avere lApplication Builder correttamente installato per avviare


questo esempio. Per stabilire se installato, selezionate il menu Tools. Se
compare lopzione Build Application or Shared Library (DLL) nel menu Tools,
allora lApplication Builder correttamente installato.
Nota

Pannello frontale
1. Aprite il VI Application Exercise(5-3) che avete creato
nellesercitazione 5-3. Modificate il pannello frontale per rimuovere i
commenti.

2. Selezionate FileVI Properties per visualizzare la finestra di dialogo


VI Properties. Selezionate Window Appearance dal menu a tendina
superiore, quindi selezionate Top-level Application Window. Questo
fornisce al pannello frontale un aspetto professionale quando viene
aperto come eseguibile.
3. Salvate il VI come Application Exercise.vi.

Schema a blocchi
4. Aprite lo schema a blocchi ed utilizzate i componenti seguenti.
a. Inserite la funzione not che si trova nella palette
FunctionsBoolean. Questa funzione inverte il valore da inviare
al terminale condizionale del ciclo While. Quando il ciclo ha
terminato lesecuzione, questo valore False, quindi viene inviato
un True sul bordo del ciclo per la funzione Quit LabVIEW.

National Instruments Corporation

5-29

LabVIEW Corso Base II

Lezione 5

Sviluppo di grandi applicazioni in LabVIEW

b. Inserite la funzione Quit LabVIEW che si trova nella palette


FunctionsApplication Control. Questa funzione fa uscire da
LabVIEW e dallapplicazione dopo che stata realizzata.

5. Salvate il VI come Application Exercise.vi.


6. Aprite il pannello frontale ed avviate il VI. Quando selezionate il
pulsante Stop, il VI si arresta ed uscite da LabVIEW.
7. Riavviate LabVIEW e aprite un nuovo VI. Non aprirete il VI
Application Exercise perch lApplication Builder non pu creare un
eseguibile se dei VI sono caricati in memoria.
8. Selezionate ToolsBuild Application or Shared Library (DLL).
Realizzate un eseguibile a partire da Application Exercise.vi
denominato myApplication.exe ed inseritelo nella directory
c:\myapp. Modificate il tab Target come segue.

LabVIEW Corso Base II

5-30

National Instruments Corporation

Lezione 5

Sviluppo di grandi applicazioni in LabVIEW

9. Cliccate sul tab Source Files e selezionate il pulsante Add Top-Level


VI. Aggiungete Application Exercise.vi come mostrato.

10. Cliccate sul tab VI Settings. Lasciate queste impostazioni sui valori di
defaultil VI a livello superiore si avvia quando viene aperto e gli
schemi a blocchi e i pannelli frontali vengono salvati solo se
necessario. Esaminate queste impostazioni; dovrebbero essere simili
agli esempi seguenti.

11. Cliccate sul tab Application Settings. Qui dove dovreste abilitare le
impostazioni di ActiveX o fornire unicona personalizzata alla vostra
applicazione. Lasciate licona di default di LabVIEW. Non cambiate
queste impostazioni.

National Instruments Corporation

5-31

LabVIEW Corso Base II

Lezione 5

Sviluppo di grandi applicazioni in LabVIEW

12. Cliccate sul tab Installer Settings. Realizzate un kit per la


distribuzione della vostra applicazione che si installa nella directory
c:\Program Files\Myapplication. Configurate il tab Installer
come indicato.

13. Cliccate sul pulsante Build. I file associati allinstallatore vengono


quindi compressi in dischetti di setup, che sono memorizzati nella
directory c:\myapp\installer\disks. Viene anche creato un file
Setup.exe, che pu essere utilizzato per installare le immagini del
dischetto. Tutti questi file possono essere copiati su dischetti per
trasferire lapplicazione su un altro sistema. Linstallatore LabVIEW
Run-Time DLL incluso di default. Viene anche creato leseguibile
della vostra applicazione e chiamato myApplication.exe, come
specificato nel tab Target.
14. Selezionate Done dalla finestra Build Application per chiudere questa
funzione. Vi viene chiesto di salvare uno script affinch possiate
realizzare nuovamente lapplicazione. Selezionate Yes e chiamate lo
script myapp.bld. Ora se effettuate dei cambiamenti allapplicazione
originale e volete ricostruire un eseguibile e un installatore con le
stesse impostazioni, potete aprire questo script utilizzando il pulsante
Load.
15. Avviate myApplication.exe dalla directory c:\myapp.
Application Exercise dovrebbe aprire il proprio pannello frontale ed
avviarsi automaticamente. Fate lavorare il VI per essere sicuri che
tutte le impostazioni che avete scelto siano operative. Chiudete
lapplicazione quando avete finito.

LabVIEW Corso Base II

5-32

National Instruments Corporation

Lezione 5

16. Avviate

il

Sviluppo di grandi applicazioni in LabVIEW

file

Setup.exe
nella
directory
c:\myapp\disks\Myapplication. Dovreste essere guidati

attraverso il processo di setup, leseguibile creato allinterno della


directory c:\Program Files\Myapplication, e dovreste essere
in grado di avviare lapplicazione da Programs.

Fine dellesercitazione 5-5

National Instruments Corporation

5-33

LabVIEW Corso Base II

Lezione 5

Sviluppo di grandi applicazioni in LabVIEW

Sommario, trucchi e consigli


y

LabVIEW possiede diverse caratteristiche per assistere voi e i vostri


collaboratori nello sviluppo di progetti, come la finestra VI Revision
History per registrare commenti e modifiche ad un VI, e un login
utente che, quando usato con VI Revision History, registra chi ha
fatto i cambiamenti sul VI. Potete accedere alla finestra VI Revision
History in un qualsiasi momento selezionando VI Revision History
dal menu Tools.

La finestra VI Hierarchy vi fornisce una panoramica rapida e sintetica


dei VI utilizzati nel vostro progetto. C anche la possibilit di
confrontare due VI per verificarne le differenze.

LabVIEW fornisce diversi strumenti per facilitare lo sviluppo di


grandi progetti. Gli strumenti Source Code Control contengono
diverse funzioni per la gestione del codice di LabVIEW, e
lApplication Builder vi consente di creare eseguibili indipendenti o
librerie condivise (DLL). Entrambi questi pacchetti sono inclusi nel
LabVIEW Professional Development System.

La creazione di unapplicazione professionale indipendente con i


vostri VI avviene attraverso la comprensione dei seguenti aspetti:
Larchitettura della vostra applicazione.
Gli aspetti di programmazione particolari dellapplicazione.
Il processo di costruzione dellapplicazione.
Il processo di realizzazione dellinstallatore.

LabVIEW Corso Base II

5-34

National Instruments Corporation

Lezione 5

Sviluppo di grandi applicazioni in LabVIEW

Esercizi aggiuntivi
5-6

Modificate il VI Application Exercise affinch i pulsanti Acquire


Data, Analyze & Present Data e View Analysis File siano
disabilitati e resi opachi se lutente non ha inserito nome e password
corretti.
Consiglio: Utilizzate i riferimenti di controllo e il VI Disable
Controls che avete realizzato nellesercitazione 2-8 per modificare i
pulsanti.
Salvate lapplicazione come Application Exercise(5-6).vi.

5-7

Aggiungete un pulsante al controllo del cluster dei menu nel VI


Application Exercise affinch lutente possa mostrare o nascondere
la finestra di Help di LabVIEW. Il testo del pulsante dovrebbe
indicare cosa succede quando lutente clicca sul pulsante, per
esempio, Mostra Help e Nascondi Help. Se vi accorgete che i
pulsanti e gli indicatori del pannello frontale non hanno descrizioni
nella finestra Context Help, dovete aggiungerli nella finestra di
dialogo rapida Description and Tip per ogni controllo e indicatore.
Assicuratevi che il VI tracci correttamente lo stato della finestra
Context Help. Per esempio, se lutente clicca sul pulsante Show
Help per mostrare la finestra Context Help, ma chiude la finestra
Context Help dal menu HelpShow Context Help, il vostro VI
assume erroneamente che la finestra Context Help in
visualizzazione. Salvate questo VI come Application
Exercise(5-7).vi.

Nota Utilizzate un Property Node per impostare il testo del pulsante. Lazione

meccanica del pulsante dovrebbe essere Latch When Released. Utilizzate un


registro a scorrimento per ricordare lo stato della visibilit della finestra
Context Help e utilizzate la funzione Control Help Window per mostrare e
nascondere la finestra Context Help.

National Instruments Corporation

5-35

LabVIEW Corso Base II

Lezione 5

Sviluppo di grandi applicazioni in LabVIEW

Note

LabVIEW Corso Base II

5-36

National Instruments Corporation

Lezione 6
Controllo delle prestazioni
Questa lezione descrive come ottimizzare le prestazioni dei vostri VI e
anche come aumentare la velocit di esecuzione e migliorare lutilizzo
della memoria.

Imparerete:
A. A conoscere il multithreading e il multitasking di LabVIEW.
B. Ad utilizzare la finestra Profile.
C. A velocizzare i vostri VI.
D. A conoscere quali aspetti della memoria di sistema influenzano le
prestazioni di LabVIEW.
E. Ad ottimizzare lutilizzo della memoria e le prestazioni relative dei
singoli VI.

National Instruments Corporation

6-1

LabVIEW Corso Base II

Lezione 6

Controllo delle prestazioni

A. Panoramica sul multithreading e il multitasking in LabVIEW


In LabVIEW 4 e versioni precedenti, potevate avviare diversi VI
contemporaneamente e i VI rispondevano ancora agli ingressi utente da
cursore o da tastiera. Per ottenere questo, il sistema di esecuzione
utilizzava il multitatsking cooperativoogni attivit differente processata
una alla volta e a rotazione. Il multitatsking cooperativo funziona bene,
ma il tempo del processore non equamente distribuito su ogni attivit.
Eseguire una routine computazionale lunga o visualizzare una grande
quantit di dati su un grafico pu utilizzare una quantit spropositata di
tempo del processore. Le attivit vengono eseguite a turno dal processore,
e una lunga attivit non viene frazionata in parti pi piccole, pi brevi.
Con questa architettura, compiti multipli venivano eseguiti nel sistema
sotto un singolo thread, o processo.
Le versioni di LabVIEW dalla 5.0 in poi, supportano il multithreading.
Con il multithreading parti diverse di unapplicazione possono essere
eseguite sotto diversi thread, o processi, in un computer. Questa
architettura consente al sistema operativo di appropriarsi di un thread di
esecuzione per fornire tempo di processore ad un altro thread. In tal modo
il tempo della CPU viene pi equamente condiviso tra i thread.
Per sfruttare il multithreading, utilizzate LabVIEW 5.0 o successivi su un
sistema operativo che supporta il multithreading come Windows, Solaris 2 o
Concurrent PowerMax. Su sistemi operativi che non supportano il
multithreading, LabVIEW continua a funzionare con il multitasking
cooperativo.
Di default LabVIEW sfrutta il multithreading se il sistema operativo lo
supporta. Se volete verificare se il multithreading abilitato, selezionate
Performance and Disk dal menu a tendina superiore nella finestra di
dialogo ToolsOptions. Potete contrassegnare o meno il riquadro
etichettato con Run with multiple threads.

LabVIEW Corso Base II

6-2

National Instruments Corporation

Lezione 6 Controllo delle prestazioni

Questa opzione disponibile solo su sistemi operativi che supportano il


multithreading. Se rimuovete il contrassegno dal riquadro, il sistema di
esecuzione si comporta come se voi aveste un unico thread. Lesecuzione
di un singolo thread rimuove alcune sovrapposizioni dal sistema di
esecuzione. Tuttavia non beneficiate dei vantaggi del multithreading,
come il supporto multiplo del processore e la possibilit, per
unoperazione di priorit pi alta, di interrompere unoperazione lunga,
come una schermata da rinfrescare per ottenere una risposta migliore
dallapplicazione. Rimuovete il contrassegno per VI che non sono
compatibili con un sistema di esecuzione multithreading.

Vantaggi
Un vantaggio importante del multithreading in LabVIEW la separazione
dellinterfaccia utente dallesecuzione dello schema a blocchi. Ogni
attivit condotta nellinterfaccia utente, come il disegno del pannello
frontale, la risposta ai click del mouse e cos via, opera nel proprio thread.
Ci impedisce allinterfaccia utente di sottrarre tempo di esecuzione al
codice dello schema a blocchi. In tal modo la visualizzazione di una
grande quantit di in formazioni su un grafico non impedisce lesecuzione
del codice dello schema a blocchi. Inoltre, lesecuzione di una lunga
routine computazionale non impedisce allinterfaccia utente di rispondere
ai click del mouse o a digitazioni su tastiera.
I computer con processori multipli beneficiano ancora di pi del
multithreading. Su un sistema a singolo processore, il sistema operativo si
impadronisce dei thread e distribuisce sul processore il tempo di ogni
thread. Su un computer a processori multipli, i thread possono essere
eseguiti su pi processori contemporaneamente, e quindi pi di unattivit
pu essere svolta nello stesso istante.

National Instruments Corporation

6-3

LabVIEW Corso Base II

Lezione 6

Controllo delle prestazioni

Utilizzo del multithreading


Quando unapplicazione esistente di LabVIEW in esecuzione, sfrutta
automaticamente il sistema del multithreading senza dover effettuare
modifiche allapplicazione. Tuttavia, lavorando con pi VI, ci sono
diverse classificazioni di thread, chiamate sistemi di esecuzione,
disponibili per organizzare la vostra applicazione. Ci sono sei sistemi di
esecuzione disponibili per avviare VI:
y

User Interface

Standard

Instrument I/O

Data Acquisition

Other 1

Other 2

Lo scopo di avere alcuni sistemi di esecuzione differenti di fornire


partizioni diverse per VI che devono essere eseguiti indipendentemente da
altri VI. Di default, i VI vengono eseguiti con il sistema di esecuzione
Standard, che consente lesecuzione in thread separati dallinterfaccia
utente. Il sistema di esecuzione Instrument I/O incluso per evitare che
VISA, GPIB e I/O seriale interferiscano con altri VI. Analogamente, il
sistema di esecuzione Data Acquisition viene impostato per i VI DAQ.
Anche se i VI che voi scrivete saranno eseguiti correttamente se lasciate
impostata la modalit di esecuzione Standard, potreste aver bisogno di
spostare determinati VI su sistemi di esecuzione diversi. Per esempio, se
state sviluppando driver per gli strumenti, potreste impostare la modalit
di esecuzione dei vostri VI su Instrument I/O.
Per cambiare la categoria del thread in cui un VI viene eseguito,
selezionate Execution dal menu a tendina superiore della finestra di
dialogo VI Properties.

LabVIEW Corso Base II

6-4

National Instruments Corporation

Lezione 6 Controllo delle prestazioni

Il riquadro Preferred Execution System elenca le categorie disponibili di


sistemi di esecuzione. Potete anche creare delle priorit su compiti
paralleli in un ambiente che opera in multithread impostando la Priority
del VI. Allinterno di ogni categoria di thread, potete definire la priorit di
esecuzionenormal, above normal, high, time critical, subroutine e
background. La priorit normal coincide con la priorit a livello 1 e cos
via. Se ci sono pi VI, i VI vengono disposti in coda di esecuzione. I VI
con priorit pi alta, eccetto la priorit subroutine, verranno eseguiti
prima di quelli aventi priorit pi bassa. Tuttavia, i VI con un livello di
priorit subroutine si comportano in maniera diversa rispetto ai VI con
altri livelli di priorit. Quando un VI in esecuzione con una priorit
subroutine, viene eseguito nella categoria di thread del suo chiamante e
nessun altro VI pu trovarsi in esecuzione fino a quando quel VI o i suoi
subVI hanno terminato. I VI con una priorit subroutine possono
chiamare solamente altri VI con priorit subroutine. Utilizzate VI con una
priorit subroutine solo quando volete mandare in esecuzione un semplice
calcolo senza elementi interattivi. Potete saltare lesecuzione di un subVI
con priorit subroutine quando esso occupato, cliccando con il tasto
destro del mouse sul subVI e selezionando Skip Subroutine Call if
Busy. Utilizzate questa opzione quando state chiamando una subroutine
condivisa da un VI con priorit high ma non volete aspettare che un VI
subroutine diventi disponibile.
Fate attenzione quando impostate i livelli di priorit per i VI. Utilizzare
delle priorit per controllare lordine di esecuzione potrebbe non produrre
i risultati sperati. Per esempio, se utilizzate limpostazione delle priorit
in maniera non corretta, i compiti con priorit pi bassa potrebbero non
essere mai eseguiti. Come vedrete pi avanti in questa lezione, luso
strategico delle funzioni Wait allinterno dei VI pu anche essere un
modo molto efficace di ottimizzazione del codice in LabVIEW. Fate
riferimento a LabVIEW Help per ulteriori informazioni su come utilizzare
le funzioni Wait.

National Instruments Corporation

6-5

LabVIEW Corso Base II

Lezione 6

Controllo delle prestazioni

B. La finestra Profile
La finestra Profile uno strumento potente per analizzare come la vostra
applicazione utilizza il tempo di esecuzione e la memoria. Con queste
informazioni potete individuare VI specifici o parti di VI che hanno
bisogno di essere ottimizzati. Per esempio, se notate che un particolare
subVI impiega una grande quantit di tempo ad aggiornare il display,
potete focalizzare la vostra attenzione sul miglioramento delle prestazioni
del display di quel VI.
La finestra Profile visualizza le informazioni sulle prestazioni di tutti i VI
in memoria sotto forma di tabella interattiva. Dalla finestra potete
scegliere il tipo di informazione da prendere e ordinare le informazioni
per categoria. Potete anche monitorare le prestazioni dei subVI allinterno
di differenti VI. Per mostrare la finestra Profile, selezionate
ToolsAdvancedProfile VIs. Compare la finestra seguente.

Notate che dovete selezionare lopzione Profile Memory Usage prima di


avviare una sessione per il profilo. Raccogliere informazioni sullutilizzo
della memoria da parte dei VI aggiunge una quantit di calcolo
significativa allesecuzione del VI, che influenza laccuratezza di ogni
statistica temporale che raccogliete durante la sessione per il profilo. Per
questo dovreste eseguire profili per la memoria separati da quelli sul
tempo.
Molte delle opzioni nella finestra Profile sono disponibili solo dopo che
avete iniziato una sessione. Durante una sessione, potete catturare
unistantanea dei dati disponibili e salvare i dati in ASCII su un foglio
elettronico. Le misure di tempo si accumulano ogni volta che eseguite un
VI.
Tutte le statistiche misurate in una sessione di profilo sono raccolte per
unesecuzione completa di un VI, non per unesecuzione parziale.
Nota

LabVIEW Corso Base II

6-6

National Instruments Corporation

Lezione 6 Controllo delle prestazioni

Statistiche sul tempo di esecuzione


Per avere statistiche sul tempo di esecuzione con la finestra Profile,
cliccate sul pulsante Start. Lesempio precedente mostra la finestra
Profile dopo una sessione di profilo.
La colonna di statistiche su VI Time mostra il tempo speso
nellesecuzione del VI e nella visualizzazione dei suoi dati, come anche il
tempo speso dallutente ad interagire con il pannello frontale. Questo
tempo consiste in cinque sottocategorie, che potete mostrare selezionando
lopzione Timing Details. Le sottocategorie sono Diagram, Display,
Draw, Tracking e Locals. Fate riferimento a LabVIEW Help o a LabVIEW
User Manual per ulteriori informazioni su queste statistiche.
La colonna di statistiche SubVI mostra il tempo di esecuzione totale per
tutti i subVI richiamati dal VI principale. Inoltre le informazioni sui tempi
possono essere visualizzate in secondi, millisecondi o microsecondi.
La colonna di statistiche Total Time rappresenta il tempo di esecuzione
totale per il VI principale come somma dei valori dei VI e dei subVI.
Se selezionate lopzione Timing Statistics, compaiono quattro nuove
categorie di informazioni. # Runs visualizza quante volte ogni VI stato
eseguito. Il valore Average rappresenta il valore del tempo del VI diviso
per # Runs, o la media del tempo impiegato da un VI in esecuzione.
Shortest e Longest mostrano la pi piccola e la pi grande quantit di
tempo necessaria per lesecuzione del VI.

Statistiche sulla memoria


Per avere statistiche sulla memoria con la finestra Profile, selezionate
lopzione Profile Memory Usage prima di avviare la sessione dei profili.
Potete anche selezionare lopzione Profile Memory Usage dopo aver
avviato il Profiler per avere informazioni aggiuntive sulla memoria.
La finestra Profile visualizza due insiemi di dati sulluso della memoria.
Un insieme di dati mostra il numero di byte di memoria utilizzati, e laltro
mostra i blocchi della memoria. LabVIEW memorizza i dati come
matrici, stringhe e percorsi in blocchi contigui di memoria. Se un VI
utilizza un gran numero di blocchi di memoria, la memoria pu
frazionarsi, il che degrada le prestazioni di LabVIEW in generale, non
lesecuzione del VI.
La colonna di statistiche Average Bytes mostra il numero medio di byte
di memoria utilizzati da uno spazio dati di un VI durante la sua
esecuzione. Min Bytes e Max Bytes rappresentano la pi piccola e la pi
grande quantit di memoria utilizzata da un VI durante una singola
esecuzione. Average Blocks indica quanti blocchi di memoria servono ad
un VI in media, mentre Min Blocks e Max Blocks mostrano il pi

National Instruments Corporation

6-7

LabVIEW Corso Base II

Lezione 6

Controllo delle prestazioni

piccolo e il pi grande numero di blocchi di memoria utilizzati da un VI


durante una singola esecuzione.

LabVIEW Corso Base II

6-8

National Instruments Corporation

Lezione 6 Controllo delle prestazioni

Esercitazione 6-1
Obiettivo:

La finestra Profile

Utilizzare la finestra Profile per avere informazioni su come la vostra applicazione


viene eseguita.
La finestra Profile uno strumento potente per analizzare come la vostra
applicazione utilizza il tempo di esecuzione e la memoria. Con queste
informazioni, potete individuare le aree del vostro VI che necessitano di
ottimizzazione. In questa esercitazione esaminate il progetto appena
completato utilizzando la finestra Profile.
1. Aprite il vostro progetto definitivo, denominato CD Application
Exercise VI. Se non avete completato il progetto potete aprire la
soluzione.

2. Prima di eseguire il vostro progetto definitivo, selezionate


ToolsAdvancedProfile VIs per visualizzare la finestra Profile. La
finestra Profile non sta ancora acquisendo dati.

National Instruments Corporation

6-9

LabVIEW Corso Base II

Lezione 6

Controllo delle prestazioni

3. Per raccogliere informazioni sui tempi del vostro progetto definitivo,


contrassegnate il riquadro Timing Statistics e cliccate sul pulsante
Start.

Ora state raccogliendo informazioni sui tempi dei VI in memoria.

LabVIEW Corso Base II

6-10

National Instruments Corporation

Lezione 6 Controllo delle prestazioni

4. Avviate il VI CD Application Exercise e lavorate come se foste un


utente tipico. In un qualsiasi momento potete tornare alla finestra
Profile per fotografare i tempi. Effettuare uno Snapshot non influenza
le statistiche temporali finali.
5. Quando avete finito di lavorare con il vostro progetto, tornate alla
finestra Profile e cliccate nuovamente sul pulsante Snapshot. Potete
ordinare ogni colonna di dati cliccando sullintestazione di colonna.
Potete anche scegliere di visualizzare le statistiche temporali in
secondi, millisecondi o microsecondi. Cliccando due volte sui VI
elencati nella finestra Profile, potete visualizzare le statistiche dei VI
che lo compongono. Ci vi consente di esaminare i subVI per vedere
il tempo impiegato. Potete visualizzare il pannello frontale dei singoli
VI cliccando con il tasto destro del mouse sui VI elencati nella
finestra Profile.
Ordinate la colonna Total Time e osservate dove il VI CD Application
Exercise impiega la maggior parte del suo tempo. Notate come quei
VI corrispondono ai VI che richiedono interazione con lutente.
Lattesa di un ingresso dellutente spesso la parte dellesecuzione
che richiede pi tempo.
Nella finestra Profile potete catturare statistiche temporali e
informazioni sulluso della memoria da parte dei VI. Per avere
informazioni sulluso della memoria, contrassegnate il riquadro
Profile Memory Usage.

La raccolta di informazioni sulluso della memoria da parte dei VI


richiede sovrapposizioni che possono alterare le statistiche temporali.
Nota

National Instruments Corporation

6-11

LabVIEW Corso Base II

Lezione 6

Controllo delle prestazioni

6. Raccogliete statistiche sulluso della memoria da parte del VI CD


Application Exercise.
Dove viene utilizzata la memoria e perch?
Osservate quali VI frazionano la memoria, e quali VI utilizzano molti
blocchi. Perch questi VI utilizzano i blocchi? Laver frazionato la
memoria provoca lesecuzione pi lenta dei VI perch spostare i dati nella
memoria dispendioso.

Fine dellesercitazione 6-1

LabVIEW Corso Base II

6-12

National Instruments Corporation

Lezione 6 Controllo delle prestazioni

C. Velocizzare i VI
LabVIEW compila i vostri VI e genera un codice che generalmente viene
eseguito molto rapidamente. Tuttavia, quando si lavora su applicazioni
critiche dal punto di vista temporale, dovete utilizzare particolari tecniche
di programmazione per ottenere la migliore velocit di esecuzione
possibile. Considerate le seguenti tre problematiche quando volete
velocizzare i vostri VI:
y

Input/Outputfile, controllo di strumenti, acquisizione dati e


collegamento in rete

Visualizzazione di schermatecontrolli e schermate efficienti

Gestione della memoriauso efficiente di matrici, stringhe e strutture


di dati

Altri fattori, come il tempo di esecuzione e quello di chiamata di subVI,


di solito hanno effetti minimi sulla velocit di esecuzione.

Input/Output
Chiamate di Input/Output (I/O) generalmente richiedono pi tempo di
unoperazione computazionale. Per esempio, una semplice operazione di
lettura su una porta seriale pu richiedere diversi millisecondi. Questo
dispendio presente non solo in LabVIEW, ma anche in altre
applicazioni. Il motivo di ci che una chiamata di I/O comprende il
trasferimento di informazioni attraverso diversi livelli di un sistema
operativo.
Il metodo migliore per ridurre questo dispendio di risorse in I/O di
minimizzare il numero di chiamate di I/O nella vostra applicazione.
Strutturate la vostra applicazione in maniera tale da trasferire grandi
quantit di dati ad ogni chiamata, invece di effettuare parecchie chiamate
che trasferiscono piccole quantit di dati.
Per esempio, considerate la creazione di unapplicazione di acquisizione
dati (DAQ) che acquisisca 100 punti di dati. Per unesecuzione pi rapida,
utilizzate una funzione di trasferimento dati di pi punti come il VI AI
Acquire Waveform, invece di utilizzare una funzione di trasferimento di
un punto singolo come il VI AI Sample Channel. Per acquisire 100 punti,
utilizzate VI AI Acquire Waveform con un ingresso che specifica che
volete 100 punti. Ci pi veloce che utilizzare il VI AI Sample Channel
in un ciclo con una funzione di attesa per stabilire la temporizzazione.

National Instruments Corporation

6-13

LabVIEW Corso Base II

Lezione 6

Controllo delle prestazioni

Trasferimento dati di singoli punti


(Metodo pi lento)

Trasferimento dati di pi punti


(Metodo pi veloce)

Nellesempio precedente, il dispendio di risorse del VI Acquire


Waveform grosso modo lo stesso di una singola chiamata al VI AI
Sample Channel, anche se sta trasferendo molti pi dati. Inoltre, i dati
vengono raccolti dal VI Acquire Waveform utilizzando temporizzatori
hardware per controllare il campionamento. Chiamando il VI AI Sample
Channel in un ciclo non consente una raccolta di dati ad una velocit di
campionamento costante.

Schermate
Laggiornamento dei controlli su un pannello frontale un altro compito
dispendioso dal punto di vista temporale in unapplicazione. Mentre il
multithread aiuta a ridurre leffetto che gli aggiornamenti del display
hanno sul tempo di esecuzione complessivo, display complicati, come i
grafici possono influenzare negativamente il tempo di esecuzione. Questo
effetto pu diventare significativo su piattaforme di LabVIEW che non
supportano il mutlithreading. Sebbene molti indicatori non vengano
ridisegnati quando ricevono dati che coincidono con i dati precedenti, i
grafici vengono sempre ridisegnati. Per minimizzare questo spreco di
risorse, mantenete semplici i display del pannello frontale e provate a
ridurre il numero di oggetti del pannello frontale. Si aumenta lefficienza
dei grafici disabilitando lautoscaling, i marcatori di scala e le griglie.
Anche il progetto dei subVI pu ridurre sprechi di visualizzazione. Se i
subVI hanno pannelli frontali che rimangono chiusi durante lesecuzione,
nessuno dei controlli del pannello frontale pu influenzare la velocit di
esecuzione complessiva del VI.
Come mostrato nello schema a blocchi seguente, potete ridurre gli sprechi
di visualizzazione minimizzando il numero di volte che il vostro VI
aggiorna il display. Disegnare i dati sullo schermo unoperazione di I/O,
simile allacceso ad un file o ad uno strumento GPIB. Per esempio, potete
aggiornare un grafico tipo waveform un punto alla volta, o diversi punti
alla volta. Ottenete velocit di visualizzazione dei dati molto pi alte se
raccogliete i vostri dati su matrici, potendo cos visualizzare diversi punti
alla volta. In tal modo riducete la quantit di tempo richiesta dallI/O per
aggiornare lindicatore.

LabVIEW Corso Base II

6-14

National Instruments Corporation

Lezione 6 Controllo delle prestazioni

Aggiornamento singolo del


grafico (Metodo pi lento)

Aggiornamento multiplo del


grafico (Metodo pi veloce)

Altre problematiche
Impegno risorse dei subVI
Ogni chiamata ad un subVI richiede un certo dispendio di risorse. Questo
dispendio relativamente piccolo, dellordine delle decine di
microsecondi, specialmente in confronto al tempo necessario per lI/O e il
display, che possono richiedere dai millisecondi alle decine di
millisecondi. Tuttavia, se voi fate 10000 chiamate ad un subVI in un
ciclo, limpegno potrebbe influenzare in maniera significativa la vostra
velocit di esecuzione. In questo caso, potreste considerare di includere il
ciclo nel subVI.
Un altro modo di minimizzare limpegno di risorse dei subVI di
trasformare i vostri subVI in subroutine selezionando Execution dal
menu a tendina superiore nella finestra di dialogo FileVI Properties.
Tuttavia ci sono degli inconvenienti. Le subroutine non possono
visualizzare i dati del pannello frontale, chiamare funzioni di
temporizzazione o di finestre di dialogo o andare in multitask con altri VI.
Le subroutine sono generalmente pi adatte per VI che non richiedono
interazione con lutente e costituiscono piccoli compiti eseguiti
frequentemente.

Calcoli superflui nei cicli


Evitate linserimento di calcoli nei cicli se il calcolo produce lo stesso
valore per ogni iterazione. Spostate il calcolo allesterno del ciclo e
passate il risultato allinterno del ciclo. Per esempio considerate i due
schemi a blocchi seguenti. Il risultato della divisione lo stesso in ogni
iterazione del ciclo, quindi potete migliorare le prestazioni spostando la
divisione allesterno del ciclo.

Calcolo superfluo nel ciclo


(Metodo pi lento)

National Instruments Corporation

6-15

Solo calcoli necessari nel ciclo


(Metodo pi veloce)

LabVIEW Corso Base II

Lezione 6

Controllo delle prestazioni

Inoltre evitate di accedere a variabili locali e globali nei cicli quando non
necessario. Per esempio, lo schema a blocchi seguente spreca tempo
leggendo dalla variabile globale e scrivendoci sopra durante ogni
iterazione del ciclo. Se sapete che la variabile globale non viene letta o
scritta da un altro schema a blocchi durante il ciclo, considerate lutilizzo
di registri di scorrimento per memorizzare dati, come mostrato nel
secondo schema a blocchi.

Accessi frequenti alla variabile


globale (Metodo pi lento)

Accessi minimizzati alla variabile


globale (Metodo pi veloce)

Notate che avete bisogno dei registri a scorrimento per passare un nuovo
valore dal subVI alliterazione successiva del ciclo. Gli utenti principianti
di LabVIEW spesso omettono questi registri a scorrimento. Senza un
registro a scorrimento, i risultati del subVI non vengono passati indietro
al subVI come nuovo valore di ingresso, come mostrato nello schema a
blocchi seguente.

Nello schema a blocchi precedente, la variabile globale viene letta una


volta prima dellinizio del ciclo e lo stesso valore viene passato alla
funzione 10000 volte. Il risultato del ciclo lo stesso di quello che avreste
ottenuto scrivendo il codice come nello schema a blocchi seguente.

LabVIEW Corso Base II

6-16

National Instruments Corporation

Lezione 6 Controllo delle prestazioni

Schemi in parallelo
Quando diversi cicli vengono eseguiti in parallelo sullo schema a blocchi,
LabVIEW elabora i cicli alternativamente. Se alcuni di questi cicli sono
meno importanti di altri, dovreste utilizzare la funzione Wait (ms) per
garantire che i cicli meno importanti utilizzino meno tempo. Considerate
per esempio lo schema a blocchi seguente.

I due cicli vengono eseguiti in parallelo. Uno dei cicli acquisisce i dati e
deve essere eseguito il pi frequentemente possibile. Laltro ciclo
monitora lingresso dellutente. In tal modo entrambi i cicli prendono lo
stesso tempo. Il ciclo che monitora lutente pu essere eseguito diverse
centinaia di volte al secondo. In realt questo ciclo avrebbe bisogno di
essere eseguito solo alcune volte al secondo, perch lutente non pu
effettuare cambiamenti sullinterfaccia molto rapidamente. Come
mostrato nello schema a blocchi seguente, potete richiamare la funzione
Wait (ms) nel ciclo dellinterfaccia utente per lasciare molto pi tempo di
esecuzione allaltro.

National Instruments Corporation

6-17

LabVIEW Corso Base II

Lezione 6

Controllo delle prestazioni

Esercitazione 6-2

VI Charting Benchmark Example

Obiettivo: Osservare le velocit relative di un grafico a punti singoli e a punti multipli


utilizzando la finestra Profile e gli effetti del multithreading su sistemi che
supportano questa caratteristica.
Quando aprite il VI Charting Benchmark Example, due altri pannelli
frontali di subVI vengono aperti. Questi due subVI rappresentano gli
stessi dati in condizioni differenti.

Pannelli frontali

1. Se state eseguendo LabVIEW su un sistema operativo che supporta il


multithreading (Windows, Solaris2, o Concurrent PowerMAX), completate
i passi da a a c. Se siete su un sistema che non supporta il multithread,
andate al passo 2.
a. Configurate LabVIEW in maniera tale che non utilizzi il
multithreading quando esegue i VI. Selezionate ToolsOptions
per visualizzare la finestra di dialogo Options.
b. Dal menu a tendina superiore della finestra di dialogo Options
selezionate Performance and Disk. Nella sezione Performance
and Disk, rimuovete il contrassegno dal riquadro Run with
multiple threads. Cliccate su OK.
c. Uscite e riavviate LabVIEW affinch siano attivi gli
aggiornamenti nelle preferenze. LabVIEW ora configurato per
eseguire VI in un singolo thread, utilizzando il multitasking
cooperativo.

LabVIEW Corso Base II

6-18

National Instruments Corporation

Lezione 6 Controllo delle prestazioni

2. Chiudete tutti gli altri VI che potrebbero essere aperti.


3. Aprite il VI Charting Benchmark Example. Il VI gi realizzato.
Quando lo aprite, si aprono anche altri due VI.
Il VI Charting Benchmark Example genera una matrice di 1000
numeri casuali. Quando cliccate sul pulsante Run SubVIs, i due
subVI vanno in esecuzione. Il subVI Update Chart 1 Point at a Time
aggiorna il grafico 1000 volte. Il secondo subVI Update Chart 50
Points at a Time aggiorna il grafico 20 volte, visualizzando 50 punti
alla volta. Selezionate ToolsAdvancedProfile VIs.

4. Spostate la finestra affinch non si sovrapponga agli altri pannelli


frontali.
5. Cliccate sul pulsante Start nella finestra Profile. Vedete nella tabella
le statistiche VI Time, SubVIs Time e Total Time.
6. Avviate il VI Charting Benchmark Example. Il VI non fa niente
finch non cliccate sul pulsante Run SubVIs. Avviate i subVI almeno
tre o quattro volte. Quindi cliccate sul pulsante Quit per arrestare il VI
Charting Benchmark Example.
7. Dopo aver avviato i subVI diverse volte, cliccate sul pulsante
Snapshot nella finestra Profile. Individuate il VI Charting
Benchmark Example nella finestra Profile e cliccate due volte su di
esso per visualizzare i due subVI. Ricordate che sono tempi cumulati,
non le quantit di tempo necessarie per eseguire i sub VI una volta.
Notate che laggiornamento del grafico un punto alla volta il metodo
pi lento e che laggiornamento del grafico con diversi punti alla volta
il metodo pi rapido.

National Instruments Corporation

6-19

LabVIEW Corso Base II

Lezione 6

Controllo delle prestazioni

8. Selezionate lopzione Timing Statistics per visualizzare il tempo di


esecuzione medio per i subVI. Quindi selezionate lopzione Timing
Details ed esaminate le statistiche Display e Draw. Notate che il
tempo di Display superiore per il subVI Update Chart 1 Point at a
Time ed molto basso per il subVI Update Chart 50 Points at a Time.
Registrate il tempo di esecuzione medio nella tabella seguente.
Fate riferimento a LabVIEW Help o a LabVIEW User Manual per
ulteriori informazioni sulle statistiche.
9. Cliccate sul pulsante Stop nella finestra Profile per arrestare la
sessioni sui profili. Quindi chiudete la finestra Profile.
10. Chiudete tutti i VI aperti e non salvate i cambiamenti.
11. Se state eseguendo LabVIEW su un sistema operativo con
multithreading, contrassegnate il riquadro Run with multiple threads
nella pagina Performance and Disk di ToolsOptions e riavviate
LabVIEW. Ripetete i passi da 3 a 10, notando nella tabella quanto pi
veloce vengano eseguiti i VI quando il display in esecuzione nel suo
sottosistema di esecuzione.
Tabella 6-1. Tempi di esecuzione

Tempo di esecuzione medio


Multithreading off Multithreading on
Pi veloce in %
VI
Charting
%
Benchmark Example
VI Update Chart 1
%
Point at a Time
VI Update Chart 50
%
Points at a Time

Fine dellesercitazione 6-2

LabVIEW Corso Base II

6-20

National Instruments Corporation

Lezione 6 Controllo delle prestazioni

Esercitazione 6-3
Obiettivo:

VI Dialog & SubVI Demo

Osservare come una struttura a flusso di dati possa influenzare la velocit di


esecuzione.
Caricate ed avviate un VI che rappresenti un pattern di forme donda.
Notate come il flusso di dati influenza lesecuzione del VI.

Pannello frontale
1. Se state eseguendo LabVIEW su un sistema operativo che supporta il
multithread (Windows, Solaris2, o Concurrent PowerMAX), completate i
passi da a a c. Se siete su un sistema che non supporta il
multithreading, andate al passo 2.
a. Configurate LabVIEW in maniera tale che non utilizzi il
multithreading quando esegue i VI. Selezionate ToolsOptions
per visualizzare la finestra di dialogo Options.
b. Dal menu a tendina superiore della finestra di dialogo Options
selezionate Performance and Disk. Nella sezione Performance
and Disk, rimuovete il contrassegno dal riquadro Run with
multiple threads. Cliccate su OK.
c. Uscite e riavviate LabVIEW affinch siano attivi gli
aggiornamenti nelle preferenze. LabVIEW ora configurato per
eseguire VI in un singolo thread, utilizzando il multitasking
cooperativo.
2. Aprite il VI Dialog & SubVI Demo. Il VI gi realizzato. Il pannello
frontale contiene un grafico tipo strip e diversi pulsanti opzione.
Questo grafico mostra due tipi di dati, la media continua di una
temperatura simulata e una traccia rossa che mostra quanto
rapidamente queste medie vengono calcolate.

National Instruments Corporation

6-21

LabVIEW Corso Base II

Lezione 6

Controllo delle prestazioni

3. Aprite lo schema a blocchi ed esaminatelo. Due cicli While vengono


eseguiti in parallelo. Un ciclo gestisce la raccolta dei dati e lanalisi
mentre laltro gestisce linterfaccia utente.
4. Avviate il VI. Osservate la velocit di rappresentazione e le medie al
secondo da calcolare.
Notate che il valore Average/Sec periodico e si abbassa molto. Lo
schema a blocchi contiene due cicli While eseguiti in parallelo. Il Plot
Loop (superiore) quello che genera la media della temperatura e il
numero di medie al secondo. Il degrado delle prestazioni avviene
quando il Menu Loop viene eseguito e verifica i valori dei pulsanti sul
pannello frontale. Le prestazioni migliorano quando viene eseguito il
Plot Loop.
5. Cliccate sul pulsante Show Dialog. Notate leffetto sulla velocit di
rappresentazione e sul valore Averages/Sec. Ricordate che un ciclo
non pu iniziare literazione successiva finch lintero schema a
blocchi allinterno non ha completato lesecuzione. Nel Menu Loop,
vengono letti i valori dai pulsanti per determinare quale condizione
devessere eseguita. Se cliccate sul pulsante Show Dialog, viene
eseguita la condizione 0. La condizione non ha completato
lesecuzione se non cliccate sul pulsante OK nella finestra di dialogo.
Perci, mentre la finestra di dialogo viene visualizzata, il Plot Loop
non deve condividere il processore con il Menu Loop.

LabVIEW Corso Base II

6-22

National Instruments Corporation

Lezione 6 Controllo delle prestazioni

6. Cliccate sul pulsante Pop-Up VI. Il VI Pop-up 2nd Process apre il


proprio pannello frontale e va in esecuzione. Notate leffetto sul primo
valore Average/Sec del VI. Come nella situazione in cui avete cliccate
sul pulsante Show Dialog, il Menu Loop non viene pi eseguito
finch non ha completato il VI Pop-up 2nd Process. Tuttavia
LabVIEW avvia il secondo VI nello stesso istante del VI originario. Il
degrado nelle prestazioni avviene quando viene avviato il secondo VI.
Perci LabVIEW esegue pi VI nello stesso modo in cui esegue cicli
in paralleloogni processo occupa lo stesso tempo.
7. Cliccate sul pulsante Stop.
8. Modificate il Menu Loop affinch includa una funzione Wait (ms).
Collegate un valore costante di 300 allingresso della funzione.
Notate come cambia la velocit del Plot Loop.
9. Chiudete il VI e non salvate le modifiche.
10. Se state eseguendo LabVIEW su un sistema operativo con
multithreading, contrassegnate il riquadro Run with multiple threads
nella pagina Performance and Disk di ToolsOptions e riavviate
LabVIEW. Ripetete i passi da 2 a 9, notando come il multithreading
influenza la velocit di esecuzione del VI Dialog & SubVI Demo.
Se volete ottenere ulteriori risultati, spostate la finestra con il cursore
mentre il VI Dialog & SubVI Demo in esecuzione. Questo aumenta il
carico di lavoro del processore creando risultati evidenti.

Fine dellesercitazione 6-3

National Instruments Corporation

6-23

LabVIEW Corso Base II

Lezione 6

Controllo delle prestazioni

Esercitazione 6-4
Obiettivo:

VI Computation & Global Benchmark

Osservare gli effetti di calcoli superflui e di attivit con variabili globali sulla
velocit di esecuzione dei VI.
Usate la finestra Profile per confrontare le prestazioni di VI che eseguono
gli stessi compiti utilizzando differenti tecniche di programmazione.

Pannello frontale

1. Chiudete tutti i VI eventualmente aperti.


2. Aprite il VI Computation & Global Benchmark. Il VI gi realizzato.
3. Selezionate ToolsAdvancedProfile VIs. Cliccate sul pulsante Start
nella finestra Profile. Non raccogliete statistiche.
4. Avviate il VI Computation & Global Benchmark. Cliccate sul
pulsante Run SubVIs per avviare i seguenti quattro subVI. Avviate i
subVI almeno tre o quattro volte.

LabVIEW Corso Base II

6-24

National Instruments Corporation

Lezione 6 Controllo delle prestazioni

5. Dopo aver avviato i subVI diverse volte, arrestate il VI e cliccate sul


pulsante Snapshot nella finestra Profile. Individuate il VI
Computation & Global Benchmark nella finestra Profile e cliccateci
sopra due volte per visualizzare i suoi subVI se non sono gi
visualizzati.
Osservate il tempo impiegato da ogni subVI. In particolare,
confrontate il tempo impiegato eseguendo il VI Update Globals Inside
Loop rispetto al VI Globals Outside of Loop e il tempo impiegato
eseguendo il VI Unnecessary Loop Computations rispetto al VI
Unnecessary Computations Removed. Vi aspettavate questo
comportamento? Come potreste applicare quello che avete imparato in
questa esercitazione al vostro modo di programmare?
6. Cliccate sul pulsante Stop nella finestra Profile per arrestare la
sessione profili. Quindi chiudete la finestra Profile.
7. Chiudete il VI. Non salvate i cambiamenti.

Fine dellesercitazione 6-4

National Instruments Corporation

6-25

LabVIEW Corso Base II

Lezione 6

Controllo delle prestazioni

D. Memoria di sistema
LabVIEW gestisce in maniera trasparente molti dettagli con cui
normalmente avete a che fare nei linguaggi di programmazione testuali.
Una delle principali sfide della programmazione con un linguaggio
testuale luso di memoria. In un linguaggio di programmazione testuale,
dovete allocare memoria prima di usarla e disallocarla quando avete
finito. Dovete anche prestare particolare attenzione a non scrivere
accidentalmente oltre la memoria che avete allocato. Gli errori principali
che si commettono nei linguaggi di programmazione testuali riguardano
lallocazione della memoria.
La programmazione a flusso di dati di LabVIEW rimuove molte delle
difficolt riguardanti la gestione della memoria. In LabVIEW non allocate
variabili, assegnandole dei valori o leggendo dei valori da esse. Invece
create uno schema a blocchi con collegamenti grafici che rappresentano il
percorso dei dati.
Le funzioni che generano dati allocano limmagazzinamento di quei dati.
Quando i dati non sono pi necessari, LabVIEW disalloca la memoria
relativa. Quando dovete aggiungere una nuova informazione ad una
matrice o ad una stringa, LabVIEW alloca la memoria necessaria.
Questa gestione automatica della memoria uno dei principali vantaggi di
LabVIEW. Tuttavia, siccome automatica, ne avete un controllo
inferiore. Dovete capire come LabVIEW alloca e disalloca la memoria
affinch possiate progettare applicazioni con esigenze di memoria
inferiori. Inoltre, una comprensione su come minimizzare luso della
memoria pu aiutarvi ad aumentare la velocit di esecuzione, siccome
lallocazione di memoria e la copia di dati pu prendere una
considerevole quantit di tempo.

La memoria in LabVIEW
Windows, Sun e HP-UXLabVIEW alloca la memoria in maniera dinamica,

prendendo quanto necessario. Questo processo trasparente per lutente.


Macintosh LabVIEW alloca un singolo blocco di memoria allavvio, al

di fuori del quale vengono eseguite tutte le allocazioni successive.


Quando caricate un VI, i suoi componenti vengono caricati in questo
blocco di memoria. Inoltre, quando avviate un VI, tutta la memoria che
utilizza viene allocata da questo blocco.
Su Macintosh configurate la quantit di memoria che LabVIEW alloca
allavvio selezionando lopzione Get Info dal menu File nel Finder.
Notate che se LabVIEW va oltre questa memoria, non pu incrementare
queste dimensioni. Perci dovete impostare questo parametro il pi
grande possibile. Assicuratevi di lasciare abbastanza memoria per
qualsiasi altra applicazione vogliate eseguire contemporaneamente con
LabVIEW.

LabVIEW Corso Base II

6-26

National Instruments Corporation

Lezione 6 Controllo delle prestazioni

Memoria virtuale
Quando utilizzate Windows o Macintosh, potete utilizzare la memoria
virtuale per aumentare la memoria disponibile per le vostre applicazioni.
La memoria virtuale utilizza lo spazio disponibile su disco per
accumulare RAM. Se allocate molta memoria virtuale, le applicazioni
considerano questa memoria disponibile per limmagazzinamento dati.
Su Macintosh allocate memoria virtuale utilizzando il dispositivo
Memory nella cartella Control Panel. Windows, Sun e HP-UX gestiscono
automaticamente lallocazione di memoria virtuale.
LabVIEW non distingue tra RAM e memoria virtuale. Il sistema
operativo nasconde il fatto che la memoria sia virtuale. Tuttavia, laccesso
ai dati memorizzati nella memoria virtuale pi lento di quello alla RAM
fisica. Con la memoria virtuale, potete osservare occasionalmente
prestazioni pi lente perch i dati vengono scambiati con lhard disk dal
sistema operativo. La memoria virtuale pu aiutare le applicazioni pi
grandi, ma probabilmente non adatta ad applicazioni che hanno vincoli
di tempo stringenti.

Componenti dei Vi
I VI hanno i seguenti componenti principali:
y

Pannello frontale

Schema a blocchi

Codiceschema a blocchi compilato in codice macchina

Dativalori di controlli e indicatori, dati di default, costanti dello


schema a bocchi e cos via.

Quando caricate un VI, LabVIEW carica in memoria il pannello frontale,


il codice, se coincide con la piattaforma, e i dati del VI. Se il VI deve
essere ricompilato a causa di un cambiamento di piattaforma o di
uninterfaccia di un subVI, LabVIEW carica in memoria anche lo schema
a blocchi.
LabVIEW carica in memoria anche il codice e lo spazio dati dei subVI. In
alcuni casi, LabVIEW carica in memoria anche il pannello frontale di
alcuni subVI. Per esempio, se il subVI utilizza i Property Nodes,
LabVIEW deve caricare il pannello frontale perch i Property Nodes
operano sulle caratteristiche dei controlli del pannello frontale.
Come mostrato nellesempio seguente, potete risparmiare memoria
convertendo in subVI alcuni dei componenti dei VI. Se create un unico,
grande VI senza subVI, il pannello frontale, il codice e i dati di quel VI ad
alto livello finiscono in memoria. In taluni casi potreste realmente vedere
abbassarsi luso della memoria run-time.

National Instruments Corporation

6-27

LabVIEW Corso Base II

Lezione 6

Controllo delle prestazioni

Pannello Schema a
frontale blocchi
Codice

Spazio
dati

VI a livello superiore

Pannello Schema a
frontale blocchi
Codice

Spazio
dati

subVI

Pannello Schema a
frontale blocchi
Codice

Spazio
dati

subVI

Sempre residente
Residente quando necessario

LabVIEW Corso Base II

6-28

National Instruments Corporation

Lezione 6 Controllo delle prestazioni

E. Ottimizzazione delluso della memoria da parte dei VI


Questa sezione descrive alcuni aspetti specifici riguardanti lutilizzo pi
efficiente della memoria da parte dei VI. Discuteremo come monitorare e
migliorare lutilizzo della memoria e suggeriremo dei modi per
assemblare e processare in modo efficiente matrici e strutture di dati.

Come monitorare luso della memoria


Come mostrato nellesempio seguente, selezionate Memory Usage dal
menu a tendina superiore nella finestra di dialogo FileVI Properties per
avere unanalisi dellutilizzo della memoria per un particolare VI. La
colonna di sinistra sintetizza luso del disco e quella di destra indica
quanta RAM viene usata per i vari componenti del VI. Osservate che le
informazioni non comprendono lutilizzo di memoria dei subVI.

Potete anche utilizzare la finestra Profile per monitorare la memoria


utilizzata da tutti i VI in memoria.
Nota Quando monitorate lutilizzo di memoria di un VI, assicuratevi di salvare

il VI prima di esaminare i suoi requisiti relativi alla memoria. La caratteristica


Undo di LabVIEW esegue delle copie temporanee degli oggetti e dei dati, che
possono aumentare la memoria necessaria indicata per un VI. Salvando il VI si
liberano le copie generate da Undo, generando dei rapporti accurati sulla
memoria.

National Instruments Corporation

6-29

LabVIEW Corso Base II

Lezione 6

Controllo delle prestazioni

Regole generali per un uso migliore della memoria


Adottate le regole seguenti per creare VI che utilizzino la memoria in
maniera efficiente.
y

Spezzare un VI in subVI solitamente migliora lutilizzo della memoria


perch LabVIEW pu recuperare la memoria dati dei subVI quando i
subVI non sono in esecuzione.

Non eccedete nelluso di variabili globali e locali per memorizzare


matrici o stringhe; la lettura di una variabile globale o locale genera
una copia dei dati memorizzati nella variabile.

Allapertura dei pannelli frontali, visualizzate grandi matrici e


stringhe solo se necessario. Gli indicatori sui pannelli frontali
mantengono una copia dei dati che visualizzano.

Se il pannello frontale di un subVI non sar visualizzato, non lasciate


inutilizzati i Property Nodes sul subVI. I Property Nodes
provocheranno la giacenza in memoria del pannello frontale del
subVI, incrementando lutilizzo di memoria.

Non utilizzate lopzione Suspend Data Range con VI critici dal punto
di vista tempi e memoria. Il pannello frontale dei subVI devessere
caricato per verifiche sullintervallo e vengono eseguite copie extra
dei dati per i controlli e gli indicatori dei subVI.

Quando progettate schemi a blocchi, osservate i luoghi in cui le


dimensioni di un ingresso sono differenti da quelle di unuscita. Per
esempio, se aumentate frequentemente le dimensioni di una matrice o
di una stringa utilizzando la funzione Build Array o Concatenate
Strings, generate copie dei dati, aumentando il numero di allocazioni
di memoria che LabVIEW deve effettuare. Queste operazioni possono
frazionare la memoria.

Utilizzate tipi di dati consistenti per le matrici ed osservate i punti di


forzatura quando vengono passati i dati a subVI e a funzioni. Quando
LabVIEW cambia il tipo di dati, luscita un nuovo buffer.

Non utilizzate tipi di dati complicati, di tipo gerarchico, per esempio


matrici di cluster contenenti grandi matrici o stringhe, o cluster
contenenti grandi matrici o stringhe. La sezione Strutture di dati
semplici rispetto a quelle complesse in questa lezione contiene
ulteriori informazioni sulla progettazione di tipi di dati efficienti.

Assemblaggio ed elaborazione di matrici


Quando progettate lo schema a blocchi, ci sono diversi passi da seguire
per rendere pi efficiente lutilizzo della memoria da parte dei vostri VI.
Per esempio, potete assemblare ed elaborare matrici in modi che
minimizzano la quantit di accesso in memoria necessaria.

LabVIEW Corso Base II

6-30

National Instruments Corporation

Lezione 6 Controllo delle prestazioni

LabVIEW memorizza matrici di numeri in blocchi contigui di memoria.


Se utilizzate cicli For per assemblare queste matrici, LabVIEW pu
determinare la quantit di memoria necessaria ed allocare lo spazio
necessario a monte della prima iterazione. Tuttavia, se utilizzate cicli
While, LabVIEW non pu predeterminare i requisiti di spazio di cui avete
bisogno. LabVIEW potrebbe aver bisogno di riallocare lintero buffer,
forse parecchie volte, quando la matrice cresce. Il tempo necessario a
questa operazione aumenta con le dimensioni della matrice. Perci,
quando possibile, dovreste utilizzare cicli For per assemblare matrici
piuttosto che cicli While o concatenare matrici con la funzione Build
Array.

Inplaceness
Quando possibile, il compilatore di LabVIEW riutilizza i buffer
dingresso di una funzione per memorizzare la sua uscita. Questa
condivisione di buffer viene chiamata inplaceness. Nellesempio
seguente, la funzione Multiply utilizza lo stesso buffer come ingresso
superiore. La matrice sulla destra si dice che stata inserita nella matrice
A.

National Instruments Corporation

6-31

LabVIEW Corso Base II

Lezione 6

Controllo delle prestazioni

Unuscita di una funzione riutilizza un buffer dingresso se luscita e


lingresso hanno lo stesso tipo di dati, di rappresentazione e, nelle matrici,
nelle stringhe e nei cluster, la stessa struttura e numero di elementi.
Funzioni in grado di implementare linplaceness sono le funzioni
trigonometriche e logaritmiche, la maggior parte delle funzioni numeriche
e alcune funzioni su stringhe e matrici come To Upper Case e Replace
Array Element. Una funzione che fa scorrere o sposta elementi di una
matrice, come la Replace Array Element, pu riutilizzare i buffer. Alcune
funzioni come Array Subset e String Subset potrebbero non copiare dati
ma potrebbero passare puntatori a sottomatrici o sottostringhe.
Nellillustrazione seguente A, B, C e D identificano buffer singoli. Build
Array e Concatenate Strings sono funzioni speciali. Esse operano con
linplaceness quando possono ma talvolta devono allocare nuovi buffer.

LabVIEW Corso Base II

6-32

National Instruments Corporation

Lezione 6 Controllo delle prestazioni

Funzioni che riutilizzano i buffer

Funzioni che possono allocare


nuovi buffer

Funzioni che allocano nuovi buffer

Forzatura e tipi di dati consistenti


Considerate la funzione Random Number (0-1), utilizzata spesso negli
esempi mostrati nel corso. Questa funzione produce dati in doppia
precisione e a virgola mobile (DBL). Quindi vengono create sulla cornice
dei cicli For matrici DBL. Per risparmiare memoria potreste considerare
lutilizzo di matrici in singola precisione a virgola mobile (SGL) al posto
delle matrici DBL. Dei tre metodi seguenti per creare matrici SGL, uno
corretto e gli altri due sbagliati. Ricordate che ogni valore DBL richiede 8
byte di memoria, mentre ogni valore SGL richiede 4 byte di memoria.

National Instruments Corporation

6-33

LabVIEW Corso Base II

Lezione 6

Controllo delle prestazioni

Metodo 1 (sbagliato)

Il metodo 1 potrebbe essere il vostro primo tentativo di risparmiare spazio


dati in memoria. Potreste pensare che portare su SGL la rappresentazione
della matrice sul pannello frontale (FP) possa far risparmiare spazio in
memoria. Tuttavia questo metodo non influisce sulla quantit di memoria
necessaria al VI, perch la funzione crea un buffer separato per mantenere
i dati convertiti. Il punto di forzatura sul terminale della matrice SGL
indica che la funzione ha creato un buffer separato per mantenere i dati
convertiti.

LabVIEW Corso Base II

6-34

National Instruments Corporation

Lezione 6 Controllo delle prestazioni

Metodo 2 (sbagliato)

Il metodo 2 un tentativo di rimuovere il punto di forzatura convertendo


ogni matrice in SGL utilizzando la funzione To Single Precision Float che
si trova nella palette FunctionsNumericConversion. Tuttavia anche
questo metodo incrementa le dimensioni dello spazio dati, perch la
funzione crea due nuovi buffer, Ce D, per mantenere le nuove matrici
SGL.

National Instruments Corporation

6-35

LabVIEW Corso Base II

Lezione 6

Controllo delle prestazioni

Metodo 3 (corretto)

Il metodo 3 riduce considerevolmente le dimensioni dello spazio dati, da


24.3 kB a 12.6 kB. Questo metodo converte in SGL luscita della
funzione Random Number (0-1) prima che venga creata la matrice;
quindi questo metodo crea due matrici SGL sulla cornice del ciclo For
piuttosto che due matrici DBL.

LabVIEW Corso Base II

6-36

National Instruments Corporation

Lezione 6 Controllo delle prestazioni

Strutture di dati semplici rispetto a quelle complesse


I tipi di dati semplici, che comprendono stringhe, numeri, booleani,
cluster di numeri o di booleani e le matrici di numeri o di booleani, hanno
dei riferimenti in memoria. Per altri dati, noti come nidificati, o dati
complessi, pi difficile creare riferimenti. Esempi di dati nidificati
comprendono matrici di stringhe, cluster contenenti matrici di cluster e
matrici di cluster contenenti matrici.
Matrice di cluster
contenente matrici

Cluster di matrici
contenenti un cluster

Dati semplici
Dati complessi

Per prestazioni migliori, evitate di creare strutture di dati complicate. Le


prestazioni possono risentirne perch difficile accedere e manipolare
elementi interni senza generare copie di dati. Quindi, mantenete le vostre
strutture di dati le pi semplici possibile. Strutture di dati semplici
possono generalmente essere manipolate con facilit ed in maniera
efficiente.
Considerate unapplicazione in cui volete registrare i risultati di diverse
prove. Nei risultati volete una stringa che descriva la prova e una matrice
con i risultati della prova. Un tipo di dati che potreste utilizzare per
memorizzare queste informazioni una matrice di cluster contenenti una
stringa descrittiva e una matrice con i dati della prova, come mostrato nel
pannello frontale seguente.

National Instruments Corporation

6-37

LabVIEW Corso Base II

Lezione 6

Controllo delle prestazioni

Ora pensate a che cosa vi serve per effettuare cambiamenti ad un


elemento nella matrice Test Data. Innanzitutto dovete indicizzare un
elemento della matrice complessiva Tests. Per quellelemento, che un
cluster, dovete separare gli elementi per accedere alla matrice. Quindi
sostituite un elemento della matrice e memorizzate la matrice risultante
nel cluster. Infine memorizzate il cluster risultante nella matrice
originaria. Un esempio di questo mostrato nellillustrazione seguente.

Copiare dati dispendioso in termini di memoria e di prestazioni. La


soluzione di realizzare strutture di dati pi semplici possibile. In questo
caso potreste memorizzare i dati in due matrici, come mostrato nello
schema a blocchi seguente. La prima matrice una matrice di stringhe. La
seconda matrice bidimensionale, ed ogni riga formata dai risultati di
una prova. Nellesempio seguente, il pannello frontale contiene nuovi
controlli per memorizzare i dati e lo schema a blocchi effettua gli stessi
cambiamenti ai dati della prova, come mostrato nello schema a blocchi
precedente.

LabVIEW Corso Base II

6-38

National Instruments Corporation

Lezione 6 Controllo delle prestazioni

National Instruments Corporation

6-39

LabVIEW Corso Base II

Lezione 6

Controllo delle prestazioni

Esercitazione 6-5

VI Assembling Arrays

Obiettivo: Osservare la velocit di costruzione di matrici utilizzando metodi diversi.


Caricate ed avviate un VI che crei una matrice di numeri utilizzando
diversi metodi. Utilizzando la finestra Profile, confrontate le prestazioni
dei VI utilizzando cicli For, cicli While, lautoindicizzazione e la
funzione Build Array per creare matrici. Inoltre confrontate questi metodi
con una tecnica che utilizza la funzione Replace Array Element su una
matrice esistente.

Pannello frontale

1. Chiudete tutti i VI eventualmente aperti.


2. Aprite il VI Assembling Arrays.
3. Per visualizzare la finestra Profile selezionate ToolsAdvanced
Profile VIs. Selezionate lopzione che visualizza le statistiche
temporali. Cliccate sul pulsante Start nella finestra Profile per
iniziare una sessione di profili. Non raccogliete statistiche sulla
memoria.
4. Avviate il VI Assembling Arrays. Per verificare differenti metodi di
costruzione di matrici, cliccate sul pulsante Test. Lindicatore Method
mostra quale metodo sotto osservazione. Il VI prova sei metodi
diversi.
5. Dopo aver eseguito il test diverse volte, cliccate sul pulsante
Snapshot nella finestra Profile.
Ora descriveremo le sei diverse tecniche di costruzione di matrici e
perch le prestazioni di questi VI differiscono.
Utilizzando la finestra Profile, contrassegnate il riquadro Timing
Statistics ed osservate i tempi di esecuzione medi mostrati.

LabVIEW Corso Base II

6-40

National Instruments Corporation

Lezione 6 Controllo delle prestazioni

La funzione Initialize Array leggermente pi veloce di un ciclo For con


autoindicizzazione. In entrambi i casi la dimensione della matrice nota e
LabVIEW pu allocare la quantit corretta di memoria una sola volta.
Ricordate che il ridimensionamento richiede pi tempo di esecuzione.
Perci la funzione Initialize Array o il ciclo For con autoindicizzazione
sono il metodo migliore per creare matrici.

Un ciclo For viene eseguito un numero predeterminato di volte. Un ciclo


While no, quindi LabVIEW non pu predeterminare quanta memoria
deve allocare se una matrice viene costruita allinterno di un ciclo While.
Quando la matrice viene costruita in un ciclo While, esso si ridimensiona
secondo le necessit. Ogni ridimensionamento richiede al sistema
operativo lallocazione di un nuovo buffer e quindi la copia del vecchio
buffer nel nuovo buffer pi grande. Pi c bisogno di ridimensionamenti,
maggiore il tempo di esecuzione. Un ciclo For richiede meno
ridimensionamenti, e quindi viene eseguito pi rapidamente rispetto al
ciclo While. Osservate questa differenza quando confrontate il tempo di
esecuzione medio per il ciclo For utilizzando il VI Auto Indexing e il
ciclo While utilizzando il VI Auto Indexing.

Se potete predeterminare le dimensioni massime di una matrice da


costruire, allora potete inizializzare questa matrice e passarla allinterno
del ciclo While. Una volta allinterno del ciclo While, ogni elemento pu
essere aggiornato o sostituito se necessario. Questo un metodo efficiente
perch la matrice non ha bisogno di essere riallocata una volta che stata
passata allinterno del ciclo While. Questo non ancora cos efficiente
come il ciclo For o la funzione Initialize Array.

National Instruments Corporation

6-41

LabVIEW Corso Base II

Lezione 6

Controllo delle prestazioni

Evitate di utilizzare la funzione Build Array allinterno di un ciclo. Ogni


volta che un nuovo valore viene aggiunto alla matrice, LabVIEW deve
riallocare il buffer e copiare lintera matrice nella nuova locazione. Perci
i tempi di esecuzione della funzione Build Array sono pi lenti.

6. Chiudete la finestra Profile. Chiudete il VI


modifiche.

e non salvate le

Fine dellesercitazione 6-5

LabVIEW Corso Base II

6-42

National Instruments Corporation

Lezione 6 Controllo delle prestazioni

Esercitazione 6-6

VI Performance Enhancements

Obiettivo: Incrementare le prestazioni di un VI.

Il VI Performance Enhancements stato creato per svolgere i seguenti


compiti.
y

Acquisire 1000 punti di un forma donda da un canale.

Salvare questi dati su disco.

Visualizzare lo spettro di potenza della forma donda acquisita.

Il VI scritto in modo scarno. Il VI consuma molta memoria, viene


eseguito lentamente ed poco documentato. Inoltre, il VI non fornisce i
risultati desiderati per forme donde sopra i 60 Hz.
In questo progetto dovete utilizzare le informazioni del capitolo
precedente ed altre che avete appreso nel corso.
1. Chiudete tutti i VI eventualmente aperti.
2. Aprite

il

VI

Performance Enhancements nella directory


Exercises\LV
Basics2. Visualizzate la finestra Profile
selezionando ToolsAdvancedProfile VIs. Selezionate Timing
Statistics nella finestra Profile.

3. Avviate il VI. Dopo che ha terminato, cliccate sul pulsante Snapshot


nella finestra Profile per visualizzare le informazioni sullesecuzione
del VI. Osservate quante volte vengono richiamati i VI e tra quei VI
che vengono chiamati pi volte quelli pi lenti. Osservate quali VI
sono stati eseguiti molte volte e osservate quali VI richiedono
probabilmente tempi di esecuzione pi lunghi.
4. Selezionate FileVI Properties e quindi Memory Usage dal menu a
tendina superiore. Un VI ben scritto per questa applicazione dovrebbe
consumare un totale di circa 25 k di memoria. Osservate quanto
consuma questo VI scritto in modo scarno.
5. Modificate il VI affinch questa applicazione:
Funzioni correttamente per forme donda a frequenza superiore.
Sia pi veloce.
Utilizzi meglio le strutture di dati e sia pi facile da comprendere.
Sia meglio documentata.
Utilizzate i consigli dati in questa lezione, le informazioni di altri
capitoli di questo corso e i seguenti consigli per partire:
Mettere i VI ad alto livello allinterno di cicli crea chiamate
ridondanti a funzioni.
Raccogliere o visualizzare dati un punto alla volta meno
efficiente che acquisire pi punti.

National Instruments Corporation

6-43

LabVIEW Corso Base II

Lezione 6

Controllo delle prestazioni

Tipi di dati lineari sono pi efficienti in termini di uso della


memoria rispetto a strutture complesse di dati.
Ci sono molti modi per documentare un VI.
6. Salvate il VI modificato.
7. Avviate il VI. Notate i miglioramenti nellesecuzione e nellutilizzo
della memoria. Notate anche la maggiore leggibilit e semplicit del
codice.
Assicuratevi di salvare il VI prima di esaminare il suo utilizzo di
memoria. Questo evita che la caratteristica Undo di LabVIEW allochi
inutilmente memoria.
Nota

8. Quando siete soddisfatti del vostro VI, salvatelo come Performance


Improvements.vi.

Fine dellesercitazione 6-6

LabVIEW Corso Base II

6-44

National Instruments Corporation

Lezione 6 Controllo delle prestazioni

Esercitazione 6-7

VI Performance Challenge/
VI Maximized Performance

Obiettivo: Incrementare le prestazioni di un VI.

Il VI Performance Challenge svolge i seguenti compiti.


1. Genera quattro insiemi di dati. Ogni insieme costituito da una
matrice di 5000 punti e da una stringa contenente data e ora relativa a
quando sono stati presi i dati. Ogni elemento ha bisogno di 2 sole cifre
di precisione.
2. Salva tutti i dati acquisiti e i relativi riferimenti temporali su disco. Il
file sar usato solo nelle applicazioni in LabVIEW e quindi non
necessita di alcun formato specifico.
3. Trova il valore massimo per ogni insieme di dati e visualizza 100
punti intorno al valore massimo del grafico. Il grafico finale dovrebbe
contenere quattro tracce, una per ogni insieme di dati.
Questo VI scritto in maniera scarna. Viene eseguito lentamente e
impegna pi memoria del necessario. In questa esercitazione ottimizzate
il VI per incrementare la velocit di esecuzione e diminuire limpegno di
memoria.
1.

Chiudete tutti i VI eventualmente aperti.

2. Aprite il VI Performance Challenge. Visualizzate la finestra Profile


selezionando ToolsAdvancedProfile VIs. Selezionate Timing
Statistics e Timing Details nella finestra Profile, affinch posiate
avere una migliore comprensione su quello che avviene mentre il VI
in esecuzione.
3. Avviate il VI. Dopo che ha terminato, cliccate sul pulsante Snapshot
nella finestra Profile per visualizzare le informazioni sullesecuzione
del VI. Osservando queste informazioni, notate quanto tempo viene
richiesto per laggiornamento delle variabili locali e anche quante
volte questa applicazione richiama subVI di I/O su file.
4. Selezionate FileVI Properties e quindi Memory Usage dal menu a
tendina superiore. Notate la considerevole quantit di memoria
richiesta dai dati di questo VI.
5. Modificate il VI per incrementare la velocit di esecuzione e per
ridurre la quantit di memoria richiesta. Utilizzate i consigli di questa
lezione e le seguenti indicazioni per cominciare:
y

Le variabili locali aumentano limpegno di memoria e rallentano


la velocit di esecuzione, specialmente quando vi si accede
allinterno di cicli.

Create le matrici in modo efficiente.

Minimizzate il numero di operazioni di I/O eseguite nellambito


dellapplicazione. Aprite e chiudete un file solo se necessario.

National Instruments Corporation

6-45

LabVIEW Corso Base II

Lezione 6

Controllo delle prestazioni

Evitate calcoli inutili e conversioni di dati, specialmente


allinterno di cicli.

Minimizzate e semplificate i display dei pannelli frontali.

Utilizzate strutture di dati semplici.

Suggerimento Dovete solamente rispettare i requisiti dellapplicazione descritti


precedentemente. Come implementare questa applicazione dipende da voi.

6. Salvate il VI modificato.
7. Avviate il VI, notando i miglioramenti sulla velocit nella finestra
Profile e sullimpegno di memoria in VI Properties. Potreste anche
ripetere i passi da 5 a 7 diverse volte, ottimizzando ulteriormente
lapplicazione.
Assicuratevi di salvare il VI prima di esaminare il suo utilizzo di
memoria. Questo evita che la caratteristica Undo di LabVIEW allochi
inutilmente memoria.
Nota

8. Quando siete soddisfatti del vostro VI, salvatelo come Maximized


Performance.vi.

Fine dellesercitazione 6-7

LabVIEW Corso Base II

6-46

National Instruments Corporation

Lezione 6 Controllo delle prestazioni

Sommario, trucchi e consigli


In funzione del sistema operativo. LabVIEW utilizza il multithreading o il
multitasking cooperativo per svolgere pi compiti contemporaneamente.
Con il multithreading, compiti differenti possono utilizzare differenti
thread di esecuzione, mentre in un sistema con multitasking cooperativo,
compiti diversi utilizzano lo stesso thread di esecuzione.
Utilizzate la finestra Profile per valutare le prestazioni di un VI e per
aiutarvi ad individuare i compiti che richiedono la maggior parte del
tempo di esecuzione e di impegno di memoria. Potete quindi concentrarvi
sul miglioramento di queste aree critiche per aumentare le prestazioni
complessive del vostro VI.
Utilizzate i seguenti consigli per velocizzare i vostri VI:
y

Riducete il numero di chiamate di I/O diminuendo il numero di dati


da acquisire, o acquisendo pi dati in poche chiamate.

Riducete il numero di controlli e indicatori che avete sul pannello


frontale.

Evitate luso di autoscaling sui grafici.

Aggiornate i grafici con diversi punti alla volta, non un punto alla
volta.

Forzate lattesa di compiti meno importanti, utilizzando la funzione


Wait (ms). In tal modo i compiti pi importanti hanno pi tempo
macchina a disposizione.

Evitate calcoli inutili in strutture a cicli.

Sebbene LabVIEW rimuova molte delle difficolt relative alla gestione


della memoria, potete avere meno controllo su altri processi. Ricordate
che potete monitorare la memoria del vostro computer andando sulla
pagina Memory Usage nella finestra di dialogo FileVI Properties e in
ToolsAdvancedProfile VIs.
Luso della memoria virtuale possiede vantaggi e svantaggi. Essa pu
significativamente aumentare la RAM disponibile per LabVIEW e i vostri
VI. Tuttavia, siccome la RAM si trova sullhard disk, le prestazioni
possono risentirne quando vi si accede.
Spezzare grandi VI ad alto livello in diversi subVI pi piccoli riduce la
quantit di memoria consumata dalla vostra applicazione e pu migliorare
le prestazioni.
Utilizzate i seguenti consigli per velocizzare i vostri VI:
y

Evitate di eccedere nelluso di variabili locali e globali.

Evitate di visualizzare e di operare con grandi matrici e stringhe.

National Instruments Corporation

6-47

LabVIEW Corso Base II

Lezione 6

Controllo delle prestazioni

LabVIEW Corso Base II

Utilizzate funzioni che riutilizzano i buffer dati.

Utilizzate tipi di dati consistenti. In altre parole, evitate i punti di


forzatura.

Utilizzate strutture di dati le pi semplici possibile.

Quando allinterno di cicli generate matrici la cui rappresentazione


devessere cambiata, cambiate la rappresentazione allinterno del
ciclo, non dopo.

6-48

National Instruments Corporation

Lezione 6 Controllo delle prestazioni

Note

National Instruments Corporation

6-49

LabVIEW Corso Base II

Lezione 6

Controllo delle prestazioni

Note

LabVIEW Corso Base II

6-50

National Instruments Corporation

Appendice
Questa appendice, contenente informazioni utili per gli utenti di
LabVIEW, composta dalle seguenti sezioni:
A. SubVI polimorfici
B. Grafica personalizzata in LabVIEW
C. Il Web Server in LabVIEW
D. Informazioni aggiuntive
E. Tabella delle corrispondenze dei caratteri ASCII

National Instruments Corporation

A-1

LabVIEW Corso Base II

Appendice

A. SubVI polimorfici
Le funzioni interne di LabVIEW possono gestire differenti tipi di dati per
lo stesso terminale, una potenzialit chiamata polimorfismo. Un esempio
di polimorfismo la funzione ADD.

E anche possibile creare i vostri VI polimorfici, che possono gestire pi


di un tipo di dato per lo stesso terminale. Questi VI polimorfici possono
essere utilizzati come subVI polimorfici.
Luso di VI polimorfici vi consente di presentare allutente uninterfaccia
pi semplice per i vostri VI. Considerate il caso di un VI polimorfico che
possa ordinare sia matrici mono che bidimensionali. Invece di avere un
VI per lordinamento di matrici monodimensionali e un altro subVI per
lordinamento di matrici bidimensionali, un unico VI chiamato Sort Array
gestisce entrambi i tipi di ingressi.

Completate i passi seguenti per creare il vostro VI polimorfico.


1. Create un insieme di VI aventi lo stesso schema per il riquadro dei
connettori, uno per differenti insiemi di tipi di dati.
2. Create un VI polimorfico selezionando FileNew e quindi
Polymorphic VI nella finestra di dialogo New. Compare la finestra di
dialogo Polymorphic VI.

LabVIEW Corso Base I

A-2

National Instruments Corporation

Appendice

3. Aggiungete ciascuno degli insiemi dei VI al VI polimorfico


utilizzando il pulsante Add VI.
4. Potete creare unicona per il VI polimorfico utilizzando il pulsante
Edit Icon. Potete creare anche il context help per il VI polimorfico
selezionando Documentation dal menu a tendina superiore nella
finestra di dialogo FileVI Properties.
Nota Context help per il VI polimorfico non associato al context help dei VI

che compongono il VI polimorfico. Perci dovete creare un nuovo context help


utilizzando la pagina Documentation nella finestra di dialogo FileVI
Properties.
Un VI polimorfico una raccolta di subVI con lo stesso schema per il
riquadro connettori. Ogni subVI costituisce unistanza del VI polimorfico.
Quando i dati sono collegati ad un subVI polimorfico, LabVIEW sceglie
automaticamente quale istanza utilizzare in funzione dei tipi di dati
collegati agli ingressi del subVI polimorfico. Se listanza non
disponibile, compare un file spezzato. Potete scavalcare la selezione
automatica di LabVIEW cliccando con il tasto destro del mouse sul subVI
polimorfico e selezionando unistanza specifica dal menu a tendina di
destra Select Type.

National Instruments Corporation

A-3

LabVIEW Corso Base II

Appendice

Esercitazione A-1

Ordinare matrici polimorfiche

Obiettivo: Creare un VI polimorfico e utilizzarlo come subVI.

Utilizzare VI polimorfici vi consente di presentare uninterfaccia molto


pi semplice agli utenti dei vostri VI. Considerate il caso di un VI
polimorfico che possa ordinare sia matrici mono che bidimensionali. Due
VI singoli possono svolgere questa funzione.

Invece di avere un VI per lordinamento di matrici monodimensionali e


un altro subVI per lordinamento di matrici bidimensionali, un VI
chiamato Sort Array gestisce entrambi i tipi di ingressi. In questa
esercitazione create questo VI.
1. Create un VI che ordini una matrice monodimensionale. Questo VI
dovrebbe includere anche unopzione per ordinare gli elementi in
maniera ascendente o discendente e produrre un oggetto booleano di
errore. Lesempio seguente un possibile pannello frontale. Avete
bisogno di creare il pannello frontale e lo schema a blocchi e di
provare il codice che avete scritto.

2. Create un riquadro connettori utilizzando la configurazione seguente.

Utilizzate lo stesso riquadro connettori per listanza Sort 2D Array.


Altrimenti il VI polimorfico produce fili spezzati.
Nota

LabVIEW Corso Base I

A-4

National Instruments Corporation

Appendice

3. Salvate il vostro lavoro come Sort 1D Array+.vi.


4. La funzione Sort 2D Array gi realizzata. Tuttavia dovete
completare il riquadro dei connettori. Questo esempio stato scaricato
da ni.com\support nel Example Programs Database. Aprite questo
file da exercises\LV Basics2\Sort 2D Array.vi.
5. Create e collegate il riquadro dei connettori per il VI Sort 2D Array.
Anche se il riquadro dei connettori gi costruito potreste aver
bisogno di modificarlo per agevolare la differenziazione rispetto al
programma Example. Non avete bisogno di collegare tutti i controlli e
indicatori su questo pannello frontale. Ricordate la configurazione
utilizzata per il VI Sort 1D Array.

6. Salvate questo nuovo VI come Sort 2D Array+.vi.


Ora create il VI polimorfico, che composto dallistanza Sort 1D Array+
e dallistanza Sort 2D Array+.
7. Per combinare le due istanze in un unico VI polimorfico, selezionate
FileNew e quindi Polymorphic VI. Se vi trovate nella finestra di
benvenuto, selezionate Polymorphic VI dal menu a tendina New VI.

National Instruments Corporation

A-5

LabVIEW Corso Base II

Appendice

8. Aggiungete i VI Sort 1D Array+ e Sort 2D Array+ utilizzando il


pulsante Add VI. Potreste aver bisogno di andare nelle directory in
cui avete salvato questi VI.
9. Create unicona per questo nuovo VI polimorfico selezionando il
pulsante Edit Icon.
10. Create il context help per questo VI selezionando Documentation dal
menu a tendina superiore nella finestra di dialogo FileVI
Properties.
11. Salvate il vostro VI come Sort Poly Array.vi.
12. Utilizzate questo VI come subVI in un altro VI per testare la
funzionalit. Osservate la schermata dellhelp. Notate anche cosa
succede quando cliccate due volte sul VI polimorfico. Cosa succede
se selezionate un particolare contesto cliccando con il tasto destro del
mouse e selezionando Select Type?

Fine dellesercitazione A-1

LabVIEW Corso Base I

A-6

National Instruments Corporation

Appendice

B. Grafica personalizzata in LabVIEW


Ci sono diverse caratteristiche di LabVIEW disponibili per fornire ai
pannelli frontali un aspetto personalizzato pi professionale. Queste
caratteristiche, fornite con LabVIEW full and professional development
system, forniscono allinterfaccia utente una grafica personalizzata e
possibilit di animazione.

Decorazioni
Uno dei metodi pi semplici per migliorare linterfaccia utente di
applicare le decorazioni di LabVIEW ad un pannello frontale cos come
avete fatto nella Lezione 2, Progettazione di pannelli frontali. Attraverso
un uso attento delle decorazioni, potete aumentare la leggibilit dei
pannelli frontali.

Importazione di grafica
Potete importare grafica da altri VI per utilizzarla come immagini di
sfondo, come elementi nei controlli di tipo ring o parti di altri controlli.
Tuttavia, prima che possiate utilizzare unimmagine in LabVIEW, dovete
caricarla nella clipboard di LabVIEW. Ci sono uno o due modi per fare
ci, in funzione della vostra piattaforma.
y

WindowsSe copiate unimmagine direttamente da un programma di

disegno nella Clipboard di Windows e quindi passate a LabVIEW,


LabVIEW importa automaticamente limmagine nella Clipboard di
LabVIEW. Potete anche utilizzare lopzione Import Picture from
File del menu Edit di LabVIEW per importare un file grafico nella
clipboard di LabVIEW. LabVIEW riconosce i file grafici nei seguenti
formati: CLP, EMF, GIF, PCX, BMP, TARGA, TIFF, LZW,WFM e
WPG.
y

MacintoshSe copiate da un programma di disegno nella Clipboard e

quindi passate a LabVIEW, LabVIEW importa automaticamente


limmagine nella Clipboard di LabVIEW.
y

UNIXPotete utilizzare lopzione Import Picture from File del menu

Edit di UNIX per importare unimmagine di tipo X Window Dump


(XWD), che potete creare utilizzando il comando xwd.
Dopo che unimmagine stata copiata nella Clipboard di LabVIEW,
potete riportarla sul pannello frontale come immagine statica, oppure
potete utilizzare lopzione Import Picture di un menu rapido o le opzioni
Import Picture nel Control Editor.

Controlli personalizzati
Potete personalizzare i controlli e gli indicatori in LabVIEW per
modificare il loro aspetto sul pannello frontale. Potete anche salvare
questi controlli per utilizzarli in altri VI. Da un punto di vista del
programma, funzionano come i controlli standard di LabVIEW.

National Instruments Corporation

A-7

LabVIEW Corso Base II

Appendice

Control Editor
Avviate il Control Editor selezionando un controllo sul pannello frontale
e quindi EditCustomize Control. Il Control Editor appare con loggetto
selezionato del pannello frontale nella sua finestra. Il Control Editor
presenta due modalit di funzionamento, edit mode e customize mode.

Edit Mode
In edit mode, potete cliccare con il tasto destro del mouse sul controllo e
modificare le sue impostazioni come volete che appaiano nellambiente di
programmazione di LabVIEW.

Edit Mode

Type Def.
Status

Testo

Align Distribute Reorder


Objects Objects Objects

Customize Mode
In customize mode, potete spostare singoli componenti del controllo luno
rispetto allaltro. Per un elenco di ci che potete modificare in customize
mode, selezionate WindowShow Parts Window.

Customize Type Def.


Mode
Status

Testo

Align Distribute Reorder


Objects Objects Objects

Un modo di personalizzare un controllo di modificare type definition


status. Potete salvare un controllo come controllo, come definizione di
tipo, o come definizione di tipo stringente, in funzione della selezione
mostrata nel ring Type Def. Status. Lopzione del controllo la stessa
che voi avreste selezionando un controllo dalla palette Controls. Potete
modificarla in un qualsiasi modo ed ogni copia che realizzate e modificate
mantiene le sue propriet specifiche.
Un controllo Type Definition una copia principale di un controllo
personalizzato. Tutte le copie di questo genere di controllo devono essere
dello stesso tipo. Per esempio, se create un controllo personalizzato Type
Definition con una rappresentazione numerica di tipo Long, non potete
farne una copia e portare la sua rappresentazione su Unsigned Long.
Utilizzate una Type Definition quando volete inserire un controllo con lo
stesso tipo di dato in pi posti. Se cambiate il tipo di dato di Type
Definition nel Control Editor, il tipo di dato si aggiorna automaticamente
in tutti i VI che utilizzano il controllo personalizzato.

LabVIEW Corso Base I

A-8

National Instruments Corporation

Appendice

Tuttavia, potete ancora personalizzare individualmente laspetto di ogni


copia di controllo Type Definition.
Un controllo Strict Type Definition devessere identico sotto tutti i punti
di vista dovunque lo utilizziate. Oltre al tipo di dato, le sue dimensioni, i
suoi colori e il suo aspetto devono essere gli stessi. Utilizzate un controllo
Strict Type Definition quando volete avere oggetti completamente
identici in pi posti e volete modificarli tutti automaticamente. Potete
ancora avere etichette singole per ogni istanza di un Strict Type
Definition.

Salvataggio dei controlli


Dopo aver creato un controllo personalizzato, potete salvarlo per un
utilizzo successivo. Di default i controlli salvati sul disco hanno
unestensione .ctl. Potete anche inserire controlli nella palette Controls
utilizzando lo stesso metodo che avete usato per aggiungere subVI alla
palette Functions.
Potete anche utilizzare il Control Editor per salvare controlli con le
proprie impostazioni di default. Per esempio, potete utilizzare il Control
Editor per modificare le impostazioni di default di un grafico tipo
waveform, salvarle e richiamarle successivamente in altri VI.

National Instruments Corporation

A-9

LabVIEW Corso Base II

Appendice

Esercitazione A-2

Obiettivo: Utilizzare il Control Editor per modificare un controllo.


1. Aprite un nuovo pannello frontale.
2. Inserite un Horizontal Pointer Slide che si trova nella palette
ControlsNumeric del pannello frontale. Cliccate con il tasto destro
del mouse sul controllo e selezionate Visible ItemsDigital Display.

Modifica del controllo


3. Avviate il Control Editor selezionando il controllo con lo strumento
Posiziona e selezionando EditCustomize Control. Utilizzando lo
strumento Modifica spostate il controllo nel mezzo del pannello
frontale per avere pi spazio lavorativo a disposizione.
4. Cliccate con il tasto destro del mouse sul display digitale e selezionate
ReplaceNumericMeter. Posizionate il misuratore sopra il
controllo slide, come mostrato nellesempio seguente.

5. Nascondete la scala dello slide cliccandoci sopra con il tasto destro


del mouse e selezionando ScaleStyleNone.

LabVIEW Corso Base I

A-10

National Instruments Corporation

Appendice

6. Chiudete il Control Editor selezionando Close dal menu File. Salvate


il controllo come Custom Slider.ctl, quindi cliccate su Yes per
sostituire quello esistente. Il controllo modificato viene mostrato sul
pannello frontale.
Potete salvare controlli che avete creato quando salvate VI. Potete
caricare controlli salvati utilizzando Select a Control dalla palette Controls. I
controlli hanno unestensione .ctl.
Nota

7. Lavorate con il controllo ed osservate come il misuratore segue i


valori.
8. Chiudete il VI. Non salvate le modifiche.

Fine dellesercitazione A-2

National Instruments Corporation

A-11

LabVIEW Corso Base II

Appendice

Esercitazione A-3

Obiettivo: Creare un indicatore booleano personalizzato.


Realizzate un VI che utilizzi indicatori booleani personalizzati per
mostrare lo stato di un becco di Bunsen e di unampolla riscaldata. Le
figure che rappresentano gli stati on e off del becco di Bunsen e lampolla
sono gi stati disegnati.

Pannello frontale

1. Aprite il VI Custom Picture Exercise che si trova nella directory


exercises\Basics2.
Il VI contiene un selettore verticale per attivare o disattivare il becco
di Bunsen ed un pulsante per uscire dallapplicazione. Esso contiene
anche due immagini per rappresentare gli stati on e off del becco di
Bunsen e due immagini che rappresentano gli stati di ebollizione e
non ebollizione dellampolla.
2. Per creare loggetto booleano personalizzato dellampolla, completate
i passi seguenti.
a. Cliccate con il tasto destro del mouse su unarea libera del
pannello frontale e selezionate Square LED dalla palette
ControlsClassic ControlsBoolean. Etichettate il LED con
Ampolla.
b. Utilizzando lo strumento Posiziona, selezionate limmagine che
mostra lampolla in ebollizione e selezionate EditCut. Cliccate
sullindicatore a LED dellampolla e selezionate EditCustomize
Control. Ora appare il Control Editor con il LED dellampolla
visualizzato. Cliccate con il tasto destro del mouse sul LED e
selezionate Import PictureTrue. Questa immagine rappresenta
ora lo stato TRUE.
Nota Lo stato di default del LED FALSE. Se non vedete limmagine, il LED

si trova probabilmente nello stato FALSE.

LabVIEW Corso Base I

A-12

National Instruments Corporation

Appendice

c. Passate al pannello frontale cliccandoci sopra. Utilizzando lo


strumento Posiziona, selezionate limmagine dellampolla con il
contenuto non in ebollizione e selezionate EditCut. Passate alla
finestra Control Editor cliccandoci sopra.
d. Cliccate con il tasto destro del mouse sullampolla e selezionate
Import PictureFalse. Questa immagine rappresenta ora lo stato
FALSE.
e. Selezionate Apply Changes dal menu File e chiudete il Control
Editor. Non salvate il controllo personalizzato.
3. Cliccate con il tasto destro del mouse su unarea libera e selezionate
Square LED dal menu rapido ControlsClassic ControlsBoolean.
Etichettate il LED con Fiamma.
4. Seguendo i passi precedenti, rendete il LED uguale al becco di
Bunsen. Lo stato TRUE dovrebbe mostrare il bruciatore on; lo stato
FALSE dovrebbe mostrare il bruciatore off.
5. Nascondete le etichette degli indicatori booleani cliccandoci sopra con
il tasto destro del mouse e selezionando Visible ItemsLabel.
Selezionate gli indicatori booleani e allineateli orizzontalmente
usando lo strumento Align Objects.

Schema a blocchi
6. Completate lo schema a blocchi seguente.

7. Salvate il VI con lo stesso nome.


8. Tornate al pannello frontale ed avviate il VI. Portate sulla posizione
on ed off il selettore Burner e notate i cambiamenti del booleano
personalizzato.
9. Arrestate il VI cliccando sul pulsante Quit. Se cliccate sul pulsante
Quit mentre il bruciatore acceso, una fienstra di dialogo avvisa che
dovete spegnere il bruciatore prima di arrestare il sistema.
10. Chiudete il VI quando avete finito.

Fine dellesercitazione A-3

National Instruments Corporation

A-13

LabVIEW Corso Base II

Appendice

Il Web Server in LabVIEW


Il Web uno dei modi pi popolari per condividere informazioni ed un
buon modo per condividere le vostre misure e dati. LabVIEW offre
diversi modi per aiutarvi nella pubblicazione dei vostri dati sul web e per
creare documenti HTML. La Lezione 3 descrive DataSocket e come esso
utilizzi il metodo ad URL per descrivere ed accedere a dati di LabVIEW.
Un altro metodo di utilizzare il Web Server in LabVIEW per pubblicare
immagini dei vostri pannelli frontali sul web. Di default, dopo che avete
abilitato il Web Server, tutti i VI sono visibili a tutti i browser Web.
Tuttavia, potete controllare laccesso da browser ai pannelli frontali
pubblicati e configurare quali VI siano visibili sul Web. Per visualizzare
pannelli frontali di VI sul Web, i VI devono trovarsi nella memoria del
computer.
Per configurare il Web Server, selezionate ToolsOptions e quindi Web
Server: Configuration dal menu a tendina superiore.
La finestra Web Server: Configuration quella in cui dovete abilitare il
Web Server. La configurazione di default del Web Server adatta alla
maggior parte della applicazioni. Se dovete modificare la configurazione
di default, fate riferimento allhelp di LabVIEW.
La finestra Web Server: Browser Access vi consente di configurare
quali indirizzi browser possono visualizzare i pannelli frontali dei vostri
VI. Quando un Web browser tenta di ottenere unimmagine di un
pannello frontale di un VI, il Web Server confronta lindirizzo del
browser con quelli presenti nella Browser Access List per determinare se
consentito laccesso. Se un indirizzo della Browser Access List coincide
con lindirizzo del browser, Web Server consente o nega laccesso a
seconda di come stata effettuata limpostazione. Di default tutti i
browser hanno accesso al Web Server di LabVIEW. Fate riferimento alla
finestra Context Help per ulteriori informazioni sulla sintassi utilizzata
per definire laccesso dei browser.
La finestra Web Server: Visible VIs vi consente di definire quali VI
siano accessibili ad un Web browser. Quando un Web browser cerca di
ottenere unimmagine di un pannello frontale, il Web server confronta il
nome del VI con quelli presenti nellelenco Visible VIs per stabilire se
consentito laccesso. Se un nome nellelenco Visible VIs coincide con il
nome del VI, il Web Server consente o nega laccesso a quellimmagine
di VI basandosi sulle impostazioni effettuate da voi. Di default le
immagini dei pannelli frontali di tutti i VI sono visibili. Fate riferimento
alla finestra Context Help per ulteriori informazioni sulla sintassi
utilizzata per stabilire la visibilit dei VI.

LabVIEW Corso Base I

A-14

National Instruments Corporation

Appendice

Nota Utilizzate lEnterprise Connectivity Toolset di LabVIEW per controllare i

VI sul Web e per aggiungere maggiore sicurezza ai VI da pubblicare sul Web.


Fate riferimento al sito Web della National Instruments per ulteriori
informazioni.

Il Web Publishing Tool di LabVIEW


Potete anche utilizzare ToolsWeb Publishing Tool per creare un
documento HTML e includere immagini statiche o animate del pannello
frontale. Potete anche includere immagini del pannello frontale in un
documento HTML esistente.

Cliccate sul pulsante Instructions per visualizzare informazioni su come


aggiungere un titolo al vostro file HTML e su come aggiungere testo
prima e dopo il pannello frontale del vostro VI. Inserite un nome di VI nel
campo VI Name o selezionate Browse dal menu a tendina VI Name e
andate su un VI.
Per visualizzare pannelli frontali di VI sul Web, i VI devono risiedere
nella memoria del vostro computer.
Nota

Potete avere unanteprima del documento nel vostro browser di default


cliccando sul pulsante Start Web Server e quindi sul pulsante Preview
in Browser. Se il pulsante Start Web Server non evidenziato, il Web
Server gi in esecuzione. Quando cliccate sul pulsante Save to Disk, il
titolo, il testo e limmagine del pannello frontale del VI vengono salvati in
un documento HTML. Se volete visualizzare il documento da un
computer remoto, salvate il documento HTML nella directory root del
Web Server, solitamente labview\www. Compare la finestra di dialogo
Document URL con la URL del vostro documento HTML.

National Instruments Corporation

A-15

LabVIEW Corso Base II

Appendice

Esercitazione A-4 Generate & Analyze Data


Obiettivo:

Utilizzare gli strumenti del Web Server di LabVIEW per visualizzare un pannello
frontale in un web browser.
Aprite il VI che avete realizzato nellesercitazione 1-1, il VI Generate &
Analyze Data e salvate il suo pannello frontale in un documento HTML.

Pannello frontale

1. Aprite il VI Generate & Analyze Data dalla directory exercises\LV


Basics2.
2. Abilitate e configurate il Web Server selezionando ToolsOptions.
3. Selezionate Web Server: Configuration dal menu a tendina
superiore della finestra di dialogo Options e contrassegnate il
riquadro Enable Web Server.
4. Cliccate sul pulsante OK per chiudere la finestra di dialogo Options.
Ora il Web Server di LabVIEW in esecuzione.
5. Avviate il VI per alcuni secondi e fermatelo.
6. Selezionate ToolsWeb Publishing Tool. Cliccate sul pulsante
Instructions e leggete come utilizzare questo strumento.

LabVIEW Corso Base I

A-16

National Instruments Corporation

Appendice

7. Cliccate sul collegamento continue e configurate la finestra seguente.

8. Cliccate sul pulsante Preview in Browser per aprire e visualizzare il


pannello frontale in un browser. Compare una finestra simile a quella
mostrata nella figura successiva.

National Instruments Corporation

A-17

LabVIEW Corso Base II

Appendice

Lopzione Animated funziona solo con Netscape Navigator. In Internet


Explorer potete solamente visualizzare immagini statiche.
Nota

9. Tornate alla finestra Web Publishing Tool e cliccate sul pulsante


Save to Disk per salvare il titolo, il testo e limmagine del pannello
frontale del VI in un documento HTML. Salvate il documento come
Generate & Analyze Data.htm nella directory LV Basics2.
Compare un messaggio di avviso che vi dice dove installare il file se
volete che altre macchine lo vedano.
10. Cliccate sul pulsante Done per uscire dal Web Publishing Tool.
11. Tornate al browser e digitate la seguente URL nella barra degli
indirizzi: http://127.0.0.1. Questa definisce la macchina locale.
Compare la finestra seguente.

12. Leggete le informazioni e chiudete il browser quando avete finito.


13. Disattivate il Web Server selezionando
visualizzare la finestra di dialogo Options.

ToolsOptions

per

14. Selezionate Web Server: Configuration dal menu a tendina


superiore della finestra di dialogo Options e rimuovete la selezione
dal riquadro Enable Web Server.
15. Cliccate sul pulsante OK per chiudere la finestra di dialogo Options.
16. Chiudete il VI Generate & Analyze Data.

Fine dellesercitazione A-4

LabVIEW Corso Base I

A-18

National Instruments Corporation

Appendice

D. Informazioni aggiuntive
Questa sezione descrive come potete avere ulteriori informazioni
relativamente a LabVIEW, ai driver degli strumenti e ad altri argomenti
relativi a questo corso.

Opzioni del supporto tecnico della National Instruments


Il modo migliore per ottenere un supporto tecnico e altre informazioni su
LabVIEW, prove e misure, strumentazione e altri prodotti e servizi della
National Instruments di collegarsi al sito web della NI che si trova
allindirizzo ni.com.
La pagina di supporto del sito web della National Instruments contiene
collegamenti a note applicative, la conoscenza di base del supporto,
centinaia di esempi e vari tipi di aiuto per la risoluzione di problemi
relativi ad argomenti discussi in questo corso ed altro ancora.
Un altro eccellente posto per ottenere supporto quando sviluppate varie
applicazioni con i prodotti della National Instruments la NI Developer
Zone sempre allindirizzo ni.com.
La NI Developer Zone comprende anche collegamenti diretti alla rete di
driver per gli strumenti e alle pagine web dei membri dellAlliance
Program.

LAlliance Program
LAlliance Program della National Instruments riunisce integratori di
sistemi, consulenti e venditori hardware per fornire servizi completi e
esperienza ai clienti. Il programma assicura assistenza qualificata e
specializzata per lo sviluppo di applicazioni e di sistemi. Le informazioni
relative e i collegamenti a molti dei membri dellAlliance Program sono
disponibili presso il sito della National Instruments.

Newsgroup di supporto allutente


I newsgroup di supporto allutente della National Instruments sono una
raccolta di newsgroup Usenet che copre i prodotti della National
Instruments e i campi generali della scienza e dellingegneria. Potete
leggere, cercare e scrivere sui newsgroup per condividere soluzioni e
trovare un supporto aggiuntivo da altri utenti. Potete accedere ai
newsgroup di supporto allutente dalla pagina web di supporto della
National Instruments.

Altri corsi di formazione della National Instruments.


National Instruments offre diversi corsi di formazione per gli utenti di
LabVIEW. I corsi sono elencati nel catalogo della National Instruments e
online allindirizzo ni.com/custed. Questi corsi continuano la
formazione che avete ricevuto qui e la espandono in altre aree. Potete
acquistare il materiale dei corsi o iscrivervi ad un corso con istruttore
contattando la National Instruments.

National Instruments Corporation

A-19

LabVIEW Corso Base II

Appendice

Pubblicazioni di LabVIEW
Newsletter LabVIEW Technical Resource (LTR)
Iscrivetevi al LabVIEW Technical Resource per scoprire consigli e
tecniche potenti per lo sviluppo di applicazioni in LabVIEW. Questa
pubblicazione trimestrale offre informazioni tecniche dettagliate per
nuovi utenti e per utenti avanzati. Inoltre, ogni numero contiene un
dischetto di VI e utility di LabVIEW che implementano metodi trattati nel
numero. Per ordinare LabVIEW Technical Resource, chiamate la
redazione di LTR al numero (214) 706-0587 o visitate il sito
www.ltrpub.com.

Libri di LabVIEW
Sono stati scritti molti libri sulla programmazione e sulle applicazioni in
LabVIEW. Il sito web della National Instruments contiene un elenco di
tutti i libri su LabVIEW e i collegamenti a siti per lacquisto di questi
libri. Sono anche comprese informazioni sulleditore cos potete
contattare direttamente leditore per ulteriori informazioni sul contenuto e
sullordinazione di libri su LabVIEW, di automazione e su misure basate
su PC.

Listserve info-labview
Info-labview un e-mail group di utenti di tutto il mondo che

discutono su LabVIEW. Gli appartenenti a questa lista possono


rispondere a domande sulla realizzazione di sistemi in LabVIEW per
applicazioni particolari, su dove trovare i driver degli strumenti o fornire
aiuto per un dispositivo e su problemi che si presentano.
Inviate un messaggio di sottoscrizione a info-labview allindirizzo
listmanager@pica.army.mil.

Inviate altri messaggi amministrativi al responsabile dellelenco infolabview a:


info-labview-REQUEST@pica.army.mil

Inviate un messaggio agli iscritti a:


info-labview@pica.army.mil

Potete anche ricercare tra archivi ftp allindirizzo:


ftp://ftp.pica.army.mil/pub/labview/

Gli archivi contengono diversi VI, messi a disposizione per lesecuzione


di una grande variet di compiti.

LabVIEW Corso Base I

A-20

National Instruments Corporation

Appendice

E. Tabella delle corrispondenze dei caratteri ASCII


La tabella seguente contiene i codici dei caratteri ASCII e quelli
equivalenti nel sistema esadecimale, ottale e decimale.
Hex

Ottale

Decimale

ASCII

Hex

Ottale

Decimale

ASCII

00
01
02
03
04
05
06
07
08
09
0A
0B
0C
0D
0E
0F
10
11
12
13
14
15
16
17
18
19

000
001
002
003
004
005
006
007
010
011
012
013
014
015
016
017
020
021
022
023
024
025
026
027
030
031

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

NUL
SOH
STX
ETX
EOT
ENQ
ACK
BEL
BS
HT
LF
VT
FF
CR
SO
SI
DLE
DC1
DC2
DC3
DC4
NAK
SYN
ETB
CAN
EM

20
21
22
23
24
25
26
27
28
29
2A
2B
2C
2D
2E
2F
30
31
32
33
34
35
36
37
38
39

040
041
042
043
044
045
046
047
050
051
052
053
054
055
056
057
060
061
062
063
064
065
066
067
070
071

32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57

SP
!

#
$
%
&

(
)
*
+
,
.
/
0
1
2
3
4
5
6
7
8
9

National Instruments Corporation

A-21

LabVIEW Corso Base II

Appendice

Hex

Ottale

Decimale

ASCII

Hex

Ottale

Decimale

ASCII

1A
1B
1C
1D
1E
1F
40
41
42
43
44
45
46
47
48
49
4A
4B
4C
4D
4E
4F
50
51
52
53
54
55
56
57
58
59
5A
5B
5C
5D
5E
5F

032
033
034
035
036
037
100
101
102
103
104
105
106
107
110
111
112
113
114
115
116
117
120
121
122
123
124
125
126
127
130
131
132
133
134
135
136
137

26
27
28
29
30
31
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95

SUB
ESC
FS
GS
RS
US
@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
^
_

3A
3B
3C
3D
3E
3F
60
61
62
63
64
65
66
67
68
69
6A
6B
6C
6D
6E
6F
70
71
72
73
74
75
76
77
78
79
7A
7B
7C
7D
7E
7F

072
073
074
075
076
077
140
141
142
143
144
145
146
147
150
151
152
153
154
155
156
157
160
161
162
163
164
165
166
167
170
171
172
173
174
175
176
177

58
59
60
61
62
63
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127

:
;
<
=
>
?
`
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
{
|
}
~
DEL

LabVIEW Corso Base I

A-22

National Instruments Corporation