Sei sulla pagina 1di 47

02

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

MAGGIO

2007

POTENTE GRAZIE AGLI

LABVIEW E LHYPERTHREADING LABVIEW PER LA MISURA E LANALISI DEI DATI LUAVIEW: LABVIEW PI SCRIPT LUA

SCENARIO
02

ISTRUZIONI PER L'USO C

ome avrete gi constatato sfogliando LabVIEW World, la rivista si articola in alcune sezioni fondamentali. Vediamo insieme quali sono i criteri con i quali abbiamo proceduto nella loro scelta. 'Scenario' l'editoriale, che viene di volta in volta dedicato all'argomento sul quale vogliamo richiamare la vostra attenzione. Nei primi numeri, naturalmente, abbiamo parlato soprattutto di LabVIEW World, ma non sar sempre cos. Dopo il sommario, che riporta il titolo, un'icona e una breve descrizione dell'argomento di ogni articolo, troverete spesso 'A tu per tu'. In questa sezione intervisteremo un personaggio legato in qualche modo a LabVIEW, al suo sviluppo o al suo utilizzo. Nel primo numero, per esempio, siamo partiti da Jeff Kodosky, uno dei padri di LabVIEW. Poi abbiamo incontrato John Pasquarette, direttore software marketing di National Instruments. Ed eccoci alla parte dedicata alle novit: in 'What's new' vengono focalizzate nuove caratteristiche o nuove applicazioni di LabVIEW, con il classico stile sintetico delle news. In 'Tips & techniques' vengono proposti approfondimenti su funzioni particolari di LabVIEW e sono descritti 'trucchi' di programmazione per risolvere specifici problemi: dalla comunicazione tra LabVIEW e Linux realtime, alla gestione di una scheda audio su PC, alla comunicazione fra LabVIEW e un database, e cos via. E, per capire ancora meglio le infinite possibilit applicative di LabVIEW in ogni settore civile e industriale, nella sezione 'Dalla teoria alla pratica' vengono pubblicati articoli che illustrano realizzazioni basate sul software di programmazione grafica di National Instruments. In sostanza, nella prima parte della rivista, troverete informazioni destinate soprattutto a chi conosce gi, a vario livello, LabVIEW. Ritenete che le vostre conoscenze sull'argomento non siano sufficienti? Niente paura. Abbiamo infatti previsto la 'Scuola di LabVIEW', una sezione che contiene sempre due articoli: uno per i principianti ed uno per i pi esperti. Raccogliendo i numeri della rivista, potrete disporre fra qualche tempo di un corso completo, che vi permetter di risolvere i vostri dubbi o di 'ripassare' qualche concetto di programmazione. Non vi basta ancora? Saltate a pi pari agli 'Appuntamenti' e scegliete il corso di formazione o l'evento ottimale per le vostre esigenze! Tornando indietro, troverete 'Dalla carta al web'. L'idea di fondo descritta nel trafiletto di apertura. In sostanza, in questa sezione vi segnaliamo alcuni spunti di approfondimento tratti dall'inesauribile serbatoio del web. Proprio perch gli argomenti relativi a LabVIEW sono innumerevoli e lo spazio sulla rivista limitato, lasciamo a voi il compito di scaricare il file dalla rete e leggerlo sul vostro computer. In ogni rivista, poi, c' sempre una rubrica dedicata alla posta dei lettori. Non poteva quindi mancare 'La voce degli utenti'. Non si tratta per delle vostre lettere, ma di argomenti di discussione ricavati dal Forum di ILVG.it che vi invitiamo a frequentare. Segue 'Report', con articoli di attualit su eventi centrati su LabVIEW o che hanno visto la partecipazione di National Instruments. Siamo arrivati all'ultima sezione, quella di 'LabVIEW e lavoro'. Se desiderate sfruttare la vostra conoscenza di LabVIEW, leggete le inserzioni che pubblichiamo: forse troverete quella che fa per voi. E non dimenticate: se avete qualche dubbio o desiderate maggiori informazioni su qualche argomento, utilizzate liberamente il codice readerservice riportato in calce ad ogni articolo. Otterrete tempestivamente una risposta!
Valerio Alessandroni

W H AT S N E W

02

NATIONAL INSTRUMENTS SEMPLIFICA L'ESECUZIONE DELLE MISURE CON LABVIEW SIGNALEXPRESS


Questo software interattivo rappresenta la soluzione ideale per la registrazione dei dati, le misure in laboratorio e le applicazioni didattiche

ational Instruments ha potenziato ulteriormente la sua offerta software per la progettazione grafica di sistemi grazie al rilascio di LabVIEW SignalExpress, un software interattivo di misura che semplifica la registrazione dei dati e il controllo della strumentazione, oltre ad essere un valido ausilio per la didattica. LabVIEW SignalExpress si fonda sulle funzionalit di misura, analisi e generazione di report di LabVIEW e consente di controllare centinaia di dispositivi di misura in modo facile ed intuitivo. National Instruments ha sviluppato LabVIEW per creare applicazioni custom per lautomazione delle misure, ha affermato Jeff Kodosky, creatore di LabVIEW e co-fondatore di National Instruments. Grazie al nuovo software LabVIEW SignalExpress, ora parte integrante della famiglia di LabVIEW, gli utenti potranno eseguire in modo ancora pi semplice le operazioni di misura pi comuni e avranno anche accesso alle piene potenzialit della piattaforma NI LabVIEW.

CREARE RAPIDAMENTE SISTEMI DI DATA LOGGING


Comunemente i sistemi di registrazione dei dati acquisiscono le misure e le memorizzano su disco o in un database. Grazie a pochi click del mouse, LabVIEW SignalExpress in grado di acquisire e registrare i dati di misura su disco ed esportarli in applicazioni di fogli di calcolo come ad esempio Microsoft Excel.

LabVIEW SignalExpress include anche funzioni per la registrazione dei dati come il monitoraggio di allarmi e il salvataggio condizionato. Inoltre, dato che il software basato sulla tecnologia Express di LabVIEW, possibile generare codice grafico LabVIEW con un semplice click del mouse, per estendere le applicazioni ricorrendo a interfacce utente originali oppure aggiungere logica personalizzata per applicazioni avanzate di salvataggio dati. LabVIEW SignalExpress, abbinato al sistema modulare di acquisizione dati NI CompactDAQ, permette una configurazione rapida e plug-and-play del sistema di misura. NI CompactDAQ, basato su USB, con oltre 30 moduli a disposizione, permette agli utenti di integrare vari tipi di misura come RTD, I/O di corrente, I/O digitali ad alta densit, I/O analogici ad alta velocit e I/O analogici ad elavata accuratezza. La combinazione della piattaforma plugand-play NI CompactDAQ USB con LabVIEW SignalExpress, offre una soluzione per la registrazione dei dati completa e facile da usare, in grado di ridurre notevolmente i tempi di configurazione e di misura.

nuale di pulsanti e manopole degli strumenti. LabVIEW SignalExpress in grado di automatizzare le operazioni di acquisizione, analisi e memorizzazione dei dati per oltre 400 strumenti modulari e stand-alone; inoltre, il software permette di risparmiare tempo con lautomazione di molte operazioni di misura, come la caratterizzazione dei circuiti, il frequency sweeping e la registrazione dei dati.

MIGLIORA LEFFICIENZA DELLE MISURE IN APPLICAZIONI DA BANCO


Lutilizzo di strumenti da banco in operazioni di misura ripetitive o lutilizzo simultaneo di pi strumenti per condurre dei test come le misure di risposta allo stimolo, spesso comporta operazioni fastidiose di regolazione ma-

LabVIEW SignalExpress permette di migliorare le operazioni di misura grazie a oltre 200 funzioni di elaborazione e analisi, incluse quelle nel dominio del tempo e della frequenza e lanalisi statistica, per analizzare i dati al momento stesso dellacquisizione. Analizzando i dati in tempo reale durante il processo di acquisizione, possibile individuare pi velocemente gli errori di progettazione e di misura ed effettuare le modifiche del caso, riducendo la necessit di ripetere nuovamente le misure. Inoltre, si possono riutilizzare le misure grazie alla generazione automatica di codice grafico LabVIEW direttamente da LabVIEW SignalExpress.

W H AT S N E W

02

BREVI
Nuovo Shared Library Import Wizard
Le librerie condivise sono parti di codice precompilato che vengono collegate dinamicamente al programma principale in fase di esecuzione. Le Dynamic Link Libraries (DLL) in Windows, le Shared Libraries in Linux e i Framework in Mac OS sono tutti esempi di librerie condivise, a cui si pu accedere da LabVIEW utilizzando il Call Library Function Node . Con tale nodo, potete creare uninterfaccia in LabVIEW per richiamare librerie condivise. Con lavvento di LabVIEW 8.20 stato introdotto il DLL Import Wizard, un potente strumento di generazione di VI che permette di risparmiare tempo di sviluppo e di ridurre gli errori commessi dallutente. Ciascuno di questi VI autogenerati, o VI wrapper, contiene un Call Library Function Node per accedere a una funzione selezionata della DLL. Tale caratteristica non solo accelera il processo di integrazione delle funzioni delle librerie condivise, ma minimizza anche

MIGLIORA I METODI PER LA DIDATTICA COMBINANDO LE ACQUISIZIONI REALI CON LA TEORIA


Lambiente interattivo di LabVIEW SignalExpress permette agli studenti di comprendere pi velocemente le implicazioni pratiche delle teorie apprese in classe. LabVIEW SignalExpress include gli strumenti necessari per lacquisizione e lanalisi dei dati durante le lezioni in classe o di laboratorio, senza la necessit di insegnare agli studenti alcun concetto di programmazione. Gli studenti ora sono anche in grado di importare i dati di simulazione diretta-

mente in LabVIEW SignalExpress, a partire da unampia variet di pacchetti di simulazione come Multisim di National Instruments, il software interattivo SPICE di analisi e di simulazione dei circuiti, per il confronto diretto con i dati reali acquisiti. La combinazione delle funzioni di simulazione e di progettazione avanzata dei circuiti con le funzioni di misura di LabVIEW SignalExpress, permette agli studenti di confrontare agevolmente le simulazioni e i dati reali, riducendo cos il tempo di progettazione e ottenendo risultati di alta qualit. Per visualizzare le demo di LabVIEW SignalExpress e ottenere informazioni, collegarsi al sito www.ni.com/signalexpress. Inoltre, possibile scaricare gratuitamente LabVIEW SignalExpress LE, una versione limitata del software, al sito: www.ni.com/signalexpresseval.
readerservice.it n. 201

PROGETTAZIONE E SIMULAZIONE DI CONTROLLI


Implementa in modo semplice modelli dedicati alla progettazione di loop di simulazione e di controlli, con accesso real-time diretto agli I/O
gli errori pi comuni compiuti dallutente quando deve configurare impostazioni come il formato dei dati, i collegamenti, i valori di default e la gestione degli errori. Il wizard guida in modo intuitivo gli utenti meno esperti attraverso le fasi di configurazione e suggerisce anche le scelte ottimali per i parametri delle funzioni e la gestione degli errori. Per gli utenti pi avanzati, il tool offre la possibilit di accedere a una vasta gamma di opzioni di configurazione, sia delle impostazioni generali sia di quelle specifiche dei singoli VI. Per utilizzare correttamente il DLL Import Wizard, si richiede, supponiamo ad esempio in Windows, un file .dll e il relativo file dintestazione .h. Esattamente come quando si utilizza una DLL in qualsiasi altro linguaggio di programmazione, necessario conoscere o disporre di documentazione relativa allAPI della libreria che spieghi come utilizzare il set di funzioni disponibile. Il risultato finale sar una libreria di progetto di LabVIEW contenente un set di VI (uno per ciascuna funzione della libreria condivisa selezionata dallutente) ed un report su eventuali errori occorsi in fase di generazione.
Readerservice.it n. 202

abVIEW 8.20 facilita lesplorazione dei concetti di meccatronica e di progettazione dei controlli, inclusa la progettazione di controllori, la simulazione di sistemi dinamici, lidentificazione di sistemi e lo sviluppo real-time. Grazie alla forte integrazione esistente fra hardware e software NI, i docenti possono applicare la teoria con esempi reali in modo pratico e interattivo. Inoltre, il nuovo LabVIEW Simulation Module permette di combinare la progettazione basata su modelli e la logica a flusso di dati, integrando facilmente i vantaggi offerti dai due modelli

di calcolo allinterno di un unico ambiente di programmazione. Si possono anche trasportare modelli realizzati con Simulink di The MathWorks in LabVIEW 8.20 con unutility incorporata nel LabVIEW Simulation Module. In questa versione di LabVIEW, il LabVIEW Simulation Module e il LabVIEW Embedded Module sono ora integrati, permettendovi di progettare un algoritmo con il LabVIEW Simulation Module, prototiparlo usando I/O real-time su hardware commerciale e distribuire lo stesso codice, usando il LabVIEW Embedded Development Module, su qualsiasi processore a 32 bit. In questo modo, potete simulare e implementare modelli virtualmente su qualsiasi target, da un PC desktop fino a un microcontrollore.

W H AT S N E W

BREVI
Nuove caratteristiche di LabVIEW 8.20 per la progettazione e la simulazione di controlli: Distribuzione dei modelli di simulazione su qualsiasi processore embedded a 32 bit. Prestazioni potenziate dei modelli di simulazione Migliorate di oltre 10 volte prestazioni quali: la velocit di esecuzione, il tempo di compilazione e la capacit di lavorare con modelli di grandi dimensioni. Implementazione real-time diretta dei modelli di progettazione dei controlli. Modellazione e simulazione di sistemi dinamici come controllori di motori e sistemi idraulici con gestione real-time diretta degli I/O. La stretta integrazione con lhardware NI offre diverse opzioni per la prototipazione, i test hardware-in-theloop (HIL) e limplementazione finale.
Readerservice.it n. 203

Generazione di Codice C
Programmazione grafica di qualsiasi microprocessore a 32 bit e semplice riutilizzo del codice C esistente
ora possibile sfruttare la programmazione grafica di LabVIEW per programmare qualsiasi sistema embedded con un microprocessore a 32 bit. Il LabVIEW Embedded Development Module estende le funzionalit di LabVIEW per poter lavorare con tool di terze parti, in modo da ottenere una piattaforma che facilita lapprendimento pratico della progettazione embedded. Con il LabVIEW Embedded Development Module, utilizzando strumenti virtuali specializzati, possibile incorporare facilmente codice C esistente e driver di I/O analogici, digitali e per telecomunicazioni. Tale modulo include numerosi template per le architetture di processori pi diffuse, tra cui PowerPC, ARM, TI C6x e x86.

RF E TELECOMUNICAZIONI
Progettare sistemi di telecomunicazioni in modo intuitivo e veloce usando nuovi schemi di modulazione e filtri avanzati

e attivit didattiche e di ricerca sugli attuali sistemi complessi di telecomunicazione richiedono una piattaforma flessibile per le diverse fasi di sviluppo dalla progettazione software alla prototipazione hardware, integrandosi con centinaia di strumenti. LabVIEW 8.20 e il LabVIEW Modulation Toolkit estendono le capacit native di analisi di LabVIEW ed offrono il supporto a vari formati di modulazione, che sono la base per numerose tecnologie emergenti come WiFi, ZigBee, RFID, HDTV, ecc. Il nuovo LabVIEW Modulation Toolkit permette la simulazione software e limplementazione hardware diretta di sistemi di telecomunicazione. Potete sviluppare rapidamente applicazioni custom per approfondire lo studio della teoria, fare ricerca e progettare sistemi di telecomunicazione e componenti per la modulazione e la demodulazione dei segnali. Inoltre, potete utilizzare LabVIEW 8.20 e la sua libreria di funzioni per simulare lelaborazione dei segnali e progettare interattivamente filtri digitali, utilizzando il LabVIEW Digital Filter Design Toolkit, e prototipare sistemi, programmando microcontrollori, processori digitali (DSP) e gate array programmabili (FPGA). Il LabVIEW Digital Filter Design Toolkit in LabVIEW 8.20 ha diverse nuove caratteristiche progettate per i sistemi di telecomunicazione, incluse 12

nuove funzioni testuali per la progettazione di filtri, pronte da usare con il LabVIEW MathScript. In pi, la capacit di utilizzare, come target, microcontrollori, DSP e FPGA, sfruttando la tecnologia offerta da LabVIEW Embedded Development Module, LabVIEW DSP Module e LabVIEW FPGA Module. Il nuovo LabVIEW Digital Filter Design Toolkit permette agli studenti di comprendere meglio i filtri digitali, rappresentando graficamente le pi comuni equazioni discrete associate a un filtro. Il nuovo tool pu rappresentare la funzione di trasferimento di un filtro, la forma poli/zeri/guadagno e lequazione alle differenze. Nuove funzionalit di LabVIEW 8.20 per le telecomunicazioni: LabVIEW Modulation Toolkit per gestire protocolli standard e custom per telecomunicazioni Riutilizzo degli algoritmi esistenti per telecomunicazioni con la programmazione testuale di LabVIEW MathScript Piattaforma di progettazione e prototipazione di hardware basato su microcontrollori, DSP e FPGA Nuovi tool di progettazione di filtri multifrequenza in virgola mobile e in virgola fissa per la decimazione, linterpolazione e il ricampionamento razionale, con capacit di generare codice in virgola fissa
readerservice.it n.204

Nuove caratteristiche di LabVIEW Embedded 8.20: Si integra nei progetti in LabVIEW, indirizzando i target embedded in modo facile e funzionale Programmazione di target a basso costo, incluse architetture PowerPC, ARM, TI C64x, x86 e sistemi operativi VxWorks, eCos, Windows e Linux Embedded Riutilizzo di codice C esistente tramite C-node e possibilit di lavorare con tool di sviluppo C come Eclipse Creazione di nuovi target con approccio semplificato che include un I/O abstraction layer
Readerservice.it n. 204

SEI UN FAN DI LABVIEW?


ENTRA NELLA NOSTRA COMUNIT!
Caro lettore, se ritieni che questa nuova iniziativa LabVIEW World sia un utile strumento per la tua attivit e desideri continuare a rimanere aggiornato sul mondo LabVIEW, collegati alla pagina http://www.ilb2b.it/labview/lb_world.asp

TIPS & TECHNIQUES

02

USO DEI WEB SERVICE IN LABVIEW


Mike Neal

I Web Ser vice si stanno affermando come la prossima generazione di tecnologie basate su Web per lo scambio di informazioni fra applicazioni su Internet
econdo il World Wide Web Consortium (W3C), un nuove funzionalit agli strumenti standard di progettazioWeb Service un sistema software progettato per ne di applicazioni o di contenuti per il Web. Per esempio, supportare interazioni funzionali da macchina a mac- unapplicazione standard di controllo di processo potrebchina attraverso una rete. Esso ha uninterfaccia descritta be allertare gli operatori, nel caso si verifichino condizioni in un formato tipo WSDL (Web Services Description di pericolo, utilizzando degli allarmi. Incorporando un Web Language). Gli altri sistemi interagiscono con il Web Service per effettuare telefonate al verificarsi di una conService secondo le specifiche proprie della sua interfaccia, dizione di allarme, lapplicazione di controllo acquista la usando messaggi che possono possibilit di andare oltre linterazione con loperatore, essere racchiusi in un frame SOAP componendo un numero di emergenza per la richiesta di (Simple Object Access Protocol). I aiuto. Web Service si basano su un prin- I Web Service completano i toolset di programmazione esicipio di funzionamento a scatola stenti. Mano a mano che nuovi programmatori adotterannera, per cui possono essere uti- no i Web Service come tool di programmazione, questi serlizzati su Internet senza richiedere vizi diventeranno sempre pi prevalenti nella progettazioalcuna conoscenza della loro ne Web e di applicazioni. implementazione. Siti Web e applicazioni possono COMUNICARE CON I WEB SERVICE utilizzare i Web Service. Essen- possibile accedere a qualsiasi Web Service utilizzando zialmente, un Web Service asso- normali protocolli Web, formati di dati e formati di mesFigure 1 Uso di .NET per comunicare con i Web Ser vice miglia a un set di funzioni espor- saggi, come Hypertext Transfer Protocol (HTTP), Extensible tate su Internet attraverso un Markup Language (XML) e Simple Object Access Protocol Web server. Il progettista di un sito Web o di unapplica- (SOAP). HTTP utilizzato per inviare e ricevere messaggi zione ha la possibilit di invocare queste funzioni ed uti- fra il Web Service e il fruitore del servizio. XML utilizzato lizzare il Web Service. I Web Service stanno guadagnando per descrivere e rappresentare i dati scambiati. SOAP defipopolarit grazie ai numerosi vantaggi che sono in grado nisce i messaggi e i loro collegamenti con HTTP. Usando il protocollo SOAP, un client pu inviare e ricevere di offrire: messaggi ben compresi sia dal Web Service che dal fruitoRiutilizzo del codice La costruzione delle applicazioni semplificata utilizzando re, il quale, tuttavia, ha bisogno di sapere quali messaggi inviare e ricevere. Per questa transazione necessaria una componenti Web Service pronti alluso. descrizione dellinterfaccia verso il Web Service. Il Web Indipendenza dalla piattaforma Poich laccesso ai Web Service usa tecnologie Internet Service Description Language (WSDL) un linguaggio standard, gli utenti di un Web Service possono utilizzare basato su XML, sviluppato congiuntamente da Microsoft e IBM. Un Web Service pubblica la sua interfaccia in WSDL qualsiasi piattaforma. Indipendenza dal linguaggio Qualsiasi linguaggio di programmazione pu operare su un Web Service senza alcuna conoscenza dei dettagli di implementazione del Web Service. Elaborazione distribuita I componenti Web Service possono essere utilizzati per costruire facilmente applicazioni distribuite. La potenza dei Web Service risiede Figura 2 Come ottenere lURL WSDL di un Web Ser vice nella loro capacit di fornire

TIPS & TECHNIQUES

Figura 3 Lancio del Web Ser vice Impor t Wizard in LabVIEW 8.20

ad un URL specifico. Un utilizzatore pu quindi leggere la specifica WSDL dall URL e creare messaggi SOAP per comunicare con il Web Service.

TROVARE UN WEB SERVICE


Segnalatori di valori azionari, convertitori di valuta e traduttori linguistici rappresentano solo alcuni dei numerosi Web Service comunemente disponibili. Proprio come un fornitore locale fa pubblicit sullelenco telefonico, i fornitori di Web Service pubblicano i loro servizi in Web directory ben note. Se si ricerca in Google "Web Services Directory", si possono ottenere molti risultati che contengono questi elenchi. Una directory pu elencare i Web Service per categorie e permettere agli utenti di cercare i servizi richiesti mediante parole chiave. Dopo avere trovato un Web Service di proprio interesse, lutente deve prendere nota dellURL della specifica WSDL. Spesso, la descrizione del Web Service nella directory riporta chiaramente lURL della specifica WSDL insieme alle funzionalit del servizio. Tale URL necessaria quando si crea unapplicazione basata su Web Service in LabVIEW.

layer fra il Web Service e un VI, nella forma di un .NET assembly wrapper. Tale strato esegue le operazioni di impacchettamento, spedizione e ricevimento dei messaggi SOAP (fig. 1). Il risultato una versione duso immediato delle funzionalit del Web Service. Allinterno del Web Service Import Wizard, i servizi vengono gestiti mediante un assembly .NET, che rappresenta ununit di elaborazione .NET distribuibile singolarmente. Bench lestensione dellassembly .NET sia .DLL, non si tratta di una dynamic link library di tipo standard, che pu

Figura 5 Selezione dei metodi del Web Ser vice

essere richiamata con un Call Library Function Node in LabVIEW. Si tratta di un oggetto costruito per essere eseguito sul Common Language Runtime (CLR) supportato dal framework .NET. Un assembly .NET esporta uninterfaccia basata su classi con propriet e metodi. Utilizzando il supporto per client .NET in LabVIEW, lutente pu creare unistanza di una classe da un assembly .NET, mediante il Constructor Node, ed accedere alle propriet e ai metodi della classe usando rispettivamente i property node e gli invoke node.

CREAZIONE DI UNAPPLICAZIONE BASATA SU WEB SERVICE IN LABVIEW 8.20


Figura 4 Specificare il nome della libreria di progetto relativa al Web Ser vice

UTILIZZARE LA TECNOLOGIA WEB SERVICE


Comunicare con un Web Service utilizzando messaggi SOAP come scrivere codice in un linguaggio assembly: efficiente ma difficile da scrivere, debuggare e mantenere. Lutente pu semplificare notevolmente il lavoro, grazie a un maggiore livello di astrazione, usando il Web Service Import Wizard di LabVIEW. In LabVIEW 8.20, il Web Service Import Wizard introduce infatti un abstraction

LabVIEW 8.20 permette allutente di importare facilmente un Web Service e utilizzare le funzioni del servizio attraverso subVI standard in LabVIEW. Seguite i passi descritti in precedenza per trovare un Web Service e la relativa URL WSDL. Quando si usa LabVIEW 8.20, i passi seguenti spiegano come questa informazione viene utilizzata per unapplicazione basata su Web Service: Passo 1: Localizzate e copiate lURL WSDL di un Web Service desiderato. Passo 2: Lanciate il Web Service Import Wizard in LabVIEW. Passo 3: Incollate lURL WSDL nel Web Service Import Wizard.

TIPS & TECHNIQUES

02

1. Assicuratevi che ogni metodo che desiderate importare nella libreria di progetto abbia un segno di spunta accanto al suo nome (fig. 5). 2. Cliccate sul pulsante Generate per procedere con il Wizard ed aprire la libreria di progetto importata. 3. Cliccate sul pulsante Finish per uscire dal Wizard e lanciare la liberia di progetto (fig. 6). Passo 5: Utilizzare i VI del Web Service sul diagramma a blocchi Quando il Web Service Import Wizard completa la generazione, la libreria diventa accessibile (fig. 7). 1. Dalla Finestra Project Explorer, trascinate lOpen Web Service.vi ed il Close Web Service.vi sullo schema a blocchi. Questi VI sono necessari per stabilire e chiudere correttamente la connessione al Web Service. 2. Trascinate licona NotifyPhoneEnglishBasic.vi sullo schema a blocchi.

Figura 6 Aper tura della libreria di progetto del Web Ser vice impor tata

Passo 4: Selezionate i metodi desiderati del Web Service. Passo 5: Utilizzate i VI del Web Service sul diagramma a blocchi. Lesempio seguente dimostra come richiamare da LabVIEW un Web Service denominato Phone Notify. Questo Web Service telefona a un numero indicato dallutente e legge un testo specificato a voce alta. Per informazioni sul Web Service Phone Notify consultate www.cdyne.com. Passo 1: Localizzare e copiare lURL WSDL del Web Service Phone Notify 1. Visitate www.xmethods.net. 2. Cercate Phone Notify nellelenco completo dei Web Service e selezionate il link. 3. Copiate lURL WSDL (fig. 2). Passo 2: Lanciare il Web Service Import Wizard in LabVIEW 1. Lanciate LabVIEW. 2. Selezionate Tools Import Web Service (fig. 3) per lanciare il Web Service Import Wizard.

Figura 8 Utilizzo del Web Ser vice in unapplicazione LabVIEW

Figura 7 Esplorazione della libreria di progetto del Web Ser vice generata

Passo 4: Selezionare i metodi desiderati del Web Service I metodi sono le varie funzioni che questo Web Service pu fornire. I metodi disponibili sono elencati nella finestra del Web Service Import Wizard.

Note sullautore
Mike Neal, LabVIEW Product Manager, National Instruments

Readerser vice.it n 206

Passo 3: Incollare lURL WSDL nel Web Service Import Wizard 1. Incollate lURL WSDL nel campo Web Service Description URL e cliccate sul pulsante Next. Il Web Service viene ora automaticamente convalidato: LabVIEW controlla lURL per verificare che sia una specifica WSDL valida. 2. Nel campo Name (.lvlib), specificate il nome di una nuova Project Library che conterr il Web Service.

3. Specificate LicenseKey, PhoneNumberToDial e TextToSay e fate i collegamenti come illustrato in fig. 8. 4. Notate in fig. 8 che i VI incapsulano chiamate .NET a basso livello (riquadri rossi) che rimangono competamente trasparenti allutente per unimplementazione pi semplice. 5. Eseguite il VI. Il Web Service Phone Notify chiama il numero telefonico specificato e legge il testo. Questo esempio illustra chiaramente che richiamare un metodo di un Web Service da LabVIEW un processo semplice e immediato, grazie al nuovo Web Service Import Wizard.

TIPS & TECHNIQUES

02

K amran Shah

LABVIEW E LHYPERTHREADING
Lhyper threading una caratteristica avanzata delle versioni evolute del processore Intel Pentium 4 e successivi

n computer hyperthreaded ha un solo processore, ma si comporta come se sullo stesso chip fossero incorporati pi processori. Alcune delle risorse sul chip sono duplicate, come il set di registri, altre sono condivise, come le unit di esecuzione e la cache. Alcune risorse, come i buffer per le microoperazioni, sono partizionate, in modo tale che ogni processore logico ne riceva una parte. Ottimizzare unapplicazione per sfruttare lhyperthreading come ottimizzare unapplicazione per un sistema multiprocessore, ma vi sono alcune differenze. Per esempio, un computer hyperthreaded condivide le unit di esecuzione mentre un computer a doppio processore contiene due set completi di unit di esecuzione. Pertanto, tutte le applicazioni che sono limitate dalle unit di esecuzione in virgola mobile hanno prestazioni migliori su un computer multiprocessore, perch non necessario condividere le unit di esecuzione. Lo stesso principio vale per la contesa della cache. Se due thread cercano di accedere alla cache, le prestazioni sono migliori su un computer multiprocessore, dove ogni processore possiede la propria cache.

ESEMPIO DI ESECUZIONE PARALLELA NELLA RICERCA DI NUMERI PRIMI


Lesempio seguente (fig. 2) calcola i numeri primi maggiori di due. Lo schema a blocchi valuta tutti i numeri dispari fra tre e Limit e determina se sono primi. Il Ciclo For interno restituisce TRUE se qualche numero divide il termine con resto zero. Il Ciclo For interno gravoso in termini computazionali perch non include alcun I/O o funzione di attesa. Larchitettura di questo VI impedisce a LabVIEW di sfruttare i benefici del funzionamento parallelo, perch esiste un

Fig. 2

RICHIAMI GENERALI SULLE MODALIT DI ESECUZIONE DI LABVIEW


Il sistema di esecuzione di LabVIEW gi concepito per il multiprocessing. Nei linguaggi di programmazione testuali, per rendere multithreaded unapplicazione, necessario creare pi thread e scrivere il codice di comunicazione fra gli stessi. LabVIEW invece riconosce automaticamente le opportunit di multithreading nei VI e il sistema di esecuzione gestisce per voi la comunicazione. Lesempio seguente sfrutta il sistema di esecuzione multithreaded di LabVIEW. In questo VI (fig.1), LabVIEW capisce che pu eseguire due loop indipendentemente e, in ambienti multiprocessore o hyperthreaded, anche simultaneamente.

Fig. 1

ordine obbligato nellesecuzione di ogni operazione. Tale ordine forzato dal flusso di dati e non esistono altri possibili ordini di esecuzione, perch ogni operazione deve attendere tutti i suoi ingessi per essere eseguita. Si possono comunque apportare delle modifiche al VI. Lesecuzione parallela richiede che nessuna iterazione del ciclo debba dipendere da altre iterazioni. Se si soddisfa questa condizione, si possono distribuire le iterazioni del ciclo fra due cicli. Tuttavia, un vincolo di LabVIEW che nessuna iterazione di un ciclo pu iniziare prima che literazione precedente sia finita. Si pu dividere il processo in due cicli dopo avere determinato che questo vincolo non necessario. Nella figura seguente (fig. 3), lesempio di ricerca parallela dei numeri primi divide il processo in due cicli. Il ciclo superiore valuta met dei numeri dispari e quello inferiore laltra met. Su un computer multiprocessore, la versione parallela risulta pi efficiente, perch LabVIEW pu eseguire simultaneamente il codice dei due cicli. Notate che i VI di questi due esempi non includono codice per la gestione esplicita dei thread. Il paradigma di programmazione a flusso di dati di LabVIEW permette al sistema di eseguire i due cicli in thread differenti. In molti linguaggi di programmazione testuali necessario creare e gestire esplicitamente i thread.

TIPS & TECHNIQUES

02

ESEMPIO DEI NUMERI PRIMI IN C++


Il seguente esempio di codice descrive come scrivere un programma multithreaded in un linguaggio di programmazione testuale, riscrivendo in C++ lesempio di esecuzione parallela nella ricerca di numeri primi visto in precedenza. Lesempio mostra il tipo di sforzo richiesto per scrivere il codice di gestione dei thread e illustra la programmazione speciale necessaria per proteggere i dati condivisi dai thread. Il codice desempio seguente stato scritto e testato in Microsoft Visual C++ 6.0. La versione basata su un singolo thread, che sfrutta gli stessi algoritmi del precedente esempio scritto in LabVIEW, si presenterebbe cos: // Versione Single-threaded. void __cdecl CalculatePrimes(int numTerms) { bool *resultArray = new bool[numTerms/2]; for (int i=0; i<numTerms/2; ++i) { int primeToTest = i*2+3; // Start with 3, then add 2 each iteration. bool isPrime = true; for (int j=2; j<=sqrt(primeToTest); ++j) { if (primeToTest % j == 0) { isPrime = false; break; } } resultArray[i] = isPrime; } ReportResultsCallback(numTerms, resultArray); delete [] resultArray; } Non esiste alcun parallelismo in questa versione a thread singolo del codice, che utilizzerebbe cos il 100 per cento di un solo processore virtuale senza coinvolgere laltro. Per muoversi nella direzione di una logica parallela di funzionamento, lapplicazione deve promuovere thread addizionali e distribuire il lavoro. Il codice seguente lesempio di una versione multithreaded preliminare dello stesso esempio: struct ThreadInfo { int numTerms; bool done; bool *resultArray; }; static void __cdecl CalculatePrimesThread1(void*); static void __cdecl CalculatePrimesThread2(void*);

Fig. 3

IL MODELLO DI THREADING DI LABVIEW


La prima versione multithreaded di LabVIEW stata LabVIEW 5.0. LabVIEW 5.0 separava il thread dellinterfaccia utente dai thread di esecuzione. Gli schemi a blocchi venivano eseguiti in uno o pi thread e i pannelli frontali erano aggiornati in un altro thread. Il sistema operativo lavorava in multitasking preemptive, garantendo il tempo processore al thread di esecuzione, quindi al thread dellinterfaccia utente, e cos via. Prima di LabVIEW 7.0, LabVIEW allocava di default un solo thread per ogni singolo sistema di esecuzione e valore di priorit; ci voleva dire che tutte le attivit in tutti i VI appertenenti a quel sistema di esecuzione dovevano attendere insieme. LabVIEW 7.0 ha aumentato a quattro il numero di default dei thread allocati per ogni singolo sistema di esecuzione e valore di priorit; quindi, se un thread esegue unistruzione che provoca unattesa, lesecuzione delle altre sezioni del diagramma a blocchi pu proseguire. Oltre al multitasking preemptive del sistema operativo, LabVIEW si serve di una forma di multitasking cooperativo. Durante la compilazione, LabVIEW analizza i VI alla ricerca dei gruppi di nodi che si possono eseguire insieme nei cosiddetti clump. Ogni combinazione di sistemi di esecuzione e livelli di priorit ha una struttura dati basata su una coda di run che contiene i clump eseguibili insieme. Quando il sistema operativo attiva un thread, esso recupera ed esegue un clump dalla coda di run. Quando il sistema operativo termina lesecuzione, esso memorizza nella coda di run altri clump che soddisfano le condizioni di input, permettendo lesecuzione del diagramma a blocchi in uno qualsiasi dei quattro thread di esecuzione disponibili. Se lo schema a blocchi include un sufficiente grado di parallelismo, pu essere eseguito simultaneamente in tutti i quattro thread. LabVIEW non assegna permanentemente clump di codice a un particolare thread. LabVIEW pu eseguire infatti un clump usando un thread differente la prossima volta che si esegue il VI.

10

TIPS & TECHNIQUES

void __cdecl CalculatePrimesMultiThreaded(int numTerms) { // Inizializza linformazione da passare ai thread. ThreadInfo threadInfo1, threadInfo2; threadInfo1.done = threadInfo2.done = false; threadInfo1.numTerms = threadInfo2.numTerms = numTerms; threadInfo1.resultArray = threadInfo2.resultArray = NULL; // Inizia due thread _beginthread(CalculatePrimesThread1,NULL, &threadInfo1); _beginthread(CalculatePrimesThread2,NULL, &threadInfo2); // Attende che i thread finiscano lesecuzione. while (!threadInfo1.done || !threadInfo2.done) Sleep(5); // Colleziona i risultati. bool *resultArray = new bool[numTerms/2]; for (int i=0; i<numTerms/4; ++i) { resultArray[2*i] = threadInfo1.resultArray[i]; resultArray[2*i+1] = threadInfo2.resultArray[i]; } ReportResultsCallback(numTerms, resultArray); delete [] resultArray; } static void __cdecl CalculatePrimesThread1(void *ptr) { ThreadInfo* tiPtr = (ThreadInfo*)ptr; tiPtr->resultArray = new bool[tiPtr->numTerms/4]; for (int i=0; i<tiPtr->numTerms/4; ++i) { int primeToTest = (i+1)*4+1; bool isPrime = true; for (int j=2; j<=sqrt(primeToTest); ++j) { if (primeToTest % j == 0) { isPrime = false; break; } } tiPtr->resultArray[i] = isPrime; } tiPtr->done=true; } static void __cdecl CalculatePrimesThread2(void *ptr) { ThreadInfo* tiPtr = (ThreadInfo*)ptr; tiPtr->resultArray = new bool[tiPtr->numTerms/4];

for (int i=0; i<tiPtr->numTerms/4; ++i) { int primeToTest = (i+1)*4+3; bool isPrime = true; for (int j=2; j<=sqrt(primeToTest); ++j) { if (primeToTest % j == 0) { isPrime = false; break; } } tiPtr->resultArray[i] = isPrime; } tiPtr->done=true; } In questo esempio, la funzione CalculatePrimesMultiThreaded() crea due thread usando la funzione _beginthread(). Il primo thread richiama la funzione CalculatePrimesThread1(), che testa met dei numeri dispari. Il secondo thread richiama la funzione CalculatePrimesThread2 e testa laltra met dei numeri dispari. Il thread originale, che esegue ancora la funzione CalculatePrimesMultiThreaded(), deve attendere che i due thread in esecuzione finiscano, creando la struttura dati ThreadInfo per ogni thread e passandola alla funzione _beginthread(). Quando lesecuzione di un thread finisce, viene scritto true in ThreadInfo::done. Il thread originale deve interrogare continuamente ThreadInfo::done finch il thread originale legge un valore true per ogni thread di calcolo. A quel punto il thread originale pu accedere con sicurezza ai risultati del calcolo. Il programma colleziona quindi i valori in un singolo array, in modo che siano identici alloutput della versione a singolo thread di questo esempio. Nota: il passo precedente non mostrato nellesempio LabVIEW, ma farlo banale. Quando si scrive codice multithreading in un linguaggio di programmazione testuale come il C++, necessario proteggere le locazioni dei dati a cui pi thread possono accedere. Se non si proteggono le locazioni dei dati, le conseguenze sono imprevedibili e spesso difficili da riprodurre e localizzare. In ogni caso in cui lassegnazione di tiPtr>done a true non sia atomica, necessario usare un mutex per proteggere lassegnazione e laccesso. possibile migliorare ancora lesempio precedente. In particolare, non vi ragione per iniziare due thread addizionali e lasciarne uno inattivo. Poich questo esempio contiene codice per un computer con due processori virtuali, possibile iniziare un thread addizionale ed usare quello originale per eseguire met dei calcoli. Inoltre, possibile passare entrambi i thread attraverso la stessa funzione anzich scrivere due volte quella che, fondamentalmente, la stessa funzione. necessario passare un parametro addizionale alla funzione per indicare in quale thread pu

11

TIPS & TECHNIQUES

02

essere eseguita. Nota: si pu eseguire la stessa ottimizzazione nellesempio scitto in LabVIEW creando un subVI rientrante che contiene il Ciclo For. Il VI chiamante dovr avere due istanze del subVI invece di due Cicli For. Il codice segunte rappresenta unapplicazione multithreaded pi efficiente: struct ThreadInfo2 { int threadNum; int numTerms; bool done; bool *resultArray; }; static void __cdecl CalculatePrimesThread(void*); void __cdecl CalculatePrimesMultiThreadedSingleFunc(int numTerms) { // Inizializza le informazioni da passare ai thread. ThreadInfo2 threadInfo1, threadInfo2; threadInfo1.done = threadInfo2.done = false; threadInfo1.numTerms = threadInfo2.numTerms = numTerms; threadInfo1.resultArray = threadInfo2.resultArray = NULL; threadInfo1.threadNum = 1; threadInfo2.threadNum = 2; // Inizia un thread

} static void __cdecl CalculatePrimesThread(void *ptr) { ThreadInfo2* tiPtr = (ThreadInfo2*)ptr; int offset = (tiPtr->threadNum==1) ? 1 : 3; tiPtr->resultArray = new bool[tiPtr->numTerms/4]; for (int i=0; i<tiPtr->numTerms/4; ++i) { int primeToTest = (i+1)*4+offset; bool isPrime = true; for (int j=2; j<=sqrt(primeToTest); ++j) { if (primeToTest % j == 0) { isPrime = false; break; } } tiPtr->resultArray[i] = isPrime; } tiPtr->done=true; } Questa versione del programma pi efficiente perch si possono attivare meno thread e aspettare meno tempo in attesa che i thread operativi completino il lavoro. Inoltre, poich il codice esegue il calcolo allinterno di una singola funzione, c meno codice duplicato, cosa che rende lapplicazione pi facile da mantenere. Tuttavia, una grossa parte del codice esegue la gestione dei thread, cosa che intrinsecamente insicura e difficile da testare e debuggare.

UN ESEMPIO PI COMPLESSO IN LABVIEW


_beginthread(CalculatePrimesThread, NULL, &threadInfo1); // Usa il thread per laltro ramo invece di lanciare un altro thread. CalculatePrimesThread(&threadInfo2); // Questo thread potrebbe finire per primo. In questo caso, aspetta laltro. while (!threadInfo1.done) Sleep(5); // Colleziona i risultati. bool *resultArray = new bool[numTerms/2]; for (int i=0; i<numTerms/4; ++i) { resultArray[2*i] = threadInfo1.resultArray[i]; resultArray[2*i+1] = threadInfo2.resultArray[i]; } ReportResultsCallback(numTerms, resultArray); delete [] resultArray; Lesempio di gestione parallela nella ricerca di numeri primi un semplice esempio che dimostra molti dei concetti coinvolti nel multiprocessing. La maggior parte delle applicazioni reali non cos semplice. Anche se fosse necessario scrivere un generatore di numeri primi, lalgoritmo utilizzato negli esempi presenti in questo articolo non rappresenterebbe un metodo efficiente. Questo paragrafo descrive un altro algoritmo impegnativo dal punto di vista computazionale che pu trarre vantaggio dal sistema di esecuzione multithreaded di LabVIEW. Lo schema a blocchi in fig. 4 calcola pi greco con il numero di cifre decimali specificato.

Fig. 4

12

TIPS & TECHNIQUES

I fili rosa sono cluster che servono come valori numerici a precisione arbitraria. Se desiderate calcolare pi greco fino a 1000 cifre decimali, non pi sufficiente un valore in virgola mobile, a precisione estesa. I nodi che assomigliano a funzioni di LabVIEW ma che operano sui cluster sono VI che eseguono calcoli sui numeri a precisione arbitraria. Anche questo VI risulta impegnativo da un punto di vista computazionale. Esso calcola pi greco in base alla formula di fig. 5.

care le opportunit di esecuzione parallela e creare ed eseguire esplicitamente i thread per sfruttare le potenzialit dei computer hyperthreaded. Il vantaggio di usare LabVIEW che in molti casi, come nel nostro esempio, LabVIEW identifica automaticamente le opportunit di esecuzione parallela e permette di utilizzare entrambi i processori logici. In certe applicazioni, vantaggioso usare un algoritmo che crei opportunit di esecuzione parallela, in modo da poter tratte vantaggio dalle capacit di multithreading offerte da LabVIEW. La tabella seguente riporta il tempo impiegato dal VI per calcolare pi greco con 1500 cifre decimali senza alcuna forma di ottimizzazione delle prestazioni:

Fig. 5

Data la complessit numerica di questa equazione, sarebbe difficile, nella maggior parte dei linguaggi di programmazione testuali, scrivere un programma che utilizzi entrambi i processori logici su un computer hyperthreaded. LabVIEW, invece, pu analizzare la precedente equazione e riconoscerla come unopportunit per il multiprocessing. Quando LabVIEW analizza lo schema a blocchi di fig. 6, identifica il parallelismo intrinseco. Notate che non esiste alcuna dipendenza nel flusso di dati fra le parti evidenziate in rosso e quelle in verde. A prima vista, sembra che in questo schema a blocchi sia presente un basso livello di parallelismo. Sembra infatti che solo due operazioni possano essere eseguite in parallelo con il resto del VI, e tali due operazioni sono eseguite una sola volta. In effetti, la radice quadrata richiede

Hyperthreading: 27,9 s Senza hyperthreading: 25,3 s Notate che il computer hyperthreaded risulta pi lento. Poich i due processori logici di un computer hyperthreaded condividono una cache, pi facile sovraccaricare le linee della cache e provocare problemi. LabVIEW memorizza le informazioni necessarie per il debugging in unarea di memoria a cui tutti i thread di esecuzione devono accedere, sia in scrittura che in lettura. In alcune situazioni, i thread sono eseguiti simultaneamente su processori logici differenti, e un thread deve leggere le informazioni di debug mentre laltro thread vi sta accedendo in scrittura. Se due thread eseguono operazioni sulla stessa linea di cache in un computer hyperthreaded, la perdita di prestazioni pu essere sostanziale. Potete migliorare le prestazioni del VI disabilitando il debugging. Potete disabilitare il debugging per una parte del VI critica per le prestazioni e quindi riabilitarlo se dovete debuggare quella parte del VI. La tabella seguente riporta il tempo di esecuzione richiesto dal VI per calcolare pi greco con 1500 cifre decimali dopo avere disabilitato il debugging per lintero VI: Hyperthreading: 21,6 s Senza hyperthreading: 21,5 s Notate che il computer hyperthreaded ha quasi le stesse prestazioni del computer senza hyperthreading. La suddivisione del carico di lavoro non sembra migliorare le prestazioni, anche se LabVIEW lavora in parallelo. La tabella seguente riporta le prestazioni dellesempio di esecuzione parallela nella ricerca di numeri primi in LabVIEW. Il VI ha trovato tutti i numeri primi nei primi 400.000 numeri naturali su un computer Windows XP con Pentium 4 a 3,06 GHz.

Fig. 6

tempo, e questo VI dedica circa met del tempo di esecuzione totale ad eseguire loperazione radice quadrata in parallelo con il Ciclo For. Se dividete il VI in due cicli non correlati, LabVIEW pu riconoscere la possibilit di gestire i thread in parallelo usando entrambi i processori logici, con un elevato guadagno in termini di prestazioni. Questa soluzione funziona su un computer hyperthreaded come su un computer multiprocessore. difficile analizzare unapplicazione per identificare il parallelismo. Se scrivete unapplicazione in un linguaggio di programmazione testuale come il C++, dovete identifi-

13

TIPS & TECHNIQUES

02

Hyperthreading senza debugging: 1,97 s Hyperthreading con debugging: 10,47 s La differenza con il debugging abilitato significativa, ma tale differenza si verifica solo quando le due sezioni parallele vengono eseguite nello stesso VI. Se scriveste lapplicazione con pi di un VI o se il VI fosse abbastanza complesso da gestire la maggior parte delle informazioni di debugging di sezioni distinte in diverse linee della cache, la differenza con il debugging abilitato non sarebbe cos significativa. Unaltra ottimizzazione che pu migliorare le prestazioni su un computer hyperthreaded quella di rendere rientranti alcuni subVI.Diversi thread possono chiamare simultaneamente lo stesso subVI se questo rientrante. importante capire come lavora lesecuzione rientrante nel sistema di esecuzione di LabVIEW quando si ottimizza

i quattro VI, perch LabVIEW crea uno spazio dati addizionale quando richiama VI rientranti. Potete continuare ad ottimizzare unapplicazione usando il VI Profiler e poi definire che qualche VI venga eseguito con priorit di subroutine. Potete inoltre marcare pi VI come rientranti. La tabella seguente riporta il tempo di esecuzione richiesto dal VI per calcolare pi greco con 1500 cifre decimali dopo diverse azioni di ottimizzazione: Hyperthreading: 18,0 s Senza hyperthreading: 20,4 s Questi risultati indicano un miglioramento di prestazioni del 10 percento sul computer hyperthreaded. Notate che non necessario modificare il codice del VI per ottenere tale miglioramento. Dovete semplicemente disabilitare il debugging, rendere rientranti alcuni VI ed eseguire alcuni VI con priorit di subroutine. Complessivamente, queste modifiche permettono di ottenere un miglioramento di prestazioni pari circa al 35 percento su un computer hyperthreaded.

LABVIEW OTTIMIZZATO PER LAVORARE SU COMPUTER HYPERTHREADED


Gi dalla versione 7.1 LabVIEW stato ottimizzato per condividere la cache fra i due processori logici di un computer hyperthreaded. Quando stato introdotto lhyperthreading, stato necessario apportare modifiche opportune alle applicazioni multithreaded, incluso LabVIEW, per sfruttare il nuovo potenziale offerto in termini di prestazioni. La tabella seguente riporta i risultati in secondi di esecuzione dellesempio di parallelismo sui numeri primi. Il VI ha trovato tutti i numeri primi nei primi 400.000 numeri naturali su un computer Windows XP con Pentium 4 a 3,06 GHz. Versione LabVIEW 7.0 LabVIEW 7.1 Hyperthreading 6,77 1,91 Senza hyperthreading 3,39 3,40

Fig. 7

un VI per un computer multiprocessore o hyperthreaded. Marcare erroneamente un VI come rientrante pu provocare inutili ritardi, specialmente in un ambiente multiprocessore. Per determinare quali subVI possono essere rientranti, trovate i VI richiamati da entrambi i rami dellesecuzione parallela. La fig. 7 mostra la gerarchia del VI: la funzione Square Root e il Ciclo For operano in parallelo. Il VI di livello superiore richiama le funzioni Square Root, Add e Multiply e i VI Multiply Scalar e Divide Scalar in un Ciclo For. Queste sono due parti ideali da rendere rientranti, perch LabVIEW richiama queste parti da thread differenti. La tabella seguente riporta il tempo di esecuzione richiesto dal VI per calcolare pi greco con 1500 cifre decimali dopo avere marcato come rientranti le funzioni Add e Multiply e i VI Multiply Scalar e Divide Scalar: Hyperthreading: 20,5 s Senza hyperthreading: 21,9 s Marcare come rientranti i VI rende lesecuzione dei VI leggermente pi veloce sul computer hyperthreading. Il tempo di esecuzione per il computer senza hyperthreading era leggermente pi lento dopo avere reso rientranti

Note sullautore
Kamran Shah, Group Manager, LabVIEW Product Marketing, National Instruments

14

Readerser vice.it n 204

Tutti i benchmark di prestazioni nella parte precedente sono stati testati su computer Windows, ma anche i sistemi Linux possono essere eseguiti su computer hyperthreaded. I test dimostrano che LabVIEW 7.1 supera in prestazioni le precedenti versioni di LabVIEW su sistemi Linux multiprocessore su computer hyperthreaded.

TIPS & TECHNIQUES

02

Brett Burger

LABVIEW PER LA MISURA E LANALISI

DEI DATI

Vediamo quali sono le funzionalit che rendono LabVIEW il tool ideale per lanalisi dei dati e delle misure

igliaia di tecnici e ricercatori si basano su LabVIEW per una variet di applicazioni: test e misura, controllo di processo e automazione, monitoraggio e simulazione. LabVIEW lambiente di riferimento grazie alle sue ineguagliabili caratteristiche di connettivit a strumenti, le potenti capacit di acquisizione dati, linterfaccia grafica di programmazione basata sul flusso di dati, la scalabilit e la completezza funzionale generale. Unesigenza che persiste indipendentemente dallarea di competenza il fatto che gli utenti devono manipolare dati e misure e prendere decisioni di conseguenza.

INTRODUZIONE
Gli utenti spesso interagiscono nelle prime fasi del loro lavoro direttamente con dei processi fisici e acquisiscono dati in unapplicazione. Per estrarre informazioni utili da tali dati, prendere decisioni sul processo ed ottenere risultati, i dati devono essere manipolati ed analizzati. Purtroppo, combinare lanalisi con lacquisizione dati e la presentazione dei dati stessi non sempre un processo immediato.

I pacchetti software applicativi tipicamente prendono in esame un componente dellapplicazione, ma raramente risolvono tutti gli aspetti necessari per ottenere una soluzione completa. LabVIEW stato progettato per soddisfare i requisiti di una soluzione completamente integrata, seguendo tutte le fasi del processo di sviluppo in un singolo ambiente. Bench esistano molti tool che affrontano indipendentemente ciascun requisito, solo LabVIEW li combina tutti con la potenza della programmazione grafica e hardware avanzato di acquisizione dati, utilizzando la potenza di un PC. la combinazione di acquisizione dati, analisi dei dati e presentazione dei risultati che rende veramente massima la potenza della Strumentazione Virtuale. Uno strumento virtuale consiste di un computer o una workstation standard equipaggiati con potente software applicativo, hardware conveniente, tipo schede plug-in, e relativi driver, che insieme eseguono le funzioni di strumenti tradizionali. per questo che si fa riferimento alle applicazioni e ai programmi costruiti con LabVIEW come a VI (strumenti virtuali). Come strumento orientato alla soluzione di problemi inge-

15

TIPS & TECHNIQUES

02

gneristici, LabVIEW mette a disposizione centinaia di funzioni di analisi da integrare in applicazioni dedicate allesecuzione di misure intelligenti.

SCEGLIERE IL METODO DI ANALISI CORRETTO


Gli utenti integrano lanalisi nelle loro applicazioni in vari modi. Vi sono alcune considerazioni che aiutano a determinare il modo in cui si dovrebbe eseguire lanalisi. Lanalisi inline implica che i dati vengano analizzati nellambito della stessa applicazione in cui sono acquisiti. Ci avviene generalmente quando si tratta di applicazioni in cui necessario prendere decisioni durante lesecuzione e i risultati hanno dirette conseguenze sul processo, tipicamente attraverso la modifica di parametri o lesecuzione di azioni. quanto avviene tipicamente nelle applicazioni di controllo. Quando si parla di analisi inline, importante considerare la quantit di dati acquisiti e le particolari routine di analisi che sono eseguite sui dati stessi. necessario trovare un corretto equilibrio, perch lelaborazione richiesta pu diventare gravosa avere effetti negativi sulle prestazioni dellapplicazione. Altri esempi di analisi inline sono le applicazioni dove i parametri della misura devono essere adattati alle caratteristiche del segnale misurato. Un caso quello in cui necessario registrare uno o pi segnali, ed essi cambiano molto lentamente tranne che per improvvisi periodi di attivit ad alta velocit. Per ridurre la quantit di dati registrati, lapplicazione dovrebbe riconoscere rapidamente la necessit di una frequenza di campionamento pi elevata e ridurla quando il periodo di burst terminato. Misurando e analizzando certi aspetti dei segnali, lapplicazione pu adattarsi alle circostanze e abilitare i parametri di esecuzione appropriati. Bench questo sia solo un esempio, vi sono migliaia di applicazioni dove richiesto un certo grado di intelligenza la capacit di prendere decisioni sulla base di varie condizioni e di adattabilit, che pu essere ottenuto solo aggiungendo algoritmi di analisi allapplicazione. Le decisioni basate sui dati acquisiti non sono sempre prese in modo automatizzato. Molto spesso, coloro che lavorano sul processo devono monitorare lesecuzione e stabilire se le prestazioni sono quelle previste o se necessario regolare una o pi variabili. Anche se non raro che gli utenti registrino i dati, li estraggano da un file o un database e li analizzino offline per modificare il processo, molte volte i cambiamenti devono avvenire durante lesecuzione. In questi casi, lapplicazione deve gestire i dati provenienti dal processo e quindi manipolare, semplificare, formattare e presentare i dati nel modo pi utile per lutente. Gli utenti LabVIEW possono quindi trarre vantaggio dai suoi numerosi oggetti di visualizzazione per presentare i dati in modo efficiente. LabVIEW offre routine di analisi e matematiche che lavorano nativamente con le funzioni di acquisizione dati e le possibili opzioni di visualizzazione, pertanto possibile incorporarle facilmente in qualsiasi applicazione. Inoltre,

LabVIEW offre routine di analisi per lesecuzione punto a punto, progettate specificamente per rispondere alle esigenze dellanalisi inline nelle applicazioni real-time. Per decidere se le routine punto a punto sono appropriate, necessario considerare alcuni aspetti. Lanalisi punto a punto essenziale quando si devono controllare processi nei quali sia presente unacquisizione dati punto a punto ad alta velocit e deterministica. Ogni volta che le risorse sono dedicate allacquisizione dati real-time, lanalisi punto a punto diventa necessaria, perch le velocit di acquisizione e i loop di controllo aumentano di ordini di grandezza. Lapproccio punto a punto semplifica il processo di progettazione, implementazione e collaudo, perch il flusso dellapplicazione segue da vicino il flusso naturale dei processi reali che lapplicazione deve monitorare e controllare. Lacquisizione dati e lanalisi real-time continuano a richiedere applicazioni sempre pi semplici e stabili. Lanalisi punto a punto semplice e stabile, perch si collega direttamente al processo di acquisizione e analisi, avvicinandosi al grado di controllo ottenibile in chip FPGA (field programmable gate array), chip DSP, controller embedded, CPU dedicate e Asic. Aggiungendo questi potenti algoritmi e routine nelle applicazioni, si possono creare processi intelligenti e analizzare i risultati durante lesecuzione, migliorando lefficienza e correlando iterativamente le variabili dingresso alle prestazioni sperimentali o di processo. Le applicazioni offline non hanno tipicamente lesigenza di ottenere risultati in modalit real-time per prendere decisioni direttamente sul processo. Le applicazioni di analisi offline richiedono solo la disponibilit di sufficienti risorse computazionali. Lintento principale di tali applicazioni identificare cause ed effetti delle variazioni delle variabili di processo, correlando set multipli di dati. Queste applicazioni generalmente richiedono di importare dati da file custom binari o in formato Ascii e da database commerciali come Oracle, Access e altri database di tipo QL/ODBC. Quando i dati sono stati importati in LabVIEW, gli utenti possono eseguire anche centinaia delle routine di analisi disponibili, manipolare i dati e organizzarli in uno specifico formato per la creazione di report. LabVIEW offre funzioni per accedere a qualsiasi tipo di formato di file e database, collegandosi a potenti tool di reportistica come NI DIAdem e il Report Generation Toolkit per Microsoft Office, ed eseguire le tecnologie pi recenti di condivisione dei dati come XML, le presentazioni su Web e ActiveX.

ANALISI PROGRAMMATICA E INTERATTIVA


Come utenti LabVIEW, tecnici e ricercatori hanno grande familiarit con i vari modi con cui possono acquisire dati da centinaia di dispositivi. Essi possono integrare intelligenza nelle loro applicazioni per eseguire analisi inline e presentare i risultati mentre le applicazioni sono in esecuzione.

16

TIPS & TECHNIQUES

Tipicamente, agli utenti non basta acquisire dati ed elaborarli per una semplice visualizzazione, ma hanno la necessit di memorizzare centinaia o migliaia di megabyte di dati su hard drive e database. Dopo una sola esecuzione o magari centinaia di esse, gli utenti procedono con lestrazione di informazioni per prendere decisioni, confrontare i risultati ed eseguire le appropriate modifiche al processo, fino a conseguire i risultati desiderati. relativamente facile acquisire quantit di dati talmente grandi da diventare rapidamente ingestibili. Infatti, con una scheda DAQ veloce e un numero sufficiente di canali, possono essere necessari pochi millisecondi per acquisire migliaia di valori. Non un compito banale trovare un senso in tutti quei dati. Normalmente gli utenti devono presentare report, creare grafici e in ultima analisi sostenere qualsiasi valutazione e conclusione con dati empirici. Senza i tool corretti, questo pu diventare facilmente un compito assai arduo, che si traduce in una perdita di produttivit. Per semplificare il processo di analisi delle misure, i programmatori LabVIEW creano applicazioni interattive che offrono interfacce utilizzabili da altri utenti affinch, sulla base dei loro input specifici, vengano eseguite routine di analisi dedicate su qualsiasi set di dati disponibile. Perch ci sia efficiente, il programmatore deve conoscere dettagliatamente le informazioni e il tipo di analisi a cui lutente interessato. Con LabVIEW, gli utenti possono selezionare e formattare i dati prima di memorizzarli su disco, facilitando le successive fasi di accesso e gestione dei dati memorizzati per condurre ulteriori analisi. National Instruments offre tool addizionali, altamente integrati in LabVIEW, progettati per migliorare lo sviluppo di applicazioni ingegneristiche gestite da team di sviluppatori. Un esempio viene offerto da NI DIAdem, un tool che mette a disposizione un ambiente facile e intuitivo per condurre analisi interattive post-acquisizione e la generazione di report, con potenti capacit di gestione di dati tecnici. Per maggiori informazioni su DIAdem, visitate ni.com/diadem.

cazioni. Le funzioni di analisi avanzate possono misurare caratteristiche del segnale come distorsione armonica totale, risposta allimpulso, risposta in frequenza e spettri di potenza. Tecnici e ricercatori possono altres incorporare analisi matematica o numerica nelle loro applicazioni per scopi come la risoluzione di equazioni differenziali, lottimizzazione, la ricerca di radici e altri problemi matematici. Nonostante gli utenti possano sviluppare da soli queste funzioni, le funzioni integrate permettono di concentrarsi sulla rapida risoluzione del problema, anzich sui tool. Il vantaggio di utilizzare queste funzioni elimina inoltre la necessit di comprendere la teoria sottostante, come invece sarebbe richiesto per costruire tali algoritmi.

TOOL ADDIZIONALI PER LANALISI


Oltre che sulle librerie di analisi incorporate, gli utenti possono basarsi su toolset e moduli addizionali per ridurre il tempo di sviluppo per esigenze applicative specializzate. Incorporando i componenti dei toolset in applicazioni custom, gli utenti non avranno bisogno della particolare competenza normalmente associata allo sviluppo di applicazioni pi verticali, come lelaborazione avanzata di segnali digitali, le misure di suono e vibrazioni, lanalisi degli ordini, lelaborazione delle immagini, il controllo PID e la simulazione. Elaborazione avanzata dei segnali Il Toolset di Elaborazione dei Segnali offre funzioni progettate specificamente per lelaborazione avanzata di segnali digitali (DSP). Le funzioni incluse sono divise in tre categorie: Analisi Congiunta Tempo-Frequenza, Analisi Wavelet e Analisi Spettrale ad altissima risoluzione. Inoltre, il toolset offre uno strumento grafico con cui gli utenti possono progettare interattivamente filtri digitali. Analisi Congiunta Tempo-Frequenza A differenza delle tecnologie di analisi convenzionali, le routine JTFA (joint time-frequency analysis) esaminano i segnali simultaneamente nei domini del tempo e della frequenza. La JTFA pu essere applicata in quasi tutte le applicazioni dove si usa la FFT, come segnali biomedicali, elaborazione di immagini radar, analisi delle vibrazioni, collaudo di macchine ed analisi di segnali dinamici. Con la JTFA, tuttavia, si ottengono pi informazioni analizzando simultaneamente entrambi i domini. Come la classica analisi di Fourier, la JTFA consiste di due metodi principali - lineare e quadratico. Gli algoritmi lineari includono la trasformata di Fourier a tempo breve (STFT) e lespansione di Gabor (trasformata inversa di Fourier a tempo breve). Gli utenti di LabVIEW possono sfruttare queste trasformate lineari per trasferire un segnale dal dominio del tempo al dominio congiunto tempo-frequenza e viceversa. Queste routine sono estremamente potenti per scopi di riduzione del rumore. I metodi quadratici comprendono lo spettrogramma adattativo, la distribuzione di Choi-

QUALI TOOL DI ANALISI SONO DISPONIBILI IN LABVIEW?


LabVIEW offre centinaia di funzioni di analisi integrate che coprono diverse aree e metodi di estrazione delle informazioni dai dati acquisiti. possibile utilizzare tali funzioni cos come sono o modificarle, personalizzarle ed estenderle per adattarle a una particolare esigenza. Dette funzioni sono categorizzate nei seguenti gruppi: Misura, Elaborazione dei Segnali, Matematica, Elaborazione delle Immagini, Controllo, Simulazione ed Aree Applicative. LabVIEW include gi un potente set di tool per lanalisi. Questi tool comprendono un set incorporato di librerie e funzioni progettati specificamente per lanalisi, con il quale gli utenti possono affrontare unampia gamma di applicazioni. I tool di analisi di LabVIEW coprono unampia gamma di appli-

17

TIPS & TECHNIQUES

02

Williams, la distribuzione conica, lo spettrogramma basato sullespansione di Gabor (noto anche come spettrogramma di Gabor), lo spettrogramma basato su STFT e la distribuzione di Wigner-Ville. Gli utenti possono applicare le trasformate quadratiche per vedere facilmente come lo spettro di potenza di un segnale evolve nel tempo. Wavelet Le wavelet sono un metodo di elaborazione dei segnali relativamente nuovo. Una trasformata wavelet quasi sempre implementata come un banco di filtri che decompongono un segnale in pi bande, separando e mantenendo le caratteristiche del segnale in una o pi di queste sottobande. Pertanto, uno dei maggiori vantaggi che si ottengono usando la trasformata wavelet che le caratteristiche del segnale possono essere estratte facilmente. In molti casi, una trasformata wavelet supera la FFT convenzionale in termini di estrazione delle caratteristiche e riduzione del rumore, caratteristica che la rende ideale per molte applicazioni, tipo: compressione dei dati, rilevamento di eco, riconoscimento di pattern, rilevamento di bordi, cancellazione, riconoscimento vocale, analisi di texture e compressione di immagini. Analisi Spettrale basata su Modelli Un tool primario per lanalisi spettrale la Trasformata Veloce di Fourier (FFT). Per gli spettri ad alta risoluzione, i metodi basati su FFT richiedono un elevato numero di campioni. Tuttavia, in molti casi, il set di dati limitato a causa di una reale mancanza di dati o perch gli utenti devono fare in modo che le caratteristiche spettrali del segnale non cambino per la durata della registrazione dei dati. Per i casi in cui il numero di campioni di dati limitato, gli utenti di LabVIEW possono utilizzare lanalisi basata su modelli per determinare le caratteristiche spettrali. Grazie a questa tecnica, gli utenti possono ipotizzare un modello opportuno del segnale e determinare i coefficienti del modello. Sulla base di tale modello, lapplicazione pu predire i punti mancanti nel dato set finito di dati, in modo da ottenere spettri ad alta risoluzione. Inoltre, i metodi basati su modelli possono essere utilizzati anche per stimare ampiezza, fase, fattore di smorzamento e frequenza di sinusoidi smorzate. Lanalisi spettrale ad altissima risoluzione pu essere utilizzata in diverse applicazioni, tra le quali: ricerca biomedicale, economia, geofisica, rumore, vibrazioni e analisi vocale. Analisi di Suoni e Vibrazioni Il software di analisi NI permette molte applicazioni comuni di analisi del suono e delle vibrazioni, inclusi test audio, misure acustiche, test di rumore ambientale, analisi di vibrazioni e misure NVH. Le capacit di analisi specializzate includono le analisi per frazioni di ottava conformi alle norme ANSI ed IEC. Inoltre, la Sound and Vibration Measurement Suite include numerose funzioni per misure audio come guadagno, fase, THD, IMD, range dinamico, linearit di fase e analisi swept-sine. NI Sound and Vibration

Assistant offre un ambiente facile, interattivo, basato su configurazioni per analisi e registrazione dei dati. Le funzioni includono piena ottava, 1/3, 1/6, 1/12 e 1/24 di ottava; frequenza di campionamento definita dallutente; numero di bande definito dallutente; pesatura A, B, C nel dominio del tempo; conformit agli standard; media esponenziale (costante di tempo Lenta, Veloce e Custom); spettro cross-power; risposta in frequenza (H1, H2 e H3); coerenza e potenza duscita coerente. Inoltre, il toolset offre tool di visualizzazione addizionali, come grafici a cascata, a mappa di colori, bar graph a ottave e grafico lineare a ottave, che possono essere facilmente incorporate nei pannelli frontali delle applicazioni LabVIEW. Analisi degli Ordini La Sound and Vibration Measurement Suite NI offre librerie per costruire applicazioni custom di misura e automazione basate su LabVIEW con capacit di analisi degli ordini per linseguimento degli ordini, lestrazione degli ordini e lelaborazione di segnali tachimetrici. Con lalgoritmo di Gabor, gli utenti di LabVIEW possono analizzare suono, vibrazioni e altri segnali dinamici provenienti da sistemi meccanici con componenti rotanti o in moto alternato. Esso consente una selezione flessibile dellenergia dellordine nel dominio congiunto tempo-frequenza. I tool addizionali includono strumenti per graficare i singoli ordini in funzione del tempo o dei giri/min, strumenti di estrazione degli ordini per separare dal segnale acquisito le componenti del segnale relative ai singoli ordini e strumenti di selezione automatica degli ordini per trovare gli ordini pi significativi.

CONCLUSIONE
Con la potenza e la flessibilit degli attuali computer, tecnici e ricercatori hanno una capacit senza precedenti di misurare, controllare, monitorare, diagnosticare, automatizzare, testare e caratterizzare efficacemente qualsiasi processo. Ci tuttavia non possibile senza la capacit di osservare i dati ed estrarre informazioni utili. LabVIEW offre soluzioni indipendentemente dal settore o dallarea dinteresse specifica del processo ingegneristico, dalla progettazione e validazione alla produzione. Inoltre, LabVIEW offre una connettivit senza pari a dispositivi DAQ plug-in e strumenti stand-alone per lacquisizione dati, potenti librerie, routine ed algoritmi di analisi che spaziano dalla matematica di base allelaborazione avanzata dei segnali. Tali funzioni, perfettamente integrabili con altre funzioni di LabVIEW, sfruttando le potenti capacit di visualizzazione dei dati, rendono LabVIEW il tool ideale per qualsiasi applicazione.

Note sullautore
Brett Burger, Product Marketing Engineer, Data Acquisition Systems, National Instruments

18

Readerser vice.it n 276

TIPS & TECHNIQUES

02

LUAVIEW: LABVIEW PI POTENTE GRAZIE AGLI SCRIPT LUA


Ecco LuaVIEW, un toolkit per LabVIEW che permette di integrare il linguaggio Lua nelle applicazioni scritte in LabVIEW

Alessandro Ricco

articolo solo un'introduzione, l'argomento trattato infatti richiederebbe molto pi spazio di quello a disposizione.

CHE COS' LUA?


Lua un linguaggio di scripting nato nel 1993 al PUC-Rio (Pontifical Catholic University) di Rio de Janeiro in Brasile. Lua venne creato con lo scopo di essere un linguaggio embedded, cio integrabile facilmente in applicazioni scritte nei pi diversi linguaggi al fine di estenderne le funzionalit e le potenzialit. Le caratteristiche che rendono Lua interessante sono la semplicit, le performance, la flessibilit e la portabilit e, non ultima, la licenza Open Source con la quale viene distribuito. Nello specifico la licenza la MIT License. Fin dalla sua nascita, Lua si sempre evoluto diventando molto usato nell'industria in settori come la robotica, l'image processing, la bio informatica, le applicazioni distribuite e nello sviluppo di video giochi dove ormai rappresenta uno standard de-facto. Lua adesso arrivato alla versione 5.1 ed ha raggiunto un notevole grado di diffusione, di stabilit e di maturit. Esiste una grande comunit di utilizzatori Lua, molti progetti sono sviluppati con questo linguaggio ed esistono moltissimi add-on per Lua che lo rendono ancora pi versatile.

accesso al core Lua. LuaVIEW inoltre mette a disposizione diversi esempi e tool molto comodi per poter gestire le proprie applicazioni LabVIEW che sfruttano Lua. Da segnalare anche che LuaVIEW ottimamente documentato [3], tutti i VI pi importanti hanno degli help molto chiari e dettagliati. Consigliamo quindi di tenere il Contex Help di LabVIEW sempre aperto (Ctrl +H) mentre usate LuaVIEW.

INSTALLARE LUAVIEW
L'installazione di LuaVIEW richiede una macchina con sistema operativo Linux, Windows o Mac OS X e una versione di LabVIEW 7.0 o superiore. L'ultima versione di LuaVIEW la 1.2.1 per LabVIEW 8.x, chi ha LabVIEW 7.x pu invece usare la 1.2.0. Procediamo con l'installazione: scaricate la versione di LuaVIEW adatta al vostro sistema da questo link http://www.citengineering.com/LuaVIEW/ download.html scompattate l'archivio .zip scaricato in una cartella dentro questa cartella troverete Install_CIN.vi; apritelo ed eseguitelo scegliete, dalla lista che vi apparir, il sistema operativo installato sulla vostra macchina fate un MassCompile LabVIEW | Tools>Advanced>Mass Compile della cartella contenente LuaVIEW; approfittate per farvi un caff perch ci vorr un po di tempo! Adesso LuaVIEW dovrebbe essere installato e funzionante. Per esserne certi eseguite Unit Tester.vi dalla cartella di LuaVIEW. Tutti i test dovrebbero dare risultato positivo. Per rendere LuaVIEW pi comodo da usare utile aggiungere i VI della sua libreria alla paletta LabVIEW, per farlo usate LabVIEW | Tools>Advanced>Edit Palette Views scegliendo poi il file menu luaview/luaview.mnu dalla cartella di LuaVIEW.

CHE COS' LUAVIEW?


LuaVIEW un toolkit sviluppato da Citengineering [2], che permette a LabVIEW di sfruttare tutte le caratteristiche di Lua, potremmo definirlo un ponte tra il mondo LabVIEW e quello Lua. Nello specifico ecco quello che si pu fare con LuaVIEW: Lua pu chiamare funzioni implementate in LabVIEW LabVIEW pu chiamare funzioni implementate in Lua Un numero illimitato di script pu essere eseguito in parallelo Lua e LabVIEW possono scambiarsi dati anche in formati complessi LuaVIEW ha supporto per Windows, Linux e Mac LuaVIEW basato sul core Lua versione 5.0 appositamente modificato per permettere l'interoperabilit tra Lua e LabVIEW; un insieme di VI fornisce tutte le funzioni API di

PRIMI ESPERIMENTI
Come primo test proviamo a usare uno degli esempi di LuaVIEW luaview/example/Do a Script.vi; apritelo, eseguitelo e ammirate l'effetto! print("Hello world") print("The time is "..format_time(time(),"%H:%M"))

19

TIPS & TECHNIQUES

02

for i=10,1,-1 do print(i) wait(300) end print("Lift off!") wait(2000) dialog.one_button("Launch sequence complete", "OK")
Figura 1 - Schema dell'iterazione Lua - LabVIEW

Lo script di esempio contenuto in Do a Script.vi, pur essendo molto semplice, mette in evidenza le potenzialit di Lua e LuaVIEW. Si nota subito l'eleganza e la semplicit di Lua, la riga di codice print ("Hello world") ce ne da la misura. L'integrazione tra Lua e LabVIEW evidente. Prendiamo di nuovo ad esempio la prima riga del codice print ("Hello world"); notate che la funzione print implementata interamente in LabVIEW e non solo viene chiamata da uno script Lua ma le viene anche passato un parametro stringa Hello world. Anche le funzioni wait e dialog. one_button sono implementate in LabVIEW come print ma grazie a LuaVIEW e possibile usarle direttamente da uno script Lua senza nessuno sforzo e in maniera automatica. Vediamo un secondo esempio tratto direttamente dal sito di LuaVIEW, sempre usando Do a Script.vi cancellate lo script di esempio e scrivetene uno nuovo: if (dialog.two_button(Chose a language... , LabVIEW , Lua)) then print(Wire away) else print(Script along) end Come per l'esempio precedente possiamo ammirare l'eleganza della sintassi e la sua semplicit, ma concentriamoci sulla funzione dialog.two_button che, come quelle descritte prima, implementata in LabVIEW. La funzione dialog.two_button non solo riceve dei parametri dallo script Lua Chose a language... , LabVIEW , Lua ma ritorna allo script un risultato, in questo caso il bottone premuto, che lo script utilizza come condizione per la struttura if else. Con questo esempio abbiamo visto come Lua possa chiamare delle funzioni LabVIEW passandogli dei parametri e come queste funzioni, terminata l'esecuzione, possano ritornare dei risultati a Lua che li user per elaborazioni all'interno dello script (fig. 1).

grammatore da LuaVIEW, ma come funziona questo meccanismo? Per capirlo meglio analizziamo una delle funzioni prese prima ad esempio dialog.two_button e vediamo com' fatta. Aprite \luaview\functions\pop-up dialogs\ dialog.two_button_lua.vi contenuto nella cartella principale di LuaVIEW; questo vi la funzione dialog.two_button (fig. 2). Analizziamo il VI seguendo il data-flow; a sinistra troviamo LuaVIEW reference questo controllo porta il riferimento tramite il quale le API LuaVIEW possono accedere al Core di Lua. Il riferimento corretto viene gestito in automatico da particolari funzioni LuaVIEW in background, di cui il programmatore pu non preoccuparsi. I VI pull string e push boolean sono delle API di LuaVIEW, i tre pull string accedono al Core di Lua attraverso il reference e prelevano dallo stack Lua tre valori di tipo string, se ad esempio eseguiamo questo script Lua c = dialog.two_button(Chose a language... , LabVIEW , Lua) i valori prelevati saranno Chose a language... , LabVIEW e Lua. Le tre stringhe prelevate dallo Stack Lua vengono usate come parametri di ingresso dal vi ui two button ( il dialog vero e proprio implementato in LabVIEW al 100%) e rappresentano rispettivamente il messaggio che apparir sul dialog e i testi dei due bottoni di scelta presenti sul dialog. L'uscita del vi ui two button, result di tipo boolean, assume il valore del bottone premuto dall'utente sul dialog; questo valore viene inserito nello stack Lua usando la API push boolean. Da questo esempio si inizia ad intuire come funziona lo scambio tra il mondo LabVIEW e quello Lua, LuaVIEW mette a disposizione delle API tra le quali quelle di push e quelle di pull. Usando queste API possibile da LabVIEW accedere ai valori messi sullo stack (pull) da Lua usandoli

LUA & LABVIEW, LE API DI LUAVIEW


Dagli esempi mostrati sopra si capisce che l'integrazione e lo scambio di dati tra Lua e LabVIEW molto semplice e immediato, gran parte della complessit nascosta al proFigura 2 - Codice LabVIEW della funzione dialog.two_button_lua.vi

20

TIPS & TECHNIQUES

come parametri e poter inserire dei valori sullo stack Lua (push) come risultato. Ma come fa Lua, e chi programma in Lua, a sapere quali, quanti e di che tipo sono i parametri di cui una funzione come dialog.two_button ha bisogno e che tipo di risultato restituisce? Ogni funzione LabVIEW per essere utilizzabile da Lua deve essere stata precedentemente registrata e descritta utilizzando un apposito tool, Function Manager, fornito da LuaVIEW \luaview\tui_LuaVIEW Function Manager.vi e presente nella cartella di installazione di LuaVIEW (fig. 3). Tramite il Function Manager possibile gestire tutto questo in maniera semplice. Nel caso di dialog.two_button il prototipo che descrive i parametri di ingresso e il risultato della funzione bool:confirmed=dialog.two_ button(str:message,str:button1,str:button2)Function Manager indispensabile qualora sia necessario registrare una propria nuova funzione. Per maggiori informazioni su come utilizzare Function Manager e per la documentazione completa delle funzioni gi incluse in LuaVIEW vi rimandiamo a www.citengineering.com/LuaVIEW.

Figura 3 - Function Manager

plicazione di test automatico. Immaginiamo di voler realizzare un'applicazione di test funzionale per delle schede elettroniche. L'applicazione dovr tra le altre cose: testare schede diverse, quindi con procedure diverse essere usata da clienti diversi che adottano proceFigura 4 - Schema dell'applicazione di test realizzata dure di test differenti e a con LuaVIEW volte contrastanti. Un'applicazione del genere creata interamente in LabVIEW sarebbe difficile da realizzare da mantenere e da sviluppare, dovrebbe infatti contemplare tutte le singole e particolari esigenze di ogni singolo cliente. Questo lavoro titanico, in ogni caso non ci salverebbe da futuri cambiamenti richiesti da un cliente. In quel caso, quasi sicuramente, dovremmo modificare il codice dell'applicazione creandone una diversa figlia e saremmo costretti ad iniziare la gestione di un processo di sviluppo e mantenimento separato dall'applicazione madre. Utilizzando invece Lua e LuaVIEW la nostra software house pu fornire al cliente una applicazione eseguibile sviluppata in LabVIEW e una serie di script Lua. L'applicazione LabVIEW si preoccuper di lanciare gli script Lua che implementano le procedure di test. Gli script Lua di procedura possono a loro volta chiamare funzioni LabVIEW che in questo caso saranno i driver dei vari apparati necessari all'esecuzione del test come alimentatori, oscilloscopi, dmm ecc. Lo schema riportato nella fig. 4 rende pi chiaro questa architettura. Ogni cliente potr creare o modificare i propri script Lua sfruttando tutta la potenza di un linguaggio di programmazione e quindi adattando l'applicazione di test alle proprie specifiche esigenze.

POTENZIALIT DI LUAVIEW
LabVIEW molto potente e flessibile ed ottimo per visualizzazione dati, controllo hardware e analisi matematica, Lua semplice da usare e da modificare, molto dinamico, flessibile e molto veloce. LabVIEW ha un problema, le applicazioni eseguibili che crea sono molto statiche ed difficile renderle dinamiche e personalizzabili oltre un certo livello. Lua un linguaggio di scripting, quindi interpretato da una virtual machine, questo vuol dire che uno script Lua non necessita di essere compilato, con Lua quindi molto pi facile scrivere codice e modificarlo anche ad applicazione ultimata. LabVIEW Lua possono essere complementari in questo senso. Ci sono vari modi per integrare LabVIEW e Lua usando diverse percentuali per il mix. Un esempio di utilizzo del mix tra LabVIEW e Lua potrebbe essere la realizzazione un'ap-

CONCLUSIONI
Speriamo che la lettura di questo articolo introduttivo vi abbia fatto venire voglia di approfondire lo studio di Lua e di LuaVIEW.

RIFERIMENTI
[1] www.lua.org sito ufficiale su Lua. [2] www.citengineering.com/LuaVIEW sito del creatore di LuaVIEW. [3] http://www.citengineering.com/LuaVIEW/manual.html manuale di LuaVIEW.

Note sullautore
Alessandro Ricco (www.agilesystems.it): LabVIEW Champion & ILVG.it Administrator (alessandro.ricco@agilesystems.it)

Readerser vice.it n 240

21

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

02

ANALISI DELLECG:VALUTAZIONE TEMPORALE DELLA SINCRONIA ELETTRICA DELLE ONDE


Gianc arlo Monari I Pietro Rossi

La computerizzazione dellECG pu consentire la ricerca di parametri clinici che non possono essere estrapolati con la consueta valutazione ottica

e malattie cardiovascolari rappresentano la prima causa di morte nel mondo occidentale. Spesso tali patologie sono silenti fino allinsorgenza di eventi acuti e drammatici come per esempio un infarto del miocardio. La Cardiologia, grazie anche allenorme progresso tecnicostrumentale, offre al paziente dei validi interventi quando la patologia clinicamente manifesta ma presenta molte lacune riguardo la prevenzione. Infatti, sarebbe auspicabile avere degli efficaci programmi di screening capaci di individuare precocemente lo stato di malattia con il fine di ridurre lincidenza degli accidenti cardiovascolari improvvisi ed talora irreversibili. Gli sforzi profusi per raggiungere questo obiettivo hanno portato alla messa a punto di strumenti diagnostici sofisticati, costosi ed invasivi con conseguente difficile applicazione su larga scala per una vera e diffusa prevenzione. Lelettrocardiografo, strumento poco costoso, non invasivo e di facile uso, sembra avere, attualmente, poca utilit nella prevenzione delle malattie cardiovascolari. Viceversa, la computerizzazione dellECG pu consentire

una pi articolata analisi del segnale per la ricerca di utili parametri clinici che non possono essere estrapolati, da parte del cardiologo, con la sua consueta valutazione ottica. Lobbiettivo, quindi, quello di utilizzare lelettrocardiografo non solo come strumento che ci informa del potenziale elettrico in funzione del tempo V(t) ma anche come lo strumento che misura i tempi donda relativi al proprio battito in funzione della sua frequenza consentendoci cos di confrontare la precisione delle misure di grandezze non omogenee.

LELETTROCARDIOGRAMMA VIRTUALE
Levento della misura campionata ci offre una metodologia di misura che affianca alluso degli strumenti tecnici quello degli strumenti virtuali nellacquisizione e nellelaborazione del potenziale elettrico Elettrocardiogramma generato da ogni cuore per favorire una analisi strettamente scientifica anche in campo medico, stabilendo in modo analitico se la conduzione elettrica del cuore normale o anomala,

22

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

mediante lo studio del battito cardiaco sincronizzato con i tempi donda . I potenziali elettrici V(t) sullelettrocardiogramma registrati nelle derivazioni I, II, III, V1, V2, V3, V4, V5 e V6, acquisiti ad una frequenza di campionamento Fc di duemila campioni al secondo, per una sequenza di 50 battiti, decomposti; individuando il tempo iniziale e finale del ciclo T, ed i tempi delle onde tP, tQ, tR, tS e tT. Ogni periodo del ciclo cardiaco sincronizzato con i tempi di ciascun onda tP, tQ, tR, tS e tT normalizzati al periodo T del ciclo in esame che ne evidenzia una forte dipendenza lineare e non casuale in funzione della frequenza cardiaca ? misurata in battiti minuto. Un test effettuato su pazienti di sana costituzione conduzione elettrica normale evidenzia una pendenza positiva, intercetta bassa prossima allo zero ed un coefficiente di regressione lineare molto alto prossimo ad uno, contrariamente ad una pendenza intorno alla zero, intercetta molto alta dellordine di centinaia per mille ed un coefficiente di regressione lineare molto basso prossimo allo zero in pazienti con problemi cardiaci conduzione anomala pur non riscontrando anomalie sul tracciato elettrocardiogramma.

Il segnale acquisito tramite la scheda USB-6008 ed il software NI DAQmx filtrato con un filtro di banda che elimina i disturbi di provenienza dalla rete elettrica. Al termine della registrazione tramite il tasto che seleziona luscita Esci_Dal_programma si manda in esecuzione il programma che analizza la sequenza dei 50 battiti archiviati per ciascuna derivazione. Il programma di analisi delle onde di fig. 2 Analisi off-line, legge larchivio dei pazienti precedentemente memorizzato su disco e ci presenta la lista delle derivazioni in esso contenute Pazienti.

HARDWARE E SOFTWARE UTILIZZATI


Per studiare la variabilit temporale delle onde tP, tQ, tR, tS e tT , relativa al periodo T del ciclo del segnale elettrico V(t), si scelto il processo di misura a registrazione campionata. Lacquisizione strumentale e sperimentale dei potenziali V(t) misurati in mV ed acquisiti alla frequenza di 2000Hz per una sequenza di (n=50) battiti, stata eseguita prelevando le uscite del segnale analogico dellelettrocardiografo Esaote P80 collegate ad una scheda NI USB6008 a 12bit di National Instruments ad un computer datato di sistema operativo Windows XP e del programma LabVIEW 8.0. Il programma di fig. 1 permette di acquisire ed archiviare in formato testo la sequenza dei 50 battiti, per ogni singola derivazione alla frequenza di 2000 campioni al secondo Fc.
Fig. 2 - Il T degli N campioni della sequenza dei battiti cicli, viene individuata mediante i puntatori ver ticali come = 0 del (K)-esimo ciclo che termina con. Il programma individua i tempi delle onde: P,Q,R,S,T e durata del ciclo T evidenziandoli in una matrice per passare da N in tempi basta moltiplicare N per il tempo di campionamento

Fig. 1 - Programma che acquisisce e registra la derivazione selezionata

Il ciclo da esaminare viene scelto mediante un doppio click del mouse sulla derivazione da esaminare elenco Pazienti. Per ogni sequenza di 50 cicli archiviati si scelgono il campione iniziale e il campione finale del ciclo tramite i due puntatori di selezione, con un doppio clic del mouse attiviamo un programma che individua i punti caratteristici del ciclo NP, NQ, NR, NS, NT e NK come indicato nella traccia in alto a destra di fig. 2, proponendoci il battito seguente che inizia dal. indicato dal puntatore +, in modo tale da dover puntare solo . Per ogni sequenza di (n=50) battiti esso scrive una tabella di 6 colonne e 50 righe in formato testo Scrive_Onde.xls dove K identifica il (K)-esimo battito K=0,1,,49 ed I le onde I= P,Q,R,S,T e T, come indicato nella matrice in alto. Al termine dellanalisi della sequenza di 50 cicli possibile osservare direttamente landamento di dipendenza lineare tramite il passaggio al riquadro battito selezionabile dai tasti di tabulazione, il quale ci fornisce i parametri di intercetta, pendenza e coefficiente di regressione lineare tramite i quali possibile stabilire se la conduzione elettrica cardiaca normale od anomala.

23

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

02

Fig. 3 - Mediante un doppio click del mouse ne riquadro relativo alle onde possibile evidenziare la dipendenza lineare dei tempi donda relative al battito in funzione delle frequenze cardiaca

In una fase successiva, tramite il programma report si legge larchivio della tabella di 6 colonne e 50 righe realizzato con il software Report Generation for Microsaft Office Toolkit.

CONCLUSIONI
Il metodo di proporre il segnale dellECG acquisito mediante il processo di misura a registrazione campionata ci da modo di esprimere i tempi donda normalizzati in funzione della frequenza con la loro migliore correlazione Lineare. Infatti lequazione della retta la funzione matematica o legge fisica che statisticamente meglio approssima la loro dipendenza. Pertanto, i parametri analitici e statistici delle rette stabiliscono in senso fisico e cardiologico se la conduzione elettrica normale o anomala. Ad esempio, nel caso che il primo insieme ordinata sia costituito dai tempi donda normalizzati, ed il secondo ascissa sia costituito dalle frequenze si avr una retta di equazione: ove i=P,Q,R,S e T, k=alla ? scelta, Yi indica il valore stimato di TiK ed mi e qi indicano rispettivamente il coefficiente angolare e lintercetta con lasse dellordinata della retta . Analogamente, per ciascun altro primo insieme TiK in funzione della frequenze cardiaca ? si ottengono i coefficienti angolari: e le intercette con il relativo parametro statistico, indicativo del livello di correlazione lineare esistente tra causa ed effetto o tra variabile indipendente e variabile dipendente. Il coefficiente di correlazione lineare R2 noto come analisi statistica dei minimi quadrati. E auspicabile una medicina di prevenzione delle disfunzioni cardiovascolari, le cui cause si presentano nellorganismo spesso in modo silente, senza allarmare lindividuo ed anni

prima di creare danni irreversibili. Che tale Medicina diventi una realt sociosanitaria oggi possibile, perch esistono i presupposti strumentali e concettuali per individuare ed eliminare le cause del decadimento morfo-funzionale a cui va incontro lapparato cardiovascolare. Lo studio della sincrona delle onde dellECG va in questa direzione, quando: segnala una conduzione elettrica non fisiologica; sensibile agli effettori farmacologici, psicologici e chirurgici che lapparato cardiovascolare subisce; integra in modo logico e con esperienze di laboratorio la conoscenza biologica e quella clinica; controlla ogni individuo in modo diretto, semplice e continuo, evitando costose ed invasive tecniche e stabilisce lefficacia e lefficienza sia degli interventi che delle terapie farmacologiche.

BIBLIOGRAFIA
1. Forlani L., Monari G. e Rossi P. Metodo ed Analisi di un Elettrocardiogramma e relativo Apparato, Italian Patent: RM2001A000433 2. Forlani L., Monari G. e Rossi P. Metodo ed Analisi di un Elettrocardiogramma e relativo Apparato, PTC International Application Number WO03/007818 A3. 3. Marcello Costantini LElettrocardiogramma Capire ed interpretare LECG

Note sugli autori


Giancarlo Monari: Laboratorio FUS-MAG Enea (Frascati), Via E. Fermi 45, Roma. Pietro Rossi: U.O.D. di elettrofisiologia ed elettrostimolazione cardiaca, Ospedale Belcolle, Viterbo

24

readerser vice.it n.207

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

02

ARBLOAD: SIMULATORE HARDWARE DI CARICO ELETTRICO NON-LINEARE TRIFASE


Ecco come stato sviluppato un carico elettrico non-lineare, trifase (400 V, 63 A), in grado di assorbire correnti con forme donda programmabili dallutente o rilevate in-field

B. S acco I M. La Rosa

ellarticolo viene presentato un sistema in grado di assorbire da una sorgente di energia trifase una corrente di forma donda programmabile dallutente, al fine di realizzare/riprodurre in laboratorio le correnti assorbite da carichi non lineari, quali ad esempio alimentatori elettronici, regolatori a parzializzazione, lampade a scarica, ecc. Un Virtual Instrument (VI) LabVIEW comanda tramite DAC NI FieldPoint tre Triac e tramite la NI PCI-Gpib/LP tre generatori di forme donda arbitraria per pilotare in modo non convenzionale un compensatore di armoniche. Il VI esegue le analisi armoniche e sintetizza separatamente componente fondamentale e armoniche della corrente desiderata. La corrente non-lineare viene sintetizzata tramite le sue componenti: la fondamentale, con un carico resistivo parzializzato, e le armoniche, tramite un compensatore di armoniche usato in maniera non convenzionale. NI LabVIEW acquisisce le forme donda, analizza il contenuto armonico e pilota, tramite FieldPoint FP-AO-V10, tre Triac. La sintesi della corrente armonica viene realizzata dal pro-

gramma e le relative forme donda caricate in tre generatori tramite una scheda NI PCI-Gpib/LP.

INTRODUZIONE
Numerosissimi dispositivi elettrici utilizzati in ambiti industriali (ma anche civili), sono costituiti da alimentatori a commutazione c.a./c.c. e c.a./c.a., con raddrizzatori-regolatori di tipo switching ad alta frequenza, che assorbono corrente in impulsi brevi e di grande ampiezza e quindi si presentano come carichi non-lineari. Gli esempi sono numerosissimi; ne citeremo qui qualcuno: sale macchine con computer, apparati elettronici, inverter, UPS, saldatrici, ecc. In RAI ci sono familiari i casi di luci sceniche con regolatori a parzializzazione (Triac), lampade a scarica, Video-Wall, regie video, ecc. Nel funzionamento di un impianto elettrico trifase a neutro distribuito che alimenta un tale genere di utenze possono quindi presentarsi numerosi problemi diversi, quali: - alto valore del fattore di cresta (tipicamente intorno a 2,5-3);

25

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

02

- basso valore del fattore di potenza (tipicamente intorno a 0,6-0,7); - alte correnti nei conduttori di neutro dovute allo sbilanciamento e alla composizione delle armoniche di terzo ordine; - rumore elettromagnetico irradiato e condotto; - distorsione della tensione d'alimentazione. I suddetti problemi danno luogo a inconvenienti di varia natura, quali la bassa efficienza complessiva dell'impianto, l'apertura intempestiva delle protezioni elettriche, vibrazioni meccaniche, sfarfallo delle sorgenti luminose, malfunzionamento degli interruttori e soglie d'intervento dipendenti dalla frequenza, ecc. In particolare, tali inconvenienti costringono il progettista a sovradimensionare macchinari, dispositivi di commutazione e cavi di potenza, a proteggere da sovracorrenti il conduttore di neutro, a dotare di schermi speciali e filtri le reti di potenza e di segnale. Risulta per difficile o impossibile progettare in anticipo un impianto, perch ci richiederebbe di eseguire preventivamente l'intero allestimento, comportante attrezzature spesso molto costose e ingombranti, al solo scopo di effettuare prove o collaudi.

IL SIMULATORE
Per ridurre questi problemi (e quindi i costi) gi in sede di progetto, si deciso quindi di realizzare un simulatore di carichi elettrici complessi che permetta di eseguire prove, progettazioni e verifiche di comportamento di impianti d'alimentazione, particolarmente di grande potenza.

Il simulatore da noi sviluppato, battezzato ArbLoad (Arbitrary Load, carico arbitrario), stato dimensionato per assorbire una corrente di forma arbitraria, trifase 400 V, 63 A massimi. Come mostrato in fig.1, tale forma donda viene sintetizzata tramite le sue componenti a frequenza fondamentale e armoniche. La componente a frequenza fondamentale viene realizzata (ramo in alto a destra nella figura) mediante con un carico resistivo da 32 A, parzializzato da circuiti a Triac controllati in tensione tramite tre DAC (NI FieldPoint FP-1601e due moduli FP-AO-V10 ad alto isolamento) pilotati dal PC di controllo tramite rete LAN. Questo procedimento genera, oltre alla corrente fondamentale desiderata, delle componenti armoniche spurie dovute alla parzializzazione (commutazione del Triac), e una componente in quadratura (reattiva); di queste spiegheremo pi sotto. Le componenti armoniche vengono realizzate (ramo in basso a destra nella figura) tramite un compensatore di armoniche usato in maniera non convenzionale. Tale apparato, utilizzato di solito per ridurre la distorsione della corrente in installazioni industriali, sostanzialmente un banco di condensatori alimentato da un ponte trifase di Igbt collegato in parallelo al carico. Se il carico assorbe una corrente I=If+Ih (f=fondamentale, h= armoniche), un circuito di controllo pilota in PWM il ponte in modo da immettere la stessa Ih in controfase. In questo modo, la corrente vista dal generatore la sola If , quindi sinusoidale. NellArbLoad usiamo un compensatore di armoniche da 32 A come attuatore per la componente armonica: invece di

Fig. 1 - Struttura del simulatore ArbLoad. Nellarea Test Setup viene inserito il dispositivo da testare. In alternativa, ArbLoad viene utilizzato per testare la linea o il generatore (UPS, gruppo elettrogeno, ecc.)

26

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

B C A
Fig. 2 - Il prototipo di laboratorio. A: VI LabView, generatori arbitrari, monitoraggio delle tre correnti ottenute B: Compensatore darmoniche e quadretto elettrico C: DAC FieldPoint e parzializzatori a Triac

pilotarlo con i segnali provenienti dalle sonde di corrente in dotazione, come normalmente previsto, forniamo tre segnali sintetici provenienti da altrettanti generatori da laboratorio di forme donda arbitrarie, conmandati dal PC tramite una scheda NI PCIGpib/LP. Lunit di acquisizione, al centro della fig.1, costituita da tre A/D converter collegati ai tre trasformatori amperometrici, e uno zero-cross detector collegato ad un trasformatore voltmetrico, usato per generare un segnale di trigger per il sistema. Nel prototipo stato inizialmente usato un oscilloscopio digitale a tre canali al posto dei tre ADC; nella versione industrializzata viene usata una scheda di acquisizione.

IL VI

Il VI scritto in LabVIEW acquisisce le tre forme donda di corrente, analizza il contenuto armonico, e, come accenCONCLUSIONE nato, pilota i tre Triac tramite il moduGrazie a NI LabVIEW la realizzazione lo FieldPoint. Langolo di conduzione Fig. 3 - Una versione industrializzata di ArbLoad protitipale di ArbLoad stata realizzadei Triac viene variato finch la parte ta in tempi record, e tutto il software reale della componente a 50Hz risulta stato riutilizzato con minimi adattamenti permettendo la quella desiderata, entro una tolleranza prefissata. A questo punto, le tre forme donda di corrente vengono di realizzazione della versione industrializzata in soli tre mesi. nuovo acquisite e analizzate e le componenti armoniche, pi la parte immaginaria della componente a 50Hz costituiscono il residuo spurio da eliminare. Esse vengono sottratte Note sugli autori dallo spettro del segnale desiderato. B. Sacco: RAI-Centro Ricerche e Innovazione Tecnologica La differenza cos ottenuta rappresenta ci che manca alla M. La Rosa: RAI-Ingegneria della Produzione TV corrente fin qui ottenuta per ottenere quella desiderata. Tramite DFT inversa viene ottenuto il segnale periodico nel

dominio del tempo. Tale segnale campionato viene quindi caricato nei generatori arbitrari via Gpib tramite la scheda NI PCI-Gpib/LP. La forma donda cos ottenuta sulla linea la sintesi fedele di quella desiderata. Si riscontrato che il compensatore di armoniche, essendo uno dispositivo piuttosto raffinato, non soffre di derive termiche; al contrario i parzializzatori a Triac ed il resistore alimentato variano la corrente assorbita a causa della variazione della temperatura. Ci ha reso necessario aggiungere un ciclo di controllo secondario, che usa come parametro di controllo la componente in fase a 50 Hz della corrente effettivamente assorbita, provvedendo a variare langolo di innesco dei Triac per compensarne le variazioni. Questo consente anche la compensazione delle variazione di tensione di alimentazione del carico. Questo cicli di controllo viene eseguito periodicamente, ma non vi lesigenza di elaborazioni in real-time:Il VI NI LabVIEW gira senza problemi su un PC Pentium3 con sistema operativo Windows2000. Per lutilizzo, ArbLoad viene connesso direttamente alla linea (o generatore: UPS, Gruppo elettrogeno, ecc.) da testare. Se invece si intende testare un dispositivo (interruttore automatico, trasformatore, ecc.) o una linea per prove EMC per disturbi irradiati, si pu utilizzare la sezione Test Setup della fig.1. ArbLoad stato realizzato dapprima in forma prototipale, visibile nella fig.2; la corrente sintetizzata viene visualizzata, tramite i trasformatori amperometrici, sulloscilloscopio digitale. La sezione parzializzatori a Triac stata remotata grazie allunit NI FieldPoint. Il carico resistivo non riportato nella figura. Una versione industrializzata (e marchiata CE) di ArbLoad (fig.3) stata realizzata, per RAI e sotto nostra licenza di brevetto, da unazienda italiana.

readerser vice.it n.208

27

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

02

SISTEMA DI ARCHIVIAZIONE E REMOTIZZAZIONE DATI PER TURBOGRUPPI


S. Cacciac arne

Ansaldo Energia ha realizzato e installato in diverse centrali elettriche un sistema di archiviazione e remotazione dati

a crescente domanda di energia elettrica ha comportato in prima battuta un aumento del numero di centrali di produzione e, in seconda luogo, un incremento dellefficienza e disponibilit di ciascuna di esse, attraverso un monitoraggio continuo di parametri relativi alle macchine installate, tramite sistemi di acquisizione e remotizzazione dati in tempo reale. Ci allo scopo di prevedere sempre meglio eventuali fonti di guasto e quindi porvi rimedio nel pi breve tempo possibile. Ansaldo Energia ha realizzato e gi installato in diversi siti un sistema di archiviazione e remotazione dati realizzato attraverso un sistema NI cRIO-9004 di National Instruments, a 8 slot dotato di 500 Mbyte di flash memory e di opportune schede di ingresso sia analogiche che digitali. Il dispositivo in grado di acquisire fino ad un max di 64 canali con un intervallo minimo di tempo di 5 ms tra un campione e laltro per ogni canale acquisito. Per una migliore comprensione della struttura del sistema, verranno descritti la struttura hardware e successivamente i diversi pacchetti software utilizzati dal medesimo per eseguire larchiviazione dei dati.

ARCHITETTURA DEL SISTEMA


Il sistema pu essere suddiviso in tre diversi livelli (fig. 1): Il primo livello costituito dal modulo NI cRIO-9004 dotato delle rispettive schede di ingresso.

Fig.1 - Struttura sistema archiviazione dati

In tale unit, collocata in campo, confluiscono i vari segnali sotto forma di segnali a 10V provenienti dai diversi sensori di pressione, temperatura, ecc. sistemati allinterno delle macchine e necessari a capire lo stato di funzionamento delle stesse. Tramite opportuno applicativo realizzato in NI LabVIEW FPGA, i campioni acquisiti dalle diverse schede di input vengono ordinati e inviati alla CPU dellunit RealTime NI cRIO-9004. La CPU collocata nel modulo NI cRIO-9004, ma gerarchicamente al livello superiore e un apposito applicativo realizzato con NI LabVIEW FPGA si preoccupa di ricevere e salvare sulla flash memory i dati con opportuna struttura binaria in modo da ottimizzare lo spazio di memoria. Larchivio nel quale essi sono conservati organizzato in diversi file numerati in maniera progressiva e strutturati secondo una tabella, dove la prima colonna contiene linformazione temporale nel formato giono, mese, anno, ora, minuto, secondo e millisecondo e le successive colonne invece i diversi canali acquisiti. Lintestazione di ogni file invece costituita dai diversi tag di ogni canale e dai relativi campiscala di ciascuno di essi. importante sottolineare come linformazione oraria sia mantenuta sincronizzata ad intervalli ciclici con il PC host di secondo livello, il quale orologio a sua volta allineato tramite opportuno protocollo, ad un dispositivo GPS installato in ogni centrale. Una volta che il file in scrittura ha raggiunto una dimensione di circa 4 Mbyte, lapplicativo si preoccupa di passare ad uno successivo in modo tale da realizzare un archivio storico locale a bordo dellunit NI CompactRIO formato da un massimo di circa 120 file e compatibile con la dimensione massima della flash memory. ovvio che una volta terminato di scrivere il file N 120 il sistema inizier nuovamente a sovrascrivere il primo file dellarchivio e cos via secondo una modalit di storicizzazione dati a tamburo. Considerando di acquisire 64 Ch a 5 ms, larchivio locale in grado di contenere i dati fino ad un massimo di circa 15 ore senza essere sovrascritto nuovamente. Il secondo livello costituito da un personal computer connesso tramite protocollo TCP/IP ai moduli NI CompactRIO. In esso eseguito un applicativo NI LabVIEW che in grado di connettersi allunit NI CompactRIO e di prelevare i file

28

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

dallarchivio locale in modo da creare un archivio storico su di esso e quindi di capienza molto pi grande, legata sostanzialmente alla dimensione fisica dellhard disk del PC. Il programma presente sul PC, qualora si interrompesse per un periodo di tempo la connessione TCP/IP, in grado, una volta ristabilita, di risalire allultimo file trasferito e quindi di iniziare il procedimento di archiviazione da quello successivo, ovviamente linterruzione di comunicazione tra PC e NI CompactRIO non deve durare oltre le circa 15 ore per evitare di perdere dati che verrebbero sovrascritti. Il terzo livello semplicemente costituito da un PC connesso allhost tramite una connessione Internet in genere tramite VPN, ovviamente dotata delle opportune protezioni anti intrusione. Con esso dalla sede centrale possibile consultare larchivio dati in modo da eseguire diagnosi a distanza.

APPLICATIVI SOFTWARE SU PC HOST


Passiamo alla descrizione del software. La fase di archiviazione preceduta da una fase di setup del dispositivo. Tramite un VI realizzato in NI LabVIEW (VI setup), rappresentato nella fig.2, possibile definire: il tipo di scheda di ingresso per ogni slot del modulo NI CompactRIO il tag di ogni canale acquisito il campo scala la possibilit di esclusione o meno del canale il percorso su PC host nel quale verr realizzato larchivio dati remoto la dimensione dellarchivio remoto (giorno, settimana, mese) il tempo di scansione dei canali ( 5 ms; 10 ms; 20 ms; 50 ms; 100 ms; 200 ms) Tramite il VI di setup appena descritto viene generato un file che va opportunamente trasferito via ftp a NI CompactRIO e che contiene tutte le informazioni necessarie per eseguire larchiviazione corretta dei file. Dopo che il dispositivo in campo ha iniziato ad acquisire dati, allaccensione del PC host viene fatto partire come servizio di Windows un applicativo VI che si preoccupa di travasare i file che via via vengono generati su NI CompactRIO (VI archiviazione). Oltre allarchiviazione dati possibile visualizzare anche tutti i canali acquisiti in modo real-time. Nella fig 3 visualizzata linterfaccia utente del VI che via TCP/IP va a leggere e rappresentare su trend i valori acquisiti dalle schede di ingresso su NI CompactRIO. Al caricamento del file di setup generato precedentemente nella sezione trend on line compariranno sulla destra del trend i tag di ogni canale acquisito ed i relativi campi scala con lindicazione del valore della grandezza in formato ingegneristico acquisita in quel momento. possibile per ogni canale eseguire un filtraggio qualora le grandezze risultassero affette da disturbi elettrici. Il grafico, qualora

Fig. 2 - Inter faccia VI di setup

Fig. 3 - Inter faccia VI trend real time

Nota sullautore
S. Cacciacarne: Ansaldo Energia

readerser vice.it n.241

fosse necessario, pu essere salvato in un file che pu essere ricaricato nella sezione trend off line per analisi e valutazioni sulle grandezze senza interrompere laquisizione real-time che nel frattempo prosegue nella sezione precedente. La possibilit di consultare dati da remoto direttamente dalla sede ha consentito un notevole risparmio economico e in termini di tempi di intervento, facilitando il compito del personale di servizio in grado di eseguire interventi atti alla risoluzione guasti molto pi mirati.

29

SCUOLA DI LABVIEW

02

Training per principianti


VARIABILI LOCALI E GLOBALI
a cura di Matteo Foini

Le variabili locali trasferiscono dati allinterno di un singolo VI, le variabili globali permettono di accedere ai dati e passarli tra diversi VI che sono in esecuzione contemporaneamente

n LabVIEW il flusso dei dati, piuttosto che lordine sequenziale dei comandi, determina lordine di esecuzione degli elementi dello schema a blocchi. Quindi, potete creare schemi a blocchi che svolgono operazioni contemporanee. Per esempio, potete avviare due For Loop simultaneamente e visualizzare i risultati sul pannello frontale, come mostrato nello schema a blocchi della fig. 1.

avvia i due cicli in parallelo a causa del filo di collegamento presente tra i due subVI. Il collegamento crea una dipendenza nellordine di esecuzione e il secondo ciclo non si avvia finch il primo ciclo non ha finito e passato i dati attraverso il tunnel. Per far s che i due cicli siano eseguiti contemporaneamente, rimuovete il collegamento. Per passare i dati tra i subVI, utilizzate unaltra tecnica, ad esempio una variabile. In LabVIEW le variabili sono elementi dello schema a blocchi che vi consentono di accedere ai dati o di memorizzarli in unaltra locazione. La locazione attuale dei dati varia in funzione del tipo di variabile. Le variabili locali memorizzano i dati nei controlli e indicatori del pannello frontale. Le variabili globali memorizzano i dati in contenitori particolari ai quali potete accedere da pi VI. Indipendentemente da dove vengono memorizzati i dati, tutte le variabili vi consentono di aggirare la normale logica a flusso di dati, passando i dati da un posto a un altro senza necessit di effettuare alcun collegamento. Per questo motivo le variabili sono utili nelle architetture in parallelo, ma hanno anche alcuni svantaggi, come le condizioni di conflitto.

UTILIZZO DI VARIABILI IN UN SINGOLO VI


Fig 1: Esecuzione simultanea di due blocchi di codice in cicli paralleli

Tuttavia, se utilizzate dei collegamenti per passare i dati tra gli schemi a blocchi in parallelo, essi non operano pi in parallelo. Esempi di schemi a blocchi in parallelo possono essere due cicli presenti sullo stesso diagramma e privi di collegamenti, oppure due VI distinti che vengono chiamati nello stesso istante. Il diagramma a blocchi della fig. 2 non

Fig 2: While Loop con dipendenza dei dati imposta dal collegamento

Le variabili locali trasferiscono dati allinterno di un singolo VI. Creazione di variabili locali Cliccate con il tasto destro del mouse su un oggetto esistente del pannello frontale o dello schema a blocchi e selezionate CreateLocal Variable dal menu rapido per creare una variabile locale. Nello schema a blocchi appare unicona di variabile locale per loggetto. Potete anche selezionare una variabile locale dalla palette Functions ed inserirla nello schema a blocchi. Il nodo della variabile locale, mostrato nella fig. 3, non ancora associato ad un controllo o ad un indicatore. Per associare una Fig 3: Nodo della variabile locale variabile locale ad un controllo o ad un indicatore, cliccate con il tasto destro del mouse sul nodo della variabile locale e selezionate Select Item dal menu rapido. Il menu rapido espanso elenca tutti gli oggetti del pannello frontale aventi etichette proprie.

30

SCUOLA DI LABVIEW

LabVIEW utilizza le etichette per associare le variabili locali agli oggetti del pannello frontale, quindi etichettate i controlli e gli indicatori del pannello frontale con nomi descrittivi. Lettura e scrittura di variabili Dopo aver creato una variabile locale o globale, potete leggere o scrivere i dati su una variabile. Di default una nuova variabile riceve dati. Questo tipo di variabili opera come un indicatore e si parla di variabile locale o globale abilitata in scrittura. Quando scrivete nuovi dati su una variabile locale o globale, il controllo o lindicatore associato del pannello frontale si aggiorna con il nuovo dato. Potete anche configurare una variabile affinch si comporti come una sorgente di dati, o variabile locale o globale abilitata in lettura. Cliccate con il tasto destro del mouse su Change to Read dal menu rapido per configurare la variabile come controllo. Quando questo nodo in esecuzione, il VI legge i dati nel controllo o nellindicatore associato del pannello frontale. Per far s che la variabile riceva dati dallo schema a blocchi piuttosto che fornirli, cliccate con il tasto destro del mouse su Change to Write dal menu rapido. Sullo schema a blocchi potete distinguere le variabili abilitate in lettura da quelle abilitate in scrittura, esattamente come si distinguono i controlli dagli indicatori: se in lettura presenta un bordo spesso, come un controllo, mentre se in scrittura ha un bordo sottile, come un indicatore.

Fig 4: Variabile locale utilizzata per arrestare cicli in parallelo

terminale. Tuttavia, con una variabile locale potete scrivere su essa anche se un controllo o leggere da essa anche se un indicatore. In effetti, con una variabile locale potete accedere ad un oggetto del pannello frontale sia in ingresso che in uscita. Per esempio, se linterfaccia utente richiede il login dellutente, potete cancellare il contenuto dei campi di Login e Password ogni volta che un utente effettua il login. Utilizzate una variabile locale per leggere dai controlli stringa Login e Password quando un utente effettua un login e per scrivere stringhe vuote su questi controlli quando lutente effettua il logout.

UTILIZZO DI VARIABILI TRA VI


Potete anche utilizzare variabili per accedere ai dati e passarli tra diversi VI che sono in esecuzione contemporaneamente. Una variabile locale condivide i dati allinterno di un VI mentre una variabile globale consente di condividere i dati anche tra VI distinti. Creazione di variabili globali Utilizzate variabili globali per accedere ai dati e passarli tra diversi VI che sono in esecuzione contemporaneamente. Le variabili globali sono oggetti interni a LabVIEW. Quando create una variabile globale, LabVIEW crea automaticamente uno speciale VI globale, che ha un pannello frontale, ma che non ha lo schema a blocchi (fig. 5). Aggiungete controlli e indicatori al pannello frontale del VI per definire i tipi di dati delle variabili globali che esso contiene. In effetti, questo pannello frontale un contenitore attraverso il quale pi VI possono accedere ai dati. Per esempio, supponete di avere due VI funzionanti simultaneamente. Ogni VI contiene Fig 5: Nodo della variabile globale un While Loop e scrive i dati su un waveform chart. Il primo VI contiene un controllo booleano per terminare entrambi i VI. Dovete usare una variabile globale per terminare entrambi i cicli con un singolo controllo booleano. Se entrambi i cicli fossero su un unico schema a blocchi allinterno dello stesso VI, potreste usare la variabile locale per terminare i cicli. Selezionate una variabile globale dalla palette Functions e inseritela nello schema a blocchi.

ESEMPIO DI VARIABILE LOCALE


Nella fig. 4 viene mostrato un esempio di VI che utilizza cicli in parallelo. Il pannello frontale contiene un unico interruttore che arresta la generazione dei dati visualizzati su due grafici. Nello schema a blocchi, i dati di ciascun grafico vengono generati allinterno di un While Loop per consentire la temporizzazione separata di ciascun ciclo. Il terminale Loop Control arresta entrambi i While Loop. In questo esempio, i due cicli devono condividere linterruttore per arrestare entrambi i cicli nello stesso istante. Per aggiornare i grafici come desiderato, i While Loop devono operare in parallelo. Un collegamento tra i While Loop per passare i dati dellinterruttore renderebbe lesecuzione dei cicli seriale, invece che parallela. Il VI nella fig. 4 utilizza una variabile locale per passare i dati dellinterruttore. Quando impostate linterruttore su False nel pannello frontale, il terminale dellinterruttore in Loop 1 scrive un valore False sul terminale condizionale di Loop 1. Loop 2 legge la variabile locale Loop Control e scrive un False sul terminale condizionale di Loop 2. Quindi i cicli sono in esecuzione in parallelo e terminano contemporaneamente quando agite sullunico interruttore del pannello frontale. Con una variabile locale potete scrivere o leggere su un controllo o un indicatore del pannello frontale. La scrittura su una variabile locale simile al passaggio dei dati a un altro

31

SCUOLA DI LABVIEW

02

Cliccate due volte sul nodo della variabile globale per visualizzare il pannello frontale del VI globale. Inserite controlli e indicatori in questo pannello frontale nello stesso modo in cui lo fareste in un pannello frontale standard. Etichettate controlli e indicatori del pannello frontale con etichette significative, in quanto LabVIEW usa tali etichette per identificare le variabili globali. Potete creare svariati VI globali, ognuno con un singolo oggetto nel pannello frontale oppure creare un VI globale con pi oggetti nel pannello frontale. Un VI globale con pi oggetti pi efficiente perch potete raggruppare insieme delle variabili correlate. Potete inserire VI globali in altri VI nello stesso modo in cui inserite subVI in altri VI. Ogni volta che inserite un nuovo nodo di variabili globali in uno schema a blocchi, LabVIEW crea un nuovo VI associato solo a quel nodo e a copie di esso. La fig. 6 mostra un pannello frontale di una variabile globa-

bile globale associata al primo oggetto del pannello frontale con unetichetta propria che avete inserito nel VI globale. Cliccate con il tasto destro sul nodo della variabile globale che avete inserito nello schema a blocchi e selezionate un oggeto del pannello frontale dal menu rapido Select Item per associare la variabile globale ai dati provenienti da un altro oggetto del pannello frontale.

USO PRUDENTE DELLE VARIABILI


Le variabili locali e globali sono concetti molto utili in LabVIEW ma potenzialmente insidiosi: vanno studiati con cura e usati con cautela. Sono intrinsecamente estranee al modello di esecuzione del flusso di dati in LabVIEW. Gli schemi a blocchi possono diventare difficili da leggere quando usate variabili locali e globali. Cos dovete usarle con attenzione. Luso scorretto delle variabili locali e globali, pu condurre a comportamenti inattesi dei VI. Inoltre, luso eccessivo che a volte se ne fa, come per evitare lunghi collegamenti attraverso lo schema a blocchi o per sostituire il flusso dei dati, rallenta le prestazioni.

INIZIALIZZAZIONE DELLE VARIABILI


Verificate che le variabili locali e globali contengano valori conosciuti dei dati prima che il VI vada in esecuzione. Altrimenti le variabili potrebbero contenere dati che inducono il VI a funzionare in modo scorretto. Se non inizializzate la variabile prima che il VI la legga per la prima volta, la variabile contiene il valore di default delloggetto associato del pannello frontale.

Note sullautore
Fig 6: Pannello frontale della variabile globale

Matteo Foini, National Instruments

le con un numero, una stringa e un cluster contenente un controllo numerico e un controllo booleano. La barra degli strumenti non mostra i pulsanti Run, Stop e gli altri pulsanti normalmente presenti su un pannello frontale. Quando avete finito di inserire gli oggetti nel pannello frontale del VI globale, salvatelo e tornate allo schema a blocchi del VI originale. Dovete poi selezionare loggetto del VI globale a cui volete accedere. Cliccate con il tasto destro sul nodo della variabile globale e selezionate un oggetto del pannello frontale dal menu rapido Select Item. Il menu rapido elenca tutti gli oggetti del pannello frontale del VI globale che hanno etichette proprie. Potete anche usare gli strumenti Operating o Labeling per cliccare sul nodo della variabile globale e selezionare loggetto del pannello frontale dal menu visualizzato. Se volete usare questa variabile globale in altri VI, selezionate FunctionsAll FunctionsSelect a VI. Di default la varia-

SEI UN FAN DI LABVIEW?


ENTRA NELLA NOSTRA COMUNIT!
Caro lettore, se ritieni che questa nuova iniziativa LabVIEW World sia un utile strumento per la tua attivit e desideri continuare a rimanere aggiornato sul mondo LabVIEW, collegati alla pagina http://www.ilb2b.it/labview/lb_world.asp

32

readerser vice.it n.211

SCUOLA DI LABVIEW

02

Training per esperti

TECNICHE AVANZATE DI I/O SU FILE (PARTE II)


Concludiamo il training avanzato relativo alle tecniche di salvataggio dei dati, presentando le caratteristiche fondamentali del formato Text Data Exchange ( TDM)

a cura di Matteo Foini

l formato Text Data Exchange (TDM) un formato di file ibrido che combina la memorizzazione binaria e i dati ASCII formattati in XML. In un file TDM, i dati numerici grezzi sono memorizzati in formato binario. Questo d i vantaggi del binario, come un uso dello spazio efficiente e tempi di scrittura veloci. Oltre a questi dati, un formato XML conserva la struttura dei dati e informazioni sugli stessi. Questo consente allinformazione nel file di essere facilmente accessibile e ricercabile. Tipicamente, i dati binari e i dati XML sono separati in due file, un file .tdm per i dati XML e un file .tdx per i dati binari.

QUANDO USARE I FILE TDM


I file TDM sono progettati per conservare dati di test o di misura, soprattutto quando i dati consistono in uno o pi array. I file TDM sono pi utili quando si memorizzano array di dati semplici come numeri, stringhe o dati booleani. I file TDM non possono immagazzinare direttamente array di cluster. Se i vostri dati sono memorizzati in array di cluster, usate un altro formato di file, come quello binario, o spezzate il cluster in canali e usate la struttura del file TDM per organizzarli logicamente. I file TDM vi consentono di creare una struttura per i vostri dati. I dati allinterno del file sono organizzati in canali. Potete anche organizzare i canali in gruppi di canali. Un file pu contenere pi gruppi di canali. Dati ben raggruppati semplificano la lettura e lanalisi e possono ridurre il tempo richiesto per cercare una particolare porzione di dati. Usate i file TDM quando volete memorizzare informazioni addizionali sui vostri dati. Per esempio, potreste voler registrare anche il tipo di prova o misura, il nome delloperatore o del collaudatore, i numeri seriali, i numeri UUT del dispositivo collaudato o lora della verifica e le condizioni in base alle quali la verifica o la misurazione stata condotta. Ogni file TDM contiene un oggetto File e pu contenere quanti oggetti Channel Group e Channel volete. Ognuno degli oggetti in un file ha delle propriet ad esso associate, con tre livelli di propriet che potete usare per immagazzinare i dati. Per esempio, le condizioni di prova sono memorizzate al livello del file. Linformazione UTT conservata al livello dei canali o dei gruppi di canali. Conservare molte

informazioni sulle vostre prove e misurazioni pu rendere pi semplice lanalisi e pu anche consentirvi di cercare specifici insiemi di dati. Cercare file specifici o insiemi di dati in base a criteri memorizzati importante quando mettete insieme grandi quantit di datisoprattutto se dovete condividere i dati con altri. La ricerca dei dati in un file sulla base di una o pi condizioni una caratteristica del formato di memorizzazione dei dati TDM. Con la maggior parte dei formati di file, dovete leggere lintero file per localizzare uno specifico insieme di dati. Con un file TDM potete specificare una condizione quando leggete i dati e la lettura restituisce solo i dati che corrispondono a quella condizione. Usando letture multiple e unificando i loro risultati potete costruire richieste (queries) complesse per i vostri dati. Potete usare ogni propriet dei file TDM, dei Channel Group o dei Channel come condizione di ricerca. Perci inserite quante pi propriet possibili quando registrate dei file TDM. Queste propriet semplificano la localizzazione dei dati. Come molti altri formati binari di file, solo i programmi progettati appositamente per riconoscerli e decodificarli possono leggere i file TDM. LabVIEW, LabWindowsTM/CVITM e DIAdem e qualche altro software NI possono leggere i file TDM. Salvate i vostri dati in formato TDM quando volete accedere ai vostri dati con LabVIEW o DIAdem. Usate invece un formato pi universale come lASCII per accedere ai vostri dati usando altro software.

COME CREARE I FILE TDM


In LabVIEW potete creare file TDM in due modi: usando i VI Express Write to Measurement File e Read from Measurement File o i VI dellAPI Data Storage. I VI Express vi consentono di salvare e recuperare velocemente i dati salvati in formato TDM. La fig. 1 la finestra di dialogo di configurazione per il VI Express Write to Measurement File. Notate che potete scegliere se creare tipi di file LVM o TDM. Tuttavia, questi VI Express vi danno poco controllo sul raggruppamento e sulle propriet dei vostri dati e non vi consentono di usare alcune delle caratteristiche che rendono utili i file TDM, come la ricerca di dati in base ad alcune condizioni.

33

SCUOLA DI LABVIEW

02

Fig 3: Finestra di dialogo Open Data Storage

Fig 1: Creazione di un TDM con il Write to Measurement File

Per avere accesso a tutte le potenzialit dei file TDM, usate lAPI Data Storage. LAPI Data Storage un insieme di VI che pu scrivere file in diversi formati, e di default scrivono file TDM. La fig. 2 un esempio di semplice programma che registra le propriet dei canali e i dati numerici su un file TDM usando lAPI Data Storage.

dialogo di configurazione o determinare il percorso durante lesecuzione usando il terminale del diagramma a blocchi. Write Data vi consente di creare canali e gruppi di canali allinterno del vostro file. Esso vi consente di scrivere propriet e dati per le voci che create. La finestra di dialogo di configurazione di questo VI vi consente di selezionare quali propriet hanno i terminali del diagramma a blocchi e specificare come si deve comportare il VI se cercate di memorizzare due canali con lo stesso nome in un file.

Fig 2: Uso dellAPI Data Storage per scrivere un semplice file TDM

GERARCHIA DEI DATI


I file TDM vi consentono di organizzare i vostri dati in gruppi di canali (channel group) e in canali (channel). Un channel group un segmento di un file TDM che contiene propriet per immagazzinare informazioni in uno o pi canali. Potete usare i gruppi di canali per organizzare i vostri dati e per memorizzare informazioni relative a pi canali. Un channel memorizza segnali di misura scalati o dati grezzi in un file TDM. Il segnale un array di dati di misura. Ogni canale pu anche avere propriet che descrivono i dati. Il dato conservato nel segnale memorizzato come dato binario sul disco per risparmiare spazio sul disco e garantire pi efficienza.

Fig 4: Finestra di dialogo Write Data Configuration

API DATA STORAGE


Di seguito sono riportati alcuni dei VI Data Storage pi usati: Open Data Storage apre un riferimento a un file TDM. Potete specificare un percorso al file usando la finestra di

Read Data vi consente di cercare canali o gruppi di canali in base a condizioni da voi specificate. La finestra di dialogo di configurazione di questo VI vi consente di specificare le condizioni di ricerca, cos come il tipo di dati restituiti quando il risultato della ricerca un canale.

34

SCUOLA DI LABVIEW

Questo VI pu restituire i segnali dei dati reali da un canale, ma per accedere ad altre propriet di un canale o di un gruppo di canali passate i riferimenti restituiti da questo VI al VI Get Properties. Notate che poich una richiesta pu dare pi risultati, questa funzione restituisce tutti i suoi risultati, compresi i refnum, in array.

Delete Data usate questo VI per cancellare canali o gruppi di canali da un file. Diversamente da altri formati di file, spesso riutilizzate un singolo TDM invece di creare un nuovo file ogni volta che un VI va in esecuzione. Quando si usano i file TDM in questo modo, il VI Delete Data vi consente di eliminare i dati indesiderati dai file. Per esempio potete fare richiesta al file di vecchi canali di dati, scriverli su un file di archivio e poi cancellarli dal file originale. Delete Data non cerca i dati, esso richiede un riferimento al dato, perci usate generalmente Read Data per localizzare i dati prima di usare Delete Data per rimuoverli.

COSTRUZIONE DELLE RICHIESTE


Costruire le richieste aiuta a leggere i dati per la visualizzazione o per lanalisi. Potete effettuare richieste di base usando solo il VI Read Data. La fig. 8 mostra una semplice richiesta che grafica i dati dei segnali di tutti i canali presenti nel file con un massimo maggiore o uguale a 5.
Fig 5: Finestra di dialogo Read Data Configuration

Set Properties questo VI vi consente di impostare le propriet di un canale, di un gruppo di canali o di un file. Poich il VI Write Data vi consente di impostare le propriet di un canale o di un gruppo di canali, questo VI pi utilizzato per impostare le propriet dei file. La finestra di dialogo di configurazione vi consente di selezionare il tipo di oggetto di cui impostare le propriet e le propriet da impostare. Potete anche usare questo VI per impostare il segnale dei dati di un canale. Quando impostate il segnale potete scegliere se aggiungere il nuovo dato in coda a un dato esistente o se sostituire il dato esistente. Get Properties vi consente di accedere alle propriet di un file, di un canale o di un gruppo di canali. Potete combinare questo VI con il VI Read Data per cercare canali o gruppi di canali e poi accedere alle propriet dei risultati della ricerca. Potete anche usare questo VI per mettere tutti i gruppi di canali in un file o tutti i canali in un gruppi di canali. La finestra di dialogo di configurazione vi consente di scegliere le propriet alle quali siete interessati. Close Data Storage chiude un riferimento a un file TDM. Notate che dovete solo chiudere il riferimento del file, qualsiasi riferimento relativo a canali e gruppi di canali si chiude automaticamente quando chiudete il riferimento del file. Merge Queries vi consente di costruire richieste complesse. Poich il VI Read Data vi permette di specificare solo una condizione, usate questo VI e pi VI Read Data per costruire richieste che hanno pi di una condizione. Fate riferimento alla sezione Costruzione delle richieste per maggiori informazioni.

Fig 8: Semplice richiesta TDM

Per accedere a propriet diverse dal dato del segnale, usate il VI Get Properties con i riferimenti dei risultati da Read Data. Notate che poich Read Data restituisce un array, dovete usare un For Loop per indicizzarlo prima di chiamare Get Properties. Invece di visualizzare il dato del segnale, lesempio nella fig. 9 mostra le propriet di tutti i canali con Massimo maggiore o uguale a 5.

Fig 9: Accesso alle propriet dei risultati delle richieste

Quando il vostro file TDM contiene gruppi di dati, spesso dovete cercare i canali solo in un particolare gruppo. Potete fare questo usando due VI Read Data: uno per cercare il gruppo di canali appropriato e il secondo per cercare i canali allinterno di quel gruppo. Collegare il riferimento del gruppo di canali al VI Read Data vi consente di restringere la ricer-

35

SCUOLA DI LABVIEW

02

ca del canale ai canali di quel particolare gruppo. Lesempio in fig. 10 grafica tutti i canali nel gruppo Temperature Data con un massimo maggiore di 76 gradi. Questo esempio assume che esista un solo gruppo con il nome Temperature Data. Questa unassunzione valida a meno che voi non verifichiate lopzione Always Create new channel group/channel quando scrivete i dati con il VI Write Data. Se non potete garantire che solo un gruppo di canali corrisponda alla vostra richiesta, passate attraverso i risultati della richiesta usando un ciclo For come lesempio in fig. 10. Per costruire richieste TDM complesse, usate il VI Merge Queries. Questo VI vi consente di combinare i risultati dei due VI Read Data. Quando usate Merge Queries, potete ottenere risultati che sono nella prima richiesta e nella seconda richiesta o combinare i risultati di entrambe le richieste. Dopo aver chiamato Merge Queries, chiamate Get Properties per accedere ai segnali o alle propriet dei risulFig 10: Richiesta dati da un gruppo di canali tati delle richieste.

Unaltra tecnica di raggruppamento di raggruppare dati correlati. Per esempio, potreste mettere in un gruppo tutti i dati che si riferiscono ad una singola Unit Under Test (UUT). Raggruppare dati correlati vi consente di localizzare facilmente tutti i dati relativi a un determinato soggetto, ma rende difficile comparare i dati associati a soggetti distinti. Il raggruppamento relazionale aiuta a convertire la memo-

Fig 12: Raggruppamento per tipo di dato

RAGGRUPPAMENTO DEI DATI


Considerate con attenzione il modo migliore per raggruppare i dati poich il raggruppamento dei dati pu avere un impatto significativo sia sulla velocit di esecuzione che sulla complessit di implementazione di scritture e ricerche. Quando scegliete uno schema di raggruppamento, prendete in considerazione il formato originale dei vostri dati e come volere cercare o vedere i dati. Una tecnica di raggruppamento di raggruppare i dati per tipo di dato. Per esempio, potreste inserire dati numerici in un gruppo di canali e dati stringa in un altro, oppure mettere dati nel dominio del tempo in un gruppo e dati nel dominio della frequenza in un altro. Questo facilita il confronto di canali in un gruppo, ma pu rendere difficile trovare due canali che sono in relazione uno allaltro. La fig. 12 mostra un esempio di raggrupFig 11: Richiesta dati complessa pamento per tipo di dato. In questo esempio i dati sulla temperatura sono messi in un gruppo e i dati sul vento in un altro. Ogni gruppo contiene pi canali di dati. Notate che quando raggruppate per tipo di dato tipicamente avete un numero fisso di gruppi, due in questo caso, e un numero di canali determinato dinamicamente.

rizzazione basata su cluster al formato TDM. Potete memorizzare tutte le informazioni da un dato cluster in un gruppo di canali, dove gli array del cluster diventano i canali del gruppo e gli elementi scalari del cluster le propriet del gruppo di canali. La fig.13 mostra un esempio di raggruppamento di dati correlati. Notate che i dati in ingresso sono un array di cluster, ognuno dei quali contiene pi informazioni su una prova. Ogni prova immagazzinata come un

Fig 13: Raggruppamento di dati correlati

Note sullautore
Matteo Foini, National Instruments

36

readerser vice.it n.212

diverso gruppo di canali. Le informazioni che si applicano allintera prova, come Test ID e Test Status, sono conservate come propriet del gruppo di canali. Gli array di dati, come i dati temporali e lo spettro di potenza, sono memorizzati in canali e le informazioni relative agli array di dati, come il valore efficace e la frequenza fondamentale, sono conservati come propriet dei canali. Notate che quando raggruppate dati correlati, c tipicamente un numero fisso di canali in un gruppo, mentre il numero di gruppi dinamico.

REPORT

02

NIDAYS 2007 - FORUM TECNOLOGICO SULLA STRUMENTAZIONE VIRTUALE


Nadia Albarello

Lappuntamento con la A maiuscola nel mondo della Strumentazione Vir tuale

edizione 2007 del Forum Tecnologico sulla Strumentazione Virtuale (NIDays 2007) di Milano, si chiusa con risultati davvero positivi, confermandosi, ancora una volta, come un appuntamento di riferimento nel panorama congressuale italiano per il settore della Misura e dellAutomazione: 415 partecipanti, 26 espositori e 33 postazioni dimostrative su unarea espositiva complessiva di 1000 mq, la pi grande e ricca mai realizzata per NIDays, ormai scenario irrinunciabile di vivace scambio di soluzioni, idee e ottima occasione di networking tra i presenti allevento.

ad una piattaforma completa di progettazione grafica di sistemi. Grazie alle nuove potenti funzionalit e la capacit di combinare approcci diversi (ad es. programmazione dataflow e matematica testuale, recentemente introdotta con MathScript), LabVIEW 8.20 oggi una piattaforma grafica unica per progettazione, prototipazione e distribuzione di sistemi embedded. Di seguito, Microsoft Italia ha illustrato le potenzialit del nuovo sistema operativo Microsoft Windows Vista, non tralasciando aspetti come la compatibilit con i prodotti National Instruments e le possibili implicazioni future.

Le sessioni convegnistiche mattutine hanno visto l'evoluzione del concetto di Strumentazione Virtuale come protagonista nella parte affidata a National Instruments, che ha illustrato i retroscena del Graphical System Design, ovvero il futuro di NI LabVIEW. Negli ultimi anni, la piattaforma LabVIEW si sviluppata in nuove aree, evolvendosi da strumento per lacquisizione di dati e il controllo di strumenti,

Nel pomeriggio, le 12 sessioni di approfondimento, suddivise nei 4 cicli tematici Software, Progettazione e Controllo, Misura e Collaudo, Applicazioni e Soluzioni, hanno illustrato tecnologie, prodotti e linee guida delle piattaforme NI dando ampio spazio alle applicazioni tecniche finali. Da segnare in agenda la prossima edizione di NIDays: febbraio 2008 a Roma.

readerser vice.it n 213

37

LA VOCE DEGLI UTENTI

01
Vi presentiamo una selezione di argomenti di discussione sul Forum di ILVG.it

LabVIEW su Ubuntu Linux http://www.ilvg.it/ht/2715


Inviato: 20 Feb 2007 11:34 am Buongiorno a tutti, dopo una breve chiacchierata con Geppo sono venuto a conoscenza di questo forum, e lui stesso mi ha consigliato di inotrare questa breve guida da me realizzata per installare Labview su Ubuntu. Sottolineo che ho installato labview 8.0 su ubuntu 6.10, poterbbero esserci problemi legati a versioni diverse di labview o ubuntu. Spero comunque che possa essere d'aiuto a tutti utilizzatori di distro Debian Based che vogliono programmare in labview. Complimenti per il forum, ne far largo uso!!! [continua su http://www.ilvg.it/ht/2715] Luigi15
Alessandro Ricco

Progetto Birra... http://www.ilvg.it/ht/2930


Inviato: 05 Apr 2007 7:53 am Ciao a tutti, sono nuovo di queste parti e avrei bisogno di alcuni consigli. Il mio progetto sarebbe questo: voglio costruire un piccolo impianto casalingo per birrificare; la teoria ce l'ho, ho gi provato a creare qualcosa ma ora vorrei un p upgradarmi. Vorrei infatti cercare di gestire il tutto in modo un p pi automatizzato; niente di assurdo. Questa la mia idea: Vorrei acquisire dei segnali e gestire degli attuatori; vorrei acquisire la temperatura del mosto, gestire delle semplici valvole che semplicemente si aprono e si chiudono e questo gi basterebbe per iniziare; in pi potrebbe servire una valvola che regola il flusso di gas che dal bombolone va al fornello per gestire meglio la temperatura e un motorino che faccia muovere l'agitatore per "mescolare" il mosto. Spero di essere stato abbastanza chiaro; ora un paio di domande (ah, ovviamente poi gestirei il tutto con LabView e una piccola scheda di acquisizione) [continua su http://www.ilvg.it/ht/2930] wwollas

Comunicazione tramite porta seriale http://www.ilvg.it/ht/2878


Inviato: 21 Mar 2007 3:30 pm Salve a tutti. Brevemente vi spiego quale il problema. Abbiamo un modulo elettronico per esperimenti di fisica nucleare che ingloba in se le funzioni di amplificatore e CFD. Sul modulo gira un firmware che finora abbiamo comandato via porta seriale o tramite minicom (su linux) o hyperterminal (su windows). Digitando comandi del tipo n0 (invio) S1(invio) comunichiamo il settaggio al modulo che risponde con una stringa di circa 64 caratteri del tipo ch1, c 222, cft 35, s 0, Pin, g 127, G 3, e0.... oppure errore ? Se proviamo ad utilizzare uno qualsiaisi degli esempi di labview (esempi->hardware->serial->basic serial.vi) per comunicare con lo strumento (usando le funzioni Visa initialize, VISA write, Visa read,..) otteniamo sempre nessun errore in scrittura e un errore in lettura (il cui codice non ha descrizione)! Il modulo comunque non reagisce, cio all'oscilloscopio non vediamo l'avvenuto cambio di settaggio! [continua su http://www.ilvg.it/ht/2878] scorbux776

38

LA VOCE DEGLI UTENTI

Database connectivity (SQLite) http://www.ilvg.it/ht/2864


Inviato: 19 Mar 2007 2:32 pm Ciao a tutti, aiutatemi a capire un po, ma il database connectivity deve per forza essere collegato a un database server che sia MySQL access o altro?? non e possibile creare un database tipo file senza dover ricorrere ad un software esterno?? grazie [continua su http://www.ilvg.it/ht/2864] Luca slupz

Selezione di un cluster ricorsivamente http://www.ilvg.it/ht/2983


Inviato: 19 Apr 2007 10:34 am ...ma ciao! dopo aver deciso di lanciarmi nell'avventura sqlite che al momento non sembra dare alcun problema, mi trovo a dover costruire un interfaccia utente per consultare il DB. Per questo mi trovo di fornte ad un problema che illustro subito (e che allego in figura). Ho un cluster con all'interni piu' cluster. Questi cluster hanno la stessa struttura. Sicocme dovro' fare la stessa operazione per tutti i cluster, volevo utilizzare un ciclo for anzich singole operazioni per singoli cluster. Il problema pero' che io dovro' estrapolare dal cluster l'elemento A e l'elemento B in modo che alla prima iterazione siano quelli del cluster "serie" alla seconda siano quelli del cluster "esito" e cosi' via. Come posso fare? possibile?(mi pare di aver gi fatto tempo fa una domanda simiel ma non sono riuscito a trovare il topic relativo). [continua su http://www.ilvg.it/ht/2983] Gepponline

Memorizzazione dato (tipo latch D) http://www.ilvg.it/ht/3028


Inviato: 26 Apr 2007 10:33 am Ciao a tutti, sono uno studente di ingegneria elettronica specialistica che sta lavorando con LabView 8.20 per la tesi. Sto diventando matto perch non riesco a fare una cosa: memorizzare un dato. Per esempio: voglio fare un filtro passa basso con frequenza di taglio impostabile dallutente ogni qual volta egli lo voglia. Ho anche messo un valore di default. Il VI parte filtrando col valore di default (100) poi se lutente vuole cambiare f, schiaccia un pulsante che apre una finestra di dialogo, inserisce il nuovo valore e schiaccia ok. Questa operazione deve poterla fare ogni volta che vuole, ma deve restare memorizzato (latchato) il dato immesso finch premendo l'ok della finestra non se ne inserisce un altro (il latch lascia passare il dato). Io invece non riesco a tenere il dato memorizzato, dopo un ciclo torno al valore di default. Se qln mi aiuta mi fa un piacere, spiegandomi la soluzione del mio problema, o dandomi il VI stesso da scaricare per vederlo meglio, oppure spiegandomi come si fa in generale se si vuole tenere un nodo a un certo valore fino all'inserimento di uno nuovo. Grazie1000!!!! [continua su http://www.ilvg.it/ht/3028] pelle2005
readerser vice.it n.271

Note sullautore: Alessandro Ricco (www.agilesystems.it), ILVG.it Admin & LabVIEW Champion

39

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

02

HTTP://WWW
Ecco alcuni link che vi permetteranno di ampliare il numero di argomenti descritti in questo numero della rivista

Usare il VI Server per accedere alle variabili globali (in locale e da remoto)
I VI desempio allegati (Get Value.vi e Set Value.vi) utilizzano il VI Server per accedere ai dati da una variabile globale denominata Globals.vi (cos chiamata perch consiste di tre variabili/controlli: String [di tipo stringa], Boolean [di tipo booleano] e Numeric [di tipo numerico, in doppia precisione]). Get Value.vi legge il valore corrente di String dalla variabile globale e lo visualizza sul suo pannello frontale. Set Value.vi aggiorna il valore di String nella variabile globale con ci che viene digitato nel controllo stringa del suo pannello frontale. Si possono facilmente modificare i VI per accedere ai valori booleano e/o numerico. Link alla pagina: http://zone.ni.com/devzone/cda/epd/p/id/4256

Generare e ordinare numeri in LabVIEW


Questo esempio illustra come sviluppare unapplicazione che genera e ordina un array di numeri utilizzando lalgoritmo Bubble Sort. Link alla pagina: http://zone.ni.com/devzone/cda/epd/p/id/3183

Un assistente virtuale aiuta linsegnante ad organizzare i dati delle sue classi


Questo esempio stato concepito per illustrare i concetti di I/O su file, strutture di dati e analisi dei dati in LabVIEW. Lapplicazione permette a un docente di memorizzare le informazioni e i voti di uno studente, leggere e scrivere tali informazioni su un file e calcolare i voti finali e le statistiche della classe. Link alla pagina: http://zone.ni.com/devzone/cda/epd/p/id/3498

40

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

Condividere dati flattened fra LabVIEW 7.x e 8.0


Le funzioni Flatten To String e Unflatten From String a volte cambiano nel passaggio da una versione di LabVIEW a unaltra. Lesempio evidenzia la procedura che occorre prendere in considerazione per garantire la compatibilit tra i dati flattened delle versioni 7.x e 8.0 di LabVIEW. Link alla pagina: http://zone.ni.com/devzone/cda/epd/p/id/2276

Caricare e salvare file con LabVIEW e il MathScript Node


Load&Save.vi dimostra quanto sia facile in LabVIEW sfruttare le tecniche di I/O su file con le funzioni integrate di elaborazione digitale dei segnali di MathScript. E possibile caricare un file, ridurre il rumore utilizzando filtri passa basso, eseguire analisi FFT e salvare i dati elaborati su file. Lesempio usa lExpress VI File Dialogue per selezionare un file .wav e il Sound File Read Simple.vi per caricare la forma donda. E stato fornito il file WindowsStartup.wav. LExpress VI Play Waveform riproduce il file prima di filtrare i dati della forma donda nel MathScript Node. I dati filtrati e le forme donda FFT vengono visualizzati sul pannello frontale, mentre il file .wav risultante viene riprodotto mediante lExpress VI Play Waveform. LExpress VI File Dialogue invita gli utenti a selezionare il file da salvare. Tale file viene salvato usando il Sound File Write Simple.vi. Link alla pagina: http://zone.ni.com/devzone/cda/epd/p/id/4183

Riavviare programmaticamente LabVIEW e un VI


Questo programma desempio chiude programmaticamente LabVIEW, lo riapre e riavvia nuovamente il VI che era in esecuzione. Estraete i file nella stessa directory ed aprite il VI contenuto nella cartella relativa alla vostra versione di LabVIEW. Lesempio pu essere eseguito solo su Windows. Link alla pagina: http://zone.ni.com/devzone/cda/epd/p/id/978 http://www.vnubusiness.com

Ridimensionare unimmagine in LabVIEW


Nella versione 7 e successive di LabVIEW, il controllo Picture (che si trova nella paletta dei controlli, sotto Graph Controls Picture) ha una propriet chiamata Zoom Factor, che potete usare per ridimensionare limmagine memorizzata nel controllo. Per esempio, per ridurre le dimensioni dellimmagine del 50% rispetto alle sue dimensioni originali, collegate un valore pari a 0.5 a questa propriet. Per aumentare le dimensioni dellimmagine del 200% rispetto alle sue dimensioni originali, collegate un valore pari a 2. Link alla pagina: http://zone.ni.com/devzone/cda/epd/p/id/2201

Funzione di ricerca binaria di un array 1D in LabVIEW


Questo esempio mostra una modalit molto efficiente di ricerca binaria allinterno di un array unidimensionale. Si tratta di un VI polimorfo che accetta la maggior parte dei tipi di dato numerico e anche di tipo stringa. Link alla pagina: http://zone.ni.com/devzone/cda/epd/p/id/220
readerser vice.it n.266

41

REPORT

02

MC4 OLTRE LE ASPETTATIVE


Valerio Alessandroni

La terza edizione della mostra convegno dedicata alle tecnologie e ai prodotti per il motion control ha visto i visitatori crescere del 23%

ono stati oltre 520 i visitatori professionali che hanno partecipato alla terza edizione di MC4, la mostra convegno dedicata alle tecnologie e ai prodotti per il controllo del movimento organizzata da VNU Business Publications Italia e che si svolta lo scorso marzo presso le strutture di Bologna Congressi. Con un numero di presenze superiore del 23% rispetto alledizione del 2006, MC4 si quindi affermata definitivamente nel panorama congressuale italiano quale punto di riferimento in ambito di controllo del movimento. Affollatissime le sessioni convegnistiche mattutine e pomeridiane, tanto da aver costretto il pubblico, in alcuni casi, a sistemarsi allesterno delle sale stracolme con soli posti in piedi. Il successo che il pubblico ha decretato per MC4 essenzialmente legato al vantaggio di poter trarre il massimo profitto da un impegno di durata ragionevolmente breve, una giornata al massimo, sottolinea Alberto Taddei, responsabile del Cluster Trade di VNU Business Publications Italia, divisione che oltre ad organizzare le mostre convegno- pubblica vari titoli tra cui le riviste Automazione Oggi, Automazione e Strumentazione, Elettronica Oggi, Progettare e RMO. Questa formula consente infatti al visitatore di poter efficacemente organizzare la propria giornata scegliendo i seminari e prendendo diretto contatto con le aziende del settore che egli ritiene pi interessanti. Non inoltre da sottovalutare anche la disponibilit del buffet che, tradizionalmente, oltre a rappresentare un momento di relax conviviale, costituisce una importantissima occasione di networking personale tra tutti gli intervenuti.

Dal punto di vista delle aziende partecipanti, prosegue Taddei, linteresse sempre pi forte verso questo tipo di eventi risiede nellottimo risultato in termini di costo a contatto per tempo, che offre loro la possibilit di massimizzare i risultati di un impegno che non va oltre larco di una mattinata e un pomeriggio: e tutti noi ben sappiamo, oggi, quanto il tempo sia diventato una risorsa preziosa. Per quanto riguarda le mostre convegno organizzate da VNU Business Publications Italia, i prossimi appuntamenti sono:

VforM Vision for Manufacturing 17 maggio 2007 Torino e 23 maggio 2007 Vicenza

C2 Control & Communication 20 settembre 2007 Milano e 25 settembre 2007 Bari


readerser vice.it n 214

Focus Embedded novembre 2007 Milano e Roma

42

REPORT

02

DATA LOGGING TOUR


Nadia Albarello

National Instruments por ta le soluzioni Data Logging in tour per lItalia

a toccato tutto il territorio nazionale il road show che nei mesi di aprile e maggio, in 9 citt italiane, ha rappresentato una tappa obbligata di approfondimento ed aggiornamento sulle utlime novit del Data Logging e monitoraggio industriale. Obiettivo della manifestazione itinerante: portare la tecnologia National Instruments a chi deve realizzare applicazioni di data logging, dalle pi semplici, basate su PC e senza bisogno di programmazione, come lacquisizione di segnali

Numerose, infatti, le tematiche affrontate e corredate da esempi dimostrativi: Come migliorare la produttivit di sistema e ridurre i tempi di sviluppo grazie al software di data logging interattivo NI LabVIEW Signal Express: un ambiente di misura completamente interattivo adatto allacquisizione, analisi e presentazione dati da centinaia di dispositivi. Misure elettriche e da molteplici tipologie di sensori, con condizionamento di segnale integrato, isolamento e con-

lentamente variabili nel tempo, a quelle pi complesse, dove si rende necessario lutilizzo di sistemi distribuiti o presente un elevato numero di canali, come la registrazione nel tempo delle prestazioni di una rete di distribuzione dellenergia elettrica. Levento si aperto con una sessione plenaria dedicata all'analisi delle potenzialit di mercato, del posizionemento e dellattuale stato dellarte delle tecnologie di Data Logging in Italia. La giornata proseguita presentando soluzioni PC-based e pronte alluso adatte alle esigenze applicative pi svariate. In perfetto stile National Instruments, il seminario non ha deluso le aspettative del pubblico di chi necessita di aggiornamenti rapidi e di mettere subito in pratica le conoscenze acquisite illustrando soluzioni rapide e concrete.

nettivit diretta, sfruttando tutta la semplicit plug and play della tecnologia USB. Unendo la facilit d'uso ed il basso costo di un data logger con le prestazioni e la flessibilit della strumentazione modulare, NI CompactDAQ permette misure veloci ed accurate con un sistema compatto, semplice ed economico. Soluzioni di data logging embedded intelligente e distribuito via Ethernet. Accesso alle informazioni relative alle pi comuni configurazioni dei sistemi di monitoraggio per misure di temperatura, deformazione, forza, pressione, ecc. Supervisione industriale per la creazione di sistemi con elevato numero di canali. Tecnologia real-time per controllo di macchine industriali. Generazione di report e analisi off-line.

Readerser vice.it n286

43

REPORT

02

CONTROL DESIGN SEMINAR


Nadia Albarello

Un seminario in due tappe ambientato nel mondo accademico che strizza locchio all'universo industriale

CORSO PRATICO INTRODUTTIVO ALLA PROGRAMMAZIONE DI DISPOSITIVI REAL-TIME CON LABVIEW


Nadia Albarello

Un altro Road Show ha fatto centro!

10

date, 10 citt italiane, 10 opportunit di fare pratica. Lormai collaudata formula dellevento Hands-On ha decretato il successo del Corso pratico introduttivo alla programmazione di dispositivi RealTime con LabVIEW: 250 partecipanti. Durante la sessione introduttiva, gli esperti National Instruments hanno avvicinato i corsisti alle problematiche ed alle capacit dei sistemi real-time per apprendere gli elementi di base della programmazione grafica applicata a sistemi distribuiti intelligenti. I tecnici NI hanno successivamente guidato i presenti nellapprendimento, partendo da esempi elementari di acquisizione e controllo fino alla realizzazione di un sistema retroazionato ad anello chiuso con logging dei dati e pubblicazione dellinterfaccia utente via web. Tutti i partecipanti hanno potuto provare le potenzialit di LabVIEW RealTime e delle piattaforme PAC (Programmable Automation Controller) di National Instruments con una postazione a

propria disposizione e laffiancamento di un istruttore National Instruments. Secondo Roberto Isernia, Technical Marketing Engineer di National Instruments Italy, il successo che da sempre il pubblico decreta ai diversi eventi di tipo hands-on proposti da National Instruments, legato al vantaggio concreto di poter provare di persona le tecnologie presentate, e crescere nelle competenze in un lasso di tempo ragionevolmente breve. Nel mercato della misura e dellautomazione si sta sempre pi consolidando lesigenza di hardware indipendente in grado di poter sfruttare la potenza di calcolo e le potenzialit del PC. In questo scenario, si stanno distinguento le piattaforme PAC e NI LabVIEW Real-Time, aggiunge Isernia, cuore pulsante della piattaforma di sviluppo NI e perfettamente in linea con le esigenze di mercato consolidate e nascenti, non poteva che conquistarsi consenso ed interesse unanime.

44

Readerser vice.it n288

Readerser vice.it n287

na cornice di grande impatto per entrambe le date italiane del Seminario, 27 marzo a Milano e 29 marzo a Roma. Due atenei, il Politecnico di Milano e lUniversit degli Studi Tor Vergata di Roma, che aprono le porte a discussioni tecniche specialistiche di grande interesse e utilit per esperti legati al mondo della progettazione, della prototipazione, dellingegneria di test per la validazione di prodotto e del collaudo finale di produzione. LIng. Massimiliano Banfi System Engineer Mediterranean di National Instruments Italy speaker delle due giornate, ha fornito ai presenti in sala elementi di aggiornamento sulle evoluzioni tecnologiche del mondo della progettazione ed

effettuato dimostrazioni pratiche relative alle tre fasi del V Diagram, ovvero la fase iniziale di modellazione della fisica del fenomeno da controllare, quella di progettazione ed implementazione di una strategia di controllo, ed infine la prototipazione della strategia di controllo. Le varie fasi del V Diagram sono state coadiuvate da demo in cui la plant da controllare era un motore a c.c.. Un equilibrato connubio tra teoria e pratica sembra, tuttavia, non essere stato lunico ingrediente segreto dietro al successo del seminario: come sottolinea lIng. Banfi, parte del merito della grande affluenza di pubblico si pu attribuire anche alla presentazione di tool utilizzabili in un approccio di tipo meccatronico, ovvero la combinazione sinergica di ingegneria meccanica, elettronica, teoria del controllo e computer, che sta oggi suscitando un grande interesse nel mercato italiano e internazionale.

A P P U N TA M E N T I

Come sempre, vi segnaliamo i prossimi corsi di formazione di LabVIEW e i principali eventi internazionali che vedranno la partecipazione di National Instruments

02

EVENTI NI
FORUM AEROSPAZIO E DIFESA 2007
Roma, 30 maggio

NIWEEK
Austin, 7, 8, 9 agosto

EVENTI VNU
VISION FOR MANUFACTURING
Torino, 17 maggio Vicenza, 23 maggio

CONTROL & COMMUNICATION C2


Milano, 20 settembre Bari, 25 settembre

FIERE
SENSOR & TEST
Messenzentrum Nrnberg, 22-24 maggio

SALON DMR (DVELOPPMENT, MODERNISATION ET RECHERCHE)


Saint Nazaire, 7 giugno

SALON SIMTEC LYON


Lione, 24 maggio

SAE TOPTEC
Torino, 11-14 giugno

CORSI DI LABVIEW
LABVIEW BASE I: INTRODUZIONE
Milano dal 7 al 9 maggio dall'11 al 13 giugno dal 9 all'11 luglio dal 17 al 19 settembre dal 07 al 09 maggio dal 18 al 20 giugno dal 24 al 26 settembre dal 28 al 30 maggio dal 4 al 6 luglio

LABVIEW INTERMEDIATE I: TECNICHE DI DESIGN PROFESSIONALI


Milano Roma Padova Torino dal 21 al 23 maggio dal 24 al 26 settembre dal 14 al 16 maggio dal 6 all'8 giugno dal 25 al 27 giugno

Roma

Torino Padova

LABVIEW INTERMEDIATE II: CONNETTIVIT


Milano Roma Padova dal 18 al 19 giugno dal 17 al 18 maggio dal 12 al 13 luglio

LABVIEW BASE II: SVILUPPO


Milano Roma Padova dal 14 al 15 giugno dal 20 al 21 settembre dal 21 al 22 giugno dal 27 al 28 settembre dal 10 all'11 maggio

LABVIEW SVILUPPO DI APPLICAZIONI REALTIME


Milano Padova dal 25 al 27 giugno dal 23 al 25 maggio

LABVIEW ACQUISIZIONE DATI E CONDIZIONAMENTO DEI SEGNALI


Milano Roma Padova dal 14 al 16 maggio dal 9 all'11 luglio dal 20 al 22 giugno

LABVIEW ADVANCED I: ARCHITETTURE


Milano dal 2 al 4 luglio

MANIFESTAZIONE
ILVG DAY
ILVG Day una manifestazione libera e gratuita dedicata alle tecnologie e alla programmazione LabVIEW. L'evento, alla sua prima edizione, vuole essere un momento di ritrovo per le tutte quelle persone che gravitano, per lavoro, per passione o per semplice interesse, nell'ambiente LabVIEW. Durante l'ILVG Day verranno proposte presentazioni, dimostrazioni e verr dato spazio a confronti aperti sulle tematiche ritenute pi interessanti dal pubblico. ILVG Day organizzazo da ILVG.it, user group degli utenti LabVIEW Italiani, e si terr Sabato 23 Giugno presso il Collegio Valla dell'Universit di Pavia.

45

L A BV I E W E L AVO R O

02

AAA
RICERCHIAMO
DESIGN & DEVELOPMENT ENGINEER Sistemi & Organizzazione Head Hunting firm, is in charge of the Research & Selection of a Design & Development Engineer, for an outstanding engineering firm located in the U.S. Technical tasks: Lead the design & development of custom torque sensor solutions for Formula 1 racing and/or aerospace applications from conceptual design through dyno and/or track testing and support, which often requires travel to Europe. Design and/or upgrade customized testing apparatus for applying mechanical loads consisting of load frames, motor, gearbox, cranck mechanism, final drive. Write and/or upgrade software (tipically in LabVIEW and/or Matlab) to control torque test rigs, which include either electromechanical or electro-hydraulic actuation. Write and/or upgrade software to analyze and evaluate torque sensor data generated on test rigs, dynamometers and vehicles. Design new signal conditioning circuits for new sensors aand actuators, integrating microcontroller based intelligence into existing analog measurements circuits, customizing power input and/or signal output parameters for a given application. Optimize existing systems for operation at high temperature and in harsh environments by experimenting with various constructions and analyzing test results and making recommendations. Conduct and supervise testing programs including temperature, thermal cycle, vibration, overload, electromagnetic interference, and magnetic compatibility testing. Develop novel sensor packaging and/or transducer concepts for new applications such as NASCAR racecar application, turbine engine internal shaft application, and oil drilling tool application. Contribute to transitioning the existing

Conoscete bene LabVIEW? Date unocchiata alle offerte di lavoro che abbiamo selezionato da ILVG.it

torque sensor product line from a lowvolume product to a medium-volume production capability by developing and implementing streamlined manufacturing, assembly and logistics processes as well as Design for Manufacturability. Work with the R&D team to develop new magnetoelastic and/or mechatronic products such as non-contract actuators, integrated torque/speed sensors, multi-axis stress gauges and angular and axial position sensors, and non-destructive evaluation (NDE) probes. Sample Other Tasks: Analyze and professionally document laboratory test, dyno test, and track data pertaining to the systems and/or components described above. Travel to client sites in Europe, Japan and the US to monitor system installation and provide field support at dyno tests, track tests and races as required. Assist in drafting and presenting technical proposals to prospective and existing clients. Requirements: Mechanical, electrical or aerospace engineering degree. A concentration in sensors, control systems or mechatronics is recommended though not required. Two to four years of professional engineering experience. Proficiency in MS Office, Matlab and 3D solid modelling software packages. Experience with circuit layout and simulation software such as the OrCad suite would be helpful.Self-motivation, agility learning, flexibility, outstanding communication skills. Ability to work in global teams and interface with clients from all over the world. Fluency in the English language. The present is addressed to both Men and Women (L. 903/77). Resumes to: vsostegni@sistemieorganizzazione.com Data: 28/03/2007 www.topjob.it

INGEGNERI ELETTROTECNICI/ ELETTRONICI (Rif: ALE2903S) Societ operante nella produzione e commercializzazione di macchinari per collaudo normativo-funzionale, sita in Milano zona Rubattino, ricerca: 2 Ingegneri Elettrotecnici/Elettronici per la progettazione hardware e software di sistemi di automazione. Requisiti: laurea in Ingegneria Elettrotecnica/ Elettronica con circa 2 anni di esperienza; oppure Perito Elettronico con esperienza di almeno 4/5 anni nella progettazione. Buona conoscenza di: schede di acquisizione per misure elettriche; hardware analogico e digitale, software LabVIEW. Discreta conoscenza dellinglese tecnico, buona conoscenza del pacchetto Office. Sede di lavoro: Milano zona Ribattino. Invia il tuo Curriculum Vitae al seguente Indirizzo di posta elettronica: sandonato@obiettivolavoro.it Invia il tuo Curriculum Vitae a: Obiettivo Lavoro Agenzia per il Lavoro - Spa Via Europa, 7 20097 SAN DONATO Tel. 02/5274528 - Fax 02/55607001 E-mail: sandonato@obiettivolavoro.it Le ricerche sono rivolte a candidati dell'uno e dell'altro sesso ai sensi delle L.903/77 e L.125/91. www.obiettivolavoro.it

SPECIALISTA JUNIOR IN ATTUATORI E STRUMENTAZIONE (RIF. ATT/08) Area: Sistemi informativi/Web Azienda di componenti e soluzioni meccatroniche in continuo trend di crescita ci ha incaricato di ricercare urgentemente uno Specialista Junior in Attuatori e strumentazione

46

L A BV I E W E L AVO R O

02

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 Se interessati si prega di inviare il proprio curriculum vitae, citando il riferimento d?interesse e autorizzando al trattamento dei dati personali a: ASSIOMA SELEZIONE E SVILUPPO Email: recruiting@assiomaselezione.it La ricerca rivolta a candidature di entrambi i sessi (L. 903/77) Data: 26/07/2006 Rif: 766 www.assiomaselezione.it

Titolo di Studio: Dottorato di ricerca o Laurea pi esperienza equivalente in Ingegneria dell'Automazione o Elettrica - indirizzo Automazione o Segnali e Sistemi. Conoscenze Tecniche: familiarit con sistemi di controllo digitale, con la simulazione e il controllo dei motori elettrici con i tools di simulazione Matlab-Simulink, e con il linguaggio C. La conoscenza dei tool di simulazione di sistemi meccatronici, di ADAMS e dei sistemi di controllo real time, Dspace o LabVIEW costituir titolo preferenziale. Conoscenze Linguistiche: inglese. Esperienza: 3-5 anni di esperienza sviluppata applicando la teoria dei sistemi, dei controlli automatici e delle tecniche d'identificazione e signal processing applicate al controllo di motori elettrici. Esperienza maturata nei settori elettronica per beni di consumo o per automotive, aerospazio, robotica, servomeccanismi, motori elettrici, prodotti professionali. Sede: Lombardia, Varese www.jobadvisor.it

Process. Definition of technical requirements; external suppliers' design coordination; component and system validation planning; drawing release according to Product Programs and Powertrain Master Timings. Assessment of supplier offers regarding technical content, timing and project requirements Assessment and consolidation of development results. Continuous product improvement and cost reduction planning and coordination. Evaluate and release design changes, according to GM tools and procedures.

DRE HYDRAULIC COMPONENTS For multinational company based in Turin operating in the automotive field we are looking for a DRE Hydraulic Components (Ref. HYD/MJ) The Tasks The candidate will be involved in the following activities: Diesel injection system components development responsibility, from predevelopment to Start of Production and later during production, according to Global Powertrain Development Process and Change Management

SISTEMISTA CONTROLLISTA PER DRIVE SYSTEMS Descrizione: la funzione riguarda lo sviluppo dei controlli e dell'ideazione di algoritmi avanzati per creare funzioni innovative per gli elettrodomestici del futuro. Funzione Aziendale: Produzione/tecnica/qualit. Localit: Cassinetta di Biandronno (VA)

The Skills Degree in Mechanical Engineering or equivalent. Experience on Fuel injection systems development and testing. Knowledge on Unigraphics system or similar for fuel systems design and packaging; ASME standards. Good knowledge of Change Management Process for product quality improvement and cost reduction. Good knowledge of Microsoft Office, knowledge of Labview, INCA, Matlab. Fluent English, team working, good communication and leadership skills are required. All interested candidates are kindly requested to send their C.V. including an authorisation for the treatment of sensitive personnel data (D.lgs 196/2003) to the e-mail: simona.tallone@adecco.com I candidati ambosessi (L.903///) sono invitati a leggere su www.adecco.it l'informativa sulla privacy (art.13 D. Lgs. 196/03). www.adecco.it

47