Introduzione a National Instruments LabVIEW
Cosa è e a cosa serve E un linguaggio di programmazione grafico orientato a: Acquisizione dati Controllo di strumenti
VME VXI e molto altro! Profibus GPIB
Installare LabVIEW LabVIEW installato nei computer del laboratorio, con licenza campus Per provare sul proprio PC senza licenza: versione di prova (valida 30 giorni) scaricabile dal sito National Instruments: https://lumen.ni.com/nicif/i/evallvuser/content.xhtml Necessari circa 2 GB liberi su disco Attenzione alle versioni! In generale, progetti salvati da versioni precedenti possono essere aperti con una qualsiasi versione successiva. E possibile salvare per la versione corrente o fino a una certa versione precedente... Attenzione in particolare quando si ha a che fare con installazioni su PC datati con versioni di LabVIEW di qualche anno fa.
LabVIEW: una lunga storia... al 2011 Dal 1986... (sull unico personal computer allora esistente, ovvero il Macintosh)
LabVIEW: una lunga storia... 5.0 6i (6.0) 6.1 7express (7.0) 7.1 8.0 8.20 8.5 8.6 2009 (9.0) 2010 (10.0) 2011 (11.0) 1998 2000 2001 2003 2004 2005 2007 2008 Nei laboratori di fisica delle alte energie si possono trovare anche versioni antiche... ma niente paura!
LabVIEW: un prodotto modulare In realtà le funzionalità di base e lo stile di programmazione non sono cambiate in modo radicale sin dalle prime versioni, anche se il prodotto si è arricchito di una quantità enorme di funzioni e librerie aggiuntive Un prodotto modulare Molte librerie e funzioni aggiuntive sviluppate da produttori third party sono state acquisite da National Instruments e inserite nella versione successiva di LabVIEW o rese facilmente integrabili come librerie standard: toolkit Moltissimi add-on o toolkit scaricabili dal sito National Instruments (ad esempio, alcuni plugin per salvare o rileggere dati in formati standard) Esempio: Internet toolkit, tcp/ip socket, httpd server, ftp server, ecc
LabVIEW: un prodotto modulare
Principali componenti Signal processing, analysis, and connectivity Integration with real-time systems, FPGAs, and other deployment hardware Data management, data logging, and reporting Control and simulation Application distribution
Hardware e sistemi embedded Molti produttori di hardware forniscono driver e codice di esempio e in qualche caso tutto ciò che serve a controllare e rendere funzionale il dispositivo in forma di librerie e vi di LabVIEW National Instruments ha anche cominciato a sviluppare sistemi embedded, nei quali il codice LabVIEW implementato direttamente nei dispositivi: Compact Field Point Dati disponibili su server httpd
Il linguaggio di LabVIEW fu pensato per abbinare un ambiente di sviluppo grafico con un metodo di programmazione basato sul flusso dei dati, anziché sui flussi di controllo come nei linguaggi sequenziali tradizionali. Una delle conseguenze fondamentali di questa originaria scelta è la sua naturale inclinazione al parallelismo La principale metafora dello strumento virtuale: virtual instrument (vi)
Lo strumento virtuale Diagram Control Indicator Panel
Diagramma a blocchi Colore e spessore del filo=tipo di variabile Real Array di Real Integer Boolean Cluster (struttura di variabili di tipo diverso) String Diagram Bordo spesso=controllo Bordo sottile=indicatore
VISA Linguaggio standard di input/output per la programmazione di strumenti e dispositivi API (application program interface) di alto livello che si interfaccia con i driver di basso livello VISA Seriale GPIB VXI Driver seriale (sistema operativo) NI 488.2 NI-VXI Risorsa=strumento, risorse gestite da un unico Resource Manager Sessione=connessione alla risorsa, attraverso il RM Messaggi e eventi
Lo strumento virtuale Sub-vi Block Diagram Driver Control Indicator Panel Hardware
Panel Font, allineamento, ecc. toolbar Icona/connettore Esegui Esegui in loop Interrompi l esecuzione Palette dei controlli e degli indicatori Sospendi l esecuzione
Block Diagram Toolbar Palette delle funzioni e delle strutture di dati
Diagram toolbar Highlight: attiva/disattiva la modalità di debug. In modalità debug, quando si manda in RUN il vi, l esecuzione avviene passo per passo, mostrando il flusso di dati (e i valori delle variabili) nel block diagram. Step into: fa uno step di esecuzione, e quando arriva a un vi, entra e si mette in attesa dello step successivo Step over: esegue completamente un nodo senza entrare nel nodo (se è vi) e si mette in pausa al nodo successivo Step out: completa l esecuzione del nodo corrente e sale al livello superiore (se si è già al livello top è disabilitato)
Connettori, fili, nodi, ecc. Seleziona colore Seleziona/Sposta Connetti filo Break-point Modifica/inserisci testo Scorri Cattura colore Seleziona colore Probe (guarda il valore)
Diagram: strutture di controllo CASE (If/then) LOOP (while) If =FALSE If =TRUE Può funzionare come uno switch/case del C con variabili numeriche, string, eccetera Attenzione al default!
Diagram: strutture di controllo CASE (If/then) LOOP (while) Variabile integer che incrementa il suo valore per ogni ciclo del loop (0,1,2, ) Shift register: contiene il valore di una variabile che viene riportata al ciclo successivo While loop Esegue tutto il contenuto fino a che: - La variabile boolean diventa TRUE (stop when ) oppure - La variabile boolean diventa FALSE (loop until )
Loop
Diagram: strutture di controllo LOOP (for) Ripete N volte il codice contenuto, N deve essere una variabile integer Nota: anche in LabVIEW esiste il cast, ovvero il meccanismo per cui una variabile può essere trattata come variabile di tipo diverso. Esempi: Nel caso del numero di iterazioni del for loop, se si mette in input al connettore N una variabile numerica di tipo double essa verrà forzata a integer Nel caso in cui si faccia un operazione aritmetica tra variabili integer e double, il risultato sarà evidentemente un double L operazione di cast viene segnalata con un puntino (attenzione: si può disabilitare)
(right click) N.B. Approfittiamo per sottolineare che, a parte versioni molto precedenti, la visualizzazione di controlli e indicatori è (di default) di tipo icon
Diagram: strutture di controllo LOOP (for) Come nel while-loop, i è un integer che contiene l indice del loop Il nodo di ingresso in un loop è detto tunnel Naturalmente non modifica le variabili scalari Di default tratta anche le variabili di tipo array senza modificarle
Attenzione agli spezzoni di filo orfani Spesso segnalano una connessione mancante o venuta a mancare e dunque un interruzione nel flusso del dato Rendono non eseguibile il vi (freccia RUN rotta )
Diagram: strutture di controllo LOOP (for) array di integer a 2 dimensioni Calcola la dimensione di un array Estrae una componente da un array Il tunnel di ingresso in un loop, di default tratta le variabili di tipo array senza modificarle Se invece si attiva l indexing ciascun ciclo del loop accederà a una compentente dell array Si può allora lasciare il connettore N senza input, attivando l auto-indexing: il numero di iterazioni del loop viene determinato dalla dimensione dell array
Diagram: strutture di controllo SEQUENCE: una successione di frame eseguiti uno dopo l altro Variabile locale (definita in questo frame) Variabile locale (non ancora disponibile perché definita in un frame successivo) Variabile locale definita in un frame precedente La sequence sopra equivale semplicemente a:
Sequence
Panel: indicatori e controlli Waveform chart: rappresenta l andamento dei valori assunti da una variabile numerica Push button: controllo di tipo boolean Gauge: indicatore di tipo analogico del valore istantaneo di una variabile numerica Molti altri elementi: menù, tabelle, elementi grafici
Panel LabVIEW 2011 (Windows XP) LabVIEW 7 express (Sun Solaris)
Boolean
Boolean Determina il comportamento meccanico del bottone: - Torna sù o rimane schiacciato? - Cambia stato quando viene schiacciato o quando viene lasciato? - Latch?
Numeric (e Graph)
Numeric Suggerimento: Il tasto destro del mouse è spesso molto prezioso
Array
drag
Cluster
String
Uno strumento fondamentale!... Context help
Gestione file
Oggetto di tipo file-path (simile al tipo string) Costante ring integer file-reference Cluster con le variabili di errore Gestione file Apre il file (attraverso il sistema operativo) e restituisce un puntatore di tipo file-reference Scrivi una string Leggi una string Mostra la string in un indicatore (string) Chiudi il file (attraverso il sistema operativo)
Graph
Graph Express vi Non sembra fare tanta differenza
Express vi La principale differenza tra vi e express vi è che quest ultimo non richiede in pratica programmazione, ma vengono configurati con delle dialog box
Express vi torniamo al nostro esempio del graph XY Supponiamo di voler aggiornare il graph in modo dinamico
Simula un segnale sinusoidale Wait
Express vi La principale differenza tra vi e express vi è che quest ultimo non richiede in pratica programmazione, ma vengono configurati con delle dialog box Molto utili e semplici da usare Esempio tipico è l analisi dei segnali:
Express vi Gli express vi prevedono un nuovo tipo di dati il dynamic data type E di conseguenza, lo strumento di conversione da/a a dati non dinamici (che è naturalmente un express vi a sua volta)
Legge una tensione, per esempio una sonda di temperatura Converti da gradi F a gradi C vi e sub-vi Ripeti fino a che non viene spinto il bottone di stop
vi e sub-vi Blocco di codice ripetuto Blocco di codice ripetuto
vi e sub-vi Un nuovo vi con il blocco di codice che ci interessa Doppio click per modificare l icona (utile per distinguere i diversi vi che creiamo nel momento in cui li riutilizzeremo come sub-routine ) Singolo click per modidicare il connector pane Click su indicatore/controllo e su un connettore per associarli A questo punto sarà utilizzabile all interno di un altro vi Naturalmente connettendo un input (controllo) boolean e un output (indicatore) double
vi e sub-vi Il codice da cui siamo partiti diventa quindi più leggibile:
Gerarchia dei vi Attenzione: Ciascun vi può essere il top della gerarchia se viene aperto ed eseguito in standalone Un vi può essere richiamato da diversi vi all interno della stessa gerarchia: attenzione agli input/output! Non solo il numero e tipo di connettori, Ma anche la loro posizione sul connector pane Non è così complicato Viene mostrata la gerarchia anche di alcuni vi forniti di default da LabVIEW: in questo esempio Write to spreadsheet file e Read from spreadsheet file
Se uno o più sub-vi non vengono trovati o non sono eseguibili (per esempio il loro connector pane è differente da quello che il vi top richiederebbe), naturalmente il vi top non è eseguibile, e questo viene segnalato dalla freccia RUN rotta Una finestra elenca i sub-vi che hanno errori e il dettaglio degli errori
Gerarchia dei vi Attenzione! LabVIEW ricorda la posizione nel filesystem dei sub-vi che vengono richiamati da un vi, Quando si apre un vi già salvato, cercherà di aprire il file che corrisponde a ciascun vi nella posizione in cui si trovava quando è stato salvato il vi top, poi avvia una ricerca automatica (sullo stesso identico nome di file, ma in altre directory), infine se non lo trova apre una dialog per farlo localizzare all utente Quando si chiuderà il vi top sarà necessario salvarlo anche se solo qualche sub-vi è stato trovato in una directory differente rispetto all ultimo salvataggio
Variabili locali
Variabili locali Da indicatore (variabile in write) diventa controllo (variabile in read)
Variabili globali Modifica e salva su disco il pannello Utilizzabile e modificabile da ogni vi e sub-vi nella gerarchia Di fatto, un sub-vi essa stessa Modificabile anche da qualsiasi altro vi in memoria (che naturalmente include la variabile globale), anche se non fa parte della gerarchia
A proposito di locali e globali Spesso si dice che un buon stile di programmazione non dovrebbe prevedere l uso di variabili globali e, in LabVIEW, nenache delle variabili local E certamente vero che rallentano l esecuzione e richiedono più memoria ma spesso semplificano la programmazione e cosa ancora più importante migliorano la leggibilità del Block Diagram
In generale: LabVIEW chiede di salvare il vi quando lo si chiude ogni volta che la versione in memoria è/appare differente da quella salvata sul disco (nell esempio anche se nessuna modifica è stata fatta dal programmatore, il vi è stato salvato su un diverso sistema operativo e dunque le chiamate di sistema sono state ricompilate )
C-include (cin)
C-include (cin) (right click)
Sempre più C: LabWindows/CVI
LabWindows/CVI E un IDE (Integrated Development Environment) ANSI C Fornisce una serie di strumenti per lo sviluppo di interfacce grafiche ed è naturalmente orientato all acquisizione dati e al controllo di strumenti Ha naturalmente un gran numero di librerie standard Non è solo una questione di linguaggio grafico piuttosto che ANSI C: LabWindows/CVI permette lo sviluppo di sistemi real time
Gestione file Nella gestione dei file può manifestarsi qualche (in genere piccola) incompatibilità tra una versione e l altra o tra diverse piattaforme LabVIEW 7 express (Sun Solaris) LabVIEW 2011 (Windows XP)
MAX
MAX
Labview è
Manuali, guide, tutorial... Introduzione a LabVIEW online: http://www.ni.com/gettingstarted/ labviewbasics/i/ Tutorial completo: www.ni.com/pdf/manuals/320998a.pdf Wiki pages dedicate: http://labviewwiki.org/labview Labview portal: http://www.labviewportal.eu/en/home