Sei sulla pagina 1di 31

Come Riutilizzare Codice Esistente in LabVIEW

Claudio Cupini, Application Engineer

Un ambiente di sviluppo grafico altamente produttivo per tecnici e ingegneri

HardwareAPIs

Librerie di Analisi

UserInterfacesCustom

Targetdi deployment

Astrazioni di tecnologia

Approccio programmatico

Agenda

Richiamare codice compilato in LabVIEW C DLLs .NET Assemblies

Textual Nodes in LabVIEW MathScript nodes and window Formula nodes

C DLL vs. .NET Assembly

CDLL

.NETAssembly

Il Segreto per Richiamare Codice Esterno in LabVIEW

Devi avere conoscenza del codice esterno che stai richiamando!


Che linguaggio stato utilizzato per sviluppare il codice? C una run-time presente sul sistema da cui stai richiamando il codice compilato? Quale funzionalit disponibile nel codice esterno? Quali tipi di dato vengono utilizzati nel codice esterno?

Metodi per richiamare DLLs C da LabVIEW

1. Call Library Function Node 2. Import Shared Library Wizard

Call Library Function Node (CLFN) Cos? Funzione per chiamare direttamente una DLL o una shared library function. Come utilizzarlo? 1. Puntare al library file sul disco (.dll) 2. Specificare il nome della funzione 3. Specificare i tipi di parametri che la funzione richiede 4. Specificare la convenzione di chiamata.

Import Shared Library Wizard

Che cos? Utility per creare un wrapper DLL richiamato in un VI di LabVIEW Come si utilizza? (ToolsImportShared Library) 1. Puntare al file di libreria e allheader su disco (.dll, .h) 2. Selezionare la funzione da convertire 3. Configuare i VI e i Controlli

Import Shared Library Wizard

Vantaggi? E automatico! Analizza il file di Header Fornisce la lista delle funzioni contenute nella libreria Converte i tipi di dato della libreria condivisa in tipi di dato LabVIEW Genera i VI che incapsulano le singole funzioni Salva i VI in una libreria di progetto

ATTENZIONE! Raccomandazioni per richiamare DLLs in LabVIEW

Conoscenza dei prototipi C e del contenuto della DLL. La familiarit ottimizza la creazione del codice LabVIEW Difficile da debuggare se la DLL genera errore Documentazione dellheader file richiesta Alcuni tipi di parametri complessi non sono supportati Esempi: array di strutture, strutture come valore di ritorno Shared Libraries vengono eseguite in sincrono Shared Libraries sono dipendenti dalla piattaforma.

Metodi di chiamata per Assemblies .NET in LabVIEW

1. .NET Connectivity Nodes (Programmatic) 2. .NET Container (UI)

Terminologia .NET

Cos il .NET Framework? Common Language Runtime (CLR) - Engine desecuzione Classe di Librerie di base Funzionalit standard Differenti versioni - 3.0, 3.5, 4.0 Cos un .NET Assembly? Unit di deployment costruita usando il compiler .NET Include un manifesto con le informazioni sullassembly Nome, versione, sicurezza di distribuzione File che costituiscono lassembly, assembly dipendenti Risorse, data type esportati

Caratteristiche del codice .NET Orientato agli oggetti Ereditariet (da altri oggetti) Protezione dei dati (vari livelli di accesso ai dati) Publico accessibili ovunque (internamente o esternamente alla classe) Private accesso limitato alla classe Protected - pu essere utilizzato sia internamente alla classe che dalle classi ereditate da questa classe

.NET Connectivity Nodes Constructor Node Crea uninstanza delloggetto .NET

Property Node Preleva (legge) e/o setta (scrive) propriet di una reference

Invoke Node Invoca un metodo o azione su una reference

ATTENZIONE! Raccomandazioni per richiamare Assembly .NET in LabVIEW

Deve essere compatibile con il Common Language Runtime (CLR) Deve avere Librerie di Classi compatibili LabVIEW non rileva in automatico modifiche ad Assembly precaricati in memoria

Utilizzo del Contenitore .NET Cos? un controllo di LabVIEW per ospitare un componente di interfaccia UI .NET Come si utilizza? Caricare il componente UI .NET Assembly. Usare il componente UI .NET per controllare Vantaggi? Aggiungere una funzionalit che non esiste nativamente in LabVIEW Sviluppare uninterfaccia grafica che ricordi lambiente Windows Creare interfaccie dinamiche

Modelli di Design ad Alto-Livello


Data Flow C Code Textual Math Simulation Statechart

Desktop

Real-Time

FPGA

Microprocessors

Astrai la Complessit con LabVIEW La programmazione grafica di LabVIEW consente lesecuzione in parallelo Gestione intuitiva del parallelissmo Offre la possibilit di alte prestazioni di esecuzione

LabVIEW MathScript RT Background MathScript include algebra lineare, signal processing, ottimizzazione, simulazione Include nodi testuali e pi finestre interattive MathScript plug-ins forniti con:
LabVIEW Control Design & Simulation Module LabVIEW Digital Filter Design Toolkit

Compatibile con The MathWorks, Inc.:


MATLAB Signal Processing Toolbox Control System Toolbox DSP System Toolbox

Utile per applicazioni desktop o real-time con hardware


MATLAB and Simulink are registered trademarks of The MathWorks, Inc..

Non confondetevi con i nodi

Codice LabVIEW nativo Disponibile per:


LabVIEW su Windows,Maco Linux LabVIEW RealTime

Richiede MATLAB Disponibile soloper LabVIEW su Windows NONlavora conLabVIEW RealTime

Demo: MathScript Interactive Environment

LabVIEW MathScript Heat Equation

C:\ProgramFiles(x86)\NationalInstruments\LabVIEW 2012\examples\MathScript\MathScript HeatEquation

LabVIEW MathScript Demo

Programmazione Grafica e Testuale Interafaccia utente interattiva.

Raccomandazioni per lanalisi dati con MathScript

DAQ Assistant pi MathScript node Instrument Drivers pi MathScript node I/O Asst pi MathScript node

Working with LabVIEW MathScript Sviluppo di script in modo interattivo con MathScript Window Trasferisci al MathScript Node per Instruire il tuo Algoritomo Torna al MathScript Window per completare il tuo lavoro

MathScript Node MathScript Window

Debuggare un MathScript Node

Esecuzione highlighting and single-stepping Strumento probe per:


Variabili in ogni nodo Output definito internamente al nodo

Indicazione per gli errori di sintassi in ogni linea Indicatore di Errore per i nodi

Variabili Globali in MathScript

Create a global in MathScript Window:


Set value of a variable: a = 10; Declare variable as a global: global a

Access the global variable from the MathScript Node:

MathScript Industrial Case Study Quotes ALSTOM(UK)ConditionMonitoring: TheoriginalNovustooldeveloped usingMATLABsoftwarehasbeen successfullyimplementedwithinthe LabVIEW platform.WechoseLabVIEW overotherprogramminglanguages becauseithelpedusdecrease developmenttime,developfamiliar WindowsstyleGUIs,useLabVIEW MathScript functionstoembedour.m filescriptsinthesolution,andadapt systemfunctionalityforfuturereleases.

BPPTECH(UK)RiserManagement: LabVIEW MathScript andformula nodesenabledourpreexistingcode developedintextbasedlanguagesto beincludedwithinthesoftware, allowingformoreeffectivecode reuse.

LabVIEW MathScript RT Module Benefits Invio rapido del codice verso target hardware Multicore facile da usare Strumentalizza il tuo algoritmo Combinazione grafico/testuale LabVIEW include piene capacit di programmazione Integrazione con IP 3rd party inclusi .m and .mdl LabVIEW un ambiente di sviluppo di sistemi grafico e completo, con tutto ci di cui hai bisogno.

Sommario
LabVIEW una piattafomra sofware aperta Non c nescessit di riscrivere il codice Riduce il tempo di sviluppo e lo sforzo di integrazione di codice esterno necessario sapere cosa serve per eseguri il codice esterno Linguaggio e sistema operativo di compilazione, presenza di motori di runtime Funzionalit e tipi di dato implementati Differenti modalit per integrare il codice esterno Call Library Function Node (C DLL) Import Shared Library Wizard (C DLL) .NET Connectivity Nodes (.NET Assembly) .NET Container (.NET Assembly) MathScript Window MathScript Node

Grazieperlattenzione. Domande?