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