LabVIEW per ESPERTI
Alessandro PLANTAMURA Technical Marketing Engineer - NI Italy
Agenda
Realizzare interfacce utente avanzate
Gestione della memoria e delle prestazioni
Differenti approcci alla programmazione Come strutturare l'architettura di sistemi
embedded
Risorse
Obiettivo - Apprendere come personalizzare il pannello frontale e creare componenti riutilizzabili dell'interfaccia utente che siano conformi ai temi standard del SO. Vedere esempi di rappresentazione dei dati altamente interattivi, finestre di configurazione e modi per aggiungere sfondi allinterfaccia utente.
REALIZZARE INTERFACCE UTENTE AVANZATE IN LABVIEW
Realizzare interfacce utente avanzate
Agenda
Pratici consigli
Interfaccia Desktop
Interfaccia di monitoraggio
Non fare loriginale Pi con meno Tieni a mente lutente finale
1. Non fare loriginale
Usa elementi che sono familiari
Non cambiare il comportamento di oggetti che si assomigliano Fai pulizia, ordine e restile, non reinventare
1. Non fare loriginale
Seppur con qualche spunto di creativit
Pulsanti Icone Menu Dialoghi Terminologia
2. Pi con meno
Troppi elementi tutti assieme distraggono Permetti allutente di focalizzarsi sullessenziale
3. Tieni a mente lutente
Probabilmente non ha una conoscenza approfondita come la tua
Spiega che cosa fanno i pulsanti Tienilio informato su cosa sta facendo il programma
Considera come il tuo utente user la tua applicazione
Mouse e tastiera? Touch Screen pulsanti grandi Allaperto contrasto elevato
Realizzare interfacce utente avanzate
Agenda
Pratici consigli
Interfaccia Desktop
Interfaccia di monitoraggio
Aggiungere didascalie ai pulsanti Suggerimenti dinamici Personalizzazione del menu di esecuzione Utilizzo dei pannelli
Applicare le regole
Applicazione Desktop
Non fare loriginale
Usa controlli di sistema Aggiungi icone familiari ai pulsanti che effettuano azioni Usa la X per chiudere lapplicazione Permetti allutente di nascondere i display meno importanti Nascondi la barra degli strumenti di LabVIEW Usa dialoghi temporanei Personalizza il men di esecuzione
Pi con meno
Tieni a mente lutente
Crea una barra di stato e usa il cursore di occupato per aggiornare lutente Usa suggerimenti per spiegare le funzionalit Permetti allutente di cancellare operazioni lunghe Usa i pannelli per permettere di nascondere parti
Aggiungere didascalie ai pulsanti
Nuova paletta Silver
Suggerimenti dinamici
Personalizzazione del menu di esecuzione
Utilizzo dei pannelli
Area del titolo
Menu / Commandi Area dei contenuti espandibile
Barra di stato
Scomparsa di pannelli
Realizzare interfacce utente avanzate in Labview
Agenda
Pratici consigli
Interfaccia Desktop
Interfaccia di Monitoraggio
Panel Background
Applicare le regole
Console Display informativa
Non fare loriginale
Ispirati prendendo esempi dalla TV, dai siti web o applicazioni simili
Mostra unicamente le informazioni importanti in Pi con modo che siano riconoscibili allistante
meno
Tieneni a mente lutente
Audience passiva lappeal visivo pi importante
Background del pannello
Background con trasparenza
Risorse
UI Interest Group
[Link]
Objective - uno dei grandi vantaggi nellusare LabVIEW che le complessit del proprio sistema pc sono astratte, permettendo allutente di concentrarsi sui dati. Tuttavia a volte vogliamo avere un controllo pi diretto sulle performance del nostro codice ed qui che entrano in gioco alcune delle tecniche di ottimizzazione che vedremo oggi.
GESTIONE DELLA MEMORIA E DELLE PRESTAZIONI IN LABVIEW
Gestione della memoria e delle prestazioni
Agenda
Dove ottimizzare Strumenti per il profiling Ottimizzazione della memoria Ottimizzazione di esecuzione
Ridurre luso della memoria, aumentare la velocit La regola del 80/20
Aumentare le prestazioni in LabVIEW
Dove ottimizzare
Strumenti per il profiling
Ottimizzazione della memoria
Ottimizzazione di esecuzione
Benchmark Valutare le performance Identificare le are di miglioramento
Ottimizzazione Migliorare lefficacia Migliorare la velocit
Perch fare profiling sul proprio VI
L80 percento del tempo di esecuzione speso nel 20 percento del codice Miglioramenti in termini di performance hanno maggiore impatto nel 20 percento del codice Indovinare qual il 20 percento difficile
La regola del 80/20 sulle performance del software
Gestione della memoria e delle prestazioni
Agenda
Dove ottimizzare Strumenti per il profiling Ottimizzazione della memoria Ottimizzazione di esecuzione
Strumenti di Windows (Task Manager, perfmon) VI Profiler Desktop Execution Trace Toolkit
Strumenti per il benchmark
Livello SO
Task Manager, Perfmon
Livello LabVIEW
VI Profiler, VI di Benchmark
Livello VI
LabVIEW Desktop Execution Trace Toolkit
Strumenti di sistema
Windows Task Manager
Da unidea di massima se il collo di bottiglia a livello di memoria o di CPU Pu aiutare nellidentificare memory leaks ViewSelect Columns permette di aggiungere dettagli Permette di monitorare Processori Disk I/O Network Tx/Rx Memoria/Paging
Perform
Desktop Execution Trace Toolkit
Traccia sequenze di eventi di VI durante lesecuzione Informazioni su thread e VI Misura del tempo di esecuzione Identifica memory e reference leak
Sessioni multiple
Thread, CPU e memoria
VI
VI Profiler
Statistiche su tempo e memoria per i VI
ToolsProfilePerformance and Memory
Gestione della memoria e delle prestazioni
Agenda
Dove ottimizzare Strumenti per il profiling Ottimizzazione della memoria Ottimizzazione di esecuzione
Utilizzare la in place element structure Nascondere i punti Shift register Creazione di array
Componenti di un VI
Pannello Diagramma Dati
Valori di controlli/indicatori Dati di default Dati costante del diagramma a blocchi
Cosa c in un VI Pannello frontale
Noi carichiamo Diagramma a
blocchi
esclusivamente
Dati
Codice
Diagramma compilato in codice macchina
le parti di cui
Codice abbiamo
bisogno
Dati del pannello e del diagramma
I dati del pannello son detti Operate Data
Controlli e indicatori mantengono una loro copia dei dati, in modo che modifiche al pannello frontale non interferiscono con i calcoli nel diagramma
Operate Buffer
I dati del diagramma si dicono Execution Data
Ogni filo rappresenta un buffer di dati
Transfer Buffer
Transfer Data sono usati per fare copie
Evita problemi nel multithreading
Execution Buffer
Questo VI usa circa 8 KB di dati se aperto il pannello frontale, e circa 4 KB in caso contrario
Mostrare le allocazioni di buffer
Ogni filo un buffer Tipicamente nelle ramificazioni si creano copie Algoritmo In placement di ottimizzazione
La struttura In-Place Element
Permette di modificare in maniera esplicita i dati in place
Dove possibile gestire lallocazione di memoria
Type Coercion
Cambia il tipo di dato di un filo per farlo corrispondere al tipo di dato richiesto
Coercion Dot
Passare valori a SubVI
non bisogna sempre creare una copia
In Place
Shift Register
Lingresso sulla sinistra sempre in place con luscita sulla destra
Always In Place
Creare dei vettori
Quanti modi ci sono per creare un vettore?..
Bad
Rialloca memoria per il vettore ad ogni loop Nessuna ottimizzazione nella compilazione Memoria riservata in fase di load Valori aggiornati in place
Better
Best
Memoria preallocata
Lindicizzazione del tunnel elimina il bisogno di copie
Effetti dellottimizzazione della memoria
Gestione della memoria e delle prestazioni
Agenda
Dove ottimizzare Strumenti per il profiling Ottimizzazione della memoria Ottimizzazione di esecuzione
Usare i setting appropriati di esecuzione Limitare gli aggiornamenti dellinterfaccia
Utilizzo delle memoria nellinterfaccia utente
Ogni controllo della IU richiede memoria per memorizzare la struttura dei dati Quando in esecuzione, i dati di controlli ed indicatori sono una copia aggiuntiva dei dati del diagramma a blocchi I dati di default per i controlli possono contribuire ad un utilizzo non necessario della memoria Le IU dei SubVI generalmente non comportano un utilizzo della memoria
Panel and Diagram data
I dati del pannello son detti Operate Data
Controlli e indicatori mantengono una loro copia dei dati, in modo che modifiche al pannello frontalenon interferiscono con i calcoli nel diagramma
Operate Buffer
I dati del diagramma si dicono Execution Data
Ogni filo rappresenta un buffer di dati
Transfer Buffer
Transfer Data sono usati per fare copie
Evita problemi nel multithreading
Execution Buffer
Questo VI usa circa 8 KB di dati se aperto il pannello frontale, e circa 4 KB in caso contrario
LabVIEW multithreaded e Thread della IU
Gli aggiornamenti del pannello frontale avvengono nel tread della IU La esecuzione avviene in altri thread I dati condivisi devono essere protetti
LabVIEW crea una copia ulteriore detta buffer di trasferimento
Thread messaggi Loop IU Thread
Thread
Exec
Exec
Gestione dell IU
Aggiorna gli indicatori solo quando ne hai bisogno
Di norma pi di 10 volte al secondo eccessivo
I dati sono copiati
dal buffer di esecuzione al buffer di trasferimento dal buffer di trasferimento ai dati operativi degli indicatori
Defer Panel Updates
Defer Panel Updates il metodo da usare quando avvengono cambiamenti multipli alle propriet di controlli/indicatori, come ad esempio nei grafici
Risorse
In LabVIEW
LabVIEW Help
Sul Web [Link]/multicore [Link]/devzone
Obiettivo - Introduzione agli strumenti pi comuni usati per la
progettazione e la simulazione di sistemi avanzati e la loro completa integrazione con LabVIEW
DIFFERENTI APPROCCI ALLA PROGRAMMAZIONE IN LABVIEW
Modelli di progettazione di alto livello
Flusso di dati Codice C
Matematica testuale
Simulazione
Macchina a stati
Graphical System Design Platform
PC/Mac/Linux
PXI
CompactRIO
FlexRIO
Custom
Differenti approcci alla programmazione
Agenda
Strumenti per la simulazione
Nodo MathScript
Piattaforma per la prototipazione Esempi applicativi
Strumenti per la modellazione di sistemi
NI LabVIEW
MapleSoft MapleSim
ITI SimulationX
C / C++
The MathWorks, Inc. Simulink Software
Esterel SCADE
LMS AmeSim
NI MATRIXx SystemBuild
Piattaforma NI per la prototipazione
Control Design & Simulation Module DFD Toolkit
LabVIEW Real-Time
System ID Toolkit Simulation Interface Toolkit
LabVIEW FPGA
Statechart Module
NI Motion Control
LabVIEW Microprocessor
Targets
PXI
cRIO, sbRIO
Desktops & SBCs
32-bit mp
Universit di Michigan
Corso di mecatronica (U)
Segway Human Transporter Prof. Shorya Awtar, ME LabVIEW Real-Time & FPGA LabVIEW Control Design and Simulation Module CompactRIO hardware
Progetti di lavoro di gruppo multidisciplinari
Rensselaer Polytechnic Institute : HOT-V
Teoria
Progetto
Prototipo
Sviluppo
4 Settimane
8 Settimane
1 Settimana
Test HIL di pala eolica
Sviluppo di un sistema di test HIL per la simulazione degli effetti del vento, posizione di pitch e blade per il test del controller della turbina
Siemens Wind Power Denmark
Software - LabVIEW
Control Design and Simulation Real Time FPGA
Hardware - PXI Real Time OS
Multicore Analog I/O Serial
Mass-spring model | SimEx Interacting with Mathscript Window
Simulazione e controllo di sistemi dinamici
Sviluppo con flusso di segnale e file .m Un unico ambiente per:
Simulazione di sistemi dinamici Sviluppo su real-time per rapid control prototiping o simulazione hardware-in-the-loop
[LabVIEW ]\examples\Control and Simulation\Case Studies ..\Mechatronics\DC Motor | ..\Aerospace\F14
Differenti approcci alla programmazione
Agenda
Strumenti per la simulazione
Nodo MathScript
MathScript Real-Time Module Nodo MathScript
Un approcio aperto alla matematica
Programmazione grafica LabVIEW
Measurement Studio (Visual Basic, Visual C++) LabWindows/CVI (C) LabVIEW MathScript Signal Processing & Analysis
Signal Synthesis / Generation Signal Operations / Conditioning Windows Digital Filters Spectral Analysis Wavelets Joint-Time Frequency Analysis Correlation / Convolution Scaling, Mapping Modulation Transforms Point-by-Point
Mathematics
BLAS/LAPAC-based Linear Algebra Polynomial Operations Calculus, Numerics Ordinary Differential Equations Curve Fitting Optimization Interpolation / Extrapolation Probability and Statistics 1D & 2D Evaluation Zeros
LabVIEW MathScript RT
Programmazione testuale avanzata per la progettazione di controllo, elaborazione di segnali, e matematica
Centinaia di funzioni native Riutilizzo di codice .m custom Creazione di funzioni definite dallutente
Una soluzione nativa LabVIEW
Interfacce interattive e programmatiche Possibilit di programmazione ibrida Non richede software di terze parti
LV MathScript - Interactive User
Interfaces
MathScript
Estensione del proprio script file .m con: IU interattiva
LV MathScript Access to real-world I/O
MathScript
Estensione del proprio script file .m con: IU interattiva Accesso allI/O del mondo reale
LV MathScript Graphical Programming
MathScript
Estensione del proprio script file .m con: IU interattiva Accesso allI/O del mondo reale Programmazione grafica
LabVIEW MathScript RT Module
Distribuire file custom di tipo .m nella piattaforma NI Real-Time
Filtro a media mobile MathScript Node & Dataflow + cRIO
Obiettivo - La soluzione NI per il mondo embedded larchitettura RIO, che offre elevata flessibilit e prestazioni ed programmabile usando lo stesso software di progettazione grafica LabVIEW. Vedremo alcuni aspetti da tenere in considerazione programmando questi particolari sistemi di calcolo, prima di realizzare un sistema di monitoraggio e controllo.
COME STRUTTURARE L'ARCHITETTURA DI SISTEMI EMBEDDED
Come strutturare l'architettura di sistemi embedded
Agenda
Architettura
Benchmarking
FPGA
La tecnologia RIO Comunicazione tra e attraverso processi Funzioni di comunicazione
Processo di progettazione embedded
semplificato
Scelta del SO Scelta dellhardware
Scelta dellhardware per il test Scelta del linguaggio di programmazione
Piattaforma tecnologica NI RIO
Application IP Signal Processing IP Control IP Third-Party IP
LabVIEW
LabVIEW Real-Time LabVIEW FPGA
I/O
Middleware Driver APIs Device Drivers I/O Drivers
Processor
FPGA
I/O
Custom I/O
CompactRIO & Single-Board RIO
PXI,PC RIO (R Series,
FlexRIO)
Value
Valore Resistenza Performance Alte Performance
Programmazione LabVIEW su NI RIO
Interfaccia utente
Processore Real-Time
FPGA Riconfigurabi le
LabVIEW FPGA
Moduli di I/O
LabVIEW
LabVIEW RT
Driver I/O
Collegamenti in LabVIEW e piattaforma RIO
BUS di comunicazione BUS industriali
GPRS/GPS
COMUNICAZIONE
Windows Real-Time FPGA
ACQ
LOG
Communicazione nello stesso PC o Target Communicazione tra processi o cicli paralleli Priorit di elaborazione configurabili per i cicli Salvataggio dati offload o elaborazione demandata a unaltra CPU/Core/Thread allinteno dello stesso VI/eseguibile Comunicazione sincrona e asincrona
High
Med
Low
Opzioni di comunicazione tra processi
Variabili condivise (Shared Variable) Aggiornano i loop GUI con lultimo valore
Code Eseguono trasferimento continuo di dati tra cicli su target non deterministici
Eventi dinamici Registrano eventi dinamici per eseguire parti di codice Variabili funzionali globali (FGV) Basate su un subVI non rientrante per proteggere dati critici RT FIFO Trasferiscono dati continui tra loop time critical allinterno del singolo target RT
Opzioni di comunicazione tra target
TCP/IP e UDP Velocit di trasmissione e latenza ottimizzate attraverso protocolli di comunicazione a basso livello Variabili condivise (Shared Variable) Per realizzare rapidamente sistemi distribuiti tramite una configurazione drag-and-drop Accedono allultimo valore nelle varibili di tipo network published Network Streams Trasferimento dati punto a punto in LabVIEW con alta velocit e programmazione minima
Opzioni di comunicazione tra RT e FPGA
NI CompactRIO
LabVIEW Real-Time
LabVIEW Real-Time
FPGA I\O modules SCAN Interface I\O modules FPGA Interface
NI Scan Engine
I/O memory table
I/O Variables
RIO Scan Interface
User FPGA data FPGA Host Interface
Timing
LabVIEW FPGA VI
Opzioni di comunicazione tra RT e FPGA
Variabili di I/O Configurazione Drag-and-drop Semplice modo per trasferire dati tra VI Windows, RT e FPGA Reference Design Paletta di VI Host/RT che permette di configurare ed eseguire acquisizione dati Configure Acquisition Start Read Data Block
FPGA API Interface / DMA Accesso diretto alla memoria attraverso differenti componenti di un sistema
Come strutturare l'architettura di sistemi embedded
Agenda
Architettura
Benchmarking
FPGA
Strumenti per un corretto benchmarking
Ridurre luso della CPU
Creare un Time Budget
a)
Dare priorit a thread in base ai requisiti temporali
Evitare parallelismo eccessivo
b)
Riutilizzare pattern di programmazione comuni Fare benchmark per determinare larchitettura ottimale
c)
Limitare luso delle varriabili condivise Ridurre il carico di task (quando possibile)
Usare lFPGA per lacquisizione dati e algoritmi di controlllo Usare il PC Host per il salvataggio dati, il monitoraggio, e lhosting delle variabili condivise
d)
Creare un Time Budget
Uso CPU (%) = 100 * Somma(Loop 1, Loop 2,.., Loop n],
dove Loop n = (Durata / Periodo)
Task/Loop Controllo Durata (s) 400 Periodo (s) 1000 10,000 Task/Loop Controllo Durata (s) 400 Periodo (s) 1000 25,000
Monitoraggio 3,000
Monitoraggio 3,000
Salvataggio
16,000
30,000
Salvataggio
16,000
80,000
100 * (400/1,000 + 3,000/10,000 + 16,000/30,000) = 123%
100 * (400/1,000 + 3,000/25,000 + 16,000/80,000) = 72%
Nota: rate-monotonic scheduling - si da priorit pi alta ai task con alto rate
Strumenti per un corretto benchmarking
Benchmark con impostazioni di deployment Temporizza i tasks con lesempio RT Benchmarking
Strumenti per un corretto benchmarking
Cattura ed analizza utilizzando il Real-Time Execution Trace Toolkit Monitora le risorse attraverso NI Distributed System Manager
CPU Memoria Avvisi Stato dei VI Valori delle variabili condivise
Ulteriori considerazioni
Installa il set minimo di software
Per aumentare la RAM disponibile Minimizzare interrupt relative ai driver
Crea ed esegui il codice come unapplicazione standalone
Compilazione ottimizzata del codice Rimozione delloverhead dovuta alla IU del pannello frontale
Come strutturare l'architettura di sistemi embedded
Agenda
Architettura
Benchmarking
FPGA
Simulazione con accuratezza a livello ciclo
Flusso semplificato di sviluppo del FPGA
Progettazione
Cycle-Accurate Simulation
Simulazione
Compilazione
Tipi di simulazione
Funzionale o di comportamento Simulazione nel computer di sviluppo
Cycle-Accurate Simulazione con lutilizzo di un simulatore per FPGA commerciale
Simulazione con accuratezza a livello ciclo basata su codice VHDL
Registri DMA
Ambiente
(I/O reali
Host Interface
Codice FPGA
Simulazione con accuratezza a livello ciclo basata su codice VHDL
Simulatore di 3e parti
Registri DMA
Verifica gli ingressi e analizza le uscite
Codice FPGA
Ambiente del modello (I/O)
Simulatore supportato:
Mentor Graphics ModelSim LabVIEW 2010
Xilinx ISim NEW in LabVIEW 2011
Co-simulazione con accuratezza a livello ciclo basata su VI
Registri DMA
Environment
(I/O reali)
Interfaccia Host
Codice FPGA
Co-simulazione con accuratezza a livello ciclo basata su VI
Simulatore di 3e parti
Registri DMA
Verifica gli ingressi e analizza le uscite
Codice FPGA
Ambiente del modello (I/O)
Simulatori supportati: Mentor Graphics ModelSim SE NEW in LabVIEW 2011
Xilinx ISim NEW in LabVIEW 2011
RISORSE
Codice ed esempi
Risorse
Un solo indirizzo per trovare tutto il codice [Link]
EPD Example Programs Aggiornamenti dei driver Esempi della community
Esempi per IP FPGA
Esempi di codice testuale
[Link]/code
Percorsi formativi su LabVIEW
Formazione
Obiettivi:
Accelerare lapprendimento Ridurre i tempi di sviluppo e mantenimento delle applicazioni Applicazioni performanti, scalabili e mantenibili Validare le competenze e standardizzare i metodi di sviluppo
90
Formati di fruizione
Formazione
Good
Autoapprendiment o
Better
Corsi On-line Corsi in Aula
Best
Corsi On-Site
Manuali e CD kit Formazione secondo i propri ritmi Scadenze non imminenti
Formazione con istruttore live 4 ore al giorno Azzeramento delle spese di trasferta Utilizzo di postazioni remote attrezzate Possibilit di rivedere la registrazione del corso
Formazione con istruttore in aula 8 ore al giorno Tempi brevi dapprendimento Utilizzo di postazioni attrezzate Lontano dalle distrazioni quotidiane
Istruttore presso la vostra sede Formazione rivolta a team in azienda Piani formativi personalizzati Date e durata concordate Azzeramento delle spese di trasferta Attrezzature didattiche fornite da NI Test di valutazione
91
NI Training Credits
Ogni servizio Customer Education usufruibile/convertibile tramite NI Training Credits:
1 NI Training Credit = giornata di formazione x persona Corsi in tutti i formati (presso NI, on-line, onsite) Esami di certificazione NI Training & Certification Membership .. Validi 1 anno dalla data di nostra fatturazione Flessibilit di utilizzo dopo lacquisto Soluzione per formare singoli o team di tecnici Metodo per allocare budget in modo produttivo
I benefici:
Dove trovare le informazioni
Formazione
[Link]/training/i
Calendario corsi e sedi di formazione Agende dettagliate dei corsi Soluzioni formative convenienti
Quiz per valutare le proprie competenze
Informazioni sul programma di certificazione
Contattati:
Telefono: E-mail:
+39 02 41309217 [Link]@[Link]
93
Per i partecipanti al LabVIEW Tour 2011
OFFERTA
Gratis 2 Training Credits (equivalenti ad 1 giorno di formazione
offerta del valore di 418 +Iva)
Utilizzabili entro il 30 Marzo 2012 per uno dei seguenti corsi
LabVIEW Core 3 (3 giorni)
Advanced Architectures for LabVIEW (3 giorni) Managing Software Engineering in LabVIEW (2 giorni)
Per ricevere offerta formale selezionare sul questionario Offerta Training Credits o scrivere a [Link]@[Link] E necessaria conferma dordine con 10 giorni danticipo
Cogli lopportunit con la Manutenzione Software
1. Massimizza linvestimento software
La tecnologia dinamica ed i tempi di sviluppo sono ridotti per essere competitivi, innovativi e produttivi
2.
Incrementa la produttivit e le performance, riducendo il fermo macchina
Contatta il Supporto Tecnico per una soluzione pi rapida dei tuoi problemi 10% di sconto sulla Formazione c/o le ns. sedi
3.
Scopri i vantaggi economici
Risparmia il 67% rispetto al costo di aggiornamento della licenza Semplifica la tua pianificazione del budget
Licenza Costo Costo della dellaggiornamento Manutenzione SSP Costo del Software Contract
LabVIEW Full Developer Suite
1.388 2.474
555 990
500 891
NIDays 2012 - Forum Tecnologico sulla Progettazione Grafica di Sistemi
Roma 29 Febbraio 2012 Ergife Palace Hotel 900 mq di area espositiva con oltre 25 espositori Robotics Summit 2012 4 Sessioni tecniche parallele Best Application 2011 Special VP Guest dalla corporate di NI
96
[Link]@[Link]
GRAZIE PER LATTENZIONE