...

05 - LabView World

by user

on
Category: Documents
80

views

Report

Comments

Transcript

05 - LabView World
12-02-2008
12:01
Pagina 1
ISSN 1972-3008
cop_labview5:cop_labview5
05
FEBBRAIO
2008
E 5,00
L A P R I M A R I V I S TA I TA L I A N A P E R L A CO M U N I T À L A BV I E W
In caso di mancata consegna restituire all’editore che si impegna a pagare la relativa tassa presso il CMP di Roserio - Milano
IL FUTURO DI LABVIEW
PROGETTAZIONE DI SOFTWARE
PER IL CONTROLLO MACCHINA
RICHIAMARE SHARED LIBRARY
IN LABVIEW
Progetto1:Layout 1
7-02-2008
15:41
Pagina 1
readerservice.it n.19995
LabVIEW_05:LabVIEW_05
12-02-2008
16:25
Pagina 1
SCENARIO
05
UNA RIVISTA CHE CRESCE CON VOI
priamo l’editoriale di questo numero 5 salutando tutti i lettori ma soprattutto rivolgendo
un caloroso benvenuto a tutti coloro che stanno sfogliando per la prima volta LabVIEW World.
Dovremmo farlo sempre, perché la rivista viene letta da un numero di persone in costante
crescita: grazie agli sforzi di National Instruments e di Fiera Milano Editore, al passaparola fra gli
adepti di LabVIEW ed alla presenza agli eventi ed alle fiere specializzate più importanti, stiamo
infatti raggiungendo una platea davvero molto ampia.
Siamo entrati in nuove zone geografiche (soprattutto nell’Italia del Sud), siamo conosciuti in nuovi
settori applicativi, troviamo spazio in aziende di ogni dimensione, negli studi di progettazione,
in università, in scuole superiori.
Al di fuori del terreno tradizionale dove LabVIEW è appezzato ed utilizzato (quello degli
sviluppatori, dei tecnici e dei ricercatori), fra i nostri lettori è in forte espansione soprattutto
il comparto degli studenti.
A dimostrazione della forza pedagogica del più famoso linguaggio di programmazione grafica
del mondo, capace di aprire la mente e di dare gli strumenti per esprimersi correttamente
a tutti coloro che devono misurare, automatizzare o monitorare qualsiasi tipo di variabile fisica,
macchina o sistema.
Ed è incredibile vedere, in occasioni come NIDays o NIWeek, il numero di applicazioni innovative
che gli studenti sanno proporre, dimostrando una conoscenza davvero approfondita di LabVIEW
e della strumentazione virtuale.
È logico, quindi, che proprio il mondo scolastico ed accademico stia contribuendo non solo a dare
le maggiori soddisfazioni a LabVIEW World, ma anche a formare quella massa critica che sta
trasformando la rivista da magazine per addetti ai lavori, come era ancora nei primissimi numeri,
a magazine di grande diffusione.
Le conseguenze di questa trasformazione non sono affatto trascurabili.
Per esempio, quando cresce il numero di lettori la rivista acquista un nuovo spessore: nelle idee,
nei contenuti, nella sua capacità di diventare il punto di riferimento di una comunità distribuita
sul territorio.
Una comunità molto attenta, che inizia a partecipare attivamente richiedendoci informazioni
sugli articoli pubblicati e, soprattutto, inviandoci un prezioso feedback: perché non parlate
anche di questo argomento?
Perché non ritornate su quel particolare concetto con qualche esempio concreto?
E così via, in un ciclo virtuoso che rende dinamica e stimolante la vita di redazione.
Cari lettori, questo può essere il vostro momento.
Comunicateci le vostre critiche, i vostri desideri, i vostri spunti.
Descriveteci che cosa avete realizzato con LabVIEW.
Partecipate anche voi alla trasformazione di LabVIEW World!
Potete farlo, per esempio, iscrivendovi al Forum ILVG.it
(ma come, non lo avevate ancora fatto?)
oppure inviando i vostri messaggi alla redazione.
Il 2008 sarà un anno importante per LabVIEW World:
vorremmo quindi conoscervi meglio, per offrirvi un prodotto
sempre più attento alle vostre esigenze, ricco di informazioni
e in grado di fornirvi spunti utili per le vostre attività di ricerca,
sviluppo, produzione, collaudo e/o formazione.
A
LabVIEW_05:LabVIEW_05
14-02-2008
15:11
Pagina 2
SOMMARIO
05
SHARED LIBRARY
29 RICHIAMARE
IN LABVIEW
01 UNA RIVISTA CHE CRESCE CON VOI
La comunità dei nostri lettori è in
continua espansione
03 IL FUTURO DI LABVIEW
Parla James Truchard, cofondatore di
National Instruments e coideatore di
LabVIEW
NUOVA STRUTTURA PER
06 UNA
LA GESTIONE DELLA MEMORIA
IN LABVIEW
L’uso della struttura In Place Element
aumenta l’efficienza della memoria
IL CROSS-LINKING
09 PREVENIRE
DI VI CON IL NUOVO LABVIEW
PROJECT POTENZIATO
LabVIEW 8.5 include nuovi tool per
aiutare a prevenire il cross-linking
NOVITA’ DEL PDA MODULE DI
12 LELABVIEW
8.5
Il modulo PDA di LabVIEW 8.5 contiene molte
nuove funzionalità e correzioni di bug
DI SOFTWARE
14 PROGETTAZIONE
PER IL CONTROLLO MACCHINA
Descriviamo un’architettura di progettazione
software basata sulle macchine a stati
‘LOW COST’ DI
22 SISTEMA
MONITORAGGIO MACCHINARIO
ROTANTE
Il monitoraggio delle vibrazioni permette
di identificare i malfunzionamenti
25 MIGLIORARE UN VI ESISTENTE
Spieghiamo alcuni metodi per eseguire
il refactoring del software
Vediamo come utilizzare il Call Library Function
Node per richiamare DLL su Windows
34 DALLA CARTA AL WEB
Link ad ar ticoli di approfondimento e
altri documenti disponibili sul web
36 LA VOCE DEGLI UTENTI
Ecco alcuni spunti di discussione
apparsi di recente sul Forum di ILVG.it
BIAS 2008 LE NUOVE FRONTIERE
38 ALDELLA
STRUMENTAZIONE
Sta per aprire l’edizione 2008 della Biennale
Internazionale dell’Automazione, Strumentazione, Microelettronica e ICT per l’industria
TEST SUMMIT:
40 AUTOMATED
VIRTUALMENTE PERFETTO
La quarta edizione dell’evento annuale organizzato da National Instruments si è spostata online
42 NASCE LABVIEW TOOLS NETWORK
Un archivio centralizzato per oltre 400
strumenti e componenti aggiuntivi di LabVIEW
44 APPUNTAMENTI
Oltre ad organizzare propri corsi e
seminari, National Instruments sarà
presente a numerosi eventi
45 INTERVISTA
Sapete utilizzare LabVIEW? Forse
troverete la proposta che fa per voi
47 LABVIEW E LAVORO
Proposte concrete per coloro che sanno
utilizzare LabVIEW
AAA
SEI UN FAN DI LABVIEW?
2
Per il contributo apportato al progetto LabView World, si ringraziano:
Valerio Alessandroni, Lino Fiore, Matteo Bambini, Nadia Albarello,
Matteo Foini, Alessandro Ricco.
Progetto grafico e impaginazione: Bimage.it
ENTRA NELLA NOSTRA COMUNITÀ!
Caro lettore, se ritieni che questa nuova iniziativa LabVIEW World sia un utile strumento per la
tua attività e desideri continuare a rimanere aggiornato sul mondo LabVIEW, collegati alla
pagina http://www.ilb2b.it/labview/lb_world.asp
LabVIEW_05:LabVIEW_05
12-02-2008
16:25
Pagina 3
A TU PER TU
05
Valerio Alessandroni
IL FUTURO DI LABVIEW
In occasione degli NIDays, e prima dell’annuale conferenza NIWeek di Austin, abbiamo l’onore
di ospitare sulle nostre pagine James Truchard, il mitico ‘Dottor T’, cofondatore di National
Instruments e ideatore, insieme a Jeff Kodosky, di LabVIEW
Pur senza entrare nel merito di progetti straDmente
: tegici delicati, che non possono essere ovviadivulgati, può descriverci a grandi linee
che cosa possiamo attenderci, da oggi al 2010, in
termini di nuovi prodotti e tecnologie?
Grazie alla nostra visione di progettazione grafica di
sistema, abbiamo un focus ben definito sull’innovazione
in alcune aree. Per esempio, contiamo di ampliare
l’accessibilità agli Fpga per gli esperti dei singoli settori,
offrendo loro nello stesso tempo maggiori prestazioni. Vi è
quindi il settore della strumentazione RF, dove introdurremo
prodotti di prima classe ed aumenteremo le capacità software. Quindi, metteremo a disposizione piattaforme di rilascio
più complete, per la nostra crescente base di clienti OEM,
basate sulla nostra piattaforma RIO differenziata. Infine, continueremo ad offrire, agli esperti dei singoli settori, tool intui-
R:
tivi che permetteranno loro di accedere alle tecnologie più
avanzate e più importanti nei campi del test, del controllo e
della progettazione.
I prossimi anni saranno molto interessanti, perché il ritmo di
innovazione tecnologica, in continuo aumento (soprattutto
per quanto riguarda le tecnologie embedded), renderà possibili sistemi ciber-fisici che miglioreranno la nostra vita in molti
modi diversi, assai più di quanto sia avvenuto in passato.
L’applicazione dei sistemi embedded si estenderà in nuove
aree e, nello stesso tempo, diventerà più complessa che in
passato. Molte di queste nuove applicazioni sono inimmaginabili persino oggi, ma la velocità dell’innovazione accelererà
ed avrà un impatto globale, a cui sarà entusiasmante prendere parte. La chiave di volta è nei tool software, che offriranno
agli esperti dei singoli settori la produttività necessaria per
sfruttare pienamente le nuove opportunità dei sistemi embedded. Il ruolo che NI giocherà si baserà sul nostro approccio di
progettazione grafica di sistema. Esso è focalizzato su un
obiettivo molto chiaro: mettere in grado gli esperti dei singoli
settori, in tutti i campi, di essere il più possibile produttivi nella progettazione e nell’installazione di questi sistemi.
2008 verranno introdotte release imporDnuova: Neltanti?versione
Che cosa possiamo attenderci dalla
di LabVIEW che verrà lanciata
quest’anno?
Il nostro attuale sviluppo di LabVIEW si basa su un ottimo equilibrio tra feedback degli utenti esistenti, utilizzabilità, stabilità ed integrazione di tecnologie di punta, incluse
le piattaforme multicore e le capacità wireless. Il team di sviluppo di LabVIEW sta anche lavorando con impegno per sfruttare molti degli attuali trend industriali nel mercato embedded, creando e favorendo uno sviluppo all’interno della comunità finalizzato a capacità avanzate IP (intellectual property) e
a virgola fissa, integrando il silicio di prossima generazione ed
assicurando una stretta connettività con tecnologie e prodotti
complementari. La piattaforma LabVIEW continua inoltre a
svilupparsi sui modelli di calcolo espansivi offerti dalla messa
a punto dei nostri moduli, incluse le capacità di statechart,
real-time, Fpga, simulazione e LabVIEW MathScript. Infine,
potremo vedere che LabVIEW continuerà ad aiutare gli esperti di settore a sviluppare in modo più rapido ed efficiente in
R:
Afferma James Truchard: “I prossimi anni saranno molto
interessanti, perché il ritmo di innovazione tecnologica
renderà possibili sistemi ciber-fisici che miglioreranno
la nostra vita in molti modi diversi”
3
LabVIEW_05:LabVIEW_05
12-02-2008
16:25
Pagina 4
A TU PER TU
05
BIOGRAFIA
e, nel 2001, la società di consulenza di mercato Frost
& Sullivan ha onorato Truchard come CEO of the Year
per il settore del test and measurement. Inoltre, la
rivista Worth ha eletto Truchard uno dei migliori CEO
per tre anni consecutivi, sottolineando il suo focus
su crescita e innovazione a lungo termine.
Mentre dirige con successo l’innovazione
dell’azienda nel software e nell’hardware, Truchard
partecipa a molte organizzazioni comunitarie. Per
esempio, egli è membro ed ex presidente
dell’Engineering Foundation Advisory Council,
collabora strettamente con l’University of Texas ad
Austin come membro del Chancellor's Council ed è
membro dell’Electrical and Computer Engineering
Visiting Committee dell’università. Truchard è anche
membro fondatore dell’Austin Software Council ed
è stato membro dell’Advisory Council del
Governatore del Texas Rick Perry sulla Digital
Economy. Truchard è anche un sostenitore attivo del
programma NI LEGO Mindstorms che, insieme alla
Tufts University ed alla Pitsco LEGO Educational
Division, cerca di introdurre gli studenti di ogni età
alle basi dell’ingegneria e dell’informatica. Nel
2005, il Governatore Perry ha chiesto a Truchard di
presiedere il Texas Science, Technology, Engineering,
and Math Industry Advisory Council, che affronta
direttamente il declino di interesse e di
preparazione dei giovani nei confronti di una
carriera in campi tecnici.
Prima di fondare NI, Truchard ha lavorato come
managing director della divisione misure acustiche
degli Applied Research Laboratories presso
l’University of Texas ad Austin. Truchard ha un
dottorato in ingegneria elettrotecnica, nonché un
Master of Science ed un Bachelor of Science in
fisica, tutti conseguiti presso l’University of Texas ad
Austin.
Nella comunità NI, James Truchard è familiarmente
noto come ‘Dottor T’.
tutto il mondo, permettendo a tecnici e ricercatori meccanici,
meccatronici, elettrici, biomedicali e di altre specializzazioni di
accedere ai progressi tecnologici più avanzati.
La piattaforma LabVIEW sta diventando
sempre più integrata con prodotti di terze
parti. Questa tendenza all’integrazione sarà confermata anche in futuro? In caso affermativo, che
tipo di tool state attualmente prendendo in considerazione?
D:
Fin dall’inizio, LabVIEW ha sempre fatto da battistrada al
mercato del test e della misura con driver per strumentazione e connettività pronti all’uso. Infatti, quest’anno raggiungeremo la quota record di ben 6.000 driver sulla nostra
rete di driver per strumentazione, compresa la connettività con
oltre 250 fornitori differenti. Mano a mano che la nostra visione e le capacità dei nostri prodotti sono evolute oltre il test
and measurement, il nostro focus sulla progettazione grafica
di sistema ha facilitato la creazione ed il continuo supporto di
tool embedded e di progettazione di terze parti, tra cui il software Simulink e MATLAB di The MathWorks, SolidWorks ed
R:
4
anche principali fornitori di silicio, come Analog Devices, ARM
e Freescale Semiconductor. Infine, mentre NI continua ad
estendere la portata delle sue applicazioni, anche il ruolo del
programma ‘Alliance Partner’ di National Instruments in
espansione e della fedele comunità LabVIEW cresce per
importanza ed impatto. Per facilitare questa crescita nel futuro, abbiamo costruito una rete di tool di terze parti supportati
per organizzare, certificare e promuovere questi tool di terze
parti.
quali nuove aree applicative si espanderà
D: InLabVIEW?
Negli ultimi 22 anni, la risposta migliore a questa
domanda l’hanno data gli utenti LabVIEW - portando
LabVIEW nel Large Hadron Collider del CERN, sotto l’oceano,
nello spazio ed in modo autonomo in territori vergini. Parlando
in modo più formale, siamo entusiasti delle nuove capacità di
LabVIEW che lo rendono ideale per nuove aree come la progettazione ed i test di alto livello nel campo delle comunicazioni, la vera progettazione embedded, la robotica e la fisica
delle alte energie. Ma LabVIEW sta trovando applicazione
anche come piattaforma per l’ingegneria ’verde’ a livello globale, permettendo di risparmiare energia e di prevenire
l’inquinamento.
R:
LabVIEW è un linguaggio universale
che permette agli sviluppatori ed ai tecnici di
Dtutto: Oggi,
il mondo di parlare fra loro, scambiare idee
e capirsi. Avevate previsto un tale successo planetario? Che responsabilità sentite di avere per
mantenere e migliorare ulteriormente un risultato di questa rilevanza?
Effettivamente, ci eravamo preparati a raggiungere qualcosa di così importante come LabVIEW è diventato semplicemente non sapevamo sempre come arrivarci. Prima
che LabVIEW fosse concepito nelle menti di Jeff Kodosky e
mia, mi ero prefisso il semplice obiettivo di ‘Fare per i tecnici
ciò che il foglio di calcolo aveva fatto per gli analisti finanziari’. Nei primi anni ’80 il settore finanziario iniziava a vedere i
benefici offerti dall’uso del software per eseguire calcoli che in
precedenza erano impossibili o irragionevolmente improduttivi. Tenendo presente questo obiettivo, abbiamo riunito alcuni
degli sviluppatori più capaci per creare quello che oggi conosciamo come LabVIEW. Ma, ancora una volta, siamo soprattutto entusiasti ed orgogliosi dei nostri clienti per quello che
sono riusciti a fare con la piattaforma LabVIEW.
Sentiamo assolutamente una grande responsabilità non solo
nel proseguire un costante miglioramento, ma anche nell’introdurre importanti innovazioni per rendere ancora più autonoma la comunità. Finché i nostri tecnici rimarranno entusiasti della tecnologia e cercheranno di migliorare la nostra vita
R:
Readerser vice.it n. 501
Il dr. James Truchard, presidente e CEO di National
Instruments, è stato cofondatore dell’azienda nel
1976, mentre lavorava presso l’Università del Texas
ad Austin. Sotto la guida di Truchard, National
Instruments ha pionierizzato lo sviluppo del
software e dell’hardware della strumentazione
virtuale, che ha rivoluzionato il modo con il quale i
tecnici approcciano le applicazioni di misura e
automazione.
Nel 1986, Truchard e Jeff Kodosky hanno inventato
il software di sviluppo grafico LabVIEW.
Mentre NI è cresciuta, passando da un team di soli
tre uomini ad un’organizzazione globale che ha
oggi oltre 4.000 dipendenti, Truchard ha gestito
l’azienda con un approccio deliberatamente
conservativo, che ha portato ad un costante
successo. Egli ha promosso l’innovazione, la crescita
e l’espansione in un’impresa mondiale di grande
successo, pur mantenendo lo spirito imprenditoriale
che aveva caratterizzato i primi anni di attività di
National Instruments. Grazie a ciò, NI è cresciuta
costantemente nella sua storia ormai trentennale.
Truchard ed il suo team di management hanno
creato una cultura aziendale vincente, tanto che la
rivista Fortune ha assegnato a NI il titolo di una
delle ‘100 migliori aziende per cui lavorare’ in
America negli ultimi otto anni.
Truchard è anche un leader industriale riconosciuto.
Nel 2007 è stato eletto membro della National
Academy of Engineering, cosa che è largamente
considerata la massima onorificenza nella
professione ingegneristica. Egli è uno dei soli 156
Texani ad essere stato eletto nella storia
dell’Accademia. Truchard è stato anche nominato
‘The University of Texas Distinguished Engineering
Graduate’ e, nel 2003, è stato ammesso alla Royal
Swedish Academy of Engineering Sciences. Nel
2002, la rivista di elettronica Electronic Design ha
inserito Truchard nella sua Engineering Hall of Fame
Brad
{
QUI LA VITA È DURA.
Più l’ambiente industriale lavora in condizioni
difficili e più aumenta la necessità di disporre di
prodotti Brad® all’interno della rete.
A presto 25-30 Maggio 2008
Fieramilano, Rho
Forniamo i prodotti più resistenti e affidabili adatti
alle applicazioni più esigenti. Offriamo una gamma
completa di prodotti per tutte le reti, quali, ad
esempio, DeviceNet™ , PROFIBUS e l’emergente
Industrial Ethernet per il plant floor.
Indipendentemente dai componenti che utilizzate
nelle Vostre applicazioni, consentiteci di diventare
il Vostro partner principale: BradCommunications™,
BradConnectivity™ , BradControl™ e BradPower™.
Brad®: il potenziamento dell’infrastruttura industriale
tramite prodotti e soluzioni...tramite l’automazione,
l’innovazione risultati e i.
readerservice.it n.19890
woodhead.com/automation
©2008 Molex
Labview_210x197mm.indd 1
Contact: +39 026 64 29 61
23.01.2008 16:53:11
LabVIEW_05:LabVIEW_05
12-02-2008
17:32
Pagina 6
W H AT ’ S N E W
05
a cura di Matteo Foini
UNA NUOVA STRUTTURA PER LA
GESTIONE DELLA MEMORIA IN LABVIEW
Molte operazioni comuni in LabVIEW, come manipolare un elemento di un array
e inserire il valore risultante nello stesso punto, richiedono la creazione di copie dei dati
e il mantenimento di tali valori in memoria. Questo aumenta l’uso della memoria
on LabVIEW 8.5, potete utilizzare
la struttura In Place Element per
accedere in modo efficiente agli
elementi presenti all’interno di complesse strutture dati: per esempio, eseguire operazioni su un elemento presente all’interno di un array, un cluster,
C
un variant o una forma d’onda senza
che il compilatore di LabVIEW debba
fare copie dei dati e mantenerle in
memoria.
La struttura In Place Element opera
infatti sui dati e li restituisce a livello
della stessa locazione di memoria.
USO DELLA STRUTTURA
IN PLACE ELEMENT
PER AUMENTARE L’EFFICIENZA
La struttura In Place Element può eseguire una varietà di comuni operazioni
LabVIEW in modo più efficiente rispetto ai tradizionali metodi di program-
Figura 1 - L’immagine descrive una semplice situazione nella quale vengono eseguite operazioni su un elemento di un array ed il
risultato viene riposizionato nella stessa posizione dell’array
Figura 2 - Potete guadagnare efficienza rimpiazzando un elemento di un array con la struttura In Place Element
6
mazione LabVIEW. La fig. 1 descrive
uno scenario nel quale potete utilizzare la struttura In Place Element per
migliorare l’efficienza di un VI.
LabVIEW indicizza un array di interi a
32 bit senza segno, incrementa il terzo
elemento dell’array e rimette
l’elemento nella stessa posizione dell’array. Per rimettere il nuovo valore
nello stesso array, la funzione Replace
Array Subset richiede che colleghiate
l’array ed i valori degli indici dell’array
agli ingressi array ed index della funzione. Quando eseguite il VI, LabVIEW
esegue una nuova copia dell’array e la
mette in memoria. Potete utilizzare la
LabVIEW_05:LabVIEW_05
12-02-2008
17:33
Pagina 7
W H AT ’ S N E W
Figura 3 - Struttura In Place Element vuota
Figura 5 - Nodi risultanti per l’indicizzazione di un array
Figura 4 - Configurazione del nodo per l’indicizzazione di un array
struttura In Place Element per evitare
di eseguire copie addizionali dell’array
e dei valori degli indici, come illustrato
nello schema a blocchi di fig. 2.
Il nodo Array Index/Replace Elements
presente sulla cornice della struttura In
Place Element indicizza un array di
interi a 32 bit senza segno, incrementa il terzo elemento dell’array e rimette l’elemento nella stessa posizione
dell’array, analogamente allo schema
a blocchi del primo
esempio. In questo caso,
tuttavia, LabVIEW non
deve creare o immagazzinare copie addizionali
dei valori dell’array in
memoria.
La struttura In Place
Element richiede che
ogni elemento indicizzato nell’array venga sostituito a livello del nodo
presente sul lato destro
della struttura.
Poiché il compilatore
LabVIEW sa quale
elemento
sostituire,
LabVIEW non deve creare o immagazzinare
copie addizionali dei
valori dell’array in
memoria.
uno schema a blocchi. La fig. 3 visualizza una struttura In Place Element
vuota su uno schema a blocchi.
La struttura In Place Element utilizza
nodi fissati sulla cornice per eseguire
operazioni sui dati. Potete cliccare con
il tasto destro sul bordo della struttura
e selezionare il nodo appropriato in
base al tipo di operazione che desiderate eseguire (fig. 4). Ogni nodo consiste di un terminale sul lato sinistro e
uno sul lato destro della struttura (fig.
5). Dopo avere scelto un nodo e collegato un ingresso (un array, un cluster,
un variant o una forma d’onda), potete selezionare un elemento sul lato
sinistro della struttura, eseguire operazioni sull’elemento all’interno della
struttura e collegare il valore risultante
sul lato destro per sostituire il valore
nella locazione esistente (fig. 6).
PRIMI PASSI CON LA STRUTTURA
IN PLACE ELEMENT
QUANDO UTILIZZARE
LA STRUTTURA
IN PLACE ELEMENT
La struttura In Place Element non è
situata sulla paletta delle strutture.
Potete trovarla sulla paletta Memory
Control seguendo il percorso Programming»Application Control»
Memory Control sulla paletta delle
funzioni. Da questa paletta, potete trascinare la struttura In Place Element in
L’ovvia domanda che potreste porre in
merito alla struttura In Place Element è
questa: “Quando dovrei utilizzarla?”
Come avviene per ogni operazione di
ottimizzazione del codice, la cosa
migliore è aspettare finché non sapete
qual è il collo di bottiglia del vostro
sistema. Quando l’elemento dell’array,
7
LabVIEW_05:LabVIEW_05
14-02-2008
15:14
Pagina 8
W H AT ’ S N E W
05
Figura 6 - Una struttura In Place Element con un array collegato a un nodo
Figura 7 - Potete utilizzare una struttura In Place Element annidata con For Loop per eseguire operazioni in modo efficiente su tipi
di dati estremamente complessi
8
Nome, Data di nascita e Occupazione e da un array delle caratteristiche
della
persona.
Per
eseguire
un’operazione su un singolo campo in
tutti i cluster, potete utilizzare la struttura In Place Element ed un For Loop (fig.
7). Senza la struttura In Place Element,
LabVIEW eseguirebbe una copia del cluster ad ogni iterazione del For Loop.
Questo comporterebbe anche la copia di
Nome, Data di nascita e così via,
anche se non dovete eseguire operazio-
ni su tali campi. Non si ottiene un incremento di velocità in tutte le applicazioni, ma la struttura In Place Element è
comoda quando dovete estrarre un elemento da un tipo di dati complesso,
modificarlo e rimetterlo nell’array.
Note sull’autore
Laureato in ingegneria nucleare al
Politecnico di Milano, Matteo Foini lavora
in qualità di Technical Marketing Engineer
presso National Instruments Italy
Readerser vice.it n. 503
del cluster o della forma d’onda a cui la
struttura accede è semplice (come un
I32 o DBL), il guadagno di prestazioni è
piccolo. In generale, comunque, con la
struttura In Place Element potete eseguire operazioni su strutture dati complesse in modo più efficiente rispetto ai
tradizionali metodi di programmazione
di LabVIEW. Per esempio, consideriamo
il caso di un array di cluster, ciascuno
utilizzato per descrivere una persona. Il
cluster è composto da campi come
LabVIEW_05:LabVIEW_05
12-02-2008
17:33
Pagina 9
W H AT ’ S N E W
05
a cura di Matteo Foini
PREVENIRE IL CROSS-LINKING DI VI
CON IL NUOVO LABVIEW PROJECT
POTENZIATO
Insieme a molti altri miglioramenti e nuove caratteristiche, LabVIEW 8.5 include tool
destinati ad aiutare gli sviluppatori a prevenire il cross-linking
uando un VI in memoria fa riferimento ad un subVI diverso da
quello presente durante l’ultimo
salvataggio (in altri termini, uno a cui
non intendevate fare riferimento), si
verifica il problema di cross-linking.
Per esempio, LabVIEW potrebbe caricare accidentalmente una revisione
passata dello stesso codice e
l’applicazione, di conseguenza, presenterebbe un comportamento imprevisto, difficile da capire e correggere:
un problema che ha frustrato anche gli
utenti di LabVIEW più esperti.
Q
CHE COS’È IL CROSS-LINKING?
In LabVIEW, il cross-linking si verifica a
causa di una differenza esistente fra i
VI in memoria e i VI su disco. Gli ele-
menti di LabVIEW in memoria hanno
un nome unico, ma su disco possono
esistere più VI con lo stesso nome.
Di conseguenza, quando si cerca di
caricare un VI da disco, LabVIEW controlla innanzitutto se un VI già presente in memoria ha lo stesso nome e, in
base al risultato, chiede di utilizzare il
VI in memoria o di scartarlo e utilizzare il VI che sta su disco.
Per i subVI però LabVIEW non chiede
all’utente se vuole usare il VI in memoria o il VI di uguale nome su disco ma
aggancia il VI presente in memoria e
mostra un messaggio di avvertimento,
dove afferma che LabVIEW ha caricato
dei VI da posizioni impreviste.
Benché sia facile definire il cross-linking, prevenirlo è comunque difficile.
Figura 1 - Un LabVIEW Project con un conflitto
Una pratica comune fra gli utenti
LabVIEW è creare dei backup progressivi di tutte le directory di lavoro; di
conseguenza, su una macchina di sviluppo vi sono spesso molte copie di
ogni VI.
Tra i problemi che il cross-linking può
causare agli utenti ricordiamo:
• Un comportamento imprevisto del
sistema, introdotto dal caricamento di
un subVI che ha una funzionalità
diversa da quella del subVI che si
intendeva richiamare
• Modifiche accidentali che risultano
dalla modifica di un VI diverso da quello previsto o dal salvataggio non
intenzionale di VI in versioni più recenti di LabVIEW
Figura 2 - Un secondo VI viene referenziato come dipendenza,
provocando il conflitto
9
LabVIEW_05:LabVIEW_05
12-02-2008
17:33
Pagina 10
W H AT ’ S N E W
05
• Una ridotta produttività causata dallo spreco di tempo nella ricerca e soluzione del cross-linking e nel ripristino
dei VI.
STRUMENTI IN LABVIEW
PER PREDIRE, PREVENIRE
E RISOLVERE IL CROSS-LINKING
LabVIEW 8.5 introduce un insieme di
nuovi tool progettati per aiutare gli
utenti LabVIEW non solo a identificare
e prevenire possibili situazioni di crosslinking, ma anche a risolvere il problema laddove si è già verificato. La maggior parte di queste nuove caratteristiche si trova integrata nel LabVIEW
Project, introdotto in LabVIEW 8 al fine
di migliorare la gestione dei target (per
esempio, aiutando gli sviluppatori a
gestire simultaneamente i VI sui sistemi host ed embedded).
Ma un LabVIEW Project può contenere
alcuni elementi in conflitto fra loro. Un
conflitto è un potenziale cross-link
che si verifica quando LabVIEW cerca
di caricare un VI che ha lo stesso nome
di un elemento già presente nel progetto. Quando LabVIEW identifica un
conflitto (in altri termini, una potenziale situazione di cross-linking), esso
visualizza la parola [Conflict] dopo il
nome del VI nel LabVIEW Project (fig.
1). Un triangolo giallo di avvertimento
appare in corrispondenza di ogni elemento in conflitto presente nel progetto.
Figura 3 - Il LabVIEW Project con visualizzazione dei percorsi completi degli elementi
Nuove funzionalità di LabVIEW 8.5 vi
aiuteranno a prevenire il cross-linking
ed eliminare i conflitti:
1. Opzione Show Full Paths migliorata
2. Nuova pagina Files
3. Nuova finestra di dialogo Resolve
Project Conflicts
4. Possibilità di sostituire facilmente un
VI in un LabVIEW Project
5. Nuove finestre di dialogo Find
Callers e Find SubVIs
Per spiegare come potete sfruttare
questi nuovi tool con il LabVIEW
Project per risolvere i conflitti, esaminiamo ogni nuova caratteristica con un
semplice esempio per illustrare ciascun
punto.
DEPENDENCIES
Potete esaminare i file a cui il LabVIEW
Project fa riferimento per localizzare la
sorgente del conflitto. Per aiutare a prevenire i conflitti, LabVIEW traccia auto-
Figura 4 - La pagina Files visualizza le posizioni degli elementi su disco
10
maticamente la gerarchia di ogni elemento che viene incluso nel LabVIEW
Project. Quando aprite un VI da un progetto, LabVIEW aggiunge nelle Dependencies tutti i membri della gerarchia
del VI che non sono già presenti nel
LabVIEW Project. LabVIEW organizza le
Dependencies in tre cartelle - vi.lib,
user.lib e Items in Memory. Quando
aprite un VI che non è attualmente nel
LabVIEW Project, LabVIEW aggiunge il
VI dentro Items in Memory. La sezione
Dependencies si aggiorna quando
aggiungete, rimuovete o salvate un elemento nel LabVIEW Project (fig. 2).
VIEW FULL PATHS
Il modo più semplice per determinare
la causa di un conflitto (che potrebbe
potenzialmente portare al cross-linking) è quello di evidenziare il percorso completo relativo a ogni elemento
del progetto con accanto il messaggio
[Conflict]. Potete cliccare con il tasto
destro sulla radice del progetto e selezionare View»Full Paths dal menu
abbreviato per visualizzare la colonna
Paths ed osservare i percorsi dei file
che corrispondono agli elementi del
LabVIEW Project (fig. 3).
Benché l’osservazione dei percorsi completi non sia tecnicamente nuova (potete infatti attivare i percorsi completi
anche in LabVIEW 8 e 8.20), in precedenza non c’era una colonna separata
nel LabVIEW Project. Grazie ad un
layout più pulito e più facile da capire,
l’opzione Full Paths vi aiuta a vedere
l’esatta posizione su disco dove si trova
un elemento in conflitto. Per rimuovere
il conflitto, dovete rinominare o rimuovere dal progetto tutti gli elementi
meno uno aventi lo stesso nome.
LabVIEW_05:LabVIEW_05
12-02-2008
17:33
Pagina 11
W H AT ’ S N E W
PAGINA FILES NEL PROGETTO
FINESTRA DI DIALOGO
RESOLVE CONFLICTS
Un altro metodo per risolvere i conflitti in un progetto è quello di usare il
pulsante Resolve Conflicts nella toolbar del LabVIEW Project per visualizzare la finestra di dialogo Resolve
Project Conflicts.
Per risolvere i conflitti potete cliccare
con il tasto destro su un elemento in
conflitto e selezionare Resolve
Conflicts dal menu abbreviato, oppure utilizzare l’area di dialogo Resolve
Project Conflicts, ristabilendo in tal
Figura 6 - Cliccate con il tasto destro su un File e selezionate Replace with
per scegliere un nuovo file
modo i percorsi corretti (fig. 5).
Questa finestra di dialogo visualizza
tutti i conflitti presenti in un progetto.
All’interno della finestra potete confrontare due VI in conflitto con lo stesso nome (si può richiamare lo strumento di differenziazione grafica esistente in LabVIEW).
Potete anche osservare i dettagli di
ogni elemento che selezionate, come
percorso dell’elemento, nome, data di
creazione e data di modifica.
Mano a mano che risolvete ciascun
conflitto nell’area di dialogo, l’elenco
si aggiorna automaticamente.
CONCLUSIONE
LabVIEW 8.5 ha aggiunto nuove
importanti caratteristiche al LabVIEW
Project. Tali caratteristiche riguardano
anche la risoluzione del cross-linking,
un vecchio problema per molti sviluppatori che utilizzano LabVIEW (specialmente per grandi applicazioni). Grazie
a queste nuove funzionalità, avete a
disposizione vari modi con cui predire,
evitare e riparare le situazioni di crosslinking, ottenendo maggiore produttività e ridotti tempi di debugging.
REPLACE WITH...
Se rilevate che uno o più VI fanno riferimento erroneamente a subVI sbagliati e non desiderate utilizzare l’area
di dialogo Resolve Project Conflicts per correggere il problema, avete altre opzioni per eliminare il conflitto. Potete ridirigere tutti i chiamanti in
modo che facciano riferimento ad un
subVI con un percorso differente cliccando con il tasto destro su un VI in
conflitto nel LabVIEW Project e selezionando Replace with dal menu
abbreviato per scegliere il corretto
subVI su disco (fig. 6). LabVIEW
aggiorna automaticamente tutti gli
elementi che fanno riferimento al percorso errato con il nuovo percorso.
Figura 5 - La finestra di dialogo Resolve Project Conflicts
offre un metodo automatizzato per rimuovere i conflitti
dal LabVIEW Project
Readerser vice.it n. 504
Potete vedere le posizioni dei file anche
sulla nuova pagina Files. Tramite la
pagina Items, che visualizza il contenuto del progetto, potete interagire con
i componenti tipici di un progetto, esistenti già in LabVIEW 8 e 8.20, come
My Computer, Build Specifications e
Dependencies (fig. 3). La nuova pagina
Files visualizza gli elementi del
LabVIEW Project che hanno un file corrispondente su disco (fig. 4).
Con la pagina Files, potete avere una
conferma visiva del fatto che VI indesiderati ed altri file situati in directory
obsolete non siano accidentalmente
inclusi in un particolare progetto.
Potete inoltre eseguire operazioni su
disco come rinominare, riorganizzare e
rimuovere elementi.
Per esempio, se rinominate un file sulla pagina Files, LabVIEW rinomina quel
file su disco. Potete spostare file su
disco utilizzando la pagina Files senza
influenzare negativamente il linking
dei VI. Quando spostate un VI attraverso la pagina Files, LabVIEW aggiorna
automaticamente tutti i chiamanti
all’interno di quel LabVIEW Project con
l’ultima informazione di posizione del
file disponibile per quel VI.
Potete passare da una pagina a
un’altra cliccando con il tasto destro
su una cartella o un elemento sotto un
target e selezionando Show in Items
View o Show in Files View dal
menu rapido (le voci appaiono solo se
l’elemento esiste nell’altra vista).
11
LabVIEW_05:LabVIEW_05
12-02-2008
17:33
Pagina 12
W H AT ’ S N E W
05
LE NOVITÀ DEL
a cura di Matteo Foini
PDA MODULE DI LABVIEW 8.5
Il modulo per PDA di LabVIEW 8.5 contiene molte nuove funzionalità e correzioni di bug
programmate
saminiamo le nuove funzionalità
e correzioni di bug programmate
contenute nel modulo per PDA di
LabVIEW 8.5.
E
LETTURA E SCRITTURA
DI DATI SUL PANNELLO
FRONTALE UTILIZZANDO
IL DATA BINDING
Potete utilizzare il data binding per
leggere o scrivere dati sul pannello
frontale tramite shared variable pubblicate in rete. Potete utilizzare il data
binding con qualsiasi controllo o indicatore del pannello frontale supportato dal PDA Module. Questa nuova funzionalità semplifica il processo di invio
dei dati da visualizzare sul pannello
frontale, eliminando la necessità di
qualsiasi programmazione; gli oggetti
sul pannello frontale sono connessi
direttamente alle shared variable pubblicate in rete ed è possibile inviare e
ricevere dati senza alcuna istruzione
sullo schema a blocchi. Nelle figure 1 e
2, un grafico denominato Data è stato configurato in modo da leggere il
valore di una forma d’onda da una
shared variable pubblicata in rete.
Dopo la configurazione tramite il menù
Figura 1 - Configurazione di un grafico denominato Data per leggere il valore
di una forma d’onda da una shared variable pubblicata in rete
Properties del grafico, non occorre
alcun collegamento sullo schema a
blocchi per portare i dati nel grafico.
SUPPORTO A INLINE C NODE
Potete utilizzare l’Inline C Node per
aggiungere codice C allo schema a
Figura 2 - Dopo la configurazione tramite il menù Proper ties del grafico, non occorre alcun collegamento sullo schema a blocchi per
por tare i dati nel grafico
12
LabVIEW_05:LabVIEW_05
12-02-2008
17:33
Pagina 13
W H AT ’ S N E W
la programmazione a basso livello.
Potete utilizzare l’Inline C Node per
brevi blocchi di codice che non potete
implementare facilmente
in VI grafici.
L’Inline C Node supporta
qualsiasi porzione
di
codice
C,
i n c l u s e
direttive assembly e #define, che sinFigura 3 - Si può utilizzare l’Inline C Node per aggiungere codice C
tatticamente
allo schema a blocchi
stia fra parentesi graffe in
un file C. La verifica sintattica di un
Inline C Node avviene in fase di editazione e gli errori vengono indicati da
punti rossi sulla barra sinistra
dell’Inline C Node. Alcuni errori, come
funzioni o variabili indefinite, non possono essere rilevati prima della compilazione del codice C generato per il VI.
Figura 4 - Il PDA Module suppor ta
ora sei tipi di azioni meccaniche
per controlli booleani
Se si verificano degli errori, la fase di
build si interrompe e si riceve un errore.
AZIONE MECCANICA BOOLEANA
Figura 5 - Il PDA Module suppor ta ora
controlli per barre di scorrimento
Il PDA Module supporta ora sei tipi di
azioni meccaniche per controlli booleani, che includono Switch when
pressed, Switch when released,
Switch until released, Latch when
pressed, Latch when released e
Latch until released (fig. 4).
CONTROLLO
BARRA
DI SCORRIMENTO
Figura 6 -Potete utilizzare il VI Run Application per eseguire
un’applicazione PDA specificata
Il PDA Module supporta ora controlli
per barre di scorrimento, incluse barre
di
scorrimento
verticali
e
orizzontali
aggiungibili a qualsiasi
controllo o indicatore presente sul pannello frontale (fig.
5). Il controllo semplifica il processo di navigazione di controlli e
indicatori di grandi
dimensioni.
RUN APPLICATION
VI
Potete utilizzare il VI
Run Application per
e s e g u i r e
un’applicazione PDA
specificata (fig. 6).
Questo VI vi permette
di richiamare facilm e n t e
un’applicazione su
PDA, senza dovere utilizzare una chiamata a
DLL o l’Inline C Node.
FUNZIONI XML
Il PDA Module include
ora i VI e le funzioni
Escape XML, Flatten
To XML, Read From
XML File, Unescape
XML, Unflatten From
XML e Write to XML
File (fig. 7). Potete utilizzare questi VI e funzioni per manipolare
dati LabVIEW in formato XML.
Figura 7 - Il PDA Module include ora VI
e funzioni per manipolare dati LabVIEW
in formato XML
Figura 8 - Il PDA Module suppor ta
l’accensione intermittente per tutti
i controlli e gli indicatori booleani,
esclusi i controlli di sistema
Figura 9 - E’ possibile impostare
la giustificazione del testo
e sottolineare il testo di pulsanti
e di controlli e indicatori di tipo
stringa, time stamp e numerici
CONTROLLI E
INDICATORI
BOOLEANI
LAMPEGGIANTI
A grande richiesta, il PDA Module supporta ora l’accensione intermittente
per tutti i controlli e gli indicatori booleani, esclusi i controlli di sistema (fig.
8). Utilizzando un Property Node con
la proprietà Blinking abilitata, potete
configurare un booleano per visualizzare lampeggiando avvertimenti importanti per l’operatore.
GIUSTIFICAZIONE
DEL TESTO PER CONTROLLI
E INDICATORI
Potete ora impostare la giustificazione
Readerser vice.it n. 505
blocchi (fig. 3). L’Inline C Node è simile al Formula Node di LabVIEW, con
supporto e funzionalità addizionali per
13
LabVIEW_05:LabVIEW_05
12-02-2008
17:33
Pagina 14
TIPS & TECHNIQUES
05
Chris Washington
PROGETTAZIONE SOFTWARE
PER IL CONTROLLO MACCHINA
Questo ar ticolo illustra una possibile architettura di progettazione software per il controllo
macchina, basata sulle macchine a stati
che descriveremo
’architettura
qui può essere utilizzata per rea-
L
lizzare applicazioni di controllo
su controllori LabVIEW Real-Time,
inclusi CompactRIO, Compact FieldPoint e PXI. La stessa architettura di
base può funzionare anche su altre
piattaforme, come controllori basati su
Windows. LabVIEW Real-time è un linguaggio di programmazione completo,
che offre agli sviluppatori numerose
opzioni su come costruire un controllore e permette loro di creare sistemi
molto flessibili e complessi.
I controllori LabVIEW Real-Time sono
utilizzati in applicazioni che spaziano
dal controllo delle barre in centrali
nucleari, al collaudo Hardware-in-theLoop per le ECU dei motori, dal controllo adattativo per la trivellazione di
pozzi petroliferi, al monitoraggio delle
vibrazioni ad alta velocità per la manutenzione predittiva. Tuttavia, la grande
flessibilità di LabVIEW Real-Time
potrebbe anche scoraggiare l’inizio di
una nuova applicazione, specialmente
per i programmatori che non hanno
familiarità con LabVIEW o con la programmazione di sistemi real-time.
Questo articolo non ha lo scopo di fornire un’architettura valida per ogni
applicazione e non vuole sostituirsi ai
corsi di formazione su LabVIEW RealTime. E’ stato scritto per offrire
un’infrastruttura operativa ai progettisti di applicazioni di controllo industriale e specialmente a chi ha familiarità con l’uso dei PLC. L’articolo è stato concepito per spiegare come
costruire facilmente applicazioni
LabVIEW Real-Time in grado di offrire
anche la flessibilità necessaria a gesti-
14
re applicazioni non tradizionali, come
I/O bufferizzati ad alta velocità, data
logging e visione artificiale.
TERMINOLOGIA
Nonostante vi siano molti modi per
costruire un’applicazione di controllo
in LabVIEW Real-time, è necessario iniziare dalla comprensione di alcuni
concetti fondamentali relativi alla programmazione real-time e alle applicazioni di controllo.
Responsività: Un’applicazione di controllo deve essere in grado di intervenire nel caso di eventi come un cambiamento di I/O, un input dal dispositivo HMI o un cambiamento di stato
interno. Il tempo richiesto per eseguire
un’azione dopo un evento è noto
come responsività e applicazioni di
controllo differenti avranno tolleranze
differenti per la responsività, che possono variare da microsecondi a minuti.
La maggior parte delle applicazioni
industriali ha requisiti di responsività
compresi fra il millisecondo e qualche
secondo. Un criterio di progettazione
importante per un’applicazione di controllo è la responsività richiesta, perché
essa determinerà le velocità dei loop di
controllo e influirà sulle decisioni a
livello di I/O, processore e software.
Determinismo e jitter: Il determinismo
consiste nella garanzia di ripetibilità
dei tempi di un loop di controllo.
Il jitter rappresenta una misura del
determinismo, cioè l’errore che si ha
nel mancato rispetto dei tempi-ciclo.
Per esempio, se un loop è impostato
per essere eseguito ogni 50 ms ma
qualche volta viene eseguito a 50,5
ms, il jitter è di 0,5ms. Determinismo e
affidabilità più elevati sono i vantaggi
primari di un sistema di controllo realtime: un buon determinismo è critico
per applicazioni di controllo stabili.
Un basso determinismo porta a un cattivo controllo analogico e può rendere
un sistema non responsivo.
Priorità: La maggior parte dei controllori usa un singolo processore per gestire tutti i task di controllo, monitoraggio e comunicazione. Essendoci così
una singola risorsa (il processore) con
più richieste in parallelo, il programmatore deve trovare il modo per gestire quelle più importanti.
Impostando i loop critici di controllo in
alta priorità, ottenete un controllore
che presenta ancora buon determinismo e responsività. Per esempio, in
un’applicazione con un loop di controllo della temperatura e funzionalità di
logging embedded, il loop di controllo
può essere impostato a priorità più elevata rispetto all’operazione di logging
per ottenere un controllo deterministico della temperatura. Ciò fa sì che i
task di priorità inferiore (logging dei
dati, web server, HMI, ecc.) non influiscano negativamente sui controlli analogici o sulla logica digitale.
RICHIAMI SULL’ARCHITETTURA
DI BASE DEI CONTROLLORI
La maggior parte dei programmatori
che non hanno familiarità con
LabVIEW iniziano con un’applicazione
molto semplice ed espandono quindi il
loro programma per aggiungere maggiori funzioni. Un vantaggio di
LabVIEW_05:LabVIEW_05
12-02-2008
17:33
Pagina 15
TIPS & TECHNIQUES
LabVIEW è che è molto facile costruire
ed eseguire un semplice programma.
Per esempio, vediamo la logica di un
semplice loop PID eseguito su un sistema Compact FieldPoint.
Purtroppo, costruire sistemi più complessi
in
LabVIEW
richiede
un’architettura più sofisticata che permetta un migliore riutilizzo del codice,
scalabilità e gestione del flusso di esecuzione. Questo paragrafo descrive ed
insegna a costruire un’architettura di
base per le applicazioni di controllo ed
esegue lo stesso loop PID utilizzando
tale architettura.
Il controllore più semplice ha tre
sequenze o routine fondamentali:
1. Routine di inizializzazione
2. Routine di controllo
3. Routine di chiusura
Tali routine riguardano lo stato del
controllore. Dato che i controllori realtime di National Instruments vi permettono di definire le capacità complete del vostro sistema, dovrete
costruire le sequenze in LabVIEW.
ROUTINE DI INIZIALIZZAZIONE
Prima di eseguire il loop di controllo
principale, il programma deve eseguire
una routine di inizializzazione che prepara il controllore per l’esecuzione.
Non è qui che trova posto la logica di
gestione della macchina (come la logica di startup o di inizializzazione della
macchina); tale logica dovrebbe essere
inserita nel loop di controllo principale. La routine di inizializzazione dovrà
quindi:
1. Impostare allo stato di default tutte
le variabili interne, incluse le variabili d’uscita nella
tabella di memoria degli I/O.
2. Creare tutte le
code necessarie,
le FIFO RT, i VI
Refnum e scaricare ogni bit file
negli FPGA.
3. Eseguire eventuale logica aggiuntiva definita dall’utente per rendere
operativo il controllore, come la
preparazione dei file di log.
lore rileva una condizione di errore,
esso interrompe l’esecuzione del loop
di controllo principale ed esegue una
routine di chiusura. La routine ferma il
controllore e lo mette in sicurezza: serve solo per lo shutdown del controllore e non è la sede per le routine di
chiusura della macchina, che invece
vanno inserite nel loop di controllo
principale. La routine di chiusura deve:
1. Impostare tutte le uscite a uno stato di sicurezza
2. Interrompere tutti i loop paralleli in
esecuzione
3. Eseguire qualsiasi logica aggiuntiva
come quella di notifica all’operatore di un guasto al controllore o
informazioni sullo stato del logging
ROUTINE DI CONTROLLO
DETTAGLI DELLA ROUTINE
DI CONTROLLO
La routine di controllo è il cuore del
controllore, dove viene eseguita tutta
la logica utente in forma di loop multipli paralleli. Anche se potete schematizzarla come un loop che esegue l’I/O
Scan Task, i task ad alta priorità e
quindi i task a bassa priorità, in realtà
si tratta di loop multipli sincronizzati.
Il primo loop scrive e legge gli I/O fisici
in una tabella di memoria e viene eseguito per primo. Quindi, i task successivi eseguono la logica utente dalla priorità più elevata a quella più bassa, terminando con i task di comunicazione e
operazioni ausiliarie che funzioneranno
alla minima priorità. Per servire questi
ultimi task efficacemente, dovete verificare di avere programmato il vostro
controllore garantendo un tempo sufficiente di inattività del processore.
ROUTINE DI CHIUSURA
Quando si comanda al controllore di
interrompere l’esecuzione o il control-
La maggior parte dei programmatori
LabVIEW ha familiarità con l’accesso
diretto agli I/O, dove le subroutine
inviano e ricevono direttamente input
e output dall’hardware. Questo metodo è ideale per l’acquisizione di forme d’onda, l’elaborazione dei segnali e piccole applicazioni single-point.
Tuttavia, le applicazioni di controllo
normalmente utilizzano letture e
scritture single-point e possono
diventare molto grandi, con stati multipli che devono tutti accedere agli
I/O. L’accesso agli I/O introduce un
overhead nel sistema e può essere
relativamente lento; inoltre, gestire
accessi multipli agli I/O attraverso
tutti i livelli di un programma rende
molto difficile cambiare gli I/O e
implementare funzionalità come la
simulazione o il “forcing”. Per evitare
questi problemi, la routine di controllo usa un’architettura a scansione di
I/O, dove l’accesso all’hardware fisico
avviene una sola volta per ogni iterazione del loop. I valori di input e output sono immagazzinati in memoria
in un costrutto noto come tabella di
memoria degli I/O e il codice di controllo accede allo spazio di memoria
anziché all’hardware diretto. Questa
architettura offre numerosi benefici:
15
LabVIEW_05:LabVIEW_05
12-02-2008
17:33
Pagina 16
TIPS & TECHNIQUES
05
• Astrazione degli I/O, per consentire il
riutilizzo di subVI e funzioni (no hard
coding degli I/O)
• Basso overhead
• Funzionamento deterministico
• Facile transizione fra piattaforme
hardware
• Supporto per la simulazione
• Supporto per interlocks e “forcing”
• Eliminazione del rischio legato al
cambio
degli
I/O
durante
l’esecuzione della logica
TABELLA DI MEMORIA DEGLI I/O
La tabella di memoria degli I/O serve a
passare i dati fra il loop di scansione
degli I/O ed altri loop o task paralleli di
controllo o misura. Vi sono numerosi
metodi per la comunicazione fra i loop,
ma uno dei più semplici è quello di usare una variabile globale. Per rendere
semplice l’aggiornamento del programma, utilizzeremo un cluster basato su un
controllo custom strict type def. Con un
controllo strict type def, qualsiasi cambiamento apportato al controllo si propaga automaticamente all’intero programma. Ciò vi permette di aggiungere
o rinominare facilmente gli I/O senza la
necessità di ricodificare il programma.
Nota: Benché non sia intuitivo, scrivere
prima sugli output aiuta ad assicurare il
funzionamento deterministico e permette di ottenere un programma più
pulito per la gestione degli errori e la
transizione a uno stato di shutdown.
TASK LOGICI DELL’UTENTE
La logica utente è la logica specifica
alla macchina che definisce
l’applicazione di controllo. In molti
casi, si basa su una macchina a stati
per gestire il controllo di macchine
complesse con stati multipli. Un paragrafo successivo spiegherà come utilizzare le macchine a stati per progettare
la logica utente.Per essere eseguita
nell’architettura di controllo, la logica
utente deve:
• Essere eseguita in meno tempo del
loop temporizzato
• Accedere agli I/O attraverso la tabella
di memoria degli I/O anziché attraverso letture o scritture dirette degli I/O
• Non usare “while loop” se non per
mantenere informazioni di stato
negli shift register
• Non usare “for loop” se non negli
algoritmi
• Non usare “wait” (attese), ma funzioni di temporizzazione o “Tick
Count” per la logica di timing
• Non eseguire operazioni non deterministiche, di logging o su forme d’onda
to. Un cluster locale permette di offrire scalabilità per task multipli e di utilizzare il modulo LabVIEW StateChart.
2. Eseguire la logica - Gli I/O vengono
letti e scritti nei cluster locali per
ingressi e uscite
3. Copiare il cluster locale nella tabella
di memoria degli I/O - Il cluster locale degli output (strict type def) viene
letto e scritto nella tabella di memoria degli I/O. Anche in questo caso, un
cluster locale permette di offrire scalabilità per task multipli e di utilizzare il modulo LabVIEW StateChart.
ESEMPIO DI ARCHITETTURA
DI BASE DEI CONTROLLORI
IN LABVIEW
Per mostrare questa architettura di
controllo, costruiremo un’applicazione
di controllo PID elementare. Questa
semplice applicazione controlla una
camera climatica in modo tale da mantenervi una temperatura di 350 gradi.
Essa prevede un ingresso analogico da
termocoppia, un’uscita analogica (010V) collegata all’ingresso di un elemento riscaldante e un algoritmo PID
per il controllo. Questa applicazione è
particolarmente semplice ed è utilizzata qui solo per spiegare i componenti
dell’architettura senza aggiungere la
complessità di un controllo intricato.
TABELLA DI MEMORIA DEGLI I/O
La logica utente può:
• Includere operazioni single point
come PID o analisi punto-punto
• Usare una macchina a stati per strutturare il codice
SCANSIONE DEGLI I/O
Il loop di controllo principale sarà il
loop con la massima priorità, quindi
sarà eseguito per primo ad ogni ciclo e
presenterà due fasi, che si attiveranno
ripetutamente alla velocità desiderata
del loop di controllo:
1. Scrittura degli output - La tabella di
memoria degli I/O viene letta ed i
moduli di output sono aggiornati.
2. Lettura degli input - I moduli di input
vengono letti ed i valori vengono scritti nella tabella di memoria degli I/O.
16
Ogni task logico verrà strutturato utilizzando un Timed Loop. La priorità del
Timed Loop deve essere inferiore a
quella del loop di scansione degli I/O e
la temporizzazione dovrebbe essere un
multiplo intero della velocità del loop
di scansione degli I/O. Il task logico
conterà tre fasi:
1. Copiare la tabella di memoria degli
I/O nel cluster locale - La tabella di
memoria degli I/O viene letta e un cluster locale (strict type def) viene scrit-
Per creare la tabella di memoria degli I/O:
1. Create un controllo custom strict
type def chiamato IO Cluster.ctl.
Nel controllo custom aggiungete un
cluster e create due controlli,
Input_TC e Output_Heater.
2. Create una variabile globale chiamata IO Table Global.vi contenente
IO Cluster.ctl.
Suggerimento: L’uso di un controllo
strict type def custom permette il semplice aggiornamento del codice tramite il LabVIEW project.
SCANSIONE DEGLI I/O
1. Aprite un top level vi.
2. Inserite un Time Loop sul diagram-
LabVIEW_05:LabVIEW_05
12-02-2008
17:33
Pagina 17
TIPS & TECHNIQUES
ma e configurate il rate in funzione
del tempo-ciclo richiesto dalla
vostra applicazione.
3. Sullo schema, create due subVI:
Write Outputs e Read Inputs.
4. Aprite Write Outputs. Sullo schema
a blocchi, inserite la variabile globale IO Table Global.vi e la logica per
scrivere gli output fisici. Questo
esempio è programmato per
FieldPoint, quindi utilizza un FP
Write VI. La stessa architettura
potrebbe essere facilmente utilizzata per programmare CompactRIO,
PXI o DAQ.
5. Aprite Read Inputs. Sullo schema a
blocchi, inserite la variabile globale
IO Table Global.vi e la logica per gli
input fisici.
6. Salvate e chiudete i due subVI. Sul
top level vi disponete una struttura
case intorno ai subVI Write Outputs
e Read Inputs. Nel caso false create
un nuovo subVI chiamato
Shutdown Outputs, dove entrerete
nel caso in cui il controllore debba
essere fermato.
7. Aprite Shutdown Outputs.vi e
aggiungete la logica necessaria per
scrivere valori di sicurezza sulle
uscite alla chiusura e salvate il
subVI. Invece di scrivere i valori
d’uscita dalla tabella di memoria
degli I/O, scriverete i valori d’uscita
di sicurezza. In questo caso, il riscaldatore dovrebbe spegnersi se si
esce dal programma, quindi il valore Output_Heater viene sostituito
con una costante zero.
8. A livello di top level vi dovete ora
aggiungere della logica per decidere quando eseguire la chiusura.
Questa chiusura ferma il controllore. Nella maggior parte dei casi, ciò
dovrebbe avvenire solo al verificarsi
di un errore o se il controllore deve
essere riprogrammato. Per questo
esempio eseguiremo la chiusura in
presenza di un errore. Abbiamo
creato un cluster di errore globale
che ci permette di raccogliere eventuali errori da più task paralleli.
Abbiamo creato due subVI per
gestire e gli errori: Fault Manager.vi
e il
Fault
Nota: Il comportamento in fase di
chiusura è definito dal programmatore. Potete decidere di ignorare certi
errori o di riprovare a eseguire le operazioni prima della chiusura.
9. Nel top level vi utilizzate il Fault Ma-
nager.vi e il Fault Merge.vi per rilevare
gli errori e controllare la struttura case
per effettuare lo shutdown in caso di
errore. Notate che per ogni task dobbiamo assegnare un Task #: utilizzeremo ‘0’ per la routine di inizializzazione
e ‘1’ per il Task di scansione degli I/O.
ROUTINE DI INIZIALIZZAZIONE
E CHIUSURA
1. Ora dobbiamo aggiungere la routine di inizializzazione e una routine
di chiusura. La routine di inizializzazione deve configurare il controllore
in modo che sia pronto per eseguire qualsiasi logica e la routine di
chiusura deve eseguire qualsiasi
azione legata alla fase di shutdown.
2. La routine di inizializzazione imposterà i valori di default per gli output ed eseguirà l’error trapping
(gestione dell’errore). Ricordate che
il loop di controllo principale inizia
scrivendo le uscite sull’hardware,
quindi dobbiamo caricare i valori di
startup per le uscite nella tabella di
memoria degli I/O.
3. Create un subVI chiamato Default
Outputs.vi e scrivete del codice per
Merge.vi.
17
LabVIEW_05:LabVIEW_05
12-02-2008
17:33
Pagina 18
TIPS & TECHNIQUES
05
impostare la tabella di memoria
degli I/O con i valori di default.
Vogliamo che il comportamento di
default dell’uscita del riscaldatore
sia off, quindi creeremo una costante ‘0’ e la collegheremo alla variabile condivisa Output_Heater.
4. Aggiungete l’error trapping con il
Fault Merge.vi ed usate il Task #0.
5. Sul top level vi aggiungete una struttura a sequenza (sequence structure)
a sinistra dell’I/O Scan Task. Collegate il cluster di errore da Default
Outputs.vi al bordo del Timed Loop
per assicurare l’ordine di esecuzione.
6. Per la routine di chiusura aggiunge-
te una sequence structure a destra
dell’I/O Scan Task e collegate il cluster di errore al bordo della struttura. Aggiungete l’eventuale logica di
chiusura all’interno della struttura.
In questo esempio non abbiamo
routine di chiusura.
7. Ora avete una routine completa di
inizializzazione, scansione degli I/O
e chiusura. A questo punto dovete
aggiungere i vostri task logici.
e output) che sono strict type def.
1. In primo luogo viene creato un controllo strict type def custom chiamato
Input Cluster.ctl. Nel controllo custom
aggiungiamo un cluster e creiamo un
controllo chiamato Input_TC.
2. Viene quindi creato un controllo strict
type def custom chiamato Output
Cluster.ctl. Nel controllo custom
aggiungiamo un cluster e creiamo un
controllo chiamato Output_Heater.
Suggerimento: Se utilizzate lo
StateChart Module, esso creerà automaticamente uno strict type def
Input Cluster.ctl e Output Cluster.ctl.
3. Sullo schema create due subVI, uno
chiamato Read Inputs Local e uno
chiamato Write Outputs Local.
4. Aprite Read Inputs Local. Sullo
Table Global e la logica per leggere
gli ingressi e scriverli nel cluster.
6. Salvate e chiudete i due subVI. Sul
top level vi disponete una struttura
case e la gestione degli errori.
Notate che per Fault Merge.vi questo è il Task #2.
7. Ora create un subVI chiamato
Logic.vi. In questo vi cablerete in
ingresso e in uscita i cluster di errore e metterete la vostra logica.
Ricordate che la logica deve:
• Essere eseguita in meno tempo
di quello richiesto dal Timed
Loop
• Non accedere direttamente all’hardware per letture e scritture
degli I/O
• Non usare while loop se non per
mantenere informazioni di stato
negli shift register
• Non usare for loop se non negli
algoritmi
• Non usare wait (attese), ma funzioni di temporizzazione o “Tick
Count” per la logica di timing
• Non eseguire operazioni non
deterministiche, di logging o su
forme d’onda
8. Inserite un vi PID sullo schema a
blocchi e collegate le costanti per
impostare l’intervallo d’uscita a [10,
0], i guadagni del PID a [10, 0,1, 0]
e il setpoint a 350. I guadagni ed il
setpoint del PID avrebbero potuto
anche essere cablati ad elementi della tabella di memoria degli I/O e
pubblicati su un terminale operatore
USER LOGIC TASK
Ogni task logico verrà strutturato utilizzando un Timed Loop con una priorità
inferiore a quella del loop di scansione
degli I/O e un timing pari a un multiplo
intero della velocità del loop di scansione degli I/O. Per scalare la vostra
applicazione e per consentirvi di eseguire i loop a velocità diverse rispetto
al task di scansione degli I/O, dovete
creare una versione locale degli I/O. A
tale scopo, copiate la tabella di memoria degli I/O in due cluster locali (input
18
schema a blocchi, inserite la I/O
Table Global e la logica per leggere
gli ingressi e scriverli nel cluster.
5. Aprite Write Outputs Local. Sullo
schema a blocchi, inserite la I/O
per modificarli successivamente.
Collegate il valore Input_TC al terminale Process Variable e collegate il
valore Output_Heater al terminale
Output. Aggiungete gli appropriati
LabVIEW_05:LabVIEW_05
12-02-2008
17:33
Pagina 19
TIPS & TECHNIQUES
componenti per la gestione degli
errori.
Suggerimento: Si possono utilizzare
StateChart per applicazioni di controllo sequenziale, controllo batch o controllo macchina.
9. Sul top level vi collegate il cluster di
errore dalla routine di inizializzazione sul bordo del Timed Loop, quindi
salvate ed eseguite l’applicazione.
Ora possiamo eseguire il programma
di controllo della temperatura. Esso ha
procedure di avviamento e chiusura,
un’architettura a scansione, subVI
riutilizzabili e la gestione degli errori.
Questa è l’architettura fondamentale
per il controllo di macchine utilizzata
nel presente articolo.
Esamineremo ora un esempio più complesso che evidenzia i benefici di questo tipo di architettura.
MACCHINE A STATI
La maggior parte delle applicazioni di
controllo reali è molto più complessa
della semplice applicazione PID
costruita nell’esempio precedente.
Benché si possa utilizzare il PID per
controllare un setpoint di temperatura,
esso sarà solo un piccolo componente
nell’applicazione.
Un esempio un po’ più realistico può
essere quello di un reattore chimico. In
questa applicazione immaginaria, il
controllore deve:
1. Attendere dall’operatore un comando di partenza con la pressione di
un pulsante
2. Misurare due flussi chimici in un
serbatoio sulla base dell’uscita di
un totalizzatore di flusso (due processi paralleli, uno per ciascun flusso chimico)
3. Dopo il riempimento del serbatoio,
avviare un miscelatore ed aumentare la temperatura
4. Quando la temperatura ha raggiunto 200 gradi, il sistema disattiva i
miscelatori e tiene costante la temperatura per 10 secondi
5. Pompare il contenuto in un serbatoio di contenimento
6.
Tornare allo stato
di attesa
Notate che, per semplicità, in questa applicazione le portate dei flussi
chimici sono stato codificate a 850, la temperatura a 200 e il tempo a 10
secondi.
In
un’applicazione reale
questi valori potrebbero
essere caricati da una procedura o
immessi da un operatore.
RICHIAMI SULLE MACCHINE A
STATI
Poiché utilizziamo la macchina a stati
all’interno della nostra più ampia
architettura di controllo macchina,
essa non può usare istruzioni di attesa
né loop, se non per mantenere uno
stato o eseguire algoritmi, come un for
loop usato per la manipolazione di
array.
Usate la macchina a stati nelle applicazioni dove esistono stati distinti.
Ogni stato può portare ad uno o più
stati o terminare il flusso del processo.
Una macchina a stati si basa sugli
input dell’utente o su calcoli effettuati
all’interno dello stato per determinare
in quale stato andare successivamente. Molte applicazioni richiedono uno
stato di inizializzazione, seguito da
uno stato di default, dove è possibile
eseguire molte azioni differenti.
Le azioni eseguite possono dipendere
da input precedenti e correnti, nonché
da altri stati.
Per eseguire le azioni di azzeramento
viene utilizzato comunemente uno stato di chiusura.
ESEMPIO DI MACCHINA
A STATI IN LABVIEW
Il modo migliore per rappresentare
questo tipo di sistema di controllo è
quello di utilizzare una macchina a stati. Il modello di progettazione basato
su macchina a stati è uno dei modelli di
progettazione più utili e diffusi per
LabVIEW; potete implementare qualsiasi algoritmo che possa essere esplicitamente descritto da un diagramma a
stati o schema di flusso. Una macchina
a stati normalmente illustra un algoritmo decisionale di media complessità,
come una routine diagnostica o un
controllore di processo.
Una macchina a stati, che si può definire con maggiore precisione macchina a stati finiti, consiste di un insieme
di stati e di una funzione di transizione
che mappa il passaggio allo stato successivo. Una macchina a stati completa dovrebbe essere progettata per eseguire azioni d’ingresso, in attività dello
stato, o di uscita.
19
LabVIEW_05:LabVIEW_05
14-02-2008
15:16
Pagina 20
TIPS & TECHNIQUES
05
Per costruire questa applicazione, il
primo passo è quello di mappare la
logica e i punti di I/O. Poiché questa
applicazione implica una sequenza di
passi, uno schema di flusso è un ottimo tool per pianificare l’applicazione
stessa. Qui sotto sono riportati uno
schema di flusso per l’applicazione e
un elenco dei segnali di I/O.
Ogni stato in una macchina a stati esegue un’azione unica e richiama altri
stati. Le transizioni fra gli stati dipendono dal verificarsi o meno di qualche
condizione o sequenza.
Tradurre il diagramma di transizione di
stato in uno schema a blocchi
LabVIEW richiede i seguenti componenti:
• Case structure - Contiene un caso
per ogni stato e il codice per eseguire ciascuno stato
• Shift register (registro a scorrimento) - Contiene le informazioni di
transizione fra gli stati
• State
functionality code Implementa la funzione dello stato
• Transition code - Determina lo stato
successivo nella sequenza
Per questo esempio utilizzeremo I/O
simulati invece di I/O fisici, in modo da
potere testare la nostra logica. A tale
scopo, utilizzeremo una variabile globale invece di VI di lettura/scrittura.
Questo è un modo comodo per testare
la nostra logica con controlli e indica-
20
tori interattivi prima della distribuzione
sull’hardware. La capacità di simulare
facilmente I/O è un vantaggio di que-
sta architettura.
Poiché uno stato nella nostra macchina presenta processi paralleli, costruiremo una seconda macchina a stati
per rappresentare la logica parallela e
richiamarli in quello stato.
Usciremo dallo stato solo quando
entrambi i processi paralleli saranno
terminati.
LABVIEW STATECHART MODULE
L’esempio precedente è stato costruito
utilizzando le strutture fondamentali di
LabVIEW: cicli, sequenze e strict type
def enum. Con LabVIEW 8.5 è nato un
nuovo modulo, il LabVIEW StateChart
Module. Si tratta di un nuovo
editor di LabVIEW che vi permette di costruire rapidamente
una logica completa per macchine a stati, combinando
opportunamente diagrammi di
stato multipli e VI di LabVIEW
in applicazioni complesse.
Inoltre, può essere eseguito sia
su Windows sia su target realtime ed FPGA. Lo StateChart
Module è particolarmente utile
se dovete gestire più transizioni possibili da uno stato o se
volete che eventi specifici attivino una transizione da stati
multipli. Per esempio, sulla
base di un comando fornito dall’operatore potreste volere abortire la produzione da qualsiasi stato. Lo
StateChart Module vi permette di programmare facilmente il sistema in
modo che esegua una transizione da
qualsiasi stato e di dare priorità alle
transizioni in modo che il comando di
interruzione venga
eseguito anche se
altre transizioni
vengono attivate
nello stesso tempo.
Tutte le funzionalità dello StateChart
Module possono
essere programmate in LabVIEW, ma
il
modulo
StateChart migliora
nettamente il tempo di sviluppo ed è molto più facile da
leggere e correggere rispetto alle macchina a stati tradizionali scritte in
LabVIEW. Si raccomanda quindi fortemente a chiunque abbia necessità di
costruire applicazioni di controllo macchina.
MODIFICA DELL’ESEMPIO
Il modo più semplice per iniziare questo progetto è quello di modificare
l’esempio esistente. In questo paragrafo procederemo con la modifica del
precedente esempio della miscelazione
chimica, dove è stato utilizzato il diagramma di stato per costruire
l’applicazione. Ci sono quattro passi
principali:
1. Modificate I/O Scan Task per leggere e scrivere sugli I/O fisici della
vostra applicazione.
2. Modificate la routine di inizializzazione per scrivere i valori di default
dei vostri output fisici.
3. Modificate il Task 1 per mappare gli
I/O. Cambierete lo StateChart, il
Read Inputs Local.vi e il Write
Inputs Local.vi.
4. Modificate/riscrivete lo StateChart per
adattarlo alla vostra applicazione.
MODIFICA DI I/O SCAN TASK
Aprite Chemical Mixing.lvproj. Poiché
la vostra applicazione utilizzerà I/O differenti, dovrete modificare I/O Scan
Task per leggere e scrivere sui vostri
I/O. Ricordate che gli I/O possono esse-
LabVIEW_05:LabVIEW_05
12-02-2008
17:33
Pagina 21
TIPS & TECHNIQUES
MODIFICA DELLA ROUTINE
DI INIZIALIZZAZIONE
Poiché la vostra applicazione utilizzerà
I/O differenti, dovrete modificare la
routine di inizializzazione per impostare i valori di default dei vostri output.
1. Aprite Default Outputs.vi e modifire I/O fisici, I/O in rete o I/O simulati.
1. Aprite il controllo strict type custom
IO Cluster.ctl. Esso definisce tutti gli
I/O del vostro sistema.
2. Cambiate i controlli nel cluster con
quelli richiesti per la vostra applicazione. Salvate IO Cluster.ctl.
LabVIEW aggiornerà automaticamente la tabella di IO Global.vi con
queste modifiche.
3. Aprite Write Outputs.vi e Read
Inputs.vi.
4. Modificate i VI in modo che scrivano e leggano i vostri I/O fisici inve-
catelo per impostare i valori di
default dei vostri output.
MODIFICA DEL TASK 1
PER MAPPARE GLI I/O
Ora avete un I/O Scan Task completo e
routine di inizializzazione e chiusura.
Ora dovete modificare la logica. Poiché
ogni task logico crea una copia locale
degli I/O per la sua esecuzione, dovete
rimappare gli I/O
1. Sotto il folder StateChart aprite
Outputs.ctl e Inputs.ctl. Modificateli
per adattarli agli I/O della vostra
applicazione.
2. Aggiornate Write Outputs Local.vi e
Read Outputs Local.vi per leggere e
scrivere i vostri I/O.
Modifica/riscrittura dello StateChart
Ora dovete inserire la vostra logica.
Potete farlo modificando/riscrivendo lo
StateChart in modo che esegua la logi-
Nota sull’autore
Chris Washington è Product Manager di
LabVIEW in National Instruments
Readerser vice.it n.511
ce degli I/O simulati.
5. Aprite Shutdown Outputs.vi. Modificate il VI in modo che scriva sui vostri
I/O fisici invece degli I/O simulati.
SCELTI PER TE
Abbiamo scelto per te alcune risorse utili per approfondire le tua conoscenza di LabVIEW.
Forum
ILVG.it www.ilvg.it
LabVIEW www.ni.com/labviewzone
LAVA - LabVIEW Advanced Virtual Architects http://forums.lavag.org/home.html
Community
DevZone www.zone.ni.com
Community on ni.com http://community.ni.com/
Mindstorm NXT http://www.ni.com/academic/mindstorms/community.htm
Contenuti
LabVIEW on ni.com www.ni.com/labview
LabVIEW on ni.com/italy www.ni.com/labview/i
LabVIEW Jobs http://www.labviewjobs.com/
The VI Road Show http://viroadshow.blogspot.com/
21
LabVIEW_05:LabVIEW_05
12-02-2008
16:27
Pagina 22
D A L L A T E O R I A A L L A P R AT I C A
05
SISTEMA ‘LOW COST’ DI
MONITORAGGIO MACCHINARIO
R. Russo
ROTANTE
Il monitoraggio delle vibrazioni è ampiamente impiegato per identificare i
malfunzionamenti o per effettuare la manutenzione su condizione del macchinario rotante
dell’applicazione descritta nell’articolo era
’obiettivo
quello di sviluppare un sistema di monitoraggio di
L
macchinario rotante, facilmente configurabile per ogni
applicazione, eseguire in tempo reale la sorveglianza con
visualizzazione allarmi ed identificazione di eventuali inconvenienti attuali o imminenti ed analizzare i dati in post processing con emissione report dello stato del macchinario, il
tutto con un sistema a basso costo ma con prestazioni adeguate per il tipo di macchina sotto esame.
22
INTRODUZIONE
Il monitoraggio delle vibrazioni è ampiamente impiegato
per identificare i malfunzionamenti o per effettuare la
manutenzione su condizione del macchinario rotante.
I sistemi disponibili sul mercato non sempre consentono di
effettuare in modo semplice, intuitivo e soprattutto a costi
contenuti le funzioni tipiche di questo processo, quali: configurazione per il tipo di macchinario, sorveglianza in tempo
reale, identificazione dell’avaria su segnalazione di allarme,
LabVIEW_05:LabVIEW_05
12-02-2008
16:27
Pagina 23
D A L L A T E O R I A A L L A P R AT I C A
o previsione anticipata di un eventuale guasto futuro, analisi dei dati acquisiti e generazione del report sulla stato
della macchina.
Il sistema qui illustrato è costituito da una scheda multifunzione National Instruments e da un insieme di software
applicativi sviluppati in NI LabVIEW.
L’acquisizione si basa sulla scheda NI PCI-6284 scelta per
numero di canali di ingresso (32 ADC), risoluzione (18 bit),
banda passante (500 kHz distribuibili su uno o più canali),
filtro passa basso a 45 kHz, immunità dalle interferenze
elettromagnetiche presenti nel PC, interfaccia con i frontend NI BNC-2090, possibilità di acquisizione sincrona con
encoder ed infine per il suo costo contenuto.
Il programma sviluppato con NI LabVIEW si basa su tre
moduli aventi le funzioni principali di: configurazione,
acquisizione/monitoraggio ed analisi/reporting.
Nella fig. 1 è illustrato il pannello real time del sistema.
MODULO DI CONFIGURAZIONE
Il modulo di configurazione legge da un file Excel la specifica del monitoraggio, definita da:
• identificazione del macchinario: tipo, modello, ubicazione;
• modello matematico del cinematismo: rotismi, cuscinetti;
• punti di misura, tipo di trasduttori, (accelerometri o spostamento a laser) e curva di taratura;
• condizioni di funzionamento
Tali parametri, convertiti in un file binario, vengono associati al macchinario da monitorare al momento in cui viene
attivato il modulo di acquisizione.
MODULO DI ANALISI E REPORTING
Questo modulo, dal data base di ogni macchinario, richiama i segnali temporali o gli spettri acquisiti e consente di:
• seguire l’evoluzione degli spettri con diagrammi waterfall;
• confrontare gli spettri di un punto di misura al variare
della condizione di funzionamento o in funzione del
tempo trascorso;
• identificare i picchi degli spettri con: squilibrio, disallineamento, frequenze di ingranamento, modulazione di
ampiezza, modulazione di fase;
• effettuare l’analisi di tendenza dei rotismi identificati sullo
spettro;
• rappresentare i risultati di prova su fogli Excel sia come
spettri che come analisi di tendenza;
• infine, stendere in modo sintetico lo stato di funzionamento del macchinario.
MODULO DI SETUP E ACQUISIZIONE
Questo modulo ha la duplice funzione di stabilire la modalità di acquisizione e di effettuare il monitoraggio in real time.
La modalità di acquisizione definisce:
Note sull’autore
R.Russo, AgustaWestland
Readerser vice.it n. 515
Figura 1
• scelta macchinario da monitorare;
• scelta condizione di funzionamento;
• scelta dei parametri da acquisire;
• metodo di salvataggio dei segnali temporali
o degli spettri;
• frequenza di campionamento, righe spettrali,
finestra temporale;
• caricamento degli spettri di riferimento e
definizione della curva limite con cui deter
minare le soglie di allarme per ogni punto di
misura
Durante l’acquisizione, lo spettro di riferimento
viene sincronizzato con quello di prova, ed in
questa fase è possibile:
• effettuare l’autorange di ogni canale;
• visualizzare, su dei grafici da uno a 16: il
segnale temporale, lo spettro istantaneo o
medio, con scala in velocità o accelerazione;
• sovrapporre allo spettro in acquisizione la
relativa curva limite ricavata dallo spettro di riferimento;
• visualizzare gli allarmi di superamento curva limite;
• identificare i picchi dello spettro con: rotazione alberi,
ingranamenti, modulazione di fase, modulazione di
ampiezza, frequenze tipiche dei cuscinetti (Bpfo, Bpfi, BSF,
FTF) e relative armoniche;
• rilevare i parametri statistici dei segnali in acquisizione
(rms, kurtosis, ecc.);
• rappresentare i diagrammi ad orbita di due trasduttori
ortogonali per identificare squilibrio o disallineamento;
• salvare gli spettri in modo: singolo, continuo o circolare;
• memorizzare e visualizzare l’andamento dei picchi dello
spettro relativo al cinematismo del macchinario.
23
Images
24-07-2006
16*55
Pagina 1
readerservice.it n.15555
LabVIEW_05:LabVIEW_05
12-02-2008
16:28
Pagina 25
SCUOLA DI LABVIEW
05
Training per principianti
a cura di Matteo Foini
MIGLIORARE UN VI ESISTENTE
Quando si eredita un VI da altri sviluppatori, questi possono aver aggiunto delle funzionalità senza fare
attenzione al progetto, rendendo sempre più difficile aggiungere in seguito nuove caratteristiche al VI
obsolescenza del software è un problema comune
quando ereditate un VI da altri sviluppatori. Esso nasce
dal fatto che gli altri sviluppatori possono aver aggiunto delle funzionalità senza fare attenzione al progetto, rendendo così sempre più difficile aggiungere in seguito caratteristiche nuove al VI stesso.
Una soluzione all’obsolescenza è quella di effettuare il
refactoring del software: un processo di riprogettazione
attuato per renderlo più leggibile e manutenibile, in modo
tale che il costo del cambiamento non aumenti nel tempo.
Il refactoring cambia la struttura interna di un VI per renderlo più leggibile e manutenibile, senza cambiarne il suo
comportamento osservabile.
Questo articolo analizza dei metodi per effettuare il refactoring, presentando alcuni problemi tipici della gestione del
codice ereditato.
L
’
A. REFACTORING DI CODICE EREDITATO
Scrivete applicazioni software di grandi dimensioni e/o di
lunga durata tenendone sempre presente la leggibilità perché il costo della lettura e modifica del software può verosimilmente superare il costo di realizzazione. Costa di più ad
uno sviluppatore leggere e capire un codice mal progettato
che leggere un codice creato per essere leggibile. In generale, sono destinate più risorse alla lettura e modifica del software che all’implementazione iniziale. Perciò i VI facili da
leggere e modificare valgono di più di quelli che non lo sono.
Sebbene non sembri intuitivo, un software ben progettato
facilita un suo rapido sviluppo in quanto meno suscettibile ad
obsolescenza. Se un sistema comincia a diventare obsoleto,
potete spendere molto tempo a rintracciare le cause di ciò, e
questo non è produttivo. Anche i cambiamenti possono
richiedere più tempo perché è più difficile capire il sistema.
Figura 1 - VI ereditato
25
LabVIEW_05:LabVIEW_05
12-02-2008
16:28
Pagina 26
SCUOLA DI LABVIEW
05
Figura 2 - VI ereditato dopo il refactoring
Considerate il VI ereditato presente nella fig. 1.
Potete eseguire il refactoring del codice come mostrato nella fig. 2. Il codice che ha subito il refactoring fa le stesse
cose del codice ereditato, ma è più leggibile. Il codice ereditato vìola molte delle linee guida che avete appreso sullo
sviluppo dello schema a blocchi. Attraverso il refactoring,
potete riprogettare un VI difficile da leggere e manutenere
e renderlo leggibile e manutenibile. Questo ne aumenta il
valore perché diventa più facile aggiungere delle caratteristiche o farne il debug. Il processo di refactoring non cambia il comportamento osservabile. Cambiare il modo in cui il
VI interagisce con altri client (utenti o altri VI) introduce dei
rischi che non sono presenti quando vi limitate a cambiamenti visibili solo agli sviluppatori. Il beneficio di mantenere i due tipi di cambiamenti separati risiede nel fatto che
potete gestire meglio i rischi potenziali.
CONFRONTO TRA REFACTORING E OTTIMIZZAZIONE
DELLE PRESTAZIONI
Sebbene possiate effettuare dei cambiamenti che ottimizzino le prestazioni di un VI, non è detto che ciò debba anche
risolversi nel contempo in una procedura di refactoring, che
interviene specificamente per cambiare la struttura interna
di un VI al fine di renderlo più facile da leggere, capire e
manutenere.
Un’ottimizzazione delle prestazioni non è un refactoring
perché l’obiettivo dell’ottimizzazione non è di rendere il VI
facile da capire e modificare. Infatti, l’ottimizzazione delle
prestazioni può rendere i VI più difficili da leggere e da capire, cosa che potrebbe essere un compromesso accettabile in
certi casi.
A volte dovete sacrificare la leggibilità a prestazioni migliori, comunque la leggibilità ha di solito la priorità rispetto
alla velocità di esecuzione.
26
QUANDO FARE IL REFACTORING
Il momento giusto per fare il refactoring è quando state
aggiungendo delle funzionalità a un VI o ne state facendo il
debug. Sebbene siate tentati di riscrivere completamente il
VI, dovete riconoscere che c’è del valore in un VI che funziona, anche se lo schema a blocchi non è leggibile. I candidati adatti alla riscrittura completa sono i VI che non funzionano o i VI che soddisfano solo una piccola parte delle
vostre necessità. Potete anche riscrivere VI semplici che
capite bene. Considerate ciò che funziona bene in un VI esistente prima di decidere di effettuare il refactoring. Il refactoring è un processo metodico di ristrutturazione di un VI
che funziona bene, ma è scritto in un modo che ne ostacola la leggibilità, la scalabilità e la manutenibilità.
B. PROBLEMI TIPICI
Quando effettuate il refactoring di un VI, gestite il rischio di
introdurre dei bachi facendo piccoli cambiamenti incrementali al VI e verificando il VI dopo ogni cambiamento.
Per migliorare lo schema a blocchi, fate piccoli cambiamenti cosmetici prima di affrontare problemi più impegnativi.
Per esempio, è più facile trovare del codice duplicato se lo
schema a blocchi è ben organizzato e i terminali sono ben
etichettati.
Sono molti i problemi che possono complicare il lavoro con
un VI ereditato. L’elenco seguente descrive problemi tipici e
soluzioni di refactoring per rendere i VI ereditati più leggibili.
• Lo schema a blocchi è troppo disorganizzato
Migliorate la leggibilitò di un VI disorganizzato spostando
degli oggetti all’interno dello schema a blocchi. Per sezioni del VI che sono disorganizzate potete anche creare dei
subVI. Per migliorare la leggibilità del VI inserite dei commenti sulle aree che sono disorganizzate.
LabVIEW_05:LabVIEW_05
12-02-2008
16:28
Pagina 27
SCUOLA DI LABVIEW
• Lo schema a blocchi usa nomi di oggetti scorretti e icone
poco significative
I VI ereditati spesso contengono controlli e indicatori che
non hanno nomi significativi. Per esempio, il nome del
controllo numero 1, mostrato nella fig. 3, non indica il suo
scopo. Il controllo 2 è lo stesso controllo, rinominato per
rendere lo schema a blocchi più leggibile e comprensibile.
Figura 3 - Assegnazione del nome ai controlli
1 Controllo privo di un nome significativo
2 Controllo rinominato in modo più efficiente
mi chiamanti aperti del VI con il nuovo nome. ‘Acq Window
Temperature.vi’ è un nome più significativo per il VI.
Anche l’icona del VI dovrebbe chiarire lo scopo del VI. Le icone di default usate per i VI 1 e 2 nella fig. 4 non rappresentano lo scopo del VI. Potete migliorare la leggibilità del VI assegnandogli un’icona significativa, come mostrato per il VI 3.
Rinominando i controlli e i VI e creando icone dei VI significative, potete migliorare fortemente la leggibilità di un VI
ereditato.
• Il diagramma a blocchi utilizza logica superflua
Leggendo lo schema a blocchi nella fig. 5, notate che
esso contiene della logica superflua. Se una porzione
dello schema a blocchi non va in esecuzione, cancellatela.
Capire il codice che va in esecuzione è difficile, ma
cercare di capire il codice che non va mai in esecuzione
è inefficiente e rende inutilmente complicato lo schema
a blocchi.
Anche i nomi e le icone dei VI sono importanti per migliorare la leggibilità di un VI. Per esempio, il nome ‘My Acqu.vi’,
mostrato in alto nella fig. 4, non fornisce alcuna informazione sugli scopi del VI. Potete dare al VI un nome più significativo salvando una copia del VI con un nuovo nome e
sostituendo tutte le istanze del VI con il VI ribattezzato.
Un metodo più semplice consiste nell’aprire tutti i programmi chiamanti del VI che volete rinominare, quindi salvare il
VI con un nuovo nome. Quando usate questo metodo,
LabVIEW cambia automaticamente i link di tutti i programFigura 5 - Logica super flua
• Lo schema a blocchi presenta logica duplicata
Se un VI contiene della logica duplicata, dovreste sempre
effettuare il refactoring del VI creando un subVI per la
logica duplicata. Questo può migliorare la leggibilità
e verificabilità del VI.
• Lo schema a blocchi non impiega la programmazione
a flusso di dati
Se nello schema a blocchi ci sono strutture sequenziali
e variabili locali, il VI con ogni probabilità non fa uso del
flusso di dati per determinare il flusso di programmazione.
Dovete sostituire la maggioranza delle strutture
sequenziali con schemi di progetto basati su macchine
a stati. Cancellate le variabili locali ed effettuate
collegamenti diretti quando possibile.
L’uso più accettabile delle variabili locali è quello
di far diventare indicatore un controllo.
Figura 4 - Migliorare il nome e l’icona di un SubVI
1 VI chiamato in modo non significativo
2 VI rinominato in modo più efficiente
3 Nome e icona del VI significativi
• Lo schema a blocchi utilizza algoritmi complicati
Gli algoritmi complicati possono rendere un VI difficile
da leggere.
27
LabVIEW_05:LabVIEW_05
12-02-2008
16:28
Pagina 28
SCUOLA DI LABVIEW
05
Figura 6 - VI con un algoritmo complicato
Figura 7 - VI sottoposto a refactoring
• Lo schema a blocchi è troppo grande
Un VI che ha uno schema a blocchi più grande della
dimensione dello schermo è difficile da leggere. Dovete
effettuare il refactoring del VI per renderlo più piccolo.
L’azione di scorrimento (scrolling) complica la lettura di
uno schema a blocchi e la comprensione del codice.
28
Potete migliorare uno schema a blocchi troppo grande
spostando gli oggetti.
Un’altra tecnica per ridurre lo spazio sullo schermo che
uno schema a blocchi occupa è di creare dei subVI per
sezioni di codice all’interno dello schema a blocchi.
Se non potete ridurre lo schema a blocchi in maniera
da far lo entrare nello schermo, limitate lo scorrimento
ad una direzione.
Note sull’autore
Laureato in ingegneria nucleare al Politecnico di Milano, Matteo
Foini lavora in qualità di Technical Marketing Engineer presso
National Instruments Italy
Readerser vice.it n. 525
Quando fate il refactoring di un algoritmo complicato
effettuate piccoli cambiamenti per volta e verificate frequentemente il codice, essendo alta la probabilità di
introdurre errori.
In alcuni casi potete fare il refactoring di un algoritmo
complicato usando funzioni integrate in LabVIEW.
Per esempio, il VI nella fig. 6 effettua il controllo
di nome utente e password rispetto a un database.
Potreste effettuare il refactoring di questo VI utilizzando delle funzioni integrate per cercare stringhe, come indicato nella fig. 7.
LabVIEW_05:LabVIEW_05
12-02-2008
16:28
Pagina 29
SCUOLA DI LABVIEW
05
Training per esperti
a cura di Matteo Foini
RICHIAMARE SHARED LIBRARY
IN LABVIEW
Vediamo come utilizzare il Call Library Function Node per richiamare Dynamic Link Library (shared library) su Windows
È
possibile utilizzare LabVIEW per richiamare codice
scritto in altri linguaggi nei modi seguenti:
• Mediante protocolli specifici (platform-specific).
• Mediante il Call Library Function Node per richiamare i
seguenti tipi di shared library:
- Dynamic Link Library (DLL) su Windows
- Framework su Mac OS
- Shared Library su Linux
Questo articolo tratta l’uso del Call Library Function Node
per richiamare Dynamic Link Library (shared library) su
Windows.
PANORAMICA SULLE SHARED LIBRARY
Su Windows, una shared library si chiama DLL.
Una shared library è una libreria di dati o funzioni eseguibili utilizzabili da un’applicazione Windows.
Tipicamente, una shared library mette a disposizione una o
più funzioni particolari a cui un programma può accedere
creando un link statico o dinamico alla shared library.
Un link statico rimane costante durante l’esecuzione del
programma, mentre un link dinamico viene creato dal programma quando è necessario. La libreria è memorizzata
come file binario. É possibile utilizzare qualsiasi linguaggio
per scrivere delle DLL, purché le DLL possano essere richiamate mediante una delle convenzioni di chiamata supportate da LabVIEW: stdcall o C.
I metodi generali descritti qui per le DLL valgono anche per
altri tipi di shared library.
Consultate la directory labview\examples\dll per esempi sull’uso delle shared library.
CHIAMATE A SHARED LIBRARY
Questo paragrafo descrive l’utilizzo di una DLL in LabVIEW.
DESCRIZIONE E DEFINIZIONE DI SHARED LIBRARY
E’ possibile richiamare la maggior parte delle shared library
standard con il Call Library Function Node. Su Windows, tali
shared library sono DLL, su Mac OS, sono Framework e su
Linux, sono Shared Library. Il Call Library Function Node include un numero elevato di tipi dato e convenzioni di chiamata:
potete utilizzarlo per richiamare le funzioni appartenenti alla
maggior parte delle librerie standard e personalizzate.
FUNZIONI, VANTAGGI E LIMITAZIONI DELLE DLL
Le DLL hanno i seguenti vantaggi:
• È possibile cambiare la DLL senza cambiare alcuno dei VI
che si collegano alla DLL, purché non vengano modificati i
prototipi delle funzioni.
• Praticamente tutti i moderni ambienti di sviluppo forniscono supporto per la creazione di DLL.
Il Call Library Function Node è appropriato soprattutto
quando si desidera richiamare codice esistente o si ha familiarità con il processo di creazione di shared library standard. Poiché una libreria utilizza un formato standard in
ambienti di sviluppo diversi, è possibile utilizzare pressoché
qualsiasi ambiente di sviluppo per creare una libreria richiamabile da LabVIEW. Consultate la documentazione del
vostro compilatore per determinare se potete creare shared
library standard.
Il compilatore di LabVIEW può generare codice abbastanza
velocemente per la maggior parte dei task di programmazione. Potete richiamare shared library da LabVIEW per svolgere task che un linguaggio basato su testo può eseguire
più facilmente, come task time-critical. Potete inoltre utilizzare shared library per task che non è possibile eseguire
direttamente dallo schema a blocchi, come la chiamata di
routine di sistema per le quali non esiste alcuna funzione di
LabVIEW corrispondente.
Le shared library possono anche collegare LabVIEW a codice esistente, benché possa essere necessario modificare il
codice in modo che usi i tipi di dato di LabVIEW corretti. Le
shared library sono eseguite in modo sincrono, pertanto
LabVIEW non può utilizzare il thread di esecuzione utilizzato da questi oggetti per altri task.
Quando un VI è in esecuzione, LabVIEW monitora
l’interfaccia utente, inclusi menù e tastiera. Nelle applicazioni multithread, LabVIEW usa un thread separato per i
task dell’interfaccia utente. Nelle applicazioni a thread singolo, LabVIEW commuta fra i task dell’interfaccia e i VI in
esecuzione.
Quando il codice oggetto di una shared library viene eseguito, esso assume il controllo del suo thread di esecuzione.
Se un’applicazione ha solo un singolo thread di controllo,
l’applicazione attende finché il codice oggetto non termina.
Nei sistemi operativi a thread singolo come Mac OS, le shared library impediscono anche l’esecuzione di altre applica-
29
LabVIEW_05:LabVIEW_05
12-02-2008
16:28
Pagina 30
SCUOLA DI LABVIEW
05
zioni. LabVIEW non può interrompere il codice oggetto in
esecuzione, pertanto non potete resettare un VI che sta eseguendo una shared library finché l’esecuzione non termina.
Se volete scrivere una shared library che esegue un lungo
task, fate attenzione al fatto che LabVIEW non può eseguire altri task nello stesso thread mentre tali oggetti vengono
eseguiti.
METODO PER CHIAMARE SHARED LIBRARY
Utilizzate il Call Library Function Node per chiamare direttamente una DLL Windows a 32 bit, un Framework Mac OS
o una funzione Shared Library Linux. Con questo nodo,
potete creare un’interfaccia in LabVIEW per chiamare librerie esistenti o nuove librerie specificamente scritte per l’uso
con LabVIEW. National Instruments raccomanda l’uso del
Call Library Function Node per creare un’interfaccia verso
codice esterno. Cliccate con il tasto destro sul Call Library
Function Node e selezionate Configure dal menù breve
per aprire la finestra di dialogo Call Library Function,
come illustrato in figura 1.
Utilizzate la finestra di dialogo per specificare la libreria, la
funzione, i parametri, il valore di ritorno per l’oggetto e le
convenzioni di chiamata su Windows.
Calling Conventions della finestra di dialogo Call
Library Function. La convenzione di default è C.
(Windows) Potete anche utilizzare la convenzione
Windows standard, stdcall.
CONFIGURAZIONE DEI PARAMETRI
Inizialmente, il Call Library Function Node non ha parametri e
restituisce un tipo Void. Il tipo di ritorno viene restituito sul
terminale destro della coppia superiore di terminali. Se il tipo
di ritorno è Void, la coppia superiore di terminali è inutilizzata. Ogni coppia addizionale di terminali corrisponde ad un parametro aggiunto nell’elenco
che si trova cliccando sul tab Parameters della
finestra Call Library Function. La figura 2 illustra
un nodo con un tipo di ritorno Void, un parameFigura 2
tro stringa ed un parametro numerico.
TIPO DI RITORNO
Come tipo di ritorno è possibile impostare Type a Void,
Numeric o String. Void è disponibile solo per il tipo di ritorno e non è disponibile per i parametri. Utilizzate Void per il
tipo di ritorno se la vostra funzione non restituisce alcun
valore. Anche se la funzione che richiamate restituisce un
valore, potete utilizzare Void per il tipo di ritorno. Quando la
funzione restituisce un valore e selezionate Void come tipo
di ritorno, il valore restituito dalla funzione viene ignorato.
Nota Se la funzione che state richiamando restituisce un tipo di dato non elencato, scegliete un tipo di
dato di ritorno che abbia le stesse dimensioni dati di quello
restituito dalla funzione.
Per esempio, se la funzione restituisce un tipo dato char, utilizzate un intero senza segno di 8 bit. Una chiamata a una
funzione in una DLL non può restituire un puntatore, perché
non vi sono tipi puntatore in LabVIEW. Tuttavia, potete specificare il tipo di ritorno come un intero avente le stesse
dimensioni del puntatore. LabVIEW tratta quindi l’indirizzo
come un semplice intero, che potete passare a future chiamate della DLL.
Figura 1 - Finestra Call Library Function
AGGIUNTA E CANCELLAZIONE DI PARAMETRI
Cliccando infine OK,LabVIEW aggiorna il nodo in base alle
vostre impostazioni, visualizzando il numero corretto di terminali ed impostando i terminali in base ai tipi di dato corretti.
Quando configurate i parametri, la finestra Function
Prototype visualizza (in modalità di sola lettura) il prototipo C per la funzione che state costruendo.
IMPOSTAZIONE DELLA CONVENZIONE DI CHIAMATA
Selezionate la convenzione di chiamata desiderata tra le
30
Per aggiungere parametri al Call Library Function Node, cliccate il pulsante Add a Parameter (simbolo: “+”). Per
rimuovere un parametro, cliccate il pulsante Delete the
selected parameter (simbolo: “x” rossa).
SELEZIONE DEL TIPO DI PARAMETRO
Utilizzate il menu a tendina Type per indicare il tipo di ciascun parametro. Dopo la selezione, potete editare il nome
(nel campo Name) per cambiarlo in qualcosa di più descrittivo. Potete selezionare fra i seguenti tipi di parametri:
• Numeric
LabVIEW_05:LabVIEW_05
12-02-2008
16:28
Pagina 31
SCUOLA DI LABVIEW
• Array
• String
• Waveform
• Digital Waveform
• Digital Data
• ActiveX
• Adapt to Type
• Instance Data Pointer
Dopo avere selezionato una voce dal menù a tendina Type,
vedrete comparire altri elementi che potete utilizzare per
indicare dettagli circa il parametro e la modalità di passaggio
dei dati alla funzione di libreria.
Il Call Library Function Node ha una serie di diversi elementi
per i tipi di parametri, a causa della varietà di tipi di dati
richiesti da librerie differenti. Consultate la documentazione
della libreria che richiamate per determinare quale tipo di
parametro utilizzare. I paragrafi seguenti discutono i differenti tipi di parametri disponibili.
(Windows) Consultate labview\examples\dll\data passing\Call Native Code.llb per un esempio d’uso dei tipi di
dati nelle shared library.
NUMERIC
Per i tipi di dati numerici, dovete indicare l’esatto tipo
numerico utilizzando il menù a tendina Data Type. Potete
scegliere fra i seguenti tipi di dati:
• interi a 8, 16, 32 e 64 bit con segno e senza segno
• numeri a 4 byte, in singola precisione
• numeri a 8 byte, in doppia precisione
Nota I numeri a precisione estesa ed i numeri complessi possono essere passati selezionando Adapt to
Type dal menù a tendina Type. Tuttavia, le librerie standard generalmente non utilizzano numeri a precisione estesa e numeri complessi. Utilizzate il menu a tendina Pass per
indicare se volete passare il valore o un puntatore al valore.
Nota Non cercate di ridimensionare un array con
funzioni di sistema, come realloc, altrimenti potreste
mandare in crash il vostro sistema. Utilizzate invece una
delle funzioni di gestione del Code Interface Node (CIN),
come NumericArrayResize.
STRING
Utilizzate il menù a tendina String format per indicare il formato stringa. Potete scegliere fra i seguenti formati stringa:
• C String Pointer - una stringa seguita da un carattere
nullo (null character)
• Pascal String Pointer - una stringa preceduta da un
byte di lunghezza
• String Handle - un puntatore a un puntatore a quattro
byte per l’informazione di lunghezza, seguito dai dati della
stringa
• String Handle Pointer
Selezionate un formato stringa che la funzione di libreria si
aspetta. La maggior parte delle librerie standard si aspetta
una stringa C o una stringa Pascal. Se la funzione di libreria
che state chiamando è scritta per LabVIEW, potreste preferire l’uso del formato string handle.
Nota Non cercate di ridimensionare un array con
funzioni di sistema, come realloc, altrimenti potreste
mandare in crash il vostro sistema.
OPZIONI STRINGA
LabVIEW memorizza le stringhe come array, ossia come
strutture puntate da handle. Il Call Library Function Node
può utilizzare puntatori a stinga in stile C e Pascal o
LabVIEW string handle. La figura 3 mostra un esempio di
LabVIEW string handle.
ARRAY
Utilizzate il menù a tendina Data Type per indicare il tipo
di dato dell’array. Potete scegliere fra gli stessi tipi di dati
disponibili per i parametri numerici. Specificate le dimensioni dell’array in Dimensions.
Utilizzate il menù a tendina Array format per eseguire una
delle scelte seguenti:
• Array Data Pointer passa un puntatore unidimensionale al dato array.
• Array Handle passa un puntatore a un puntatore che
punta ad un valore a quattro byte per ogni dimensione,
seguito dai dati.
• Array Handle Puntatore passa un puntatore a un array
handle.
Figura 3 - Esempio di LabVIEW string handle
Si può pensare ad una stringa come ad un array di caratteri. Assemblando i caratteri in ordine si forma una stringa.
LabVIEW memorizza le stringhe in uno speciale formato, nel
quale i primi quattro byte dell’array di caratteri formano un
intero a 32 bit con segno che memorizza la quantità di
caratteri che appare nella stringa.
Quindi, una stringa con n caratteri richiede n + 4 byte per
essere memorizzata in memoria. Per esempio, la stringa text
contiene quattro caratteri.
31
LabVIEW_05:LabVIEW_05
12-02-2008
16:28
Pagina 32
SCUOLA DI LABVIEW
Quando LabVIEW memorizza la stringa, i primi quattro byte
contengono il valore 4 come numero a 32 bit con segno e
ciascuno dei successivi quattro byte contiene un carattere
della stringa.
Il vantaggio di questo tipo di memorizzazione della stringa
è che nella stringa sono ammessi caratteri NULL. Il formato
stringa Pascal è quasi identico al formato stringa di
LabVIEW, ma invece di memorizzare la lunghezza della
stringa come un intero a 32 bit con segno, utilizza un intero a 8 bit senza segno. Ciò limita la lunghezza di una stinga tipo Pascal a 255 caratteri. In figura 4 è riportata una
rappresentazione grafica di una stringa Pascal.
Una stringa Pascal lunga n caratteri richiede n + 1 byte di
memoria per essere memorizzata.
Figura 4 - Rappresentazione grafica di una stringa Pascal
Le stringhe C sono probabilmente il tipo di stringhe con le
quali avrete a che fare più spesso.
Le analogie fra la stringa stile C e i normali array numerici
in C diventano molto più chiare se notate che le stringhe C
sono dichiarate come char *.
Le stringhe C non contengono alcuna informazione che
indichi direttamente la lunghezza della stringa, al contrario
delle stringhe LabVIEW e Pascal.
Le stringhe C utilizzano un carattere speciale, chiamato
carattere NULL, per indicare la fine della stringa, come illustrato in figura 5.
NULL ha un valore zero nel set di caratteri ASCII.
Notate che questo è il numero zero e non il carattere 0.
Tuttavia, se state acquisendo dati da uno strumento che
restituisce dati numerici sotto forma di una stringa binaria,
come è comune con gli strumenti seriali o GPIB, sono possibili valori uguali a zero nella stringa.
Per i dati binari dove potrebbero essere presenti dei NULL,
dovreste utilizzare un array di interi a 8 bit senza segno. Se
trattate la stringa come una stringa tipo C, il programma
ritiene erroneamente che sia stata raggiunta la fine della
stringa, mentre in effetti lo strumento sta restituendo un
valore numerico pari a zero.
WAVEFORM
Quando richiamate una shared library che include un tipo
dati waveform, non dovete specificare un valore numerico
dal menu a tendina Data Type; il valore di default è 8-byte
Double. Tuttavia, dovete specificare un valore in Dimensions.
Specificare 0 per una singola forma d’onda, 1 per un array
di forme d’onda.
LabVIEW non supporta array di forme d’onda di dimensione maggiore a 1.
DIGITAL WAVEFORM E DIGITAL TABLE
Specificare dimensione 0 per una singola forma d’onda o
dato digitale, 1 per un array di forme d’onda o dati digitali.
LabVIEW non supporta array di forme d’onda o dati digitali di dimensione maggiore a 1.
Nota Potete passare forme d’onda, forme d’onda
digitali e dati digitali tramite shared library, ma
attualmente non è supportato l’accesso ai dati all’interno
delle shared library.
ACTIVEX
Selezionate uno dei seguenti elementi dal menu a tendina
Data Type:
• ActiveX Variant Pointer passa un puntatore a dati ActiveX.
• IDispatch* Puntatore passa un puntatore all’interfaccia IDispatch di un server ActiveX Automation.
• Iunknown* Puntatore passa un puntatore all’interfaccia IUnknown di un server ActiveX Automation.
ADAPT TO TYPE
Figura 5 - Carattere NULL, indicatore di fine stringa in C
Pertanto, in C, una stringa contenente n caratteri richiede n
+ 1 byte di memoria per essere memorizzata, n byte per i
caratteri nella stringa ed un byte addizionale per il carattere di terminazione NULL.
Il vantaggio delle stringhe tipo C è che sono limitate nelle
dimensioni solo dalla memoria disponibile.
32
Utilizzate Adapt to Type per passare tipi di dati LabVIEW
arbitrari a DLL. I tipi di dati LabVIEW arbitrari vengono passati alle DLL nei modi seguenti:
• Gli scalari sono passati per riferimento. Alla libreria viene
passato un puntatore allo scalare.
• Gli array e le stringhe sono passati in base all’impostazione di Data Format.
Potete scegliere fra le seguenti opzioni di Data Format:
- Handles by Value passa l’handle alla libreria. L’handle
non è NULL.
LabVIEW_05:LabVIEW_05
14-02-2008
10:45
Pagina 33
PER LA VOSTRA
PUBBLICITÁ
SU QUESTE
- Pointers to Handles passa alla libreria un puntatore all’handle. Se l’handle è NULL, l’handle viene trattato come
una stringa o un array vuoti. Per impostare un valore quando l’handle è NULL, dovete allocare un nuovo handle.
• I cluster sono passati via reference.
• Gli elementi scalari negli array o cluster sono inline. Per
esempio, un cluster contenente un numerico viene passato
come un puntatore ad una struttura contenente un numerico.
• I cluster all’interno di array sono inline.
• Le stringhe e gli array all’interno di cluster vengono referenziati da un handle.
PAGINE
CONTATTATE
I NOSTRI
AGENTI
REGIONALI
Nota Quando uno o più parametri della funzione che
volete chiamare in una DLL sono di tipi inesistenti in
LabVIEW, assicuratevi che ogni parametro sia passato alla
funzione in un modo che permetta alla DLL di interpretare
correttamente i dati. Create un file scheletro .c dalla configurazione corrente del Call Library Function Node.
Osservando il file .c, potete determinare se LabVIEW passa
i dati in modo compatibile con la funzione della DLL. Potete
quindi eseguire gli eventuali aggiustamenti necessari.
LAVORARE CON TIPI DI DATI INSOLITI
Readerser vice.it n. 526
Potreste imbattervi in una funzione che si aspetta dati in
una forma che il Call Library Function Node non è in grado
di passare. Specificamente, il nodo non supporta strutture o
array contenenti un puntatore ad altri dati o strutture contenenti array flat che possono essere dimensionati in modo
variabile. Potete richiamare una funzione che si aspetta un
tipo di dato non supportato nei modi seguenti:
• Se il dato non contiene puntatori, potreste riuscire ad utilizzare la funzione Flatten to String per creare una stringa
contenente l’immagine binaria dei dati richiesti e passare
tale stringa come puntatore ad una stringa C. L’ingresso
byte order della funzione Flatten to String può essere utilizzato per specificare correttamente l’ordine nativo dei byte.
• Scrivere una funzione di libreria che accetta i dati nella
forma utilizzata da LabVIEW e costruisce la struttura dati
attesa dall’altra libreria.
Questa funzione può quindi richiamare l’altra libreria e
recuperare eventuali valori restituiti prima di ritornare.
La vostra funzione accetterà probabilmente i dati dallo
schema come adapt to type, quindi è possibile passare
qualsiasi tipo di dato del diagramma.
Note sull’autore
Laureato in ingegneria nucleare al Politecnico di Milano, Matteo
Foini lavora in qualità di Technical Marketing Enginee presso
National Instruments Italy.
TRI-VENETO IDELFONSO ELBURGO
VIA PIRANO, 15
35135 PADOVA
TEL. 049 8642988 - FAX 049 8642989
e-mail: [email protected]
PIEMONTE-LIGURIA-VALLE D’AOSTA
ROSARIO ROMEO - PUBLIKAPPA
VIA SAGRA S. MICHELE, 37
10139 TORINO
TEL./FAX 011 723406
e-mail: [email protected]
Sede legale - Via Salvatore Rosa, 14 - 20156 Milano,
tel +39 02 366092.1 - fax +39 02 366092.280
Sede operativa - Viale Espinasse, 141- 20156 Milano,
tel.+39 02 366092.1 - fax +39 02 366092.525
www.ilb2b.it - www.fieramilanoeditore.it
33
LabVIEW_05:LabVIEW_05
12-02-2008
16:31
Pagina 34
D A L L A C A RTA A L W E B
05
HTTP://WWW
Quando le nostre pagine non bastano, l’enorme serbatoio del web può dare una mano.
Su una rivista c ar tacea, anche la più voluminosa, sarebbe impossibile trattare
per esteso tutti gli argomenti relativi a LabVIEW. In molti casi, tuttavia, sul web sono
disponibili ar ticoli esaustivi o altri documenti, a cui rimandiamo i lettori interessati
Quale versione di LabVIEW posseggo?
Questo VI vi dice quali versioni di LabVIEW sono presenti sul computer dal quale il programma viene eseguito. Oltre alla
versione, esso elenca il tipo di ambiente di sviluppo installato (Base, Full o Professional). Rileva inoltre se è installata una
versione di valutazione di LabVIEW. Il programma scansiona il registro di Windows per le differenti versioni di LabVIEW
installate e visualizza le informazioni sulla versione nell’indicatore del pannello frontale. Il programma rileva solo le
principali versioni di LabVIEW, non i patch. Se è stato installato un patch (per es. 7.1.1), esso visualizza solo la versione
LabVIEW principale per il patch (7.1).
Link alla pagina:
ni.com/italian
infocode: it3nch
Filtri di pesatura (simulati)
Questo VI simula in continua il segnale specificato. La pesatura in frequenza è applicata sia nel dominio del tempo sia nel
dominio della frequenza. La pesatura nel dominio del tempo è applicata tramite VI di pesatura a percentuale fissa ed il
segnale pesato può essere comparato al segnale d’ingresso. La pesatura è applicata anche nel dominio della frequenza. Gli
spettri di potenza dei segnali pesati sono anche riportati in un grafico con lo spettro di potenza del segnale d’ingresso.
Cambiando il segnale simulato e la pesatura si ottiene una buona indicazione di come la pesatura in frequenza (nel
dominio del tempo o della frequenza) influisce sul segnale. Sono supportati i seguenti filtri di pesatura: A, B, C, ITU-R 4684, Dolby, CCITT e C-message. Questo programma è un VI d’esempio incluso nei pacchetti NI Sound and Vibration
Measurement Suite ed NI Sound and Vibration Toolkit.
Link alla pagina:
ni.com/italian
infocode: it3nch
VI di monitoraggio delle prestazioni
Il VI di monitoraggio delle prestazioni è un esempio di come ottenere dei valori dai contatori di prestazioni di Windows da
utilizzare per l’analisi delle prestazioni del codice. L’accesso a questi contatori integrati può essere eseguito su computer
che eseguono Windows con il framework .NET. L’interfaccia è simile al tool Windows Performance Monitor (perfmon.exe),
ma sono ammessi cambiamenti della frequenza di campionamento.
I contatori di Windows permettono il tracking di varie statistiche di prestazioni di sistema e applicative. Valori
normalmente tracciati sono la percentuale del ‘tempo processore’ utilizzato (sia totale sia per singoli processi), gli
svuotamenti della cache e il numero di thread. Questo tipo di tool è particolarmente utile quando si deve ottimizzare del
codice complesso o si provano architetture di programma differenti. Anche l’analisi di sistemi multicore (dual-core e quadcore, per esempio) che eseguono programmi paralleli viene così semplificata.
Link alla pagina:
ni.com/italian
34
infocode: it3nch
LabVIEW_05:LabVIEW_05
12-02-2008
16:31
Pagina 35
D A L L A C A RTA A L W E B
Riformattazione dei file XML di LabVIEW per semplici editor di testo
I file XML creati in LabVIEW non sono sempre facilmente leggibili all’interno di semplici editor di testo. Vi sono due modi
per creare file XML in LabVIEW: (1) usando i VI XML nativi in LabVIEW oppure (2) usando i VI DOM Parser XML che sono
inclusi nell’Internet Toolkit. I file XML creati con i VI nativi sono scritti come file testuali multilinea, mentre quelli creati
con l’Internet tookit sono scritti come file a singola linea. In entrambi i casi, i campi XML non sono chiaramente disposti in
un modo che evidenzi la relazione genitore/figlio. Ovviamente, questi formati possono rendere i file XML di LabVIEW molto
difficili da analizzare e leggere in un normale editor di testo.
Questo VI esemplificativo cerca di eliminare tale dilemma. Esso esplora un file XML di LabVIEW ed inserisce degli a capo e
delle tabulazioni dove è necessario per renderne l’aspetto in un editor di testo analogo a quello di un editor XML. Dopo
l’esecuzione di questo VI, i campi genitore/figlio nel file XML sono indentati e spaziati in modo logico.
Link alla pagina:
ni.com/italian
infocode: it3nch
Trasformare un VI LabVIEW in una finestra figlia integrata in una finestra
d’interfaccia utente Visual C#
Questo esempio dimostra come trasformare un VI LabVIEW in una finestra figlia integrata di un Windows Form in
un’applicazione Visual C#.
Quando si esegue Embedded.exe, esso apre un Windows Form .NET, che è un’interfaccia utente Visual C#. Il Windows Form
include due pulsanti. Quando si clicca il pulsante Open VI, l’applicazione apre test.vi e lo mette in un proprio form come
finestra figlia. Quando si finisce di usare il VI sul Windows Form, si deve cliccare il pulsante Stop per chiudere il VI. Cliccate
nuovamente il pulsante Open VI per riaprire il VI. Quando avete terminato di usare l’applicazione, cliccate il pulsante Close
per uscire dall’applicazione.
Link alla pagina:
ni.com/italian
infocode: it3nch
Impostare la priorità di LabVIEW in Windows
Questo esempio imposta la priorità di LabVIEW in Windows. La priorità di LabVIEW è diversa dalla priorità dei VI in
LabVIEW perché riguarda l’intera applicazione LabVIEW e non un solo VI.
L’esempio chiama GetCurrentProcess e SetPriorityClass dalla DLL kernel32. Consultate il sito Web MSDN su
msdn.microsoft.com per maggiori informazioni sulla chiamata a queste funzioni.
ATTENZIONE: Se impostate una priorità errata, il sistema operativo potrebbe diventare instabile.
Link alla pagina:
ni.com/italian
infocode: it3nch
Realizzare una calcolatrice con un LabVIEW XControl
Questo esempio mostra come utilizzare un LabVIEW XControl. Calculator XControl può manipolare valori analogamente a
una calcolatrice portatile. Il valore dell’XControl è il valore calcolato corrente indicato in Output.
Aprite il Calculator XControl Project incluso in questo esempio per vedere la configurazione dell’XControl. Il progetto
include i VI e i controlli dell’XControl, nonché il VI esemplificativo della calcolatrice che implementa l’XControl.
Link alla pagina:
ni.com/italian
infocode: it3nch
35
LabVIEW_05:LabVIEW_05
12-02-2008
16:31
Pagina 36
LA VOCE DEGLI UTENTI
05
Vi presentiamo una selezione di argomenti
di discussione sul Forum di ILVG.it
Supporto all'uso della nuova piattaforma http://www.ilvg.it/ht/3667
Inviato: Mer Gen. 02, 2008 3:04 am
Anno nuovo piattaforma forum nuova...
Ho upgradato tutto il forum alla release 3.0.0 di phpBB,
dovrebbe essere tutto ok, per ogni problema scrivete qui.
Ciao ale914
Ciao, per ora tutto ok anche per me, molto meglio la
grafica anche se la trovo un pò troppo compatta.
Secondo me era più chiaro l' highlight dei messaggi non
letti come era prima che adesso ma magari è solo
abitudine! BYE BYE, HAPPY NEW YEAR! Apollon
Bellissima, per ora tutto ok m
[continua su http://www.ilvg.it/ht/3667]
minzuk
ale914
Utilizzo di INSER (SQL) tramite connessione ODBC via ADODC
http://www.ilvg.it/ht/3731
Inviato: Dom Gen 27, 2008 7:30 pm
Un saluto a tutti,
chi per cortesia, mi può suggerire un aiuto sull'uso di
INSERT (SQL) tramite connessione ODBC via ADO ?
Il mio problema è che nonostante sia riuscito a
collegarmi ad un DB access, tramite ODBC driver via ADO
e tutto mi funziona fino all’esecuzione di una semplice
SELECT, quando invece imposto una semplice INSERT, al
lancio della stessa mi appare una Form di Dialogo
relativa all’oggetto ADO (che utilizzo) con l’avvertimento:
L’operazione non è consentita se l’oggetto è chiuso e di
conseguenza l’inserimento del record nel mio DB fallisce.
Il mio problema è come eseguire una open (immagino
sull’ADO) ... o sbaglio ? chi mi può fornire un semplice
esempio di connessione ODBC via ADO con il lancio di una INSERT
grazie ciao a tutti Roby
Usi il toolkit per la connessione ai database o lavori con i
blocchi di LabView? Se guardi nella sezione "Articoli" del
forum puoi trovare alcune guide sull'argomento
database. In generale nello stesso modo in cui realizzi
un'istruzione SELECT puoi realizzare un'istruzione INSERT:
se usi il toolbox già pronto c'è un blocco per l'apertura
della connessione che ti chiede USER ID e PASSWORD.
Se invece lavori con i nodi di LabView allora devi
sfruttare il metodo OPEN delle connessioni ADO e anche
in questo caso devi specificare i parametri del
database.Ciao!! MagicBotolo
In effetti, ho provato una INSERT con un programmino
che stavo facendo io (connessione ad Oracle) e mi dà
questo errore. Il problema non è nella connessione,
perchè una normale SELECT mi funziona bene.
Proverò a capire di che errore si tratta...Bubbazz
Provo ad indovinare: probabilmente quando si esegue
una INSERT non bisogna lavorare sul Recordset, così come
è invece logico fare con una SELECT.
Purtroppo non ho tempo per provarci, ma per ora mi
sembra l'unica spiegazione. Bubbazz
[continua su http://www.ilvg.it/ht/3731]
Roby
“Show Block Diagram" Password http://www.ilvg.it/ht/3730
Inviato: Dom Gen 27, 2008 11:32 am
Salve a tutti, sono una nuova iscritta e una nuova
interessata a labview ...
... ho però questo problema e chiedo a voi se esiste un
metodo per recuperare la password di alcuni
sorgenti da modificare lasciati da tempo in archivio e che
ora sarebbe interessante spulciare e riutilizzare.
Vorrei visionarli per imparare tecniche e trucchi e per
magari ottimizzarli.
Chi li aveva realizzati non lavora più con noi ed io mi sto
affacciando ora a questo mondo...
... è proprio tutto da buttare via ? mi aiutate ?
ho dei progetti apribili ma quando vado in "Show Block
Diagram" mi chiede la password c'è qualche password
Recovery per labview ?
Grazie mille elenaM
[continua su http://www.ilvg.it/ht/3730]
elenaM
36
LabVIEW_05:LabVIEW_05
12-02-2008
16:31
Pagina 37
LA VOCE DEGLI UTENTI
"Raddrizzare i fili" http://www.ilvg.it/ht//3615
Inviato: Mar Dic 04, 2007 2:39 pm
Avevo letto qualcosa a riguardo di un comando alla
tastiera per "pulire" i fili in modo da togliere tutti gli
scalini ... qualcuno sa dirmi qualcosa? Grazie mir
tirato una linea a zigo zago ... non esiste un comando che
la raddrizzi e la ottimizzi nel suo percorso? mir
Ma non è che intendi la possibilità di selezionare un filo e
spostarlo con le frecce cursore, in modo da riallinearlo ad
altri spezzoni? nicola
Se tu vai colmouse sul filo e clikki il tasto destro ti
compare CLEAN UP WIRE che ottimizza il percorso in
modo tale da fargli risultare meno incroci e parti
nascoste possibili. Credo sia questo che intendi, pero' non
mi risulta che ci sia l'equivalente da tastiera. gepponline
faccio un esempio ...mettiamo che da ubriaco abbia
[continua su http://www.ilvg.it/ht/3615]
mir
Personalizzare un indicatore booleano http://www.ilvg.it/ht/3722
Inviato: Mer Gen 23, 2008 11:48 am
Ciao! Ho una piccola richiesta. Devo personalizzare un
indicatore bouleano da mettere nel Front Panel in
maniera che da un quadrato diventi un triangolo.
Mi serve per indicare uno stato di movimento che va sù o
giù a seconda della regolazione automatica.
Qualcuno può indicarmi come si fa?
Gazie e saluti!D. dot_entry
Ciao,utilizza il menu contestuale di un controllo boleano,
vai su "advanced" --> "customize". Ti si apre una finestra
che ti consente di personalizzare il tuo controllo coma
Grazie! Fino a questo passaggio ero arrivato. Lo usavo per
i controlli. Ma come faccio a modificare la forma
dell'indicatore? dot_entry
Puoi importare anche delle bitmap nei controlli tipo ring
picture e poi tradurre le uscite in dei booleani.
Professormister
Non ho mai usato il customize per modificare le forme delgli
indicatori. Qulacuno puoò inicarmi come fare o dove posso
trovare delle istruzioni per capirne di più? dot_entry
Ne puoi utilizzare due con due forme diverse: in condizioni
'normali' lasci il primo visibile e il secondo nascosco,
quando invece si genera una condizione anomala, tramite
property node, rendi il primo invisibile e il secondo
visibile. Mettendoli sovrapposti l'effetto è ovviamente
quello di un cambiamento di forma. Bubbazz
[continua su http://www.ilvg.it/ht/3722]
dot_entry
Variabile globale event case http://www.ilvg.it/ht/3729
Inviato: Ven Gen 25, 2008 5:04 pm
CiaoSi puo gestire con l'event case in value change di una
variabile globale? Grazie robyf1
Puoi creare nel tuo VI un indicatore invisibile collegato
alla variabile globale e gestire l'evento "Change value"
dell'indicatore. Ciao!! MagicBotolo
Caro robyf1 e caro MagicBotolo dite pure a me come si fa
modificando da diagramma il contenuto di una variabile,
a generare un evento di interfaccia gestiti dalla struttura
"EventCase"??? Secondo me, l'unico modo è quello di
passare attraverso l'uso di "eventi dinamici" (tasto dx del
mouse sul bordo dell'event structure e abilitare "Show
Dynamic Event Terminals"), magari usando una
"functional global" al posto della globale...paracarro
Ma perchè... se tu colleghi una Variabile Globale ad un
indicatore nel momento in cui la variabile cambia (e ne
leggi il valore da assegnare all'indicatore...
eventualmente il problema sta nel gestire i tempi di
lettura della variabile) dovresti avere l'evento "Change
value" da poter controllare con una Event Structure...
Ciao!! MagicBotolo
Credo che se la variabile viene continuamente letta, e i tempi
di lettura vanno bene per quello che si vuole fare, allora può
andare bene la soluzione proposta da MagicBotolo.
Altrimenti la soluzione da usare in casi simili è quella di
registarsi all'evento di cambiamento. Bubbazz
[continua su http://www.ilvg.it/ht/3729]
robyf1
37
LabVIEW_05:LabVIEW_05
12-02-2008
16:31
Pagina 38
EVENTI
05
38
l mondo della strumentazione è in fase di profonda e
rapida innovazione e in questi cambiamenti coinvolge
l'industria di processo, i laboratori di test e sperimentazione e tutti gli altri numerosi campi applicativi. Queste
novità saranno al centro dell’attenzione di Bias 2008, la
Biennale Internazionale dell’Automazione, Strumentazione,
Microelettronica e ICT per l’Industria, che proprio nella strumentazione ha uno dei suoi punti di forza. La prossima edizione di Bias e Bias Manuf@cturing Solutions (Biennale
delle Soluzioni Globali di Information Technology per
l’Industria) si svolgerà dal 27 al 30 maggio 2008 presso il
polo fieristico fieramilano di Rho, alle porte di Milano.
All’evento parteciperà National Instruments. I principali
motivi del cambiamento in atto nel mondo della strumentazione sono le continue innovazioni tecnologiche e le modifiche alle normative e agli standard. L'avanzata dei sistemi
wireless, ad esempio, che soprattutto nell'industria di processo acquisiscono una posizione sempre più rilevante, consente ormai di inserire un modulo di trasmissione su strumenti di misura da collocare in posizioni difficili e permette
di far dialogare tutta la strumentazione con il sistema di
controllo. Questo apre nuove possibilità per quanto riguarda l'ottimizzazione del processo produttivo in sé e per la
garanzia di sicurezza, intesa sia come safety sia come security. Grazie alla possibilità di sfruttare gli avanzati metodi di
diagnostica e di simulazione, la manutenzione e la gestione
degli asset può diventare in questo modo capillare e predittiva. Sempre nell'ambito della comunicazione, procede a
grandi passi la diffusione delle reti Ethernet, ormai diventate il ‘sistema nervoso’ delle fabbriche. Esse consentono,
infatti, di connettere la strumentazione da campo con i
sistemi di supervisione e di portare poi le informazioni ai
livelli superiori, fino ai sistemi gestionali dell'intera azienda.
Per quanto concerne il collegamento tra gli strumenti, cresce l'esigenza di ridurre la varietà dei sistemi di fieldbus e
degli standard più in generale, mentre si rafforzano e trovano crescenti adesioni i
liberi consorzi, come il
gruppo FDT (Field Device
Tool), che applicano soluzioni innovative hardware
e software per assicurare e
facilitare l'interoperabilità
e il dialogo tra le apparecchiature in campo.
Bisogna considerare, infine, che le sempre maggio-
I
ri esigenze di sicurezza e tutela ambientale, che trovano
riscontro in normative in continua evoluzione, richiedono
anche agli strumenti prestazioni e funzionalità particolari e
stimolano l’innovazione. Tutte queste premesse comportano
l'esigenza di introdurre nuova strumentazione o di sostituire la precedente. Una situazione che impone alle aziende
del settore di cercare momenti in cui incontrare i propri
clienti e presentare i vantaggi competitivi della propria
offerta e che fa di Bias, unico evento internazionale dedicato al mondo dell’automazione e dell’elettronica in tutto il
2008, il contesto migliore per proporre le ultime novità
tecnologiche e dare voce ai protagonisti e agli esperti attraverso workshop mirati e convegni di livello internazionale,
realizzati in collaborazione con le principali associazioni del
settore, che saranno un’opportunità unica di aggiornamento professionale e confronto. Un’occasione che già molte
aziende hanno colto: proseguono con trend positivo le adesioni di espositori sia italiani che esteri. Numerose realtà
hanno infatti già confermato la propria presenza da Stati
Uniti, Giappone ed Europa, ma anche dall’Asia, in particolare da Cina, Corea e Taiwan.
Anche per il 2008 Bias, dati i positivi ritorni della scorsa edizione, si svolgerà in concomitanza con altre tre importanti
manifestazioni: Fluidtrans Compomac (Biennale
Internazionale della Fluidotecnica, Trasmissioni di Potenza e
Movimento, Comandi, Controlli, Progettazione), Mechanical
Power Transmission & Motion Control (Biennale
Internazionale dei Sistemi di Controllo del Movimento,
Tecniche di Azionamento e Trasmissioni Meccaniche) e
Bi.Man (Biennale della Manutenzione Industriale), creando
un’offerta espositiva completa di tutta la filiera di prodotti e
soluzioni per l’industria di processo e manifatturiera. Bias e
Bias Manuf@cturing Solutions 2008 sono organizzate da
Fiera Milano Tech, in collaborazione con F&M Fiere &
Mostre. Manifestazioni di riferimento per automazione,
strumentazione, elettronica e soluzioni IT per l’industria,
godono del supporto delle maggiori associazioni nazionali
ed internazionali di settore: AIM, Association for Automatic
Identification & Mobility; AIS, Associazione Italiana
Strumentisti; Anipla, Associazione Nazionale Italiana per
l’Automazione; Assintel, Associazione Nazionale delle
Imprese ICT; Assipe, Associazione Italiana Progettazione
Elettronica; Assodel, Associazione Nazionale Fornitori
Elettronica; Fast, Federazione delle Associazioni Scientifiche
e Tecniche; Gisi, Associazione Imprese Italiane di
Strumentazione e ISA-Italy Section, The Instrumentation,
Systems, and Automation Society.
Readerser vice.it n. 557
Valerio Alessandroni
AL BIAS 2008 LE NUOVE FRONTIERE
DELLA STRUMENTAZIONE
Progetto2:Layout 1
22-01-2008
15:13
Pagina 1
readerservice.it n.19870
LabVIEW_05:LabVIEW_05
12-02-2008
16:32
Pagina 40
REPORT
05
AUTOMATED TEST SUMMIT:
Nadia Albarello
VIRTUALMENTE PERFETTO
La quar ta edizione dell’evento annuale organizzato da National Instruments si è spostata online per offrire
un accesso comodo alle ultime tendenze tecnologiche sulla progettazione di sistemi di test automatizzati
hi ha superato la ritrosia e lo scetticismo iniziali - comprensibili per chi
non aveva mai partecipato ad un
evento virtuale - e ha preso parte al primo
simposio virtuale sulle piattaforme di test
organizzato da National Instruments (in
tempo reale per la fascia oraria europea),
ha potuto visitare la nuova frontiera degli
eventi on-line.
È bastato un click per completare la preregistrazione e catapultarsi in un ambiente
3D che ricorda da vicino ambientazioni virtuali che mirano a simulare la vita reale
come secondlife (www.secondlife.com).
National Instruments, sempre attenta alle più recenti rivoluzioni tecnologiche, ha immediatamente colto in questa il
potenziale per realizzare eventi di nuova generazione, in grado di coinvolgere in prima persona i visitatori non fisicamente
presenti alla manifestazione: una vera rivoluzione.
Il visitatore, infatti, vi ha potuto partecipare comodamente
dal proprio ufficio o da casa, senza spostarsi : unica prerogativa, possedere un accesso ad Internet.
Organizzato come una mostra convegno in piena regola,
Automated Test Summit dello scorso 27 novembre, ha alternato presentazioni live nella parte convegnistica a momenti
di incontro, interazione ed autentica socializzazione virtuale
sia durante gli approfondimenti in chat room a seguire (dal
vivo con consulenti tecnici di National Instruments in lingua
italiana), che all’interno dell'area espositiva. I visitatori hanno
infatti potuto interagire dal vivo con gli espositori di alcune
delle maggiori aziende di test grazie ad un ambiente espositivo virtuale e richiedere informazioni attraverso una chat.
Aziende del calibro di Microsoft, Intel, Tektronix, Averna e
BAE Systems hanno partecipato all’evento per condividere
competenze tecniche ed esperienze sul campo.
Le presentazioni tecniche della mattina hanno illustrato le
migliori tecniche e strategie per la progettazione di sistemi di
test in due appuntamenti: la Keynote e le sessioni tecniche. La
prima, focalizzata sulla progettazione di sistemi di test di ultima generazione, su casi applicativi concreti e come sviluppare un programma di test globale. A seguire, le sessioni tecni-
C
40
Note sull’autore
Nadia Albarello, laureata in Lingue Moderne e Comunicazione alla Karl
Franzens Universität di Graz, Austria, lavora in qualità di Marketing
Communications Manager presso National Instruments Italy.
Readerser vice.it n. 558
che hanno affrontato come applicare strategie vantaggiose
per la progettazione di sistemi di test, analizzato come utilizzare i migliori strumenti di progettazione per la creazione di
sistemi di test riutilizzabili, esaminato le tecniche per
l’ottimizzazione dei sistemi di test, quelle per mantenere
l’esattezza e la validità del sistema e discusso sull’integrazione di piattaforme di strumentazione diverse.
“Ogni anno National Instruments collabora con le aziende
leader nel mercato tecnologico e dei prodotti ATE (Automated
Test Equipment) per la buona riuscita dell’Automated Test
Summit, ovvero la più avanzata occasione di aggiornamento
su strategie e tecnologie nel settore del test automatizzato
rivolta a tecnici e management delle principali aziende di elettronica”, ha dichiarato Kevin Bisking, Automated Test Product
Manager di National Instruments. L’idea di rendere l’evento
disponibile ai frequentatori del Web è nata a fronte del crescente numero di impegni di tecnici ed ingegneri di oggi. I
partecipanti all’evento avranno la possibilità di imparare dalle ‘best practice’ per applicazioni di test in tutta comodità dalla propria postazione. L’evento si è confermato un successo
con oltre 700 partecipanti. Vi aspettiamo alla prossima edizione di giugno!
BS_210x297
18-10-2007
15:39
Pagina 1
27-30
maggio
2008
- Rho
Biennale Internazionale
dell’Automazione,
Strumentazione,
Microelettronica
e ICT per l’Industria
Il mondo dell’automazione, strumentazione, elettronica e delle soluzioni informatiche per l’industria si dà appuntamento a
fieramilano per un’imperdibile opportunità di business, aggiornamento professionale e confronto con il mercato. In più la
rinnovata concomitanza con Fluidtrans Compomac, Mechanical Power Transmission & Motion Control e BI.MAN creerà un
unico grande evento fortemente sinergico, la Technology Exhibitions Week, che riunirà tutta la filiera di prodotti e soluzioni
per l’industria di processo e manifatturiera.
Guarda al futuro del tuo business: partecipa a BIAS 2008!
Organizzato da
In collaborazione con
Partners
ASSOCIAZIONE ITALIANA
STRUMENTISTI
Per informazioni
F&M Fiere & Mostre Srl - Via Caldera 21/C - 20153 Milano
Tel. +39 02 40922560 - Fax +39 02 40922599
[email protected]
readerservice.it
n.19545
In contemporanea con
www.fieremostre.it
LabVIEW_05:LabVIEW_05
14-02-2008
15:18
Pagina 42
REPORT
05
Un archivio centralizzato per oltre 400 strumenti specifici e componenti aggiuntivi di LabVIEW
ational Instruments ha annunciato l’espansione di
LabVIEW Tools Network, un portale online che rappresenta la maggiore risorsa di componenti aggiuntivi e prodotti per la connettività per LabVIEW. Nel 2007
sono stati inseriti oltre 100 nuovi strumenti sviluppati da
National Instruments e da venditori di terze parti.
Il recente ampliamento del network fornisce a tecnici e
ingegneri l’accesso a oltre 400 prodotti da utilizzare con
LabVIEW, come un toolkit in grado di visualizzare le interfacce utente in qualsiasi lingua e uno strumento che automatizza la generazione di modelli, la progettazione di controlli e la regolazione dei parametri di un controllore.
“La crescita impressionante di LabVIEW Tools Network conferma l’aumento della popolarità della pittaforma di progettazione grafica LabVIEW", ha affermato Jack Barber,
manager del programma Alliance Partner di National
Instruments. “La comunità di LabVIEW prosegue nella realizzazione di nuovi prodotti che arricchiscono la piattaforma
e ne estendono le funzionalità verso nuove aree applicative”.
LabVIEW Tools Network garantisce agli utenti LabVIEW una
corretta identificazione degli strumenti adatti al miglioramento dei propri progetti di sviluppo. Il network online consente di effettuare ricerche tramite parole chiave o di filtrare per funzione/industria, al fine di trovare i prodotti specifici per la propria applicazione.
Tra i prodotti disponibili sul network vi sono strumenti che
consentono, ad esempio, la conversione di tutti gli elementi testuali presenti nel codice, come il LabVIEW Localization
Toolkit realizzato da S.E.A. Datentechnik GmbH e altri componenti aggiuntivi che permettono di effettuare operazioni
N
42
avanzate di modellazione, controllo e parametrizzazione su
sistemi di misura real-time, tipo ICP per LabVIEW sviluppato da ExpertControl GmbH.
LabVIEW Tools Network rappresenta una vetrina per i venditori di terze parti che vogliono mostrare i propri toolkit e
componenti aggiuntivi a migliaia di utenti LabVIEW. I venditori hanno inoltre la possibilità di aggiungere un elemento di distinzione ai loro prodotti, validandoli come
Compatibile con LabVIEW, grazie a una campagna recentemente annunciata da National Instruments. Le società partecipanti valutano i propri prodotti in base a una lista di
requisiti che include specifiche su documentiazione, stile e
funzionalità. Essa viene successivamente sottoposta a
National Instruments per l’approvazione (a sua discrezione).
Il programma Compatibile con LabVIEW consente ai clienti
di effettuare acquisti consapevoli e spinge i venditori di terze parti a realizzare prodotti di alta qualità.
Per maggiori informazioni sugli oltre 400 componenti
aggiuntivi presenti su LabVIEW Tools Network e per iscriversi al programma Compatibile con LabVIEW visitate il sito
www.ni.com/labviewtools.
Note sull’autore
Nadia Albarello, laureata in Lingue Moderne e Comunicazione alla Karl
Franzens Universität di Graz, Austria, lavora in qualità di Marketing
Communications Manager presso National Instruments Italy.
Readerser vice.it n. 559
Nadia Albarello
NASCE LABVIEW TOOLS NETWORK
V4M_pag_210X297_08:V4M_pag_210X297_08
6-02-2008
16:41
Pagina 1
CENTRO CONGRESSI FIERA DEL GARDA
MARTEDÌ 24 GIUGNO I 2008
La mostra
In uno spazio specifico sarà allestita
un’esposizione a cura delle aziende
partecipanti, in cui sarà possibile
“toccare con mano” l’attuale offerta
commerciale.
Il convegno
Nel corso della giornata si susseguiranno
seminari tecnici tenuti dalle aziende
espositrici della durata di 30 minuti
ciascuno.
I contenuti
Il programma, l’agenda e i titoli
dei seminari saranno aggiornati,
man mano che verranno confermati,
sul sito www.ilb2b.it/vm
VforM - Vision for Manufacturing è la terza mostra convegno dedicata
alla tecnologia della visione artificiale. Organizzato con il contributo delle
riviste SdA-Soluzioni di Assemblaggio, Automazione Oggi e Automazione
e Strumentazione.
Per aderire
L’evento Vision for Manufacturing nasce in collaborazione con IMVG,
Italian Machine Vision Group e vede il supporto di ASSOAUTOMAZIONE Associazione Italiana Automazione e Misura, appartenente alla Federazione
ANIE (Confindustria), di AIdA-Associazione Italiana di Assemblaggio,
di SIRI-Associazione Italiana di Robotica e Automazione, del Polo della Robotica
di Genova e con il patrocinio di EMVA - European Machine Vision Association.
VforM si rivolge a progettisti, system integrator, responsabili e tecnici della
produzione che necessitano di risolvere problematiche in ambito manifatturiero
legate a: ispezione e controllo della qualità, guida robot, rilevamento presenza,
posizione e orientamento, controllo dimensionale, identificazione e OCR ecc.
PRESSO LA SEDE DI:
ORGANIZZATO DA:
cognome
nome
azienda
posizione aziendale
La partecipazione ai seminari
e alla mostra è gratuita, così come
la documentazione e il buffet.
Per informazioni
Tel. 02.36.6092.510 - 511
Fax. 02.36.6092.515
Email: [email protected]
Web: www.ilb2b.it/vm
Come arrivare
In auto:
• da Venezia: autostrada A4
uscita Brescia est
• da Mantova: statale Goitese
• da Parma: statale Asolana
• da Cremona: autostrada A21
uscita Brescia est
In treno:
• stazione di Brescia 15 km
dal Centro Fiera di Montichiari
• stazione di Desenzano del Garda
10 km dal Centro Fiera di Montichiari
settore
indirizzo
città
prov
e-mail
tel
cap
fax
Consenso ai sensi dell’art. 23 del D.Lgs n. 196 del 30 giugno 2003. Letta la nota informativa riportata su questa rivista, esprimi il tuo consenso al trattamento, alla comunicazione dei tuoi dati
personali ed ai correlati trattamenti ai soggetti che svolgono le attività indicate nella informativa stessa. In mancanza del tuo consenso la registrazione non potrà essere eseguita.
ACCETTO
NON ACCETTO
Esprimi/nega il tuo consenso alla comunicazione dei dati personali ed ai correlati trattamenti ad aziende terze che ne facciano richiesta ai fini pubblicitari e di marketing.
ACCETTO
NON ACCETTO
Compila il coupon e invialo tramite fax al n° 02.36.6092.515 oppure registrati sul sito www.ilb2b.it/vm
COUPON DI ADESIONE LA PARTECIPAZIONE È GRATUITA
24 GIUGNO 2008
IN COLLABORAZIONE CON:
on line all’indirizzo www.ilb2b.it/vm
e via fax compilando il coupon allegato
e inviandolo allo 02.36.6092.515
LabVIEW_05:LabVIEW_05
12-02-2008
16:33
Pagina 44
A P P U N TA M E N T I
05
Come sempre, vi segnaliamo i prossimi corsi di formazione
di LabVIEW e i principali eventi internazionali che vedranno
la partecipazione di National Instruments
CORSI DI LABVIEW
CENTRI DI FORMAZIONE
LABVIEW BASE 1: INTRODUZIONE
Sede NI di Milano
Milano:
3, 4, 5 Marzo
Via Anna Kuliscioff, 22 - 20152 Milano
14, 15, 16 Aprile
Tel: +39 02 41309217 - Fax: +39 02 41309215
19, 20, 21 Maggio
E-mail: [email protected]
23, 24, 25 Giugno
Roma:
26, 27, 28 Maggio
Padova: 6, 7, 8 Maggio
LABVIEW BASE 2: SVILUPPO
Milano:
6, 7 Marzo
Filiale di Roma
Pick Center
Piazza Marconi, 15 - 00192 Roma
Tel: +39 02 41309217 - Fax: +39 02 41309215
E-mail: [email protected]
17, 18 Aprile
Sede Corsi Padova
26, 27 Giugno
Presso il Centro di Formazione Certificato NI di I.R.S. srl
Padova: 20, 21 Maggio
Via Vigonovese 81/A - 35127 Padova
Roma:
Tel: +39 049-8705156 - Fax: +39 049-7625206
29, 30 Maggio
E-mail: [email protected]
LABVIEW INTERMEDIATE 2: CONNETTIVITÀ
Visitate ni.com/training/i per le descrizioni dettagliate
Milano:
dei corsi e per iscrivervi.
10, 11 Marzo
12, 13 Giugno
Padova: 4, 5 Marzo
Roma:
10, 11 Aprile
LABVIEW COMPACTRIO:
FONDAMENTI DI SVILUPPO
Milano:
MAQUINA HERRAMIENTA
Bilbao 4, 5, 6 Marzo
12, 13, 14 Marzo
MC4 – MOTION CONTROL FOR...
16, 17, 18 Giugno
Bologna 11 Marzo
LABVIEW ACQUISIZIONE
DATI E CONDIZIONAMENTO DEI SEGNALI
Roma:
APPUNTAMENTI
NATIONAL INSTRUMENTS
NIDAYS 08 SPAGNA
Madrid 13 Marzo
10, 11 Marzo
NI ROADSHOW
16, 17, 18 Giugno
Padova 2 Aprile
Padova: 1, 2, 3 Aprile
Bologna 8 Aprile
Milano:
Ancona 10 Aprile
1 2, 13, 14 Maggio
Catania 16 Aprile
LABVIEW INTERMEDIATE 1:
TECNICHE DI DESIGN PROFESSIONALI
Roma:
7, 8, 9 Aprile
Milano:
9, 10, 11 Giugno
Padova: 17, 18, 19 Giugno
LABVIEW SVILUPPO APPLICAZIONI REAL-TIME
Padova: 15, 16, 17 Aprile
NI AUTOMOTIVE FORUM
Torino 12 Giugno
NI AUTOMOTIVE FORUM
Barcellona 22 Giugno
NI AUTOMOTIVE DAY
Monaco 3 Giugno
FIERA AEROSPACE TESTING
LABVIEW VISIONE ARTIFICIALE
ED ELABORAZIONI IMMAGINI
Milano:
44
15,16 Maggio
Monaco 15, 16, 17 Aprile
FIERA AUTOMOTIVE TESTING EXPO
Stoccarda 6, 7, 8 Maggio
LabVIEW_05:LabVIEW_05
12-02-2008
16:33
Pagina 45
I N T E R V I S TA
05
orthrop Grumman ha partecipato a corsi in
sede dedicati a LabVIEW. Abbiamo intervistato Ermanno Pieragostini, progettista
sistemi di collaudo presso l’azienda.
Salve a tutti, sono Ermanno Pieragostini dipendente di Northrop Grumman Italia, azienda operante
nel settore difesa. La mia mansione è quella di
“Progettista Senior Test Equipment”.
Il mio reparto fa parte della direzione operazioni.
Abbiamo il compito di progettare e produrre sistemi di collaudo automatizzati che vanno installati
nelle linee collaudo di produzione.
Sono utente LabVIEW da molti anni. Ho partecipando a molti corsi NI (Base, Intermediate, NI-DAQ,
ecc.). I corsi vengono programmati in base alle
nostre esigenze lavorative e/o dal progetto da svolgere, nonché all’addestramento di nuove figure che
vengono a far parte del reparto, siano esse tecnici o
ingegneri.
Il contatto con il personale National Instruments
rimane aperto anche dopo che si effettua un corso,
per chiarimenti o dubbi successivi che ci possono
sorgere. Lo scambio di know how è comunque continuo all’interno del nostro team di lavoro.
N
Sviluppiamo le nostre applicazioni con
LabVIEW sin dalla versione 5.0. Nel tempo
abbiamo sperimentato e usato tutte le versioni fino
alla attuale 8.50. Questa evoluzione, aggiunta ai
corsi di formazione svolti, ha fatto crescere le performance e le funzionalità del prodotto sviluppato.
Inoltre, la standardizzazione di LabVIEW per mezzo
della VLA ha permesso di raggiungere delle economie di scala, riducendo i costi di sviluppo, integrazione e training.
Per far sì che il know how acquisito venga subito
messo in pratica, i corsi di formazione vengono
organizzati prima di iniziare un nuovo progetto.
Sì, viene compilato il modulo di fine corso per
verificare il grado di efficienza/soddisfazione
dei corsi da parte dei partecipanti. Il modulo entra
a far parte del database aziendale.
ora dei benefici
D:Parliamo
dai corsi…
R:
D:Progetti futuri?
R:
derivati
Durante lo svolgimento dei corsi, tipicamente
customizzati alle nostre esigenze, si cerca sempre di portare in risalto quelle difficoltà incontrate
durante le fasi di sviluppo di un progetto software.
condotto survey per verificare
D:Avete
il grado di soddisfazione?
R:
Stiamo già pensando di usare per il prossimo
progetto i prodotti NI (sia software che hardware) e sicuramente li useremo anche nei progetti
futuri.
Readerser vice.it n. 570
D:Perchè LabVIEW?
R:
Insieme al personale NI si trova la soluzione più
appropriata per poi adottarla, quindi la soluzione al
problema.
Un esempio pratico poterebbe essere quello di aver
acquisito il modo di sviluppare il software con
un’architettura chiara, così da portare vantaggio in
tempi di sviluppo a modifiche successive effettuate
da un’altra persona.
Essendo io la persona con più anni di esperienza
nell’utilizzo di LabVIEW all’interno della nostra
azienda, mi accorgo chi partecipa ad un corso di
formazione viene da me meno frequentemente a
chiedere consigli relativi allo sviluppo software.
Ciò evidenzia l’effetto ottenuto dai corsi.
45
READER Labviews:READER Labviews
13-02-2008
15:00
Pagina 46
READER SERVICE
IL READER SERVICE
E’ ON LINE!
www. READERSERVICE.IT
Sempre più al passo con i tempi, LabVIEW WORLD è la prima rivista
in Italia a fornirvi il servizio di reader service on line. Ora è possibile ricevere maggiori informazioni su prodotti e servizi presentati negli articoli
e/o inserzioni pubblicitarie LabVIEW WORLD semplicemente registrandosi al sito:
WWW.READERSERVICE.IT
Compilate la cartolina virtuale e noi provvederemo a inoltrare
tempestivamente la richiesta all'azienda interessata, che invierà
al vostro indirizzo tutta la documentazione disponibile.
In alternativa compilate questa scheda e inviatela al numero di fax:
0236519123
NUMERO DELLA RIVISTA:
5
NUMERI DI READER SERVICE
VICE
EDIZIONI FIERA MILANO EDI
READE
FIERA MILANO EDIZION
SERVICE
READER SE
MILANO EDIZIONI F
DER SERVICE
FIERA MILANO
READER SERVICE
CE READER SERVICE EDIZIONI F
FIERA
READER SERVICE READ
IL SERVIZIO È GRATUITO
Dati sul lettore
Nome
Cognome
Azienda
Indirizzo Azienda
Cap
Città
Prov.
Nazione
Tel.
Fax
e-mail
Consenso ai sensi dell’art.23 del D.Lgs. n.196 del 30 giugno 2003 (riportati anche sul Vs. sito
www.ilb2b.it), esprimo il consenso a che i dati qui contenuti vengano trattati, comunicati e diffusi da voi
e/o da Vs. aventi causa per l'attività di promozione e diffusione dei Vs. prodotti ed anche messi a disposizione di operatori qualificati e/o aziende del settore.
LabVIEW_05:LabVIEW_05
12-02-2008
16:34
Pagina 47
L A B V I E W E L AVO R O
AAA
RICERCHIAMO
INGEGNERE DI LABORATORIO
(RIF: LG/0673/TO)
Manpower Professional
Il nostro cliente, azienda leader nella progettazione e produzione di dispositivi e
componenti meccanici ed idraulici per
applicazioni Aeronautiche, ci ha incaricati
di ricercare una/un:
INGEGNERE DI LABORATORIO
(RIF: LG/0673/TO)
La posizione sarà inserita all’interno dell’ente Ricerca e Sviluppo e riporterà al
Responsabile di Laboratorio.
Alla posizione sarà affidata l’intera gestione delle prove di qualifica idrauliche e meccaniche dei componenti sperimentali, a
partire dalla lettura delle specifiche di
prova. In particolare il ruolo avrà i seguenti
compiti:
• Set Up dei banchi di prova
• Preparazione software di controllo del
banco e di acquisizione dei dati di interesse
• Predisposizione ed esecuzione di prove
complesse
• Redazione di relazioni descrittive dei banchi prova e di report sui test effettuati
Il candidato ideale è un giovane Ingegnere
Aeronautico, Meccanico o Elettronico che
possiede una buona conoscenza della programmazione in generale e dimestichezza
nell’uso di Matlab e LabVIEW.
Requisiti:
Sono richiesti una buona padronanza della
lingua inglese, l’utilizzo di Office e di applicativi ERP (quali SAP o BaaN).
La conoscenza e l’applicazione delle norme:
EN/AS 9100 - CE 1702/2042 - AER-Q-2110
costituirà titolo preferenziale.
Completano il profilo precisione, doti relazionali e attitudine al lavoro di gruppo.
Sede di lavoro: Nord Est Piemonte.
Per candidarsi contattare:
[email protected]
Sede di lavoro: Piemonte.
www.altamira.it
05
Conoscete bene LabVIEW?
Date un’occhiata alle offerte di lavoro che abbiamo selezionato da ILVG.it…
TEST LABORATORY
Cobra Automotive Technologies S.p.A.
Collocazione Organizzativa.
La posizione sarà inserita alle dirette
dipendenze del Respon sabile dell'area Test
Laboratory, nell'ambito del Dipartimento
Technical Operations.
Principali Responsabilità. Sviluppare e definire le specifiche dei software applicativi da
utilizzare nelle prove di validazione del prodotto, nell'ambito dell'attività di test di
laboratorio. Collaborare nella definizione
delle specifiche dei Test Equipment necessari nella fase di validazione.
Requisiti:
Formazione: Laurea in Ingegneria Elet tronica o in Informatica.
Esperienza pluriennale nello sviluppo di
software applicativi con buona pratica
anche degli aspetti hardware correlati.
Precedenti esperienze in ambito automotive costituiscono titolo preferenziale.
Competenze specifiche: conoscenza dei linguaggi di programmazione C, LabView e
Test Stand.
Conoscenze hardware di elettronica analogica e digitale, di sistemi embedded con
microcontrollori e di sistemi PXI per uso in
laboratorio prove.
Plus: conoscenza principali protocolli di
comunicazione automotive, tipo CAN e LIN
Lingue Straniere: conoscenza inglese fluente. Eventuale conoscenza della lingua tedesca costituirà titolo preferenziale.
Completano il profilo autonomia decisionale, metodica consolidata nel problem solving e capacità di relazionarsi a diversi
livelli, anche con fornitori esterni
Contratto: L’azienda offre assunzione a
tempo indeterminato. L’inquadramento e la
retribuzione sa ranno commisurati al profilo
del candidato.
Sede di lavoro: Lombardia
www.altamira.it
TLC - AUTOMATION TESTER
E SYSTEM INTEGRATOR
INFO SOLUTION SPA - servizi
Info Solution fornisce consulenza Software
e Hardware nei settori Aerospazio
(Avionica, Spazio, Difesa), Telecomuni cazioni e Industriale (Elettronica, Tra sporti,
Automotive, Energia) nei principali poli tecnologici italiani (Milano, Roma, Genova,
Torino, Napoli). L’azienda è organizzata per
centri di competenza: software embedded
(software life cycle, firmware, BSP, drivers,
sistemi operativi Real Time, middleware),
software applicativo (supervision & control,
dbms, datawarehouse), hardware design
(hardware life cycle, FPGA, board, test
equipment, processori). Per far fronte ad
una richiesta da parte di un ns. importante
cliente di Genova, cerchiamo candidati con
almeno 1 anni di esperienza nella
integrazione di apparati di Telecomu nicazione. Ai candidati è richiesta esperienza in ambito maintenance e system integration.
Requisiti:
• Buona competenza nello sviluppo di sistemi con Labview;
• Definire una proposta implementativa
partendo dai requisiti
• Progettare i processi di test dei dispositivi
elettronici;
• Predisporre le attrezzature e il banco di
test (HW e SW);
• Sviluppo ed esecuzione test di load-stress
d’apparato;
• Automatizzare configurazioni apparati,
sequenze test e gestione Test Report; E la
conoscenza di:
• Protocolli di comunicazione: Ethernet,
ATM, PDH, SDH/Sonet;
• Linguaggi di scripting: TCL/TK, script shell
unix;
• Strumentazione di laboratorio: generatori
di traffico, bus analyzer; Gradita la conoscenza di Java.
Candidature all’indirizzo
[email protected],
specificando il riferimento: RIF: GE-SYS-37-07
Sede di Lavoro: Genova
INFO SOLUTION SPA ,
via della Burrona 51
20090 Vimodrone (MI),
Tel.: 02 27409353, Fax: 02/25029042
E-mail: [email protected]
47
colo LabvVIEW 05:Layout 1
12-02-2008
16:53
Pagina 48
INFORMATIVA AI SENSI DEL
CODICE IN MATERIA DI PROTEZIONE
DEI DATI PERSONALI
(Decreto Legislativo n. 196 del 30 giugno 2003)
Il Decreto Legislativo n. 196 del 30 giugno 2003 ha la finalità
di garantire che il trattamento dei Vostri dati personali si svolga nel rispetto dei diritti, delle libertà fondamentali e della
dignità delle persone, con particolare riferimento alla riservatezza e all’identità personale.
Vi informiamo, ai sensi dell’art. 13 del Codice, che i dati personali da Voi forniti ovvero altrimenti acquisiti nell’ambito dell’attività da noi svolta, potranno formare oggetto di trattamento, per le finalità connesse all’esercizio della nostra attività. Per
trattamento di dati personali si intende la loro raccolta, registrazione, organizzazione, conservazione, elaborazione, modificazione, selezione, estrazione, raffronto, utilizzo, diffusione,
cancellazione, distribuzione, interconnessione e quant’altro sia
utile per l’esecuzione del Servizio, compresa la combinazione di
due o più di tali operazioni.
Il trattamento dei Vostri dati per le finalità sopraindicate avrà
luogo prevalentemente con modalità automatizzate ed informatiche, sempre nel rispetto delle regole di riservatezza e di
sicurezza previste dalla legge, e con procedure idonee alla tutela delle stesse. Il titolare del trattamento dei dati personali è
Edizioni Fiera Milano S.p.A., con sede legale in Milano, nella
persona del legale rappresentante; responsabili del trattamento sono i dipendenti e/o professionisti incaricati da Edizioni
Fiera Milano S.p.A., i quali svolgono le suddette attività sotto la
sua diretta supervisione e responsabilità.
Il conferimento dei dati personali da parte Vostra è assolutamente facoltativo; tuttavia l’eventuale rifiuto ci rende impossibile l’esecuzione di alcun adempimento contrattuale.
I dati, o alcuni di essi, per i fini di cui dianzi, potranno essere
comunicati a:
• società appartenenti al medesimo gruppo societario di cui fa
parte Edizioni Fiera Milano S.p.A.;
• soggetti esterni che svolgano funzioni connesse e strumentali all’operatività del Servizio, come, a puro titolo esemplificativo, la gestione del sistema informatico, l’assistenza e consulenza in materia contabile, amministrativa, legale, tributaria e
finanziaria;
• soggetti cui la facoltà di accedere ai dati sia riconosciuta da
disposizioni di legge o da ordini delle autorità.
Un elenco dettagliato dei predetti soggetti è disponibile presso
Edizioni Fiera Milano S.p.A.
Vi informiamo, inoltre, che potrete consultare, modificare,
opporVi o far cancellare i Vostri dati o comunque esercitare
tutti i diritti che Vi sono riconosciuti ai sensi dell’art. 7 del
Codice, inviando una lettera raccomandata a Edizioni Fiera
Milano S.p.A. – Via Salvatore Rosa, 14 - 20156 – Milano.
Se volete consultare il testo completo del Codice in materia di
protezione dei dati personali, visitate il sito ufficiale
dell’Autorità Garante www.garanteprivacy.it
48
LA VOCE DEGLI UTENTI
LabVIEW World - La prima rivista italiana per la comunità di LabVIEW
Sede legale - Via Salvatore Rosa 14, 20156 Milano, tel +39 02 366092.1
fax +39 02 366092.280 www.fieramilanoeditore.it
Sede Operativa - Viale Espinasse 141, 20156 Milano
tel. +39 02 366092.1 fax +39 02 366092.525
Direzione
Sergio Maggioni Presidente
Costante Casali Amministratore Delegato
Alberto Taddei Publisher
Comitato
di redazione
Nadia Albarello, Matteo Bambini,
Matteo Foini, Alessandro Ricco,
Redazione
Alberto Taddei Direttore Responsabile - [email protected]
Valerio Alessandroni Direttore Tecnico • [email protected]
Alessandra Pelliconi, Maddalena Pria Segreteria- tel: 02 366092.527
[email protected]
Collaboratori: Nicola Bavarone, Michele Corrà, Massimo Lorenzi, Marco Luciani, Enzo Nava,
Alessandro Ricco, Emanuele Stucchi, Franco Trespidi, Halvor Snellingen
Grafica e
produzione
Bimage.it Progetto grafico e Impaginazione
Franco Tedeschi Coordinamento grafici - [email protected]
Alberto Decari Coordinamento DTP - [email protected]
Sate Zingonia Verdellino - BG - Stampa
Pubblicità
Giuseppe De Gasperis Sales Manager
[email protected] - tel. 02366092 523 - fax: 02 366092 230
Agenti Italia:
PIEMONTE, LIGURIA, VALLE D'AOSTA • R. Romeo/Publikappa •
tel: 011-723406 • fax: 011-723.406 • cell 335-5304196
VENETO, TRENTINO ALTO ADIGE,
FRIULI VENEZIA GIULIA • Idelfonso Elburgo •
tel: 049-8642.988 • fax: 049-8642989 • cell 328-8855203
International Sales
U.K.-SCANDINAVIA - OLANDA - BELGIO
The Huson European Media • Gerry Rhoades-Brown •
tel: +44-1932-564999 • fax: +44-1932-564998
SWITZERLAND:
Iff media ag • Carla Widmer •
tel: +41-52-6330888 • fax: +41-52-6330899
GERMANIA e AUSTRIA: Mediaagentur • Adela Ploner •
tel: +49-8131-3669920 • fax: +49-8131-3669929
USA: Huson European Media Usa • Ralph S. Lockwood •
tel: +1-408-8796666 • fax: +1-408-8796669
TAIWAN: Worldwide Services • Stuart Phillips-Laurie •
tel: +886-4-2325-1784 • fax: +886-4-2325-2967
Abbonamenti
N. di conto corrente postale per sottoscrizione abbonamenti:
48199749 intestato a:Edizioni Fiera Milano SpA, Via Salvatore Rosa 14, 20156 Milano.
Si accettano pagamenti anche con le principali carte di credito.
Per gli utenti Developer Suite e standard Service Program
di National Instruments è già incluso l’abbonamento alla rivista
Abbonamento annuale (4 numeri): E 20,00
Abbonamento per l'estero (4 numeri) E 40,00
Prezzo della rivista: E 5,00 - Arretrati: E 10,00
Testata associata • Associazione Nazionale Editoria Periodica
Specializzata
Edizioni Fiera Milano è iscritta al Registro Operatori della Comunicazione n° 11125 del 25/07/2003. Autorizzazione
alla pubblicazione del tribunale di Milano n° 754 del 11/12/2006. Tutti i diritti di riproduzione degli articoli pubblicati
sono riservati. Manoscritti, disegni e fotografie non si restituiscono. LabVIEW World ha frequenza trimestrale, per un totale di 4 numeri all'anno. Tiratura del presente numero: 3.000 copie.
Con decine di migliaia di prodotti per l’elettronica,
trovi sempre la soluzione per trasformare
ogni tuo lavoro in un grande successo.
rswww.it
readerservice.it n19610
2007-9147-821-122-I
10/1/07
1:22 PM
Page 1
5
8 . dy
W Rea
e
M L ab
ul V
ti c I E
or
NI LabVIEW.
Un solo limite, la tua immaginazione.
Comunica attraverso
vari protocolli,
tra cui Bluetooth
Realizza e programma il tuo robot
con LEGO® MINDSTORMS® NXT
grazie al software powered by
NI LabVIEW
Programma graficamente
applicazioni real-time concorrenti
Sviluppa la tua interfaccia
uomo-macchina (HMI)
Scarica codice su
microprocessori a
32-bit e FPGA
Controlla indipendentemente
diversi motori servo
Real-Time ed Embedded
PIATTAFORMA
LabVIEW Real-Time Module
LabVIEW FPGA Module
LabVIEW SDK
per Microprocessori
Piattaforma Hardware
Embedded NI CompactRIO
>>
Elaborazione
dei Segnali
Test ad Elevate Prestazioni
Grazie alla progettazione grafica di sistemi in LabVIEW,
gli esperti di settore possono sviluppare complessi
sistemi real-time ed embedded con FPGA, DSP e
microprocessori. LEGO Group ha scelto un software
grafico basato su NI LabVIEW per programmare in
parallelo e controllare motori: la potenza intuitiva di
LabVIEW anche a portata di bambino.
Espandi la tua immaginazione e consulta le risorse tecniche su ni.com/labview85/i
NATIONAL INSTRUMENTS ITALY S.r.l. Via Anna Kuliscioff, 22 20152 Milano Tel.: 02-413091 Fax: 02-41309215
P.IVA/C.F.: 09777310153 CCIAA Milano 1317488 Iscr. Trib. Milano 296073/7502/23 S.r.l.
I
I
I
I
I
I
I
© 2007 National Instruments Corporation. Tutti i diritti riservati. CompactRIO, LabVIEW, National Instruments, NI
e ni.com sono marchi commerciali di National Instruments. Altri prodotti e nomi aziendali citati sono marchi commerciali
delle rispettive aziende. LEGO e MINDSTORMS sono marchi commerciali di LEGO Group utilizzati previa autorizzazione.
2007-9147-821-122-I
Controllo Industriale
readerservice.it n.20049
02 41 309 277
Fly UP