Sei sulla pagina 1di 46

01

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

FEBBRAIO

2007

IL FUTURO DEL GRAPHICAL SYSTEM DESIGN

JOHN PASQUARETTE:

LABVIEW COMUNICA CON LINUX REALTIME


TECNICHE AVANZATE DI I/O SU FILE

SCENARIO
01

DECOLLO AVVENUTO!

opo il numero di collaudo (il cosiddetto numero 0), eccoci finalmente alla prima uscita ufficiale di LabVIEW World, per la quale abbiamo tenuto in considerazione i moltissimi commenti e suggerimenti ricevuti da ogni parte. Negli Stati Uniti, ci capitato di vedere top manager di National Instruments con la nuova rivista sotto il braccio. Persino filiali NI dellEstremo Oriente hanno chiesto delucidazioni sul format di LabVIEW World, pensando a unedizione in lingua locale. Ma questo successo internazionale non sminuisce certo limportanza del fermento suscitato in casa nostra: i telefoni della redazione squillano, le richieste di abbonamento piovono, il Forum ILVG preso dassalto. Pensavamo di cambiare il noto slogan LabVIEW everywhere in LabVIEW World everywhere. Retorica a parte (e ci si perdoner qualche innocente esagerazione, dato il nostro entusiasmo), abbiamo la prova che la rivista stata concepita con il giusto criterio e che i suoi contenuti risultano interessanti per la vasta audience rappresentata da tutti coloro che utilizzano LabVIEW. Unaudience che cresce costantemente in tutti i settori: dal mondo accademico, allindustria, alla ricerca, al gioco, dimostrando la versatilit delle piattaforma National Instruments. Anche in questo numero possiamo contare su una vera chicca. Dopo lintervista a Jeff Kodosky, che nel numero 0 ha tracciato la storia del software di programmazione grafica da lui stesso ideato, questa volta ospitiamo John Pasquarette, vero visionario (in senso anglosassone) del futuro di LabVIEW. Le sue parole ci permettono di capire meglio quale sar levoluzione di LabVIEW e quali saranno le novit prevedibili a breve-medio termine. Il nostro men completato da approfondimenti sulle nuove funzioni di LabVIEW, lezioni sulla programmazione grafica per principianti ed esperti, casi applicativi concreti, segnalazioni di argomenti di discussione, un calendario dei principali eventi in arrivo, ecc. E da questo numero possibile abbonarsi, per non perdere nemmeno una copia di quello che abbiamo gi definito il magazine che mancava. Ancora una volta, vi auguriamo buona lettura!

Valerio Alessandroni

SOMMARIO
01

02 DECOLLO AVVENUTO!

LabVIEW World giunto alla prima uscita ufficiale. Valerio Alessandroni, direttore della rivista, fa il punto

E IMPLEMENTARE 24 PROGETTARE MACCHINE A STATI


Edisponibile il nuovo formalismo PRiSMa

WORLD INTERVISTA 04 LABVIEW JOHN PASQUARETTE


Parla il direttore software marketing di National Instruments

27 STRUTTURE ITERATIVE
AVANZATE 30 TECNICHE DI I/O SU FILE

Per i principianti di LabVIEW, pubblichiamo questo tutorial sulle strutture iterative

07 WHATS NEW

LabVIEW si mette in gioco. Programmazione orientata agli oggetti

Spieghiamo agli utenti pi esper ti i formati di file Ascii e Binario

TRA LABVIEW 10 COMUNICAZIONE E LINUX REALTIME


Vediamo come realizzare una libreria di VI per lo scambio di dati

35 DALLA CARTA AL WEB

Link ad ar ticoli di approfondimento o altri documenti disponibili sul web

LABORATORIO NEL PC: 14 IL LA SCHEDA AUDIO


Lar ticolo spiega come gestire i segnali audio su PC

37 LA VOCE DEGLI UTENTI 41 REPORT

Abbiamo selezionato alcuni spunti di discussione apparsi sul Forum di ILVG.it

DI UNA RETE DI 18 GESTIONE SENSORI ZIGBEE CON LABVIEW


LabVIEW entrato prepotentemente anche nella domotica

Focus Embedded, LabVIEW 8.20 Platform Tour e il Forum Tecnico Soluzioni per il test e il collaudo in ambito termotecnico

PER ATTIVIT 20 COMPACTRIO SUL FONDO MARINO


LabVIEW e CompactRIO azionano un veicolo sottomarino

44 APPUNTAMENTI

National Instruments sar presente a numerosi eventi, oltre ad organizzare propri corsi e seminari

DI UNA CAVIT 22 SIMULAZIONE LASER IN REGIME IMPULSATO


Presso CESI Ricerca stato simulato il compor tamento di una cavit laser

46 LABVIEW E LAVORO

Sapete utilizzare LabVIEW? Forse troverete la proposta che fa per voi

A TU PER TU

01

PRESENTE E FUTURO DEL GRAPHICAL SYSTEM DESIGN


Valerio Alessandroni

LabVIEW 8.20 offre una piattaforma aperta per il design che pu integrarsi con strumenti diversi e sfruttare funzionalit potenti e personalizzabili per massimizzare le potenzialit dello sviluppo di prodotto
Fig. 1 Afferma John Pasquarette, direttore software marketing di National Instruments: LabVIEW 8 ha introdotto uninfrastruttura e tool di sviluppo progettati per semplificare il processo di costruzione di un sistema distribuito

abVIEW 8.20, ledizione del 20 anniversario della piattaforma Graphical System Design per il test, il controllo e lo sviluppo di sistemi embedded, ha introdotto nuove e potenti funzionalit, tra cui un avanzato livello di compatibilit con il software Matlab di The MathWorks, nuovi wizard basati su piattaforma FPGA per il design di hardware custom utilizzabili per la realizzazione di controllori industriali, e aggiornamenti per il Modulation Toolkit di LabVIEW, in grado di permettere a ingegneri e ricercatori di sviluppare modelli per la simulazione di sistemi di comunicazione e valutare parametri e decisioni relativi alla progettazione. Dopo avere intervistato Jeff Kodosky, che nel numero 0 di LabVIEW World ha delineato la storia dei primi 20 anni di LabVIEW, questa volta parliamo del presente e soprattutto del futuro della piattaforma Graphical System Design con John Pasquarette, direttore software marketing di National Instruments.

INTELLIGENZA DISTRIBUITA LabVIEW 8.20 semplifica nettamente lo sviD : luppo di sistemi distribuiti offrendo intelligenza distribuita, un insieme di tecnologie che facilitano lo sviluppo di processi eseguiti fra applicazioni diverse e fra dispositivi remoti. Qual il suo commento?

R:

LabVIEW 8 ha introdotto uninfrastruttura e tool di sviluppo progettati per semplificare il processo di costruzione di un sistema distribuito, che pu essere definito come un sistema che utilizza pi processori o nodi di calcolo per risolvere un problema. La nozione di elaborazione distribuita permea oggi diverse aree applicative dai comuni PC desktop, che oggi ormai dispongono di processori multi-core, alle reti distribuite di stazioni di monitoraggio e controllo industriale, tutte collegate a un singolo sistema di supervisione. In tutti questi esempi, i problemi di programmazione sono simili:

- come sviluppare e gestire codice da eseguire su processori o componenti di calcolo differenti? - come spostare efficientemente i dati fra i diversi componenti del proprio sistema? - come triggerare e sincronizzare eventi che si verificano sui diversi componenti del proprio sistema? Fin dallinizio, il linguaggio di programmazione LabVIEW stato intrinsecamente parallelo. Ed possibile programmare facilmente sistemi paralleli nel linguaggio grafico. Con LabVIEW 8 abbiamo introdotto uninfrastruttura che aiuta a gestire e mettere in esecuzione le vostre applicazioni e i dati per i programmi che sviluppate: - la finestra Project vi permette di osservare i diversi nodi di calcolo nel vostro sistema. Tutti i controllori remoti sono visibili in un albero e potete semplicemente trascinare, posizionare e cliccare due volte per mettere in esecuzione il codice del programma ed editarlo mentre risiede su un computer o controllore completamente differente; - la Shared Variable un modo molto semplice per passare dati fra questi nodi di calcolo sufficiente leggere e scrivere i valori e, dietro le quinte, LabVIEW gestisce tutte le operazioni di rete e connettivit a basso livello. Queste tecnologie formano linfrastruttura che aprir la potenza dellelaborazione distribuita e le applicazioni multicore/processore a molti pi tecnici e ricercatori nel mondo, senza richiedere un addestramento avanzato e una particolare esperienza informatica.

MATEMATICA TESTUALE LabVIEW 8.20 estende il linguaggio a dataD : flow grafico LabVIEW con un supporto nativo per la matematica testuale MathScript. Perch NI ha deciso di fare un miglioramento di questo tipo?

A TU PER TU

R:

Negli ultimi anni, la piattaforma LabVIEW si sviluppata enormemente in nuove aree. Laddove LabVIEW noto soprattutto come tool per lacquisizione di dati e il controllo di strumenti, esso si trasformato in una piattaforma di progettazione grafica di sistemi con caratteristiche complete, permettendo agli ingegneri di progettare, prototipare e mettere in esecuzione nuovi sistemi pi rapidamente e facilmente rispetto agli approcci tradizionali. Come piattaforma di progettazione grafica, LabVIEW combina molti approcci differenti per definire le parti del proprio sistema come la programmazione dataflow, diagrammi di stato e simulazione. MathScript introduce un nuovo approccio matematico, di tipo testuale, nella piattaforma LabVIEW. In particolare, MathScript permette agli ingegneri di sviluppare algoritmi numerici nellambito della loro soluzione direttamente allinterno dei propri programmi LabVIEW. Descrivere algoritmi utilizzando una sintassi testuale del tutto naturale per molti ingegneri e ricercatori e, con MathScript, essi possono sfruttare in modo diretto la loro esperienza. Inoltre, gli utenti possono sfruttare gli algoritmi numerici esistenti che hanno creato come m-file utilizzando il software Matlab di The MathWorks. Grazie a questo livello di compatibilit, essi possono riutilizzare facilmente gli algoritmi sviluppati usando tool legacy nella moderna piattaforma di progettazione grafica di sistemi LabVIEW.

In un solo passo, possibile progettare e prototipare interattivamente il proprio algoritmo con hardware reale per accelerare il processo molto iterativo della progettazione.

LA FUTURA EVOLUZIONE Nella futura evoluzione di LabVIEW, molte D : novit ruoteranno quindi attorno al concetto di Graphical System Design. Quali sono gli altri nuovi sviluppi che verranno inclusi in LabVIEW per facilitare sempre di pi luso del Graphical System Design e renderne disponibili i vantaggi in nuove aree applicative?

R:

R:

tipo di possibilit vengono offerte da D: Che questa estensione a ingegneri e ricercatori?


Combinando matematica di tipo testuale con la GUI interattiva e le capacit di I/O fisico di LabVIEW, gli utenti possono progettare e prototipare molto rapidamente gli algoritmi sui quali stanno lavorando. Questo un elemento chiave dellapproccio della progettazione grafica di sistema un processo di ingegneria degli algoritmi nel quale la teoria di un algoritmo, espresso come calcolo numerico di tipo testuale, pu essere implementata con I/O reali in un solo passo. Linterfaccia utente di LabVIEW una tecnologia unica, che permette di progettare una GUI custom con manopole e cursori per gli input e grafici, strumenti e indicatori per gli output. possibile cablare direttamente al proprio algoritmo questi input e output, per avere la possibilit di modificare gli input allalgoritmo mentre esso viene eseguito, con un feedback immediato dagli output. Il cablaggio del proprio algoritmo semplice, e non ha alcun impatto negativo sulle prestazioni dellalgoritmo stesso. Se si unisce questo approccio grafico interattivo per la messa a punto del proprio algoritmo con gli I/O reali per i quali LabVIEW cos ben noto, si ottiene un potente strumento di ingegneria degli algoritmi. Non solo possibile visualizzare i risultati degli algoritmi sui quali si sta lavorando, ma altres possibile testare gli algoritmi stessi utilizzando dati reali, per accertare molto rapidamente che lalgoritmo risponda come previsto con i veri sensori ed attuatori collegati ad esso.

La matematica numerica solo una delle aree nelle quali gli utenti ingegnerizzano algoritmi nellambito dellapproccio della progettazione grafica di sistema in LabVIEW. LabVIEW si altres sviluppato nelle aree del controllo avanzato e delle comunicazioni. Con LabVIEW Modulation Toolkit, gli utenti possono sviluppare link di comunicazione custom con blocchi costruttivi di base per codifica sorgente, codifica di canale e modulazione nei loro schemi LabVIEW. La notazione a dataflow del linguaggio LabVIEW particolarmente utile per mostrare il percorso del segnale in sistemi di comunicazione come questi. Se si considera il numero di standard wireless differenti che stanno evolvendo o verranno introdotti nel breve termine, la capacit di mettere facilmente insieme i blocchi costruttivi per progettare ed implementare un link wireless custom o emergente pu rivoluzionare lapproccio seguito dai progettisti per introdurre nuovi prodotti sul mercato. Il lato interessante, in questo caso, che questo approccio funziona altrettanto bene per il test. Se ci pensiamo, per testare un trasmettitore di comunicazione dobbiamo simulare laltro estremo del link il ricevitore, e viceversa. Quindi, lapproccio della progettazione grafica di sistema non solo aiuta a velocizzare il processo di progettazione e prototipazione nellarea delle comunicazioni, ma permette altres agli ingegneri di test di tenersi aggiornati con i requisiti di test in rapido cambiamento. Una seconda area nella quale LabVIEW sta crescendo, quella della progettazione e simulazione di controlli. Con il nuovo LabVIEW Simulation Module, gli utenti possono progettare e simulare i sistemi dinamici che spesso sono impiegati nei sistemi di controllo avanzati. Questa unaltra area dove essere in grado di combinare il processo di progettazione e simulazione con I/O reali crea in modo naturale un potente approccio per ridurre il time-to-market. Da un punto di vista hardware, la piattaforma LabVIEW Real-Time gioca un ruolo chiave nel permettere ai progettisti di eseguire i loro algoritmi di controllo direttamente su un sistema operativo LabVIEW Real-Time per prototipare i loro sistemi con I/O rispondenti a stimoli reali in condizioni molto realistiche.

A TU PER TU

01

NUOVI TOOL Quali sono le caratteristiche dei nuovi tool D : inclusi in LabVIEW per il CAD, la prototipazione rapida, limplementazione, la validazione e la verifica di sistemi embedded?

R:

Oltre a incorporare capacit di progettazione native nella piattaforma LabVIEW, abbiamo sempre posto una grande enfasi sul mantenere aperta la piattaforma LabVIEW per integrare altri tool. Ci continua ad essere enfatizzato anche mentre LabVIEW evolve in una piattaforma di progettazione. Oltre a utilizzare LabVIEW nativamente per progettare piattaforme di controllo, possibile altres utilizzare modelli di sistema dinamici sviluppati con il tool Simulink di The MathWorks allinterno della piattaforma LabVIEW. Aprendo la piattaforma LabVIEW per potere eseguire modelli provenienti da altri tool di progettazione, LabVIEW estende i benefici del sistema di progettazione grafica con lingegnerizzazione interattiva degli algoritmi agli utenti di altri tool. Simulink solo uno dei tool per i quali abbiamo costruito connettivit con tool matematici, tool di simulazione e tool di progettazione di terze parti. (Per i dettagli si pu visitare ni.com\validation).

Quando Microsoft aggiorna il proprio sistema operativo, molte volte gli upgrade impongono cambiamenti fondamentali nei tool di programmazione e delle architetture per il sistema operativo stesso e ci richiede che gli sviluppatori apprendano nuovi tool e riscrivano le loro applicazioni. Con LabVIEW, il nostro primo impegno fare in modo che tutti possano continuare ad utilizzare le loro applicazioni esistenti sul nuovo OS. Questa compatibilit e protezione degli investimenti a lungo termine un valore chiave per i nostri utenti. Oltre VISTA, abbiamo in programma non solo di fornire versioni semplificate dellambiente di programmazione LabVIEW, ma anche di estendere il linguaggio per luso in team di sviluppatori pi avanzati che lavorano sullingegneria software hardcore.

Fig. 2 Secondo Pasquarette, combinando matematica di tipo testuale con la GUI interattiva e le capacit di I/O fisico di LabVIEW, gli utenti possono progettare e prototipare molto rapidamente gli algoritmi sui quali stanno lavorando

In conclusione: che tipo di miglioramenti D : possiamo attenderci (in termini di Graphical System Design) nelle future release di LabVIEW?

R:

LabVIEW una piattaforma unica, perch sia un linguaggio di programmazione completo, sia un ambiente di progettazione grafica. Pertanto, abbiamo due vettori completamente differenti sui quali introdurre innovazioni e miglioramenti. Da oltre 20 anni, stiamo costruendo le capacit della piattaforma LabVIEW e anche dopo tutto questo investimento rimangono ancora molte aree da esplorare. Nel breve termine, supporteremo Windows VISTA con una nuova versione di imminente introduzione. Uno dei vantaggi chiave per i nostri clienti che utilizzano LabVIEW che li proteggiamo contro i continui cambiamenti che si verificano nel mondo dei sistemi operativi general-purpose.

possibile vedere questi due concetti uniti nel nostro recente annuncio con Lego. Grazie alla nostra partnership con Lego, ledizione pi recente del loro sistema di robotica per bambini Lego Mindstorms usa una versione di LabVIEW per programmare i robot sviluppati dai bambini. Attraverso una versione semplificata di LabVIEW, migliaia di bambini progettano e costruiscono sistemi embedded custom con unampia gamma di I/O integrati. Questo un ottimo esempio di come la potenza di LabVIEW pu essere confezionata anche per i programmatori meno esperti che sono alimentati principalmente dalla loro immaginazione: i bambini. Vediamo molte altre possibilit come questa nel futuro. Seguiteci. In futuro, LabVIEW continuer ad evolvere e a cambiare, cos come avvenuto nei 20 anni passati.

readerser vice.it n.300

W H AT S N E W

01

LABVIEW E LA PROGRAMMAZIONE ORIENTATA AGLI OGGETTI L


a programmazione orientata agli oggetti (OOP - object-oriented programming) ha dimostrato la sua superiorit rispetto alla programmazione procedurale, come scelta strutturale, in numerosi linguaggi di programmazione. Favorisce infatti lo sviluppo di interfacce pi pulite, semplifica le fasi di debug del codice e migliora le procedure di programmazione coordinata in grossi team di sviluppo. Ma che cos la programmazione orientata agli oggetti e perch utilizzarla? Wikipedia offre la seguente definizione: Il concetto alla base della programmazione orientata agli oggetti che un programma informatico pu essere visto come una collezione di unit individuali interagenti, chiamate oggetti. Ci si contrappone alla visione tradizionale, secondo la quale un programma pu essere considerato come una raccolta di funzioni, o semplicemente come una lista di istruzioni per il computer. Ogni oggetto in grado di ricevere messaggi, elaborare dati ed inviare messaggi ad altri oggetti, e pu essere considerato come una piccola macchina indipendente avente la sua funzione specifica, oppure come un attore con un ruolo ben definito. I sostenitori della programmazione orientata agli oggetti, affermano che per i neofiti rappresenta un metodo pi facile da apprendere, se paragonato agli approcci tradizionali. Inoltre, generalmente risulta pi semplice sviluppare e aggiornare il codice se creato programmando a oggetti, in quanto lapproccio si presta meglio allanalisi diretta, alla codifica e alla comprensione di realt e procedure complesse.

NUMEROSI VANTAGGI

Quali sono i vantaggi principali offerti dalla programmazione orientata agli oggetti in LabVIEW? Possiamo distinguere il caso dellutente che si avvicina per la prima volta a LabVIEW da quello del programmatore G esperto che non ha familiarit con lOOP. Nel primo caso, la forza di LabVIEW sta nel fatto che rende accessibili, anche a chi non sia un programmatore esperto, le potenzialit infinite offerte dal mondo informatico e alcune delle tecniche di programmazione pi avanzate, come lobject-oriented. Essendo per tecniche che richiedono notevoli sforzi per la pianificazione di un progetto, generalmente vengono scelte solo se lutente ha intenzione di intraprendere lavori di una certa complessit. Per quanto riguarda un programmatore G esperto, che non abbia per familiarit con i concetti dellOOP, il primo vantaggio dato sicuramente dalla maggiore semplicit di debug dei programmi, in quanto lestrema modularit, tipica del codice a oggetti, permette di restringere la lista dei VI che potrebbero contenere lerrore cercato. Un secondo vantaggio rappresentato dalla maggiore facilit di manutenzione del codice. I progetti orientati agli oggetti portano a strutture pi articolate, che aiutano gli sviluppatori ad essere pi produttivi nel corso del tempo. Gli sviluppatori possono facilmente identificare le aree specifiche del progetto sulle quali desiderano intervenire, per apportare modifiche o aggiun-

gere nuove funzionalit, ed hanno minore probabilit di introdurre errori in parti del codice non direttamente correlate.

GLI UTENTI IDEALI


A questo punto possiamo porci la domanda: chi dovrebbe utilizzare la programmazione orientata agli oggetti in LabVIEW? Sintetizziamo la risposta indicando tre casi ideali: coloro che devono mantenere aggiornati i VI per un lungo periodo di tempo, coloro che devono sviluppare grosse applicazioni e i gruppi di sviluppatori che lavorano sugli stessi VI. Chi potrebbe, invece, anche non avvalersi delle tecniche tipiche di questo approccio sono gli utenti express, Un esempio di programmazione abituati, per esema oggetti in LabVIEW pio, a creare rapidamente singoli VI per eseguire una misura e a lavorare, quando possibile, tramite wizard di configurazione. In questi casi, le classi di LabVIEW potrebbero anche aggiungere solo inutili complicazioni. Per entrare nel merito dei dettagli tecnici, rimandiamo il lettore interessato alla sezione Dalla Carta al Web del presente numero della rivista, dove trover un link per scaricare alcuni esempi didattici relativi alla programmazione orientata agli oggetti in LabVIEW.
readerservice.it n100

W H AT S N E W

01

LABVIEW SI METTE IN GIOCO!


National Instruments ha annunciato pochi mesi fa il rilascio del Toolkit NI LabVIEW per LEGO MINDSTORMS NXT, grazie al quale gli utenti di NI LabVIEW possono creare strumenti vir tuali per azionare e controllare la nuova piattaforma robotica MINDSTORMS NXT

di sviluppo del sistema, linterfaccia di ambiente programmazione grafica MINDSTORMS NXT, nata

dallo sforzo congiunto fra LEGO e National Instruments. Questa collaborazione ha portato allo sviluppo di un software semplice da usare, basato su dragand-drop, e ottimizzato per rispondere al meglio alle esigenze dei principali utenti di questa piattaforma, cio i ragazzi di et compresa fra i 10 e i 14 anni. Nato in occasione dei 20 anni di vita di LabVIEW, il toolkit prosegue una lunga tradizione fatta di successi e innovazione, ed estende anche il panorama dei possibili utilizzatori di MINDSTORMS NXT, come studenti e insegnanti di scuole superiori e universit, offrendo loro strumenti avanzati di programmazione grafica, flessibili e potenti. Gli sviluppatori di terze parti avranno la possibilit di usare LabVIEW per creare nuovi blocchi di codice da importare e integrare in MINDSTORMS NXT, per estendere e personalizzare le funzionalit delle librerie gi esistenti, e dare cos modo agli utenti meno esperti di affrontare sfide tecnologiche pi complesse e articolate, pur rimanendo sempre allinterno dello stesso ambiente interattivo.

Fig. 2 - Grazie al nuovo toolkit LabVIEW per LEGO MINDSTORMS NXT, gli utenti potranno sviluppare direttamente in LabVIEW le loro applicazioni, compilarle e scaricarle sul target robotico

Diversamente, il toolkit consente anche di sviluppare interamente in LabVIEW il codice finale, che verr poi scaricato a bordo del modulo di controllo del sistema robotico. Utilizzando lapposita finestra di comando, il programma finito viene compilato e trasferito sul terminale NXT via Bluetooth o connessione USB. Opzionalmente, pu essere mandato subito in esecuzione al termine del download, e se attivata la modalit di debug si stabilisce un collegamento diretto con la macchina di sviluppo, dove risiede linterfaccia utente dellapplicazione. Si possono scaricare vari programmi a bordo dello stesso terminale NXT, collegare un singolo PC a diversi terminali e sviluppare applicazioni remote in grado di comunicare con i sistemi robotici. Riassumiamo solo alcune delle principali caratteristiche della piattaforma MINDSTORMS NXT: Nuovo controller intelligente NXT a 32 bit, completo di batterie ricaricabili Kit di costruzioni LEGO TECHNIC con pi di 400 pezzi Nuovi sensori di suoni e ultrasuoni e sensori migliorati sensibili al tocco e alla luce Tre servomotori con sensori di rotazione integrati

Fig. 1 - Linter faccia di programmazione grafica MINDSTORMS NXT, realizzata interamente in LabVIEW, nata dalla stretta collaborazione fra LEGO e di National Instruments

W H AT S N E W S

BREVI
LabVIEW Touch Panel Module
Grazie al nuovo LabVIEW Touch Panel Module di National Instruments, possibile creare e distribuire rapidamente applicazioni HMI (interfacce uomo-macchina) per comunicare con piattaforme di NI real-time embedded come Compact FieldPoint, CompactRIO e Compact Vision System. Tali interfacce offrono un mezzo per visualizzare dati e controllare sistemi real-time autonomi. Il modulo include strumenti per lo sviluppo dellinterfaccia utente, funzioni di comunicazione e funzioni di analisi e memorizzazione dei dati. Il modulo Touch Panel ottimizzato per lo sviluppo di HMI destinate a dispositivi touch panel con Windows CE, come lNI TPC-2006.

Supporto Bluetooth per comunicare con altri computer, telefoni cellulari e dispositivi palmari Nuovo software intuitivo di programmazione grafica, interamente programmato in LabVIEW.
readerservice.it n101
Fig. 3 - Alpha Rex, uno dei robot simbolo della piattaforma robotica MINDSTORMS NXT

NUOVE SOLUZIONI GRAFICHE IN LABVIEW CON IL 3D PICTURE CONTROL


Il 3D Picture Control, introdotto in LabVIEW 8.20, consente di creare scene 3D complesse, senza preoccuparsi delle complicazioni di basso livello tipiche della grafica 3D. Linterfaccia di programmazione, semplice ma potente, permette di gestire la maggior parte dei tipici problemi di creazione, importazione e controllo di oggetti grafici. Il 3D Picture Control trae vantaggio da una gestione ottimizzata dei dati e supporta le specifiche di accelerazione hardware OpenGL, per ottenere fasi di rendering veloci e accurate. Tante le applicazioni che potranno beneficiare di questa gestione grafica avanzata in particolare possiamo individuarne un paio tra le pi coinvolte: 1. Applicare i dati di misura a un modello 3D del sistema fisico in fase di studio, per meglio visualizzare le posizioni degli elementi, i profili di temperatura, i campi di sforzo, ecc. Si pensi, ad esempio, al caso del monitoraggio della deflessione dellala di un aereo, misurata per mezzo di una griglia di 1000 strain gauge. 2. Applicare i dati simulati a un modello grafico 3D per facilitare le previsioni del comportamento del sistema e ottimizzare le fasi di progettazione. Un esempio applicativo dato dalla modellizzazione di un braccio robotico e del suo algoritmo di controllo. Gli oggetti grafici vengono creati e controllati facilmente grazie a un set di VI specifici. Questa tecnologia consente di visualizzare modelli 3D (formattati come VRML, ASE o STL), importati da ambienti grafici di terze parti e integrarli nelle applicazioni tramite le variabili di LabVIEW.
readerservice.it n102

Ogni computer touch panel di National Instruments include una licenza di distribuzione per il modulo di LabVIEW (per i grossi sistemi industriali non sono previsti costi aggiuntivi per la distribuzione delle applicazioni). Il modulo sfrutta alcune delle funzionalit che hanno caratterizzato la versione 8.0 di LabVIEW e del modulo per PDA: lapertura di un progetto in LabVIEW, la definizione di un target touch panel e a seguire la compilazione, la distribuzione e lesecuzione dellapplicazione sul dispositivo. Per gli utenti che in precedenza hanno utilizzato il modulo LabVIEW PDA per programmare lNI TPC-2006, il Touch Panel Module offre lo stesso ambiente di programmazione grafica e caratteristiche simili a quelle gi utilizzate. Per comunicare con un target touch panel si possono utilizzare i protocolli TCP e UDP o un collegamento seriale. Se si dispone di un dispositivo touch panel con processore ARM, come lNI TPC-2006, possibile utilizzare le variabili condivise per scambiare dati fra VI della stessa applicazione che gira sul touch panel o per condividerli in lettura e in scrittura con altre variabili condivise pubblicate in rete. Il dispositivo NI TPC-2006, grazie a un nuovo driver grafico aggiornato, supporta ora anche controlli 3D per il pannello frontale.
readerservice.it n103

TIPS & TECHNIQUES

01

INTRODUZIONE ALLA COMUNICAZIONE TRA LABVIEW E LINUX REALTIME (RTAI)


Massimo Lorenzi

n questo articolo illustreremo la realizzazione e l'utilizzo di una libreria di VI in grado di consentire ad un programma LabVIEW di scambiare dati con un programma C/C++ in esecuzione parallela in ambiente real-time su piattaforma Linux (RTAI). Nelle applicazioni di controllo e simulazione infatti spesso necessario abbinare l'utilizzo di un'interfaccia realizzata in LabVIEW, ricca di funzioni ma senza necessit di esecuzione deterministica, con un substrato realtime che renda possibile la creazione di uno strettissimo legame tra istruzione eseguita e suo tempo d'esecuzione.

LABVIEW E LINUX RTAI


Unire l'utilizzo di LabVIEW e Linux RTAI risulta essere una scelta vantaggiosa in tutti quei casi, la maggioranza, nei quali per un'applicazione possibile distinguere operazioni che hanno la necessit di essere relazionate al proprio tempo d'esecuzione per realizzare correttamente la propria funzionalit, ed altre che non ne hanno bisogno. Per comprendere meglio questa distinzione, potremmo definire un'istruzione che realizza il campionamento di un segnale alla frequenza di 1kHz come necessariamente legata alla nozione del tempo in cui viene eseguita. Non pu essere infatti arbitrariamente eseguita un po prima od un po dopo, pena la perdita di funzionalit causata dalla non equidistanza nell'acquisizione dei campioni. Al contrario, un'istruzione che realizza la visualizzazione a schermo dell'onda generata una volta terminata l'acquisizione, non viene meno nel realizzare la propria funzionalit se viene eseguita immediatamente dopo la fine dell'acquisizione o un po pi tardi, ovvero se al posto di richiedere tre secondi per la propria esecuzione ne utilizza cinque o pi. Il risultato comunque conforme alle nostre aspettative funzionali: l'onda viene visualizzata. Nelle applicazioni di controllo e simulazione LabVIEW pu tranquillamente occuparsi di tutte quelle operazioni che non richiedono stretta correlazione con il tempo d'esecuzione mentre lo strato real-time, creato sfruttando i moduli di RTAI, pu occuparsi delle operazioni che hanno rigidi requisiti temporali. Ad esempio quindi potremmo simulare cinematicamente e dinamicamente lo spostamento di un robot cartesiano al fine di ricavare le impostazioni dei motori necessarie per realizzare lo spostamento alla velocit desiderata, sfruttando le funzioni matematiche e l'interfaccia verso altre appli-

cazioni messe a disposizione da LabVIEW, e successivamente passare tali impostazioni calcolate alla parte real-time per l'esecuzione del movimento vero e proprio, caratterizzandolo quindi con una cadenza temporale d'esecuzione predeterminata. L'abbinamento proposto pu essere realizzato semplicemente creando un canale di comunicazione dati tra LabVIEW e lo strato applicativo real-time che permetta ai due mondi di scambiarsi principalmente dati, pi o meno grezzi, e comandi, atti ad implementare la sincronizzazione tra l'esecuzione delle due applicazioni. Questa condivisione pu essere realizzata utilizzando porzioni di memoria di sistema, detta memoria condivisa o shared memory, oppure utilizzando una o pi code fifo. Nel seguito illustreremo l'utilizzo di questa seconda tecnica. Per poter ottenere una corretta configurazione dell'ambiente real-time Linux RTAI si consiglia di visitare il sito Internet del progetto presente all'indirizzo www.rtai.org, per l'installazione di LabVIEW si rimanda alle relative istruzioni d'installazione. Il codice illustrato di seguito come esempio stato realizzato e testato utilizzando un sistema x86 configurato con una distribuzione GNU/Linux Fedora Core 4, un kernel vanilla 2.6.11(www.kernel.org), RTAI versione 3.3 e la versione 8.20 di LabVIEW per Linux.

CREAZIONE DELLE CODE FIFO


Le code fifo rappresentano aree di memoria dedicate alla memorizzazione di dati e funzionano come buffer ordinati: i dati tipizzati vengono inseriti nella coda uno dopo l'altro e successivamente prelevati dalla stessa con il medesimo ordine. Fifo infatti l'acronimo inglese di first in first out ed indica che la struttura di memorizzazione dati possiede ordine interno e regole di utilizzo (inserimento/prelievo). Le code fifo possono essere rappresentate graficamente come nella seguente figura: ogni blocchetto blu rappresenta lo spazio di memoria di un dato e le frecce indicano le direzioni obbligatorie di ingresso ed uscita.

Fig. 1. - Rappresentazione di una fifo

10

TIPS & TECHNIQUES

Fig. 2. - Selezione dell'impor t Wizard

Fig. 3. - Selezione del file di libreria (.so) e del file header

Le code fifo devono essere obbligatoriamente create prima del loro utilizzo: la seguente istruzione crea un dispositivo a caratteri virtuale che viene utilizzato come riferimento per l'utilizzo della coda fifo. # !/bin/bash mknod -m 666 /dev/rtf$n c 150 $n Se vorremo utilizzare la coda di dati, apriremo, proprio come un file, il nostro dispositivo ed inizieremo ad inviare dati da memorizzare o a leggere dati da prelevare. La dimensione della coda, in termini di quantit di memoria utilizzabile per la memorizzazione, finita e viene decisa a priori all'atto della sua creazione per evitare ogni possibile operazione di allocazione di memoria (operazione saltuaria che farebbe variare il tempo necessario all'utilizzo della struttura dati). Le code fifo gi create come dispositivi virtuali nel sistema Linux vengono utilizzate dalle applicazioni realtime come base per poter creare le fifo realtime di scambio dati: infatti l'applicazione realtime ad aprire le code fifo che poi verranno raggiunte dall'applicazione LabVIEW tramite il dispositivo virtuale /dev/rtfn. La creazione in ambito realtime avviene utilizzando le seguenti istruzioni (creazione di una fifo di nome fifo_data di dimensione 200000 byte): if ((fifo_data = (rtf_create (DATA_F1, 200000)))) { printf ("CANNOT CREATE DATA FIFO DATA_F1\n"); end_hard_RT_task (0); }

come una macchina a stati, oppure inviandole dati da processare, probabilmente risultato di una simulazione come si gi proposto, in modo molto veloce e diretto. Ovviamente possibile, dimensioni della memoria permettendo, creare ed utilizzare tante fifo quante sono necessarie per realizzare efficacemente lo scambio dati e comandi. Grazie al Wizard Tool di importazione di librerie condivise (.so) inoltre, se si possiede una libreria scritta in C/C++ di accesso ai dispositivi fifo ed il relativo header file, la creazione dei corrispondenti VI che realizzano le funzioni della libreria C/C++ in LabVIEW praticamente diretta. La conversione pu essere infatti realizzata seguendo passo passo le indicazioni proposte a schermo, come illustrato nelle figure da 2 a 8.

UTILIZZO DELLE CODE FIFO REALTIME IN LABVIEW


Grazie all'utilizzo di code fifo, quindi, un VI pu efficacemente comunicare con un'applicazione realtime, ad esempio facendole cambiare stato se questa stata strutturata
Fig. 4. - Selezione delle funzioni della libreria da conver tire in VI

11

TIPS & TECHNIQUES

01

L'utilizzo della libreria appena creata immediato: nella figura 8 i tre VI nell'ordine eseguono le operazioni di apertura, riempimento della coda con tre valori di tipo double e chiusura della stessa.

Fig. 5. - Controllo della conversione (tipi di dato, contesto d'esecuzione scelto per la funzione, ecc.) Fig. 8. - Utilizzo dei tre VI creati.

CONCLUSIONI
L'utilizzo dell'ambiente GNU/Linux garantisce la possibilit di controllare in modo totale il comportamento del proprio sistema apportando modifiche, proprie o di terzi, allo stesso al fine di plasmarlo secondo le proprie esigenze, necessit fondamentale in molte applicazioni di tipo realtime. LabVIEW dall'altra parte mette a disposizione moltissime funzioni d'analisi e di interfaccia di livello pi alto che rendono possibile lo sviluppo di applicazioni per sistemi GNU/Linux sfruttando la sua peculiare programmazione di tipo grafico.

Fig. 6. - Creazione automatica dei VI di libreria con icona.

RIFERIMENTI
Il codice C utilizzato come esempio in questo articolo pu essere liberamente scaricato dalla sezione articoli del sito www.ilvg.it al quale si rimanda anche per eventuali commenti, correzioni o quant'altro.
readerservice.it n104

Note sullautore
Membro staff ilvg.it, Nick Apollon. Laureato in ingegneria informatica, lavora presso il Laboratorio Sperimentale di Robotica e Microsistemi (LSRM) dell'Universit degli Studi di Bergamo.
Fig. 7. - Creazione automatica dei VI di libreria con icona (segue).

12

TIPS & TECHNIQUES

01

IL LABORATORIO NEL PC: LA SCHEDA AUDIO


Nicola Bavarone

Questo ar ticolo vuole essere un esempio per la realizzazione dei pi comuni strumenti di laboratorio elettronico con LabVIEW e un PC standard, sfruttando i dispositivi di acquisizione/inter facciamento gi presenti sul nostro calcolatore. Esso indirizzato a tutti gli utilizzatori LabVIEW, con par ticolare attenzione agli studenti che possono realizzare gli strumenti in modo software, imparandone tutte le funzionalit intrinseche e senza dover sostenere le spese per schede di acquisizione dati commerciali

Vediamo ora le caratteristiche standard di conversione: - Risoluzione : 8 bit; 16 bit (le pi frequenti) - Rate: 8000; 11025; 22050; 44100Hz - Tensione dingresso: (a seconda della scheda e da mic o line-in) circa 1,5 : 2V - Tensione duscita: (a seconda della scheda e da headphone o line-out) circa 1 : 2V - Tipo di accoppiamento: in alternata (banda passante 20Hz 20kHz). Questa caratteristica rende la scheda non idonea per misure in continua o troppo lente. Altri parametri sono da verificare con i datasheet della scheda. Nota: Isolare sempre la scheda dal circuito in test, utilizzando trasformatori, fotoaccoppiatori e altro. La scheda audio non permette misure in continua o lentamente variabili nel tempo.

INTERFACCIAMENTO E CONNETTORI
Sul connettore line-in, tipicamente il segnale dingresso accettato nel range 500mV 2V, con unimpedenza di circa 10/47 k. Questo canale da preferire (se disponibile) al canale mic-in perch a doppio canale e perch accetta valori di tensione maggiori. Sul connettore mic-in (microfono), lingresso a 5V utile per alcuni tipi di microfoni, per il canale di acquisizione in questo caso si utilizzeranno solo il pin 1 e 3. Attenzione: il segnale in ingresso accettabile per non creare danneggiamenti alla scheda non deve superare i 10mV pp. Sul connettore line-out tipicamente il segnale massimo in uscita 2V, con unimpedenza che pu variare da 30 a 400. Se si vogliono monitorare andamenti sinusoidali (per esempio la tensione di rete) si pu ricorrere ad un attenuatore realizzato per mezzo di un trasformatore e un paio di partitori. Un buon partitore sarebbe sufficiente a ridurre la tensione dingresso alla scheda, ma non permette il disaccoppiamento fisico fra la scheda audio e la sonda, sempre consigliabile.

SCHEDA DI ACQUISIZIONE ANALOGICA, LA SCHEDA AUDIO


La scheda audio a tutti gli effetti una scheda di conversione analogico/digitale (A/D), nel caso degli ingressi mic-in e line-in e ancora una scheda di conversione digitale analogica (D/A) sulle uscite line-out o headphone (cuffie). Di conseguenza offre la possibilit di acquisire e generare segnali in tensione. I segnali trattati tuttavia sono molto deboli e quindi sia in ingresso che in uscita si dovrebbe realizzare un circuito di condizionamento e separazione per non provocare danni al computer.

14

TIPS & TECHNIQUES

GENERATORE DI FUNZIONI
Realizziamo ora un generatore di funzioni a due canali per la scheda audio, in LabVIEW. Per interfacciarci alla scheda audio utilizziamo la palette graphics & sound/sound. I blocchi funzione per inviare un segnale sulle uscite line-out o headphone sono: - Sound Output Config.vi: Configura la scheda, impostando rate, risoluzione, qualit mono o stereo. - SO Volume.vi: Regola l'ampiezza del segnale inviato. - SO Write.vi: Invia in uscita il segnale, che pu essere mono 8bit, mono 16bit, stereo 8bit e stereo 16bit. - SO Start.vi: Avvia l'invio del segnale. - SO Wait.vi: Attende finch tutti i segnali sono stati ricevuti dal buffer di uscita. - SO Clear.vi: Chiude la generazione e rilascia le risorse. Il primo step quello di realizzare il blocco in grado di far convogliare il segnale sul canale della scheda audio. A tale scopo, si realizza il VI, Soundcard_out.vi, di cui riportiamo il diagramma nella fig. 1.

zializzazione della scheda audio. Amplitude DX e SX controlla lampiezza del segnale in uscita (agisce sul volume). Per realizzare il blocco per generare il segnale, utilizziamo il basic function generator.vi, che permette di realizzare le forme d'onda pi utilizzate, come sinusoidale, triangolare, quaFig. 2: Soundcard_ dra, dente di sega (sawtooth). out Ingressi e Uscite Il segnale creato viene inviato al subVI Soundcard_out.vi. Il diagramma del generatore di funzioni (function generator.vi) illustrato nella fig. 3. L'interfaccia del generatore mostrata nella fig. 4.

Fig. 3: Diagramma del generatori di funzioni

Fig. 1: Soundcard_out.vi

Il while loop esegue uniterazione sola (condizione loop a false), necessario comunque utilizzarla per settare lo shift register. Il terminale di selezione della case structure collegato alla funzione first call, in modo che il vi si inizializzi solo la prima volta che viene chiamato e successivamente passi con lo shift register il task id direttamente al S.O. Volume.vi. La fig. 2 mostra i collegamenti di Ingresso e Uscita necessari al funzionamento. Channel SX e Channel DX sono due array[I16] che costituiranno il dato da trasmettere. Sound format il cluster di ini-

Fig. 4: Inter faccia del generatore di funzioni

15

TIPS & TECHNIQUES

01

Il pannello diviso in due met, una per canale. Ogni canale pu generare diversi tipi di waveform (Sine, Square, Saw, Pink noise e White noise). E possibile gestirne l'angolo di fase, l'ampiezza e la frequenza. Si possono implementare, con un po' di lavoro, altre funzioni a piacimento, come controllo del duty cycle, pause, salvataggio della waveform, ecc.

OSCILLOSCOPIO
Realizziamo ora un oscilloscopio a 2 canali, sfruttando l'ingresso line-in o mic-in della scheda audio. Per la lettura del dato dingresso della scheda audio, utilizziamo la palette graphics & sound/sound. Le funzioni per la lettura dei dati da scheda audio sono: - Sound Input Config.vi Configura l'ingresso della scheda. - Sound Input Start.vi Inizia l'acquisizione. - Sound Input Read.vi Rende disponibile larray dei valori presenti sul buffer della scheda audio (4 uscite, una per ogni tipo di configurazione hardware, es. 8bit mono, 16bit mono, 8bit stereo, 16bit stereo). - Sound Input Stop.vi Arresta l'acquisizione. - Sound InputClear.vi Chiude la connessione con il dispositivo associato al task id, quindi rilascia le risorse del sistema utilizzate dalla scheda. Si realizza quindi il core object del progetto Oscilloscopio, che salviamo con il nome Soundcard_in.vi (fig. 5).

Fig. 6: Il subVI Extract rate fromsound format.vi

Fig. 7: Il subVI Build audio data.vi

Fig. 8: Diagramma del Soundcard_in.vi

Read.VI in modo da avere ununica uscita indipendentemente dal tipo di impostazione del canale.
Fig. 5: Il core object del progetto Oscilloscopio

Il diagramma del Soundcard_in.vi viene quindi mostrato nella fig. 8. Inserendo il Soundcard_in.vi all'interno di un while loop e posizionando un grafico da collegare all'uscita di questo vi, collegando direttamente la presa mic alla Headphone, e utilizzando il generatore di funzioni per generare una funziona sinusoidale a 100Hz, si ha la rappresentazione di fig. 9. La realizzazione dell'oscilloscopio deve ora prevedere le

Questo blocco incaricato di interfacciarsi e leggere il dato sulla scheda audio. All'interno, oltre alle funzioni di interfacciamento alla scheda, si notino i subVI Extract rate fromsound format.vi (fig. 6), che ha l'incarico di estrarre il rate selezionato dal cluster di configurazione, e Build audio data.vi (fig. 7), che concatena i 4 array di uscita del SI

16

TIPS & TECHNIQUES

Fig. 9: Rappresentazione finale delloscilloscopio

Il case contiene quindi il codice per la lettura da scheda audio, la lettura da file e la scrittura su file.A questo punto, occorre aprire il diagramma del file oscilloscopio.vi e creare il case, disegnandolo in modo che contenga il subVI di acquisizione soundcard_in.vi. Infine, inserire quindi nel pannello un Cluster che contenga tre boolean (Acquire, Load, Save), ritornare al diagramma e completare il codice come nella fig. 10. Ora si inseriscano i frame per la lettura e la scrittura su wav file, realizzando il codice delle figure 11 e 12. Il vi Oscilloscopio pu ora salvare e leggere file di formato wave. Si possono estendere le funzionalit, implementando anche salvataggio e lettura su file di testo, ecc.

funzioni tipiche di un oscilloscopio, ricordando che si ha a disposizione un solo canale e che non si riesce ad acquisire bene frequenze inferiori a 20Hz. Nota: A seconda del computer utilizzato si possono avere visualizzazioni diverse. molto importante impostare accuratamente i parametri del mixer di sistema (volume, microfono, preamplificazione se prevista, ecc.).

FILE WAVEFORM
La waveform catturata con l'oscilloscopio o generata dal generatore di funzione si pu salvare o leggere in formato .wav. Si utilizzano per questo i VI disponibili nella palette sound: - Sound Write Wave File.vi Salva la waveform. - Sound Read Wave File.vi Restituisce un array dei dati campionati nel file wav. Per una dimostrazione pratica, inseriamo queste funzioni all'interno dell' oscilloscopio. Per inserire una funzione inseriamo una struttura case, che gestisca le operazioni effettuate sull'oscilloscopio.
Fig. 11: Frame per la lettura di wav file

Fig. 12: Frame per la scrittura su wav file

CONCLUSIONI
La scheda Audio rappresenta un buon punto di partenza per studiare LabVIEW e l'acquisizione digitale. E possibile migliorare il progetto aggiungendo funzionalit e ottimizzando gli esempi mostrati.
readerservice.it n106

Note sugli autori


Fig. 10: Inserimento di tre boolean nel cluster

Nicola Bavarone: ILVG Staff, Resp. Lab. T&M motori elettrici presso WAY

17

D A L L A T E O R I A A L L A P R AT I C A

01

LABVIEW IN DOMOTICA: GESTIONE DI UNA RETE DI SENSORI ZIGBEE


Michele Corr

La sfida: realizzare un applicativo software per la gestione e la configurazione di una rete sperimentale di sensori wireless, la visualizzazione dei dati acquisiti ed il loro salvataggio. Inoltre, rendere lapplicazione aper ta a future estensioni. Tretec ha vinto la sfida utilizzando le potenzialit di programmazione avanzata in NI LabVIEW per la comunicazione via protocolli standard, la visualizzazione grafica, la gestione dati/file e di array/cluster complessi al fine di realizzare una inter faccia utente semplice, intuitiva ed efficace

WSN, sviluppata da Tretec conto del Dipartimento di Informatica e Telecomunicazioni dellUniversit degli Studi di Trento (http://www.dit.unitn.it), permette la gestione e la configurazione di una rete di sensori wireless (Wireless Sensor Network) nonch lacquisizione, lelaborazione ed il salvataggio delle misure effettuate.

Domotic applicazione (http://www.3tec.it) per

LA RETE WIRELESS
La rete wireless composta da una serie di nodi prototipo (fig.1) realizzati da Optoelettronica Italia S.r.l. (http:// www.optoi.com) e si basa su di una comunicazione radio in standard MAC 802.15.4 ZigBee compatibile. La struttura fisica prevede limpiego di un nodo configurato come master (coordinator di rete o FFD, Full Function Device) ed una serie di nodi configurati come slave (end device o RFD, Reduced Function Device). Il sistema domotico configurato come un sistema distribuito di acquisizione dati su protocollo wireless.Ogni nodo slave attualmente dotato di sensori ambientali per il monitoraggio di temperatura, umidit e illuminazione. La struttura hardware modulare dei nodi consentir la futura integrazione di altre tipologie di sensori.La comunicazione tra master e software avviene via connessione USB ed una porta seriale virtuale attraverso il protocollo Modbus, implementato grazie allutilizzo delle funzioni contenute nella libreria Modbus Library for LabVIEW, scaricabile gratuitamente dalla Developer Zone del sito della National Instruments. Il master si occupa di tenere traccia dei nodi collegati alla rete (fig. 2) e di archiviare i dati ricevuti, mentre lapplicazione sviluppata con LabVIEW pu interrogare il master inviando richieste per conoscere la topologia della rete oppure per la richiesta dei dati memorizzati e comunicati dai nodi slave.

Fig. 1 - Nodo di rete WSN

18

D A L L A T E O R I A A L L A P R AT I C A

CONFIGURAZIONE DELLA RETE


Le principali modalit operative dellapplicazione sono: - config: configurazione della rete - run: acquisizione, visualizzazione e salvataggio misure distribuite. In modalit configurazione possibile: - verificare il corretto collegamento del master al PC; - ricavare informazioni relative al numero dei nodi che appartengono alla rete ed al tipo di misure che essi possono effettuare; - aggiungere o eliminare manualmente uno o pi nodi; - impostare i parametri relativi ad ognuno dei nodi (descrizione, valori di soglia, misura principale); - scegliere il percorso del file e la modalit in cui i dati verranno archiviati (log unico oppure log per singolo nodo); - caricare file di dati salvati in precedenza e visualizzazione dei relativi grafici; - selezionare la planimetria da utilizzare per il sinottico; - posizionare i nodi, trascinandoli con il mouse, allinternodel sinottico collocandoli nella loro corretta posizione spaziale.

Cliccando con il mouse sul sinottico stesso, pu essere messo in evidenza e visualizzato in una finestra esterna allapplicazione (con un fattore di zoom impostabile dallutente). La visualizzazione grafica dei dati di nodo (grandezze di ogni singolo nodo) o in forma aggregata (di tutti i nodi); posizionando il puntatore del mouse su uno qualsiasi dei nodi viene visualizzato il grafico, secondo le impostazioni selezionate tramite il tab delle opzioni grafiche.

LA MODALIT RUN
In modalit run possibile: - lacquisizione dei dati: lapplicazione invia al master, ad intervalli regolari di tempo definiti dallutente, una richiesta Modbus di ricezione dati; il master risponde inviando le misure ricevute dai nodi durante lintervallo di tempo. - la visualizzazione tabulare dei dati di ciascun nodo e salvataggio su file. Ad ognuno dei nodi appartenenti alla rete associato un cluster attraverso il quale vengono mostrati il numero identificativo, il valore, la data e lora dellultima misura effettuata, ed un indicatore luminoso che si accende nel caso in cui la misura superi i valori di soglia impostati. - laggiornamento di un sinottico grafico (fig. 3). I nodi vengono rappresentati graficamente allinterno di un sinottico.
Fig. 3 - L'applicativo Domotic WSN

Queste ultime consentono di scegliere se mostrare in tempo reale sul grafico una o tutte le grandezze relative ad un singolo nodo oppure a tutti i nodi che appartengono alla rete. - accedere allo storico delle grandezze acquisite dai nodi consentendo allutente unanalisi approfondita dei dati.

LAPPLICAZIONE
Lapplicazione stata interamente realizzata utilizzando LabVIEW in ambiente WindowsXP. Per lo sviluppo, oltre ai tradizionali strumenti messi a disposizione da LabVIEW per la gestione di file, di array/cluster di dati complessi e per la visualizzazione di grafici, si fatto largo uso della programmazione ad eventi in LabVIEW. Attraverso la Event Structure stato possibile, infatti, risolvere in maniera efficace le problematiche relative allutilizzo del mouse come strumento per la gestione dello spostamento degli oggetti sullo schermo consentendo la realizzazione di uninterfaccia utente semplice ed intuitiva. La struttura modulare con cui il software stato realizzato permette di poter approntare modifiche piuttosto velocemente rendendo il codice aperto alla possibilit di prossimi sviluppi futuri. In conclusione, sono stati utilizzati NI LabVIEW e NI Modbus Library for LabVIEW.
readerservice.it n107

Fig. 2 - Topologia star della rete WSN.

Note sullautore Michele Corr: Tretec

19

D A L L A T E O R I A A L L A P R AT I C A

01

COMPACTRIO PER ATTIVIT SUL FONDO MARINO


Halvor Snellingen

La sfida era quella di preparare il fondo marino per il posizionamento di condutture per il trasferimento di gas naturale dagli enormi giacimenti al largo della costa nor vegese, nel Mare del Nord. LabVIEW e CompactRIO hanno permesso di azionare i sistemi idraulici del veicolo sottomarino Spider di Nexans, controllato da remoto, durante le attivit di spianamento e creazione del fondo per la conduttura

l giacimento di gas naturale di Ormen Lange stato scoperto nel 1997 al largo della costa occidentale della Norvegia. E il secondo maggior giacimento di gas naturale su territorio norvegese ed potenzialmente in grado di fornire circa 20 miliardi di metri cubi di gas ogni anno. Ormen Lange, che in norvegese significa la lunga serpe, si estende per approssimativamente 40 km a circa 3.000 metri sotto il livello del mare, ed ha un'ampiezza di 8 km. Il giacimento, operativo a partire dal 2007, sar equipaggiato di gasdotti sottomarini posizionati ad una profondit che pu variare da 800 a 1100 metri sotto il livello del mare. Il condotto sar in grado di trasferire gas dalle piattaforme di produzione allimpianto per il trattamento sito a Nyhamna, Norvegia. Il gas seguir poi un percorso a 1.200 km sotto il livello del mare che lo porter ad Easington, sulla costa orientale del Regno Unito, e verso altre destinazioni sulla costa occidentale del continente.

CONDIZIONI AMBIENTALI DIFFICILI


Le condizioni climatiche piuttosto difficili, come temperature molto al di sotto dello zero, mari molto mossi e forti correnti sottomarine, richiedono limpiego di strumenti estremamente affidabili. Le attrezzature utilizzate al giacimento non possono essere di tipo convenzionale. Le sorgenti di gas naturale sul fondo marino verranno infatti collegate dal gasdotto direttamente allimpianto di lavorazione di Nyhamna sulla terraferma. Alle rigide condizioni climatiche della regione, si aggiunga inoltre una topografia del fondo oceanico molto irregolare. I condotti devono potersi fare strada sul terreno roccioso in modo da non presentare sezioni prive di supporto particolarmente vulnerabili e danneggiabili. Per risolvere questo problema, Nexans ha sviluppato Spider, uno speciale escavatore comandato a distanza (remote

20

D A L L A T E O R I A A L L A P R AT I C A

operated vehicle - ROV) appositamente progettato per preparare il fondo marino alla dislocazione di gasdotti su terreni in forte pendenza o terreni rocciosi ad elevate profondit. Spider si basa sul progetto di un macchinario per il taglio delle foreste di concezione svizzera, ed stato equipaggiato per operare su terreni a grandi profondit e in forte pendenza.

le attivit di scavo sono riprodotte in formato ActiveX 3D sul pannello frontale di LabVIEW. La visualizzazione 3D mostra un modello del fondo marino e la posizione attuale dello Spider in tempo reale grazie ad una serie di sensori dislocati sul corpo del rover. Il corpo e le benne di Spider sono telecomandate da un comune joystick commerciale. LabVIEW in grado di leggere i comandi attraverso i VI specifici ed inviare i segnali di controllo attraverso un link a fibre ottiche a Spider, persino ad una profondit di 1.000 metri.

SOFTWARE 3D
Spider azionato attraverso un software 3D, sensori posizionati su tutte le sue parti in movimento e una rete di trasmettitori acustici presenti sul fondo marino. LabVIEW permette di aggiornare il modello in 3D del fondo marino in tempo reale e mostrare la modificata configurazione del terreno attraverso lutilizzo di interfacce utente (HMI). Inoltre, dettagliati controlli ed ispezioni vengono svolti

CONTROLLO ED ACQUISIZIONE DATI


I tre sistemi di controllo industriale ed acquisizione dati NI CompactRIO posizionati sulle navi che seguono lo Spider sono esposti al difficile ambiente marino per lunghi periodi e soggetti a temperature proibitive, aria salata ed elevati tassi di umidit. I tre sistemi hanno il compito di regolare il galleggiamento e controllare argano e alimentazione elettrica comunicando con le principali applicazioni LabVIEW. Tutti gli algoritmi per queste applicazioni vengono gestiti in tempo reale da CompactRIO. La piattaforma LabVIEW ha contribuito allo sviluppo e rea-

Fig. 1 - Nexans ha utilizzato LabVIEW e CompactRIO per controllare i sistemi idraulici di Spider, un veicolo azionato in remoto progettato per attivit sul fondo marino (Foto: Norsk Hydro)

quotidianamente da un veicolo sottomarino dotato di ecoscandaglio. Spider pu essere controllato con una precisione al centimetro anche ad una profondit di 1.000 metri. Spider manovrato e monitorato dalla sala di controllo di una nave tramite il software LabVIEW. Loperatore ha una panoramica completa dello spazio dazione di Spider tramite varie schermate di LabVIEW. Numerose telecamere disposte sul corpo dello Spider permettono di visualizzare video da varie inquadrature. Tutte

lizzazione di un sistema di facile manutenzione anche in condizioni ambientali e climatiche difficili soprattutto grazie al potente paradigma di programmazione sia per lHMI che per il controllo embedded.
readerservice.it n108

Nota sullautore Halvor Snellingen: Nexans

21

D A L L A T E O R I A A L L A P R AT I C A

01

SIMULAZIONE DI UNA CAVIT LASER OPERANTE IN REGIME IMPULSATO


F. Trespidi, E. Stucchi, E. Nava

La sfida era quella di simulare in maniera attendibile il compor tamento di una cavit laser Q-switch e dei successivi stadi di amplificazione ottica per progettare e ottimizzare la cavit laser in termini di: efficienza di conversione, energia, durata e distribuzione spaziale dellimpulso laser. La soluzione si basata su NI LabVIEW, in par ticolare sulle nuove librerie matematiche con trasformata 2D nel piano complesso, per la creazione di un modello matematico completo della cavit laser
n modello di cavit laser stato messo a punto in NI LabVIEW per consentire la rapida ottimizzazione dei parametri di cavit. In questo modo stato possibile effettuare via software una numerosa serie di test che hanno permesso di definire il valore ottimale dei parametri di cavit laser come la riflettivit e la curvatura degli specchi, nonch svolgere unapprofondita ottimizzazione del sistema complessivo. I risultati forniti dalle simulazioni sono in buon accordo con quelli ottenuti successivamente con la realizzazione del prototipo. Il programma sviluppato permette di eseguire unaccurata simulazione, dal punto di vista fisico, di una cavit ottica risonante usata per una sorgente laser impulsata. La cavit costituita da due specchi, che possono essere piani o aventi una specifica curvatura, e una barra di materiale attivo posto tra i due specchi inizialmente pompato (ovvero illuminato) con una distribuzione di intensit definibile dallutente. La cavit ottica non altro che un risonatore dove un fronte donda luminoso iniziale viene ripetutamente riflesso avanti ed indietro dagli specchi. Ad ogni passaggio nel materiale attivo la sua intensit si amplifica e la fase si modifica in accordo con le leggi della propagazione elettromagnetica. Lamplificazione avviene fino a quando il materiale attivo stato svuotato, ovvero non pi in grado di amplificare la radiazione che lo attraversa (prima che un nuovo impulso di pompa lo riattivi per generare limpulso laser successivo). Il programma utilizza le leggi ottiche di propagazioFig. 1 - Distribuzione spaziale dellintensit laser ne del campo eletottenuta dalla simulazione tromagnetico in a-

ria e allinterno dei materiali. Pertanto la simulazione in grado di considerare tutti gli effetti fisici legati alla diffrazione e al profilo di intensit e fase del fronte donda luminoso, nonch gli effetti di rifrazione dovuti al cambio di indice di rifrazione tra i diversi materiali, le perdite per assorbimento nei materiali e la trasmissione degli specchi. Il materiale attivo, ovvero quello che amplifica la radiazione luminosa, stato modellizzato come una striscia sottile di guadagno, dove per il valore del guadagno costituito da una matrice bidimensionale e viene aggiornato dopo ogni passaggio della radiazione allinterno della cavit per considerare gli effetti di svuotamento dellenergia di pompa.

Fig. 2 - Andamento temporale dellenergia dellimpulso in alcune sezioni della catena di amplificazione ottica

IL SIMULATORE
Il simulatore comprende, oltre alla cavit laser chiamata master oscillator, anche due stadi di amplificazione ottica modellizzati in maniera analoga. La simulazione della propagazione di unonda luminosa richiede il massiccio utilizzo di trasformate e antitrasformate di Fourier bidimensionali nel campo complesso che fino alle versioni precedenti di LabVIEW non erano disponibili tra le librerie matematiche. Lampliamento delle librerie matematiche di LabVIEW 8 ha permesso di utilizzare LabVIEW per questa simulazione.

22

D A L L A T E O R I A A L L A P R AT I C A

Fig. 3 - Formazione dellimpulso laser partendo dalla distribuzione casuale del campo elettromagnetico allinterno del risonatore (lasse Z rinormalizzato su ogni grafico)

Poich un programma simile, ma meno accurato, era gi stato sviluppato in ambiente Matlab di The MathWorks, il primo passo stato quello di inserire il codice Matlab in LabVIEW, operazione semplificata dalle routine di Matlab Script Node disponibili in LabVIEW 8. Dopo una verifica del corretto funzionamento si proceduto alla conversione del programma da Matlab a LabVIEW. In questo modo aumentata sia la flessibilit nella programmazione che lelasticit con cui possono essere inseriti o modificati i parametri di controllo ed stata decisamente migliorata e organizzata anche la visualizzazione dei risultati. A seguito di queste caratteristiche stato possibile controllare contemporaneamente e aggiornare in tempo reale tantissimi parametri di cavit come il guadagno della cavit, quello del materiale attivo nelle sue diverse zone, lo svuotamento del pompaggio e la forma del fascio in diversi punti della cavit. stato utilizzato un computer Pentium 4 a 3GHz dotato di 1Gb di RAM e hard disk da 80Gb, con sistema operativo Windows XP.

ed altre caratteristiche del fascio come la divergenza, la qualit ottica (parametro M2) e i raggi medi.

CONCLUSIONI
Il lavoro ha permesso di utilizzare le seguenti potenzialit offerte da LabVIEW: Semplice accessibilit e modifica dei parametri di controllo. Possibilit di visualizzare molti parametri, grafici e distribuzioni bi- e tridimensionali su ununica schermata. Possibilit di effettuare operazioni direttamente su array di dati. In particolare, sono state utilizzate le seguenti potenzialit di LabVIEW: Possibilit di effettuare trasformate bidimensionali nel campo complesso. Possibilit di un semplice interfacciamento con codici Matlab. Il sistema realizzato ha consentito di ottenere i seguenti benefici: Semplificazione delle simulazioni (unico programma per linserimento dei parametri, il calcolo dei risultati e la visualizzazione dei dati) e dellaggiornamento del programma grazie alla rappresentazione ad oggetti. Fig. 4 Simulazione di un effetto di diffra Velocizzazione complessiva delle sizione in cavit mulazioni, che non richiedono il salvataggio su file di dati intermedi per visualizzazioni e analisi successive. I risultati sono stati confermati da un prototipo realizzato in base alle soluzioni ottenute con le simulazioni. Questo programma stato utilizzato nellambito di un contratto ESA (European Space Agency) per lo sviluppo di un sistema per il monitoraggio e caratterizzazione dei corpi nuvolosi da satellite (progetto Atlas).
readerservice.it n109

CARATTERISTICHE
I tempi di calcolo necessari sono gli stessi richiesti dal programma originale Matlab e vanno da qualche secondo a qualche minuto per la generazione di un impulso laser completo a seconda delle configurazioni utilizzate e del livello di accuratezza impostato. Un grande sforzo stato fatto per velocizzare la risoluzione di equazioni molto complesse per la definizione del guadagno del materiale attivo in funzione dellenergia di pompa residua presente nel materiale stesso. Una forte velocizzazione stata ottenuta utilizzando la possibilit offerta da LabVIEW di operare direttamente sugli array anzich sui singoli valori numerici. Il programma, una volta eseguita la simulazione, provvede anche ad effettuare una serie di misurazioni sullimpulso laser generato, utili per valutare la qualit dellimpulso stesso. Tra queste vi sono: levoluzione temporale della distribuzione luminosa dellimpulso (in due dimensioni), il profilo di energia dellimpulso in funzione del tempo, lefficienza di conversione, lintensit e fluenze luminose in diverse sezioni della cavit (utili per valutare leventuale danneggiamento dei componenti ottici)

Note sugli autori: F. Trespidi, E. Stucchi, E. Nava: Cesi Ricerca

23

D A L L A T E O R I A A L L A P R AT I C A

01

M. Luciani

STRUMENTI PER LA DESCRIZIONE E LIMPLEMENTAZIONE DELLE MACCHINE A STATI DEI SOFTWARE


E stato realizzato un tool per la progettazione e limplementazione delle macchine a stati dei software impiegati nella gestione e nel controllo di sistemi reattivi quali: processi industriali, inter facce uomo macchina, ecc...
Larticolo descrive lideazione di un nuovo formalismo denominato PRIority State MAchine (PriSMa) e di un tool PriSMaVIEW mediante i quali possibile: - rappresentare sistemi ad eventi discreti comunque complessi mediante diagrammi di stato; - implementare direttamente i progetti; - separare nettamente la parte logica da quella puramente computazionale dei progetti software. interpretare. Mediante il formalismo denominato PriSMa e il tool PriSMaVIEW si pu ovviare a tale inconveniente grazie alla possibilit di suddividere un progetto in pi sottoprogetti. Altri vantaggi che tale sistema offre sono: - separazione netta della parte di codice che implementa la macchina a stati da quella trasformazionale, - implemetazione diretta del diagramma progettato. Lesigenza di introdurre lo strumento delle PriSMa nasce principalmente dalla necessit, maturata nel settore del controllo e della supervisione dei sistemi di automazione industriale, di poter esprimere mediante un linguaggio di facile comprensione le logiche che caratterizzano il funzionamento dei processi industriali. In questo contesto quando si tratta di capire come funziona

NUOVI FORMALISMI
I diagrammi degli stati rappresentano uno strumento semplice ed efficace per la rappresentazione dei sistemi ad eventi discreti. Nellambito dellingegneria del software se ne limita luso alla realizzazione di piccoli sistemi in quanto diagrammi costituiti da molti stati sono ostici da legere e da

24

D A L L A T E O R I A A L L A P R AT I C A

un impianto lo strumento che rappresenta un punto dincontro tra chi conosce il problema (che per suo conto si limiterebbe a effettuarne una descrizione a parole con una serie di asserzioni pi o meno compatibili) e chi lo deve implementare (che invece usa notazioni formali pi potenti tipo gli strumenti offerti dallUML) rappresentato dai diagrammi di stato. Per questa ragione il nostro punto di partenza stato quello di utilizzare questo tipo di notazione introducendo al tempo stesso delle opportune estensioni allo scopo di aumentarne lespressivit. I diagrammi delle PriSMa sono costituiti da stati, rappresentati da cerchi e da transizioni rappresentate da archi orientati che devono avere come origine e destinazione uno stato (fig. 1). Lo stato di partenza delle PriSMa sempre individuabile in maniera univoca poich lunico caratterizzato dallavere solo transizioni in uscita. Nelle PriSMa gli eventi in uscita da uno stato sono caratte-

associata levento NULL che per definizione vale TRUE. Se non vi fosse stata tale transizione il sistema avrebbe ripetutamente testato i tre eventi a, b e c fino a che uno non fosse diventato TRUE. Riguardo alle azioni, considerando sempre X come stato di partenza se il valore logico di a TRUE sono eseguite azione_1 e azione_2 perch legate alla transizione cui associato levento a. Successivamente eseguita lazione_5 in quanto legata allingresso nello stato A. Uscendo dallo stato A, invece, verrebbe eseguita l azione_3. Le informazioni contenute nei diagrammi possono essere espresse equivalentemente in forma tabellare (fig. 2). Nella notazione tabellare lordine di valutazione degli eventi di uno stato determinato dallordine di apparizione degli stessi dallalto verso il basso. Pertanto le transizioni legate agli eventi a, b, c e NULL dello stato X appaiono su tre righe distinte nel medesimo ordine. Come si pu osservare la colonna Azioni popolata da tutte quelle azioni che il sistema deve eseguire nellevoluzione della macchina a stati. Se per una transizione ci sono pi azioni da dover eseguire queste sono elencate una di seguito allaltra separate da una virgola. Lultima riga della tabella contiene un dato non omogeneo con tutto il resto, essa ha lo stato A come stato di partenza e nulla come stato darrivo. Questa notazione utilizzata per descrivere le azioni che devono essere eseguite allingresso e alluscita dallo stato indicato nella prima colonna. Il tool PriSMaVIEW, scritto in NI LabVIEW, composto da due parti: leditor ed il simulatore.

Fig. 1 - Semplice esempio di PriSMa

rizzati da un indice di priorit che determina lordine con il quale essi devono essere valutati. Le label delle transizioni ci forniscono tre distinte informazioni: la priorit con il quale levento associato a quella transizione deve essere valutato (0 il primo); levento e/o leventuale sincronismo (il sincronismo permete la comunicazione tra PriSMa in evoluzione parallela); le azioni da eseguire contestualmente al superamento della transizione. Le label associate agli stati ci forniscono due informazioni: Il nome dello stato; Le azioni da eseguire allingresso (@) o alluscita (#) dello stesso. Nella fattispecie, supponendo che il sistema si trovi nello stato iniziale X sono valutati nellordine gli eventi a, b e c. Il primo di questi eventi che vale TRUE fa evolvere il sistema nello stato cui la rispettiva transizione collegata. Se i tre eventi hanno valore logico FALSE allora il sistema evolve verso lo stato D per mezzo della transizione con indice 3 cui

Fig. 2 - Schermata principale del tool PriSMaVIEW con la tabella contentente la PriSMa rappresentata nel diagramma di fig. 1

25

D A L L A T E O R I A A L L A P R AT I C A

01

Leditor consente di eseguire le seguenti attivit: - editare e salvare le PriSmai; - ottenere la rappresentazione grafica delle PriSMa editate (*); - comporre pi PriSMa caricandole dal file system; - verificare alcune propriet delle PriSMa. (*) La rappresentazione grafica delle PriSMa stata fatta utilizzando il linguaggio dot e lapplicativo dotty che fa parte dellambiente di sviluppo Graphviz. Il simulatore permette di simualare il funzionamento della PriSMa progettata. Il codice che implemeta le PriSMa composto da tre elementi (fig. 3): il core-engine che la procedura principale e la sua funzione di interpretare i progetti descritti nel formalismo PriSMa e di implementarli passando attraverso la gestione del server degli eventi e del server delle azioni. Considerando un qualsiasi stato il core-engine individua la lista degli eventi associati alle transizioni in uscita. Tali even-

Fig. 4 - Schema rappresentante i blocchi funzionali della procedura che implementa le PriSMa. Il termine engine identifica la procedura nel suo insieme.

Fig. 3 - Codice LabVIEW che implementa le PriSMa. Sono ben visibili i ser ver delle azioni e degli eventi (cicli while) come pure le code per mezzo delle quali il core-engine li gestisce

ti sono inviati al server degli eventi rispettando lordine di priorit. Il server degli eventi in risposta invia il valore logico di ciascun evento. Nel caso in cui la risposta TRUE il core-engine aggiorna il suo stato e crea una lista ordinata delle azioni eventualmente associate alluscita dallo stato attuale, al passaggio della transizione allingresso nel nuovo stato. Gli elementi di questa lista sono inviati uno per volta al server delle azioni che per ogni azione completata reinvia al core-engine un messaggio di acknowledge (ACK). Nel caso in cui la risposta FALSE si passa allevento successivo fino al termine della lista. Se tutti gli eventi sono FALSE, allora si ricomincia daccapo. Alcuni eventi particolari non hanno bisogno di essere interpretati dal server poich

il loro valore logico una costante. Un esempio rappresentato dallevento sempre vero NULL. Il funzionamento interno del server degli eventi e del server delle azioni piuttosto semplice e riconducibile alla struttura informatica del case (figg. 3 e 4). Essi devono interpretare i messaggi provenienti dal core-engine che consistono in semplici stringhe contenenti il nome di un evento da valutare o il nome di unazione da eseguire. Il sistema PriSMa+PriSMaVIEW offre innumerevoli vantaggi nello sviluppo e nella manutenzione del software poich: - la parte logica di controllo distinta da quella puramente trasformazionale; - la centralizzazione di tutte le informazioni (stato, eventi, azioni) permette di monitorare agevolmente lo stato e levoluzione del sistema; - le PriSMa editate possono essere implementate direttamente, senza effettuare traduzioni.

readerservice.it n110

Note sullautore
Marco Luciani, libero professionista. Tesi realizzata presso il Politecnico delle Marche con la collaborazione dei prof. Maria Zanoli e Sauro Longhi

26

SCUOLA DI LABVIEW

Training per principianti

02

STRUTTURE ITERATIVE
Le strutture iterative sono rappresentazioni grafiche dei cicli dei linguaggi di programmazione testuale
a cura di Matteo Foini

tilizzate le strutture iterative per ripetere blocchi di codice ed eseguire codice in maniera condizionata. LabVIEW prevede due strutture di questo tipo, il Ciclo While e il Ciclo For.

WHILE LOOP
Come un ciclo DO o un ciclo Repeat-Until nei linguaggi di programmazione testuali, un While Loop esegue un sottodiagramma fino a quando non si verifica una condizione. Il While Loop posizionato nella palette Structures. Selezionate il While Loop dalla palette e poi usate il cursore per trascinare un rettangolo di selezione attorno alla sezione dello schema a blocchi che volete ripetere. Quando rilascerete il tasto del mouse, i confini del While Loop racchiuderanno la sezione che avete selezionato. Aggiungete oggetti dello schema a blocchi al While Loop trascinandoli e lasciandoli allinterno del While Loop. Suggerimento Il While Loop va sempre in esecuzione almeno una volta. Il While Loop esegue il sottodiagramma fino a quando il terminale condizionale, un terminale di ingresso, non riceve uno specifico valore booleano. Il comportamento e laspetto di default del terminale condizionale sono Stop if True, come mostrato sotto.

Il conto delle iterazioni comincia sempre da zero. Durante la prima iterazione, il terminale di iterazione segna 0. Nel seguente schema a blocchi, il While Loop in esecuzione fino a quando il dato di uscita del subVI maggiore o uguale a 1.0 e il controllo Enable True. La funzione And da True solo se entrambi i dati di ingresso sono True. Altrimenti, essa da False. Nellesempio seguente, c una forte probabilit di un ciclo infinito. Generalmente, il comportamento desiderato soddisfare una condizione per fermare il ciclo, piuttosto che richiedere che siano soddisfatte entrambe le condizioni.

Fig. 1 - Possibile ciclo infinito

TUNNEL DELLE STRUTTURE


I tunnel inviano dati dentro e fuori le strutture. Il tunnel appare come un blocco solido sul bordo del While Loop. Il blocco dello stesso colore del tipo di dato collegato al tunnel. I dati escono dal ciclo quando il ciclo termina. Quando un tunnel fornisce dati a un ciclo, il ciclo si avvia solo dopo che i dati arrivano al tunnel. Nel seguente schema a blocchi, il terminale di iterazione connesso a un tunnel. Il valore nel tunnel non viene passato allindicatore Iterations fino a quando il While Loop non termina lesecuzione. Soltanto lultimo valore del terminale di iterazione viene visualizzato nellindicatore Iterations.

Quando un terminale condizionale Stop if True, il While Loop esegue il suo sottodiagramma fino a quando il terminale condizionale non riceve un valore TRUE. Potete cambiare comportamento e aspetto del terminale condizionale cliccando con il tasto destro sul terminale o sul bordo del While Loop e selezionando Continue if True, mostrato sotto, dal menu rapido.

Quando un terminale condizionale Continue if True, il While Loop esegue il suo sottodiagramma fino a quando il terminale condizionale non riceve un valore FALSE. Potete anche usare lo strumento Operating per cliccare sul terminale condizione per cambiare la condizione. Il terminale di iterazione (un terminale di uscita), mostrato sotto, contiene il numero di iterazioni compiute.
Fig. 2 - Tunnel del While Loop

27

SCUOLA DI LABVIEW

01

FOR LOOP
Un For Loop esegue un sottodiagramma un dato numero di volte. Il For Loop si trova nella palette Functions"All Functions"Structures. Potete anche mettere un While Loop sullo schema a blocchi, cliccare con il tasto destro il bordo del While Loop e selzionare Replace with For Loop dal menu rapido per passare da While Loop a For Loop. Il valore nel terminale di conteggio (un terminale di ingresso), mostrato sotto, indica quante volte ripetere il sottodiagramma.

temporizzare i vostri cicli.

FUNZIONI DI ATTESA
Inserite una funzione di attesa allinterno di un ciclo per consentire ai VI di restare dormienti per un certo ammontare di tempo. Questo consente al vostro processore di effettuare altri compiti durante il tempo di attesa. Le funzioni di attesa usano lorologio a millisecondi del sistema operativo. La funzione Wait Until Next ms Multiple, mostrata a sinistra, controlla un contatore a millisecondi e attende che il contatore a millisecondi raggiunga un multiplo dellammontare che voi avete specificato. Usate questa funzione per sincronizzare le attivit. Mettete questa funzione in un ciclo per controllare la velocit di esecuzione del ciclo. Affinch questa funzione sia efficace, il vostro tempo di esecuzione del codice deve essere inferiore al tempo specificato per questa funzione. La velocit di esecuzione della prima iterazione del ciclo indeterminata. La funzione Wait (ms), mostrata a sinistra, attende fino a quando il contatore a millisecondi conta fino ad un ammontare uguale al dato di ingresso che avete specificato. Questa funzione garantisce che la velocit di esecuzione del ciclo sia almeno pari al dato di ingresso che avete specificato. Nota Il VI Time Delay Express si comporta come la funzione Wait (ms) con laggiunta di cluster di errore incorporati.

Il terminale di iterazione (un terminale di uscita), mostrato sotto, contiene il numero di iterazioni completate.

Il conteggio delle iterazioni parte sempre da zero. Durante la prima iterazione, il terminale di iterazione segna 0. Il For Loop differisce dal While Loop per il fatto che il For Loop va in esecuzione un numero di volte predefinito. Un While Loop arresta lesecuzione del sottodiagramma solo se esiste il valore corrispondente al terminale condizionale. Il seguente For Loop genera un numero casuale ogni secondo per 100 secondi e visualizza i numeri casuali in un indicatore numerico.

TEMPO TRASCORSO
In alcuni casi, utile determinare quanto tempo trascorre dopo alcuni punti nel vostro VI. Il VI Elapsed Time Express, mostrato a sinistra, indica lammontare di tempo che trascorre dopo un tempo di avviamento specificato. Questo VI vi consente di mantenere traccia del tempo mentre il VI continua ad essere in esecuzione. Questa funzione non lascia al processore il tempo di completare altri compiti.

Fig. 3 - Esempio di For loop

TRASFERIMENTO ITERATIVO DEI DATI TEMPORIZZAZIONE DI UN VI


Quando un ciclo termina di eseguire uniterazione, esso comincia immediatamente ad eseguire literazione successiva, a meno che esso non raggiunga una condizione di arresto. Pi frequentemente, avete bisogno di controllare la frequenza o la temporizzazione delliterazione. Per esempio, se state acquisendo dati e volete acquisirli ogni 10 secondi, avete bisogno di un modo di temporizzare le iterazioni del ciclo in maniera tale che esse avvengano una volta ogni 10 secondi. Anche se non avete necessit che lesecuzione avvenga ad una certa frequenza, dovete dare al processore il tempo di completare altri compiti, come il trattamento dellinterfaccia utente. Questa sezione introduce alcuni metodi per Programmando con i cicli, dovete spesso accedere ai dati da iterazioni precedenti del ciclo. Per esempio, se state acquisendo un pacchetto di dati in ogni iterazione di un ciclo e dovete fare la media ogni cinque pacchetti di dati, dovete mantenere i dati delle iterazioni precedenti del ciclo. I registri a scorrimento trasferiscono i valori da una iterazione del ciclo alla seguente. Nota I Nodi di Feedback sono un altro metodo usato in LabVIEW per ritenere i dati dalliterazione precedente. Fate riferimento allargomento Feedback Node nel LabVIEW Help per maggiori informazioni sui nodi di feedback.

28

SCUOLA DI LABVIEW

I registri a scorrimento (shift register) sono simili alle variabili statiche nei linguaggi di programmazione testuali. Usate i registri a scorrimento quando volete passare i valori dalle iterazioni precedenti attraverso il ciclo alliterazione successiva. Un registro a scorrimento appare come un paio di terminali, come mostrato sotto, opposti direttamente uno allaltro sui lati verticali del bordo del ciclo.

Il terminale sul lato destro del ciclo contiene una freccia verso lalto e conserva i dati al completamento di uniterazione. LabVIEW trasferisce i dati connessi al lato destro del registro alliterazione successiva. Dopo lesecuzione del ciclo, il terminale sul lato destro del ciclo restituisce lultimo valore conservato nel registro a scorrimento. Create un registro a scorrimento cliccando con il tasto destro sul lato sinistro o destro di un ciclo e selezionando Add Shift Register dal menu rapido. Un registro a scorrimento trasferisce ogni tipo di dato e cambia automaticamente nel tipo di dato del primo oggetto connesso al registro a scorrimento. I dati che connettete ai terminali di ogni registro a scorrimento devono essere dello stesso tipo. Potete aggiungere pi di un registro a scorrimento a un ciclo. Se avete iterazioni multiple che usano i valori delliterazione precedente allinterno del vostro ciclo, usate registri a scorrimento multipli per conservare i valori dei dati dai diversi trattamenti dati nella struttura, come mostrato nella figura seguente.

avviate il VI, il registro a scorrimento comincia dal valore 0. Se non inizializzate il registro a scorrimento, il ciclo usa il valore scritto sul registro a scorrimento durante lultima esecuzione del ciclo oppure utilizza il valore di default per il tipo di dati se il ciclo non mai stato eseguito. Usate un registro a scorrimento non inizializzato per preservare linformazione di stato tra esecuzioni successive di un VI. La figura seguente mostra un registro a scorrimento non inizializzato. Nella figura, il For Loop va in esecuzione cinque volte, incrementando ogni volta di uno il valore che il registro a scorrimento trasporta. La prima volta che avviate il VI, il registro a scorrimento comincia dal valore 0, che il valore di default per i numeri a 32-bit. Dopo cinque iterazioni del For Loop, il registro a scorrimento trasmette il valore finale, 5, allindicatore e il VI si chiude. La volta seguente, quando avvierete il VI, il registro a scorriFig. 6 mento comincer dal valore 5, che lultimo valore trasmesso dallesecuzione precedente. Dopo cinque iterazioni del For Loop, il registro a scorrimento trasmette il valore finale, 10, allindicatore. Se avviate nuovamente il VI, il registro a scorrimento comincia dal valore 10, e cos via. I registri non inizializzati mantengono il valore delliterazione precedente fino alla chiusura del VI.

REGISTRI A SCORRIMENTO IMPILATI


I registri a scorrimento impilati vi consentono di accedere ai dati di iterazioni precedenti del ciclo. I registri a scorrimento impilati ricordano i valori da iterazioni multiple precedenti e trasportano questi valori alle iterazioni successive. Per creare un registro a scorrimento impilato, cliccate con il tasto destro del mouse sul terminale sinistro e selezionate Add Element dal menu rapido. I registri a scorrimento impilati possono stare solo sul lato sinistro del ciclo perch il terminale destro trasferisce i dati generati solo dalliterazione corrente a quella successiva, come mostrato nella figura seguente. Se aggiungete un altro elemento al lato sinistro del terminale nella figura precedente, i valori delle ultime due iterazioni passano alliterazione seguente, con i valori delliterazione pi recente registrati nel registro a scorrimento superiore. Il terminale inferiore conserva i dati che gli sono stati passati dalliterazione precedente.
readerservice.it n111

Fig. 4

INIZIALIZZAZIONE DEI REGISTRI A SCORRIMENTO


Linizializzazione dei registri a scorrimento ripristina il valore che il registro a scorrimento trasmette alla prima iterazione del ciclo quando il VI va in esecuzione. Inizializzerete il registro a scorrimento collegando un controllo o una costante al terminale del registro a scorrimento sul lato sinistro del ciclo, come mostrato nella figura seguente. Nelle figura, il For Loop va in esecuzione cinque volte, incrementando ogni volta di uno il valore che il registro a scorrimento trasporta. Dopo cinque iterazioni del For Loop, il registro a scorrimento trasmette il valore finale, 5, allindicatore e il VI si chiude. Ogni volta che Fig. 5

Fig. 7

Note sugli autori: Matteo Foini: National Instruments

29

SCUOLA DI LABVIEW

01

Training per esperti

TECNICHE AVANZATE DI I/O SU FILE


Spesso, la decisione di dividere in processi differenti la produzione dei dati dalluso degli stessi viene presa perch occorre scrivere i dati su file man mano che sono acquisiti
l loro livello pi basso, tutti i file scritti sullhard disk del vostro computer sono una serie di bit binari. Tuttavia, sono disponibili molti formati per lorganizzazione e la rappresentazione dei dati. In LabVIEW, tre delle tecniche pi comuni di memorizzazione dei dati sono il formato di file Ascii, la memorizzazione diretta in binario e il formato di file TDM. Ognuno di questi formati ha dei vantaggi e alcuni formati lavorano meglio per immagazzinare certi tipi di dato piuttosto che altri. Questa lezione spiega i formati di file Ascii e Binario mentre il Text Data Exchange (TDM) verr trattato dettagliatamente nel prossimo numero della rivista.
a cura di Matteo Foini

fisso. Per trovare il nono numero in un file di testo, LabVIEW deve prima leggere e convertire i precedenti otto numeri. Potreste perdere in precisione memorizzando dati numerici in un file di testo. I computer conservano i dati numerici come dati binari e tipicamente voi scrivete dati numerici su un file di testo nella notazione decimale. Si potrebbe avere una perdita di precisione quando scrivete i dati sul file di testo. La perdita di precisione non un problema con i file binari.

QUANDO USARE FILE BINARI


La memorizzazione dei dati binari, come un numero intero, usa un numero fisso di byte sul disco. Per esempio, immagazzinare ogni numero da 0 a 4 miliardi in formato binario, come 1, 1.000 o 10.000, richiede fino a 4 byte per ogni numero. Usate i file binari per salvare dati numerici e per accedere a numeri specifici da un file o per accedervi casualmente. I file binari sono leggibili solo dalle macchine, diversamente dai file di testo, che sono leggibili dagli umani. Potete usare pi tipi di dati nei file binari, ma questo insolito. I file binari sono pi efficienti perch usano meno spazio sul disco e perch non avete bisogno di convertire i dati in e da un rappresentazione di testo quando conservate e recuperate i dati. Un file binario pu rappresentare 256 valori in un byte di spazio su disco. Spesso, i file binari contengono unimmagine byte per byte del dato come stato memorizzato, tranne in casi come i valori numerici estesi e complessi. Quando il file contiene unimmagine byte per byte del dato come stato conservato in memoria, la lettura del file pi veloce perch non c bisogno di conversione.

QUANDO USARE FILE DI TESTO (ASCII)


Usate i file in formato testuale per i vostri dati per renderli disponibili ad altri utenti o applicazioni se lo spazio sul disco e la velocit di I/O del file non sono cruciali, se non avete bisogno di effettuare lettura e scrittura ad accesso casuale e se la precisione numerica non importante. I file di testo sono il formato pi facile da usare e condividere. Quasi ogni computer pu leggere o scrivere su un file di testo. Una gran variet di programmi basati su testo possono leggere i file di testo. Memorizzate i dati in file di testo quando volete accedervi da unaltra applicazione, come un programma di scrittura o unapplicazione del tipo foglio elettronico. Per immagazzinare i dati in formato di testo, usate le funzioni String per convertire tutti i file in stringhe di testo. I file di testo possono contenere informazioni su differenti tipi di dato. I file di testo tipicamente occupano pi memoria dei file binari e datalog se il dato non originariamente in forma testuale, come i dati di un grafico, perch la rappresentazione Ascii dei dati usualmente pi grande dei dati stessi. Per esempio, il numero 123,4567 pu essere memorizzato in 4 byte come numero a virgola mobile a singola precisione. Tuttavia, la sua rappresentazione Ascii richiede 9 byte, uno per ogni carattere. Inoltre, difficile accedere casualmente ai dati numerici nei file di testo. Sebbene ogni carattere di una stringa occupi esattamente 1 byte di spazio, lo spazio richiesto per esprimere un numero come testo tipicamente non

FILE DATALOG
Uno specifico tipo di file binario, conosciuto come datalog file, il modo pi semplice per registrare dati cluster su file. I file datalog conservano array di cluster con una rappresentazione binaria. I file datalog forniscono unefficiente memorizzazione dei dati e accesso casuale, tuttavia il formato di memorizzazione dei file datalog complesso e perci di difficile accessibilit in tutti gli ambienti diversi da LabVIEW. Inoltre, per accedere ai contenuti di un file datalog, dove-

30

SCUOLA DI LABVIEW

te conoscere i contenuti del tipo di cluster memorizzato nel file. Se perdete la definizione del cluster, il file diventa veramente difficile da decodificare. Per questa ragione i file datalog non sono raccomandati per condividere i dati con altri o per immagazzinare i dati di grandi organizzazioni in cui potreste perdere o mal posizionare la definizione del cluster.

La fig. 1 mostra un esempio di scrittura di un array di numeri in doppia precisione su un file binario. Fate riferimento alla sezione Array di questa lezione per avere maggiori informazioni sullopzione Prepend array or string size?.

FILE BINARI
Sebbene tutti i metodi di I/O dei file creino per lo pi file binari, potete interagire direttamente con un file binario usando la funzione Binary File. Di seguito trovate alcune funzioni comuni che interagiscono con i file binari. Open/Create/Replace File - Questa funzione apre un riferimento a un file nuovo o esistente per file binari o Ascii.
Fig 1 - Scrittura di un file binario

Write Binary File - Questa funzione scrive dati binari su un file. La funzione lavora in modo molto simile alla funzione Write to Text File, ma pu accettare la maggior parte dei tipi di dati. Read Binary File - Questa funzione legge dati binari cominciando dalla posizione di file corrente. Dovete specificare alla funzione il tipo di dato da leggere. Utilizzate questa funzione per accedere ad un singolo elemento di dato o per collegare un valore allingresso di conteggio. Ci provoca la restituzione da parte della funzione di un array del tipo di dato specificato. Get File Size - Questa funzione restituisce la dimensione del file in byte. Usate questa funzione in combinazione con la funzione Read Binary File quando volete leggere tutto il file binario. Ricordate che se state leggendo elementi dei dati pi grandi di un byte dovete regolare il conteggio da leggere. Get/Set File Position - Queste funzioni rilevano e impostano la locazione nel file in cui bisogna leggere e scrivere. Usate queste funzioni per laccesso casuale al file (Random File Access). Close File - Questa funzione chiude un riferimento aperto a un file.

RAPPRESENTAZIONE BINARIA
Ogni tipo di dati in LabVIEW rappresentato in un modo specifico quando viene scritto su un file binario. Di seguito viene discussa la rappresentazione di ogni tipo e i problemi pi importanti quando si ha a che fare con la rappresentazionie binaria di quel tipo. Suggerimento Un bit un valore binario singolo. Rappresentato da 1 o da 0, ogni bit on o off. Un byte una serie di 8 bit.

BOOLEANI
LabVIEW rappresenta i valori booleani con valori a 8 bit in un file binario. Un valore con tutti zero rappresenta False. Ogni altro valore rappresenta True.

Fig 2 - Scrittura di valori booleani su un file binario

31

SCUOLA DI LABVIEW

01

Questo divide i file in parti della dimensione di byte e semplifica la lettura e il trattamento dei file. Per memorizzare efficientemente i valori booleani, convertite una serie di valori booleani in un numero intero usando la funzione Boolean Array To Number. La Figura 2 mostra due metodi per scrivere sei valori booleani su un file binario. La tab.1 visualizza una rappresentazione binaria dei contenuti del file che risulta dallavviamento del programma della fig. 2. Notate che il Metodo B un metodo pi efficiente di memorizzazione.

gliere se immagazzinare i vostri dati nel formato littleendian o big-endian. Lordine dei byte little-endian memorizza per primo il byte meno significativo e per ultimo il byte pi significativo. I Computer Macintosh tradizionalmente hanno usato lordine little endian e spesso rappresentano i dati internamente in LabVIEW. Lordine dei byte big-endian memorizza per primo il byte pi significativo e per ultimo il byte meno significativo. La maggioranza dei programmi Windows utilizza il bigendian per memorizzare i dati sui file.
Valore U32 Valore little-endian Valore big-endian

Metodo A

00000001 00000001 00000000 00000001 00000000 00000001 00101011 Tab. 1 - Risultati della fig. 2

00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000

Metodo B

00000001 00000000 00000000 00000000

00000000 00000000 00000000 00000001

NUMERI INTERI A 8 BIT


I numeri interi a 8 bit senza segno (U8) corrispondono direttamente ai byte scritti sul file. Quando dovete scrivere dei valori di vario tipo su un file binario, convertite ogni tipo in un array di U8 usando le funzioni Boolean Array To Number, String to Byte Array, Split Number e Type Cast. Successivamente potete concatenare i vari array di U8 e scrivere larray risultante su un file. Questo processo non necessario quando scrivete su un file binario che contiene solo un tipo di dati.

255

11111111 00000000 00000000 00000000

00000000 00000000 00000000 11111111

65535

11111111 11111111 00000000 00000000

00000000 00000000 11111111 11111111

Valore Binario

Valore U8

00000000 00000001 00000010 11111111

0 1 2

4294 967 295

11111111 11111111 11111111 11111111

11111111 11111111 11111111 11111111

Tab. 3 - Rappresentazioni di interi

255

NUMERI A VIRGOLA MOBILE


Tab. 2 - Rappresentazione U8

ALTRI NUMERI INTERI


I numeri interi multi-byte sono spezzati in due byte separati e immagazzinati in file con ordine di byte little endian o big endian. Usando il VI Write to Binary File, potete sce-

I numeri a virgola mobile sono memorizzati come descritto nello Standard Ieee 754 su Binary Floating-Point Arithmetic (Aritmetica binaria a virgola mobile). I numeri a singola precisione utilizzano ognuno 32 bit e i numeri a doppia precisione utilizzano ognuno 64 bit. La lunghezza dei numeri a precisione estesa dipende dal sistema operativo.

32

SCUOLA DI LABVIEW

STRINGHE
Le stringhe sono memorizzate come serie di interi a 8 bit senza segno, ognuno dei quali un valore della Tabella Ascii Character Code Equivalents. Questo significa che non c differenza tra scrivere stringhe con le funzioni Binary File e scriverle con le funzioni Text File.

CONFRONTO TRA ACCESSO SEQUENZIALE E CASUALE


Quando si legge un file binario, ci sono due metodi per accedere ai dati. Il primo di leggere ogni voce in ordine, partendo dallinizio di un file. Questo chiamato accesso sequenziale e lavora come la lettura di un file Ascii. Il secondo di accedere ai dati in un punto arbitrario allinterno del file. Per esempio, se sapete che un file binario contiene un array 1D di numeri interi a 32 bit che stato scritto con unintestazione e volete accedere alla decima voce dellarray, potete calcolare lo scostamento di byte di quellelemento nel file e poi leggere solo quellelemento. In questo esempio lelemento ha uno scostamento di 4 (lintestazione) +10 (lindice dellarray) * 4 (il numero di byte in un I32) =44. Laccesso ai dati in questo modo conosciuto come accesso casuale (random access).

Fig. 3 - Scrittura di un array 2D di numeri interi senza segno su un file con intestazione

ACCESSO SEQUENZIALE
Per accedere sequenzialmente a tutti i dati di un file, potete chiamare la funzione Get File Size e usare il risultato per calcolare il numero di voci del file, in base alla dimensione di ogni voce e alla configurazione del file.

ARRAY
Gli array sono rappresentati come un elenco sequenziale di ognuno dei loro elementi. La rappresentazione reale di ogni elemento dipende dal tipo di elemento. Quando memorizzate un array su un file avete lopzione di far precedere allarray unintestazione. Unintestazione contiene un numero intero a 4 byte che rappresenta la grandezza di ogni dimensione. Perci un array bidimensionale con unintestazione contiene due numeri interi, seguiti dai dati dellarray. La fig. 3 mostra un esempio di scrittura di un array bidimensionale a numeri interi a 8 bit su un file con unintestazione. Il terminale prepend array or string size? della funzione Write Binary File abilita lintestazione. Notate che il valore di default di questo terminale True. Perci le intestazioni sono aggiunte di default a tutti i file binari. La tab. 4 mostra lo schema del file che il codice genera nella fig. 3. Notate che le intestazioni sono rappresentate da numeri interi a 32 bit anche se i dati sono interi a 8 bit.
4 3

Fig. 4 - Lettura sequenziale di un intero file

Potete poi collegare il numero delle voci a un terminale di conteggio della funzione Read Binary. La fig. 4 mostra un esempio di questo metodo. Alternativamente potete accedere sequenzialmente al file una voce alla volta chiamando la funzione Read Binary con conteggio di default pari a 1. Ogni operazione di lettura aggiorna la posizione allinterno del file in modo che leggiate una nuova voce ogni volta che chiamata la lettura. Quando usate questa tecnica per accedere ai dati potete controllare lerrore End of File dopo aver chiamato Read Binary o calcolare il numero di letture neces1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 sarie per raggiungere la fine del file usando Get File Size.

Tab. 4 - Esempio di rappresentazione di array in file binario

ACCESSO CASUALE
Per accedere casualmente a un file binario, usate il VI Set Position per impostare loffset della lettura dal punto del file da cui volete cominciare la lettura. Notate che lo scostamento in byte. Perci dovete calcolare lo scostamento in base allo schema organizzativo del

CLUSTER
I file datalog rappresentano meglio i cluster nei file binari. Fate riferimento alla sezione File Datalog per avere maggiori informazioni.

33

SCUOLA DI LABVIEW

01

Fig. 5 - Accesso casuale a un file binario

Fig. 6 - Scrittura di un file Datalog

Fig. 7 - Lettura di un file Datalog

file. Nella fig. 5 il VI restituisce le voci dellarray secondo lindice specificato, assumendo che il file sia stato scritto come array binario di numeri a doppia precisione senza intestazione, come quello scritto per esempio nella fig. 1.

FILE DATALOG
I file Datalog sono progettati per memorizzare un elenco di record su un file. Ogni record rappresentato da un cluster e pu contenere pi parti di dati con qualsiasi tipo di dati. I file Datalog sono file binari, tuttavia usano un API diverso da tutti gli altri file binari. I VI Datalog vi consentono di leggere e scrivere array di cluster su file Datalog. Quando aprite un file Datalog per lettura o scrittura dovete specificare il tipo di registrazione usata dal file. Per fare questo collegate un cluster di tipo appropriato al VI Open/Create/Replace Datalog. Una volta aperto il file, potete programmare i file Datalog come ogni altro file

binario. Laccesso casuale disponibile, sebbene gli scostamenti siano specificati in record invece che in byte. La fig. 6 mostra un esempio di scrittura di un file datalog. Notate che il cluster unisce i dati e apre il file Datalog. La fig. 7 mostra un esempio di accesso casuale ad un file datalog. Notate che il cluster Record Definition concorda con il cluster usato per scrivere il file. Se il record type collegato al VI Open/Create/Replace Datalog non concorda con i record del file aperto, si verifica un errore. Invece di usare laccesso casuale, potete leggere un intero file datalog collegando luscita della funzione Get Number of Records al terminale di conteggio della funzione Read Datalog.
readerservice.it n112

Note sullautore: Matteo Foini: National Instruments

34

D A L L A C A RTA A L W E B

HTTP://WWW
Quando le nostre pagine non bastano, lenorme 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 c asi, tuttavia, sul web sono disponibili ar ticoli esaustivi o altri documenti, a cui rimandiamo i lettori interessati. Sotto ogni argomento abbiamo quindi ripor tato il link corrispondente

01

FAQ ed esempi sulla programmazione a oggetti in LabVIEW


Questa pagina contiene le risposte alle domande pi frequenti sulla programmazione orientata agli oggetti in LabVIEW. Nella sezione Additional Resources troverete due esempi che evidenziano i benefici derivanti dall'utilizzo di questo approccio nella scrittura e nella manutenzione delle applicazioni di test e di misura. Link alla pagina: ni.com/italian infocode:itabb4

Leggere i dati da un file audio e convertirli nel formato voluto


Lesempio, utile per applicazioni di elaborazione dei file audio, mostra come aprire un file audio (.wav) in LabVIEW e salvare i dati nel formato specificato dallutente, indipendentemente dal formato originale. Lutente pu selezionare la qualit del suono (mono/stereo) e il numero di bit per campione (16 bit/18 bit). Link alla pagina: ni.com/italian infocode:itabb4

Aggiungere dei marcatori di picco a un Waveform Graph


Questo esempio carica un file contenente una sequenza di dati con diversi picchi. Il VI Threshold Peak Detector rileva i dati quando superano una soglia specificata e LabVIEW mette i dati in un grafico, evidenziando i picchi con un marker. Link alla pagina: ni.com/italian infocode:itabb4

35

D A L L A C A RTA A L W E B

Registrare eventi di callback in LabVIEW


Lesempio mostra come utilizzare la funzione Register Event Callback per la gestione di eventi ActiveX. Il VI lancia unistanza di Internet Explorer ed programmato per compiere azioni in risposta agli eventi generati dal browser. Link alla pagina: ni.com/italian infocode:itabb4

Utilizzare la tastiera a video di Windows in LabVIEW


Questo VI lancia la tastiera a video (osk.exe) presente nella maggior parte dei sistemi operativi di Microsoft. Lutility pu essere di aiuto quando si utilizza uno schermo sensibile al tocco e non siano fisicamente presenti una tastiera e un mouse. Il testo immesso con la tastiera virtuale compare nellindicatore presente sul pannello frontale dellapplicazione. Link alla pagina: ni.com/italian infocode:itabb4

LabVIEW game console


Questa console di gioco simula un Arcade virtuale utilizzando diversi giochi realizzati in LabVIEW. Si fa uso dei paradigmi di progettazione delle applicazioni per sviluppare una macchina a stati che controlla lesecuzione del programma, e si trae vantaggio dallutilizzo della struttura a eventi per gestire linterfaccia utente. Link alla pagina: ni.com/italian infocode:itabb4

Scegliere da menu se nascondere o visualizzare degli indicatori presenti sul pannello frontale
Questo VI utilizza un menu run-time personalizzato che consente allutente di selezionare quali indicatori fare apparire sul pannello frontale. Se lutente sceglie di nascondere un indicatore, LabVIEW riordina i rimanenti per non lasciare spazi vuoti sul pannello. Link alla pagina: ni.com/italian infocode:itabb4

36

LA VOCE DEGLI UTENTI

01
Ecco una selezione di argomenti di discussione sul Forum di ILVG.it

Performance database http://www.ilvg.it/ht/1918


Inviato: 21 Lug 2006 5:15 pm Ciao a tutti, ho realizzato un tool per la scrittura su database sql (chiamato via odbc creando file DSN) che deve popolare circa 4000 record suddivisi su 16 tabelle. Il tool funzionante ma i tempi di esecuzione sfiorano i 30 secondi. Mi chiedo se esistano altre funzioni pi performanti in sostituzione del blocco "Insert" standard presente nella paletta "DatabaseConnectivity". Come faccio a diminuire tali tempi? Per la funzione di selezione ho trovato nelle librerie degli add-on un blocco che esegue la "SelectData" molto pi performante di quello presente nella paletta "DatabaseConnectivity" ma non ho trovato nulla di analogo per la funzione "Insert". Qualcuno ha gi affrontato tale questione? Ringrazio sin da ora chiunque mi sappia dare indicazioni utili a ridurre tali tempi di scrittura!!! isafordog Inviato: 21 Lug 2006 7:18 pm Io sto usando in questo periodo database di 12000 dati e pi: leggo, estraggo i dati, suddivido in grafici. Ogni tanto interrogo il database per aggiornamenti o query particolari. Lavoro con ODBC, DSN, Microsoft SQL Server e MySQL e non ho tempi cos lunghi. Prova a guardare nella sezione articoli del sito http://www.ilvg.it/forum/download.php?id=946 . Ho scritto due idee su questo tipo di comunicazione. Non te lo indico per pubblicit ma solo per comodit: ci sono riassunte un po' di idee. Se poi si scoprono considerazioni nuove si possono sempre aggiungere. [continua su http://www.ilvg.it/ht/1918] MagicBotolo
Alessandro Ricco

Principo di funzionamento delle occurrence http://www.ilvg.it/ht/1242


Inviato: 14 Dic 2005 9:04 pm Ciao a tutti. Vorrei comprendere il principio di funzionamento delle occurrence (vedi messaggio mio "arresto rapido"). Ovvero, perch sono in grado di arrestare, senza vincolo alcuno, un while loop contenente una flat sequence con una successione di operazioni al suo interno? Grazie bepi

Inviato: 14 Dic 2005 11:57 pm Bepi, il principio di funzionamento delle occorrenze molto semplice. Esistono 3 funzioni dedicate alle occorrenze: - Generate Occurrence - Set Occurrence - Wait on Occurrence Generate Occurrence, genera un'istanza di un'occorrenza e restituisce un riferimento utile per accedervi. Le funzioni Set Occurrence e Wait on Occurrence hanno bisogno di questo riferimento in ingresso.

Nello specifico Set Occurrence fa' "scattare" l'occorrenza associata al riferimento che ha in ingresso. Wait on Occurrence aspetta che, l'occorrenza associata al riferimento che ha in ingresso, "scatti". Wait on Occurrence ha anche altri 2 parametri in ingresso: - ms timeout - ignore previous ms timeout indica per qanto tempo la wait occurrence deve aspettare lo scattare dell'occorrenza prima di andare in timeout. [continua su http://www.ilvg.it/ht/1242] ale914

37

LA VOCE DEGLI UTENTI

01

Creare un contatto elettrico tra due pin http://www.ilvg.it/ht/1573


Inviato: 08 Apr 2006 6:02 pm Salve a tutti, sono nuovo del forum e di LabVIEW, vi chiedo quindi di avere un p di pazienza se le mie domande rilsultano banali. Vengo al problema: ho una seriale a 9 pin sul computer da gestire. LabVIEW la vede, ma non riesco a personalizzarla. Vorrei riuscire a fare questo: creare un booleano, che mi permetta di aprire e chiudere il contatto tra due pin. Faccio un esempio banale: se ho il "vertical toggle switch" su OFF, il contatto tra i pin 2 e 3 (scelti arbitrariamente) deve essere aperto, se lo metto su ON il contatto tra i due deve essere chiuso, ovvero in corto circuito. Come posso realizzare questo? grazie tante a tutti Voicetech

Inviato: 08 Apr 2006 8:26 pm non puoi creare un contatto tra due pin della seriale... ogni pin ha la sua funzione. Per fare quello che dici, devi avere un'interfaccia all'esterno (del pc) che sia in grado

di comunicare in modo seriale con porta rs232. Un'alternativa, secondo me, pi semplice quella di usare un pin della porta parallela (che funziona con segnali logici TTL) ed un rel... vedi schema allegato.... ciao... [continua su http://www.ilvg.it/ht/1573] Linux120

Generazione report http://www.ilvg.it/ht/2061


Inviato: 15 Set 2006 7:15 am ...ma ciao! mi ritrovo a dover sconvolgere un mio software perch stato sviluppato utilizzando il report generation toolkit e realizzando un report in word tramite un template e i suoi bookmark, solo che adesso stiamo passando ad office 2003, poi passeremo ad office 2007 e questo crea dei problemi di compatibilit tra i pc che montano diverse versioni di office (soprattutto nelle consociate estere). Detto questo, ho pensato di sviluppare un report in html in modo che sia standard, senza problemi di versione software ecc. Il problema che il report un po' eleborato come layout e le funzioni di base non mi bastano, sarebbe comodo qualcosa tipo bookmark anche qui. Volevo chiedere se avete esperienze del genere e se ci sono alternative all'html..che ne so...rtf, xml...qualcosa che mi permetta di mettere a video una cosa del genere: - Intestazione; - tre colonne di dati con nome del dato e il dato in grassetto - immagine di un grafico - tabella con una riga evidenziata e gli headers in grassetto. Al momento sto realizzando una pagina html tipo template per poi modificare il codice html programmaticamente.....

gepponline

38

LA VOCE DEGLI UTENTI

Inviato: 15 Set 2006 10:12 am Ciao, se permetti un consiglio non usare HTML... lo trovo un linguaggio pi adatto al web che non a dei documenti. Io mi son trovato bene con i formati OpenDocument che hanno una struttura XML. Io generalmente procedo in questo modo: - Creo l'ossatura del report con un programma che possa salvare in OpenDocument (giusto per esser precisi OpenOffice) - A questo apro il file .ODT (sono dei files zippati per cui basta cambiare l'estensione in zip e vedere cosa c'

dentro) e osservo i files .XML presenti all'interno - apro il file content.xml e faccio le modifiche standard necessarie (ad esempio sostituisco !testo! con il testo del report, aggiungo righe alle tabelle, etc) - ottenuto il file XML modificato ricreo il file ODT col processo inverso. Per riassumere: 1 - ricavo il file content.xml che sar la base dei report (operazione che fai un'unica volta) 2 - copio il testo di content.xml nel VI e creo il file .ODT zippando tutti i files necessarie cambiando estensione. mark77

Loop e incrementi http://www.ilvg.it/ht/1998


Inviato: 21 Ago 2006 6:51 pm Salve a tutti. ho due problemucci dati dall'inesperienza! Se nel VI ho una stacked sequence structure con ad esempio 6 livelli possibile inserire un comando per esempio al 6 livello che faccia riprendere l'esecuzione del programma dal 2 livello? Secondo problema: come posso fare per eseguire un incremento automatico di un numero inserito dal front panel...ad esempio...inserisco il numero di partenza 1 e il numero di arrivo 7 dal front panel. Con un incremento fisso di passo 1 mi voglio fermare quando dal numero di partenza sono arrivato a 7. Ho provato a farlo memorizzando ogni volta l'incremento in un file e sembrava funzionare ma ho avuto problemi con il loop che gestisce la scrittura e lettura del file. Grazie a tutti per l'attenzione. Ciao. androll

Inviato: 21 Ago 2006 6:51 pm Ciao, Citazione : se nel VI ho una stacked sequence structure con ad esempio 6 livelli possibile inserire un comando per esempio al 6 livello che faccia riprendere l'esecuzione del programma dal 2 livello? No, a meno di non utilizzare un primo livello nel quale le istruzioni sono racchiuse in un case che abiliti o disabiliti con un valore settato ad es. nel sesto livello

precedente e passato alla successiva iterazione della struttura con uno shift register, var locale o altro. Personalmente se devi escludere "livelli" io trasformerei il tutto in una macchina a stati dove i livelli sono stati, in questo modo passi da uno stato all'altro con assoluta tranquillit...insomma io non utilizzerei una sequenza in casi di non sequenzialit... [continua su http://www.ilvg.it/ht/1998] Apollon

readerser vice.it n.311

39

LA VOCE DEGLI UTENTI

01

Come creare 3 vi simili ma indipendenti? http://www.ilvg.it/ht/2244


Inviato: 28 Ott 2006 6:00 pm Sto realizzando dei regolatori che usano il moduly fuzzy e che si interfacciano con uno SCADA tramite OPC e Datasocket. Lo scada unico ma i regolatori devono essere 3 separati e indipendenti cos che, specialmente adesso, nella fase di sviluppo sul campo, si possa facilmente intervenire su uno (run/stop/modifiche) senza influenzare gli altri. Si tenga presente che sono praticamente gemelli, tranne alcuni valori costanti che devono/possono essere diversi, e tranne i segnali in ingresso dal campo (portate) che possono esse molto diverse tra loro. Quello che non mi ancora ben chiaro : - come devo salvare i tre vi perch siano effettivamente indipendenti? Non vorrei correre il rischio che due o pi regolatori chiamino lo stesso subvi nello stesso momento (Fuzzy controller, per es.) passandogli valori diversi e ottenendo quindi valori di uscita fuori range. Ho provato a leggere le sezioni relative di help e user manual ma mi rendo conto che qualcosa mi sfugge. [continua] fabiospark

Inviato: 28 Ott 2006 7.13 pm Puoi settare come rientanti i subvi che svolgono le funzioni che devi triplicare, quindi nel vi principale inserisci tre volte i subvi sopracitati. Per spuntare il reentrant, devi andare nelle propriet del vi e quindi

execution. Attenzione: per ovvie ragioni, il pannello dei vi settati come rientranti non aggiornato, quindi devi utilizzarli solo nel diagramma e sfruttarne gli input output per generare i dati su un vi principale (non rientrante). [continua su http://www.ilvg.it/ht/2244] nicola

Note sullautore Alessandro Ricco: ILVG.it Admin & LabVIEW Champion

40

REPORT

01

RIFLESSIONI SUL MERCATO EMBEDDED


Alla domanda Quo vadis embedded market? hanno dato risposta esperti di settore ed i maggiori protagonisti del mercato embedded in Italia. Loccasione stata fornita da Focus Embedded
Valerio Alessandroni

o scorso 5 dicembre si svolto a Milano Focus Embedded, mostra convegno patrocinata da VNU Business Publications. Lincontro stato teatro di discussioni relative allandamento del mercato ed ai segmenti applicativi delle pi recenti tecnologie embedded. Le prognosi sono positive e il mercato embedded sembra essere in ottima salute per il prossimo futuro. Secondo Filippo Fossati coordinatore editoriale di Elettronica Oggi, Elettronica Oggi Embedded, Elettronica Oggi Web e main speaker dellevento tra i principali fattori che determineranno il successo delle tecnologie embedded nei mercati delle telecomunicazioni, industriale, medicale, militare ed aerospaziale vi saranno una decisiva riduzione dei costi di produzione e distribuzione, una maggior integrazione con le tecnologie esistenti, maggior potenza di elaborazione, maggiori performance e libert dai dispositivi legacy. La sessione plenaria di apertura ha visto la partecipazione di ospiti del calibro di Microsoft Windows Embedded, Motorola Corporate Group e Intel. La mostra convegno poi proseguita nella sala espositiva con una platea di espositori altamente qualificata. Ling. Massimiliano Banfi ha

rappresentato National Instruments con il suo intervento Programmare graficamente chip FPGA per applicazioni embedded di controllo avanzato, dimostrando come lambiente di progettazione LabVIEW, grazie al suo approccio grafico, permetta di sfruttare al massimo le funzionalit di CompactRIO riducendo i tempi di sviluppo nella prototipazione e nellimplementazione finale del sistema. Ling. Matteo Bambini ha quindi ritirato il premio per il Migliore Articolo Applicativo, attribuito a "Misure pi precise grazie a PCI Express e USB 2.0" di Brian Betts e pubblicato sul numero 17 di Elettronica Oggi Embedded.
readerservice.it n113

41

REPORT

01

LABVIEW NEL TRIVENETO PER IL MERCATO TERMOTECNICO


Valerio Alessandroni

Lo scorso 29 novembre si svolto a Padova un Forum Tecnico organizzato e patrocinato da National Instruments

ervire il mercato, creare un punto dincontro ideale per colloqui e discussioni tra sviluppatori, generare idee e fornire soluzioni. Questi e molti altri gli obiettivi perseguiti dai protagonisti del Forum Tecnico Soluzioni per il test e il collaudo in ambito termotecnico. Levento ha ospitato addetti ai lavori, tecnici, esperti e leader del mercato del caldo e freddo e del bianco: impianti termici, caldaie, chiller, sistemi di condizionamento, elettrodomestici. Indipendentemente dal prodotto o applicazione finale oggetto delle presentazioni, levolversi nel campo del test e collaudo funzionale ha rappresentato il tema predominante.

GLI INTERVENTI
Ma vediamo i take-away di maggior rilievo di alcuni interventi. Electrolux ha dimostrato come sfruttare un software di gestione come LabVIEW per automatizzare un laboratorio per prove di vita su lavatrici domestiche.

La gestione del processo di acquisizione dati dagli apparecchi in uso presenta requisiti indispensabili come la possibilit di collegarsi a siti remoti, apertura allutilizzo di altre famiglie di software per future evoluzioni nellautomazione del sistema e possibili evoluzioni nel tempo, connettivit, integrazione con database esterni, semplicit nellutilizzo. Il sistema di acquisizione sviluppato si dimostrato autonomo e sicuro anche senza supervisione, compatto, robusto, affidabile e multifunzione. La soluzione per il collaudo presentata da Immergas e Cate rivoluziona il tradizionale processo di sviluppo e collaudo funzionale e prestazionale di caldaie tramite field test (collaudo stagionale in abitazioni), proponendo di monitorare il funzionamento della caldaia direttamente in sala prove. Lacquisizione dati nelle varie sale prove caldaia affidata a sistemi di acquisizione NI CompactRIO, tutti collegati ad ununica unit centrale gestita da LabVIEW, in grado di controllare, acquisire e simulare tutte le condizioni dellimpianto.

42

REPORT

ImagingLab e FLIR hanno sfruttato le potenzialit delle piattaforme software NI per completare un sistema di alimentazione della linea di produzione di un film di PVC tramite sistema termografico per ispezione continua. Il sistema completo termocamere FLIR Systems, LabVIEW Digital Toolkit, piattaforme hardware PXI e CVS, piattaforme software LabVIEW e TestStand - ha permesso di aumentare la qualit produttiva, ridurre gli scarti, gestire gli allarmi di processo ed adeguare automaticamente le cadenze della velocit di produzione. SIDeA ha presentato lo sviluppo di soluzioni integrate di telecontrollo grazie ad un insieme di funzioni LabVIEW disponibili in una libreria separata, che possano fornire tutti i servizi necessari per instaurare, gestire e terminare una connessione GSM/GPRS. Project Engineering ha illustrato un sistema di collaudo di fine-linea per chiller, comprensivo della gestione dellimpianto idraulico necessario per il test, realizzando con

LabVIEW programmi per la gestione completa dellimpianto e dellesecuzione manuale dei collaudi. Infine, I.R.S. ha illustrato un sistema per la misura di dispersione termica su apparecchiature frigorifere, mentre Laboratori ITALGAS e SITEM hanno presentato unapplicazione relativa ad un sistema di acquisizione dati per prove su apparecchi termici.

CONCLUSIONE
Elemento comune di tutti i casi applicativi si rivelato essere il desiderio di risolvere problematiche ancora aperte e condividere i risultati ottenuti. LabVIEW si dimostrato ancora una volta il software ideale per la realizzazione di sistemi di acquisizione e test flessibili ed affidabili, e si imposto come presenza importante anche nel settore della simulazione e prototipazione.
readerservice.it n114

LABVIEW 8.20 FESTEGGIA LANNIVERSARIO DEI 20 ANNI IN TOUR


L'autunno del 2006 ha visto LabVIEW protagonista del LabVIEW 8.20 Platform Tour, il road show organizzato da National Instruments per illustrare le piattaforme della nuova versione in 7 citt italiane: Roma, Napoli, Torino, Milano, Padova e Bologna.
e 7 giornate, suddivise in due sessioni parallele dedicate rispettivamente alle piattaforme per Misure e Test Automatizzati e per il Monitoraggio e Controllo Industriale, hanno offerto una panoramica completa su moduli specifici e toolkit per le relative piattaforme. In particolare, durante la sessione per Misure e Test Automatizzati i partecipanti hanno potuto imparare come generare report in Microsoft Word e Excel tramite il Report Generation Toolkit for Microsoft Office e come connettere LabVIEW a database locali e remoti utilizzando il Database Connectivity Toolkit. Tema della seconda parte, le funzionalit di MathScript per la definizione di script di

tazioni tecniche dedicate alla realizzazione di applicazioni di comunicazione e di monitoraggio industriale utilizzando LabVIEW Datalogging and Supervisory Control Module 8.20; hanno potuto imparare come sviluppare software per dispositivi portatili, HMI e touch panel industriali con il nuovo LabVIEW Touch Panel Module 8.20; come utilizzare al meglio LabVIEW Real Time Module 8.20 per trasformare il proprio PC in un sistema real-time; come creare hardware di misura personalizzato con il nuovo FPGA Wizard di

testo e di toolkit specifici - Modulation Toolkit e Spectral Measurement Toolkit - per la progettazione di sistemi RF e di telecomunicazioni. Durante la sessione per il Monitoraggio e Controllo Industriale, i partecipanti hanno potuto assistere a presen-

LabVIEW FPGA Module 8.20; ed infine, come distribuire su processori embedded a 32 bit con LabVIEW Embedded Module 8.20.
readerservice.it n115

43

A P P U N TA M E N T I

01

Ecco un elenco dei principali eventi internazionali che vedranno la partecipazione di National Instruments e dei prossimi corsi di formazione di LabVIEW

FEBBRAIO
CORSO LABVIEW BASE I: INTRODUZIONE
Roma, 12 febbraio / Milano, 26 febbraio

CORSO LABVIEW BASE II: SVILUPPO


Padova, 15 febbraio

EMBEDDED WORLD 2007


Norimberga, 13-15 febbraio

CORSO INTRODUTTIVO A LABVIEW 8.20 REAL-TIME


Padova, 15 febbraio

CORSO LABVIEW ACQUISIZIONE DATI E CONDIZIONAMENTO DEI SEGNALI


Milano, 19 febbraio

CORSO LABVIEW INTERMEDIATE II: CONNETTIVIT


Roma, 22 febbraio

NIDAYS 2007 - FORUM TECNOLOGICO SULLA STRUMENTAZIONE VIRTUALE


Milano, 27 febbraio

MARZO
MC4 MOTION CONTROL FOR
Bologna, 1 marzo

CORSO LABVIEW BASE II: SVILUPPO


Milano, 1 marzo / Torino, 5 marzo / Roma, 29 marzo

CORSO INTRODUTTIVO A LABVIEW 8.20 REAL-TIME


Napoli, 6 marzo / Bari, 8 marzo / Roma,13 marzo / Firenze, 15 marzo

CORSO LABVIEW INTERMEDIATE I: TECNICHE DI DESIGN PROFESSIONALI


Padova, 7 marzo / Milano, 12 marzo / Roma 19 marzo

CORSO LABVIEW ACQUISIZIONE DATI E CONDIZIONAMENTO DEI SEGNALI


Roma, 12 marzo / Padova, 21 marzo

NIDAYS 2007 - FORUM TECNOLOGICO SULLA STRUMENTAZIONE VIRTUALE


Barcellona, 14 marzo / Bilbao, 20 marzo

CORSO LABVIEW INTERMEDIATE II: CONNETTIVIT


Milano, 15 marzo

MICROELETTRONICA 2007
Vicenza, 15-17 marzo

44

A P P U N TA M E N T I

CORSO LABVIEW BASE I: INTRODUZIONE


Roma, 26 marzo

CORSO LABVIEW SVILUPPO APPLICAZIONI REAL-TIME


Milano, 26 marzo

CORSO LABVIEW FPGA AND CRIO


Milano, 29 marzo

APRILE
CORSO LABVIEW BASE I: INTRODUZIONE
Milano, 2 Aprile / Padova, 16 Aprile

CORSO LABVIEW INTERMEDIATE II: CONNETTIVIT


Padova, 5 Aprile

C2 CONTROL & COMMUNICATION


Bari, 6 aprile / Vicenza, 12 aprile

NIDAYS 2007 - FORUM TECNOLOGICO SULLA STRUMENTAZIONE VIRTUALE


Lisbona, 12 aprile

CORSO LABVIEW ACQUISIZIONE DATI E CONDIZIONAMENTO DEI SEGNALI


Torino, 16 Aprile

HANNOVER MESSE 2007


Hannover, 16-20 aprile

MAGGIO
CORSO LABVIEW BASE I: INTRODUZIONE
Milano, 7 maggio/ Roma. 7 maggio

CORSO LABVIEW BASE II: SVILUPPO


Padova, 10 maggio

CORSO LABVIEW INTERMEDIATE I: TECNICHE DI DESIGN PROFESSIONALI


Roma, 14 maggio / Milano, 21 maggio

CORSO LABVIEW ACQUISIZIONE DATI E CONDIZIONAMENTO DEI SEGNALI


Milano, 14 maggio

CORSO LABVIEW MACHINE VISION


Milano, 17 maggio

CORSO LABVIEW SVILUPPO APPLICAZIONI REAL-TIME


Padova, 23 maggio NOTA: per maggiori informazioni sui corsi di formazione NI visitate www.ni.com/training/it

45

L A BV I E W E L AVO R O

01

AAA
RICERCHIAMO
AUTOMATION ENGINEER Compiti principali: L'azienda, nostra cliente, facente parte di un importante gruppo multinazionale a capitale non italiano, presente in Lombardia, non solo con un importante insediamento produttivo, ma anche con una Divisione di Ricerca e Sviluppo che presiede nei suoi settori tutte le attivit europee. L'azienda, in fase di potenziamento della propria struttura tecnica, ci ha assegnato la ricerca di un DRIVE SYSTEMS CONTROLLER che operer nella Divisione di Ricerca e Sviluppo avanzati. La funzione riguarda lo sviluppo dei controlli e dell'ideazione di algoritmi avanzati per creare funzioni innovative per gli elettrodomestici del futuro. Si richiede un'esperienza sviluppata applicando la teoria dei sistemi dei controlli automatici e delle tecniche di identificazione applicate al controllo dei motori elettrici. Il candidato ha familiarit con sistemi di controllo digitale, con la simulazione ed il controllo dei motori elettrici con i tool di simulazione Matlab-Simulink, con la simulazione ed il controllo dei sistemi termodinamici e meccanici e con il linguaggio C. La conoscenza dei tools di simulazione di sistemi meccatronici, di ADSAMS e dei sistemi di controllo real time DISPACE o LabView saranno considerati un plus. Si richiede un'esperienza maturata nel settore elettronico: beni di consumo, automotive, aerospazio, controllo dei processi termodinamici e di condizionamento, robotica. La persona che noi cerchiamo un Ingegnere Elettrico con indirizzo Automazione ed una buona base di Inglese. La sede di lavoro a circa 40 km da Milano.

Conoscete bene LabVIEW? Forse le offerte di lavoro che abbiamo selezionato da ILVG.it potrebbero interessarvi

Societ: Studio Ing. Romolo Datei S.a.s. Settore: Fabbricazione di macchine ed apparecchi meccanici Comune: BIANDRONNO Titolo di studio: Laurea 1 livello (nuovo ordinamento) Ingegneria elettrica. Lingua: INGLESE buono. Inquadramento contrattuale: Contratto a tempo indeterminato. Disponibile da: 23/12/2006 Riferimenti: 23.22A.12 Scadenza: 28/02/2007 www.borsalavorolombardia.net

MANPOWER FILIALE FELTRE LIBERAZIONE Via Liberazione, 13 32032 Feltre (BL) Tel: 0439840300 Fax: 0439840308. Esperienze richieste: Disegnatore meccanico, Progettista meccanico, Ingegneria Meccanica Contatto: FELTRE Liberazione. E-Mail: feltre.liberazione@manpower.it www.manpower.it

PROGETTISTA MECCANICO Descrizione del lavoro: Cerchiamo 1 candidato da inserire con mansione di INGEGNERE MECCANICO JR. presso un nostro Cliente operante nel settore METALMECCANICO. RICHIESTE COMPETENZE O DIMOSTRATO INTERESSE NELL'AREA STRUTTURALE, MECCANICA ENERGETICA E DELLE VIBRAZIONI, MINIMA ESPERIENZA DI LAVORO, ATTITUDINE AL TEAM WORKING E BUONE CAPACITA' COMUNICATIVE E GESTIONALI. INGLESE FLUENTE, CONOSCENZA DEI SISTEMI CAD 3D (CATIA), FEM, LABVIEW. DISPONIBILITA' AD EFFETTUARE BREVI TRASFERTE. L'impegno previsto di 40 ore settimanali. La ricerca rivolta a candidati dell'uno e dell'altro sesso. Per qualsiasi informazione in merito al presente annuncio contatta la nostra filiale, citando il riferimento: 201092294. Tipo di lavoro: Temporaneo. Annunci di lavoro pubblicati: 06/06/06 Luogo: 32026 MEL Regione: Veneto. Data di fine del lavoro 30/06/07 Aree di lavoro: Tecnica

STAGE A NAPOLI Per il potenziamento della Ns struttura di Technical Consulting ricerchiamo per la sede di Napoli (Rif. Stage_NA) neolaureati in: Ingegneria Informatica/ Elettronica/Elettrica/TLC; - Informatica. Gli stagisti saranno inseriti in progetti attivi c/o la Ns sede. Si richiede laurea a pieni voti, buona conoscenza della lingua inglese, flessibilit e forte motivazione ad operare nel settore della consulenza. Costituiranno titolo preferenziale le conoscenze dei seguenti strumenti: C/C++, C#, Visual Basic, DB, MS Office, LabView, MatLab. Inviare curriculum, corredato di foto, ed autorizzazione al trattamento dei dati personali. info@symacontech.com Data: 15/01/2007 Settore: Informatica Scadenza: 28/02/2007 Dati azienda Nome: SymaconTech; Settore: Informatica. E-mail: info@symacontech.com Citt: Napoli www.lavoro.org

46

L A BV I E W E L AVO R O

SPECIALISTA JUNIOR IN ATTUATORI E STRUMENTAZIONE Azienda di componenti e soluzioni meccatroniche in continuo trend di crescita ci ha incaricato di ricercare urgentemente uno Specialista Junior in Attuatori e strumentazione (Rif. Att/08) Requisiti: Laurea in Ingegneria elettronica,elettrica o in Fisica, indirizzo automazione ed elettronica industriale. Esperienza almeno biennale in ambito di: microattuatori e microsensori (elettromagnetici, piezoelettrici, magnetostrittivi, Smart materials, ottici, ecc.); microsistemi integrati e MEMS; azionamenti ed elettronica di potenza; strumentazione elettronica; dispositivi elettronici. Buona conoscenza di LabVIEW, Spice e Orcad. Esperienza di sviluppo software in C/C++ e/o Matlab, in ambiente Windows o Unix/Linux. Completano il profilo un forte orientamento al raggiungimento degli obiettivi assegnati e doti di team working. Sede di lavoro: Bari La ricerca rivolta a candidature di entrambi i sessi (L. 903/77) Gli interessati sono pregati di inviare un dettagliato CV con foto tessera allegata, indicando il riferimento (Rif. Att/08) e l'autorizzazione al trattamento dei dati personali (Legge 675/96), via e-mail, fax o posta a: recruiting@assiomaselezione.it www.assiomaselezione.it

APPLICATION ENGINEER - Stage La figura dellApplication Engineer (AE) allinterno della nostra azienda finalizzata a fornire supporto tecnico alla forza vendite (pre-vendita) ed al cliente (post-vendita). La differenza di tempo di intervento, genera due figure distinte ma complementari per il soddisfacimento del cliente. Nel primo lAE ha la gestione delle problematiche che sorgono prima della vendita, approfondendo lo studio funzionale dei nuovi prodotti, sviluppando sistemi dimostrativi e collaborando a stretto contatto con i venditori interni e con i colleghi delle industrie clienti al fine di fornire una soluzione utile e funzionante. Nel secondo caso, lAE gestisce le richieste di assistenza tecnica del cliente dopo la vendita del prodotto, effettuando test sui malfunzionamenti, suggerendo le corrette modalit di impiego del prodotto, tenendo corsi necessari allapprendimento sul funzionamento e utilizzo dei prodotti forniti, si reca dai clienti quando lo richiedano per fornire installazioni di prodotto o effettuare una analisi del problema in loco. Lo stage proposto finalizzato ad acquisire una completa confidenza con soluzioni software (es. LabVIEW) e hardware (es. Schede DAQ, Sistemi di condizionamento segnali, PXI Bus, strumenti di misura on-board) in continua evoluzione, e conoscere pertanto unampia gamma di soluzioni proposte nel mondo del test, collaudo e misura.

Lo stage anche mirato a dare al tirocinante unesperienza importante nella collaborazione e interazione con i propri colleghi. Il candidato verr inserito completamente nellambiente lavorativo sotto tutti i suoi aspetti, sar quindi, informato di tutte le procedure interne alle quali ognuno di noi quotidianamente sottoposto: gestione interna, amministrativa e comportamentale. Durante il suo inserimento nella divisione del supporto tecnico verranno anche valutate le sue performance e riferiti tutti i suggerimenti tecnici di approfondimento e gestionali del cliente. Qualora sia interessato a questo tirocinio, la invitiamo a presentare il curriculum vitae autorizzando il trattamento dei propri dati personali in conformit alla normativa prevista dal D.lgs. 196/2003 ai fini delle esigenze di cui alla presente selezione condotta da National Instruments Italy S.r.l. Autorizzare altres la Nostra societ a comunicare, per finalit di selezione, i propri dati personali anche a societ che effettuano selezione per Nostro conto, nonch a clienti o fornitori di National Instruments Italy S.r.l., direttamente a: National Instruments Italy S.r.l. Risorse Umane via A. Kuliscioff 22 20152 Milano Fax 02/41309215 E-mail: italy.jobs@ni.com www.ni.com/italy

47