Corso di Misure per l Automazione e la Produzione Industriale
IL LABVIEW
LabView Ambiente di sviluppo grafico: - Codice - Interfaccia utente Modulare Compilatore 32 bit Elevato numero di funzioni Librerie per la gestione della strumentazione Librerie per l'acquisizione dati Possibilità di includere routine in altro linguaggio
Librerie di funzioni Calcolo, confronto, cicli di controllo Operazioni su aggregati di dati (stringhe, array,...) I/O su file Gestione strumentazione (RS232, 488, VXI,...) Acquisizione dati Analisi (Generazione ed elaborazione segnali, Statistica, Fitting, Algebra lineare,...) Comunicazione (DDE, TCP/IP, ActiveX)
Virtual Instrument (VI) Il Front Panel Il Block Diagram L icona/connettore
Il Front Panel E l interfaccia utente dell applicazione Contiene: - Controlli (input) - Indicatori (output)
Elementi del Front Panel Icona/Connettore Toolbar Controllo numericol Controllo Knob Legenda Etichetta Indicatore Chart
Il Block Diagram - E il codice sorgente dell applicazione (in Linguaggio G) - Controlli e indicatori del pannello appaiono come Terminali - Nodi o funzioni: ricevono dati dai connettori di ingresso e forniscono dati su quelli in uscita
Elementi del Block Diagram Indicatore Terminale Controllo Terminale Esempio 1 Costante numerica Nodo Somma
Dataflow programming Un nodo è eseguito quando i dati sono disponibili a TUTTI i suoi terminali di ingresso Un nodo fornisce i dati ai suoi terminali di uscita quando è terminata la sua esecuzione Se non esiste dipendenza tra due nodi, l ordine con cui verranno eseguiti non è prevedibile!
Il modello di programmazione di LabView è... Data driven e non è... Control driven Event driven Object oriented
Dataflow programming Un filo collega un unica sorgente di dati con uno o più nodi Il colore e lo spessore del filo individuano il tipo di dato Scalar Array 1D Array 2D Numeri Arancione (floating point) Blu (interi) Booleani Verde Stringhe Viola
L ambiente di sviluppo: Le palette Palette delle Funzioni (Diagramma) Palette dei Controlli (Pannello)
L ambiente di sviluppo: la Toolbar Debugging Stop Continuous Run Run
L ambiente di sviluppo: i Tool Tastiera: Tab Spazio Operating: Inserimento dati Positioning: Posizionamento e ridimensionamento Labeling: Gestione etichette Wiring: Collegamento (nel Block Diagram) Object pop-up: Menu dell'oggetto Scrolling: Scorrimento della finestra Breakpoint: Inserimento stop (debug) Probe: Visualizzazione dati nei fili (debug) Color copy: Copia di un colore Coloring: Per colorare un oggetto
Combinazioni di tasti <Ctrl-R> Esegue il VI <Ctrl-E> Mostra pannello/diagramma <Ctrl-H> Finestra di context help <Ctrl-B> Cancella fili interrotti <Ctrl-F> Contenuto della memoria <Tab> e <Spazio> Tools <Shift> Incremento/decremento veloce
Tecniche di debugging Click sulla freccia spezzata: Info sull errore Highlighting button: Esecuzione animata Probe: Mostra il valore dei dati mentre scorrono lungo i fili Breakpoint: ferma l esecuzione quando i dati sono disponibili sul filo Single Step: Esecuzione passo-passo Step Over: Esecuzione passo-passo, non entra nei nodi Step Out: Esecuzione passo-passo, esce dai nodi nei quali è entrato
SubVI Un VI può essere usato nel Block Diagram di un altro VI di livello più alto Nel VI chiamante, un SubVI è rappresentato con la sua icona
Disegno dell icona Associazione di controlli e indicatori alle caselle del connettore Realizzazione di un SubVI Salvataggio su disco
Chiamata ad un SubVI Functions >> Select a VI Trascinare l icona sul diagramma chiamante Esempio 2
Il ciclo while Da Functions >> Structures Iteration terminal Qui va il codice da iterare Ripetere? Conditional terminal " Il ciclo termina quando si fornisce FALSE al conditional terminal " Il codice è eseguito almeno una volta " L'iteration terminal dà il numero di iterazioni raggiunto
Ciclo while: esempio Esempio 3
Label Waveform chart Legenda Palette
Visualizzazione con waveform chart Ad ogni iterazione il waveform chart riceve uno scalare Esempio 4
Tipi numerici e conversioni " Interi con segno: I8, I16, I32 " Interi senza segno: U8, U16, U32 " In virgola mobile: SGL (32), DBL (64), EXT " Complessi Coercion dot I 16 DBL DBL
Ciclo while temporizzato Esecuzione di azioni ad intervalli prestabiliti Impegno limitato di risorse Adeguamento ai tempi di risposta dell'utente
Grafici multiple plot Bundle (nella palette Functions >> Cluster): assembla i suoi ingressi in un unico cluster Un cluster è una struttura che raccoglie più elementi in un nuovo tipo di dato
Shift Registers Trasferiscono dati da una iterazione alla successiva Si inseriscono con un right-click sul bordo del loop Il terminale destro conserva il dato alla fine della iterazione Il terminale sinistro fornisce il dato alla iterazione successiva Inizializzazione Da passo precedente Per il prossimo passo
Esempio 5 Shift Registers: esempio
Shift Registers 1 loop prima 2 loop prima 3 loop prima L'ultimo valore va passato qui Si possono aggiungere altri shift register per ottenere valori di iterazioni precedenti
Esempio: Running average
Il ciclo for Numero di iterazioni da eseguire Numero corrente di iterazioni Esegue il codice al suo interno un numero prestabilito di volte
Arrays " Collezioni di elementi (dati) dello stesso tipo " Una o più dimensioni, fino a 2 31 elementi per dimensione " Si accede agli elementi con un indice per dimensione " Il primo elemento ha sempre indice 0 Indice 0 1 2 3 4 5 6 7 8 9 array di 10 elementi 1.2 3.2 8.2 8.0 4.8 5.1 6.0 1.0 2.5 1.7 Array bidimensionale 0 1 2 3 4 0 1 2 3 4 5 6
1. Selezionare Array dalla palette dei controlli Controlli e indicatori per gli array 2. Inserire un controllo del tipo desiderato nella Array Shell Add Dimension per 2D arrays Procedura analoga per le costanti array
Autoindexing Il loop accumula l'array al suo margine Auto-Indexing abilitato (Default nel For) 1 D a r r a y 0 1 2 3 4 5 Auto-Indexing disabilitato (Default nel While) Scalare risultato dell'ultima iterazione
Creazione di array 2D 1D array # righe 0 1 2 3 4 5 # colonne 0 1 2 3 2D array Il loop interno crea gli elementi di ogni riga Il loop esterno sovrappone le righe
Autoindexing e lettura di array Non deve essere impostato direttamente Il ciclo viene eseguito per un numero di volte pari al numero di elementi dell'array collegato
Funzioni per gli array (1) Array 7 3 2 5 4 Number of Elements element dimension size Initialize Array initialized array 10 4 10 10 10 10 Esempio 6
Funzioni per gli array (2) array Elemento Array Elemento Array 3 2 5 7 1 4 2 Build Array Array con il nuovo elemento accodato 3 2 5 7 1 4 2 La funzione Build Array è resizable Nuovo array 1D Array 1D Array 3 2 5 1 4 2 3 2 5 1 4 2 2D Array Dal menu di contesto: change to element change to array 1D Array 1D Array 3 2 5 1 4 2 3 2 5 1 4 2 1D Array
Funzioni per gli array (3) array index(0) length subarray Array Subset Array 1 2 7 3 2 5 8 Index Length 2 4 7 3 2 5 Array Subset array index element Array 3 2 5 7 1 4 2 Index 2 Element 5 Index Array 2D Array 3 2 5 1 4 2 Row Index Column Index 0 2 Element 5
Funzioni per gli array (4) Index array Estrae una colonna 0 0 0 Dal menu di contesto della Index Array: " Add dimension " Disable input Estrae una riga
Polimorfismo Ingressi delle funzioni di tipo diverso " Comportamento dipendente dal tipo degli ingressi Tutte le funzioni aritmetiche sono polimorfiche Combinazione Scalare + Scalare 5 2 7 Risultato Scalare Array + Scalare 1 4 2 2 3 6 4 Array Array + Array 3 2 5 1 4 2 4 6 7 Array Array + Array 1 4 2 3 2 5 7 4 6 7 Array
Waveform Graph Tracciano un array di valori numerici rispetto all'indice Legenda Palette Esempio 7
Single-Plot Waveform Graph 1D Array Terminale del Waveform Graph (è un Array 1D) 1 D A r r a y Terminale del Waveform Graph (è un Cluster) " X0 è il valore iniziale per le ascisse " deltax è la distanza orizzontale tra i punti del grafico
Multiple-Plot Waveform Graph Build Array 1 D A r r a y s 2D array Terminale del Waveform Graph (è un Array 2D) clusters cluster array Terminale del Waveform Graph (è un Array di Cluster) Esempio 8
XY Graph Traccia un array rispetto ad un altro Single-plot XY Graph Multi-plot XY Graph
I Cluster " Combinano più strutture dati in un nuovo tipo dati " Possono contenere elementi di tipo diverso " Si possono definire costanti, controlli e indicatori di tipo Cluster " L'ordine degli elementi è importante Unbundle
Altre funzioni per i Cluster Modifica di un elemento di un Cluster:
La struttura Case " Solo un sottodiagramma viene eseguito " Il valore passato al selettore determina il codice da eseguire " Il selettore può essere booleano, numerico o stringa Selettore booleano: if...then...else Esempio 9
Ingressi ed uscite del case (tunnel) Tunnel di uscita " In TUTTI i case devono essere collegati TUTTI i tunnel
La struttura Case " Con selettori di tipo numerico o stringa si possono gestire scelte multiple " Add Case dal menu di contesto per aggiungere nuove scelte " Un Case deve essere quello di default Esempio 10
Menu di scelta " I controlli List & Ring associano un intero ad una voce selezionabile
La struttura Sequence " I sottodiagrammi vengono eseguiti uno dopo l'altro " Consente di fissare l'ordine di esecuzione di VI non dipendenti Esempio 11
Sequence Locals Passano dati da un frame al solo frame successivo Si definiscono sul bordo della Sequence Esempio 12 Dati non disponibili Sequence local in uscita dal Frame 1 Dati disponibili
Formula Node - Implementazione di equazioni complicate - Variabili create sul bordo - I nomi delle variabili sono case sensitive - Ogni istruzione deve terminare con un punto e virgola (;) - <Ctrl-H> per l'elenco delle funzioni disponibili Esempio 13
Formula Node: Conditional Branching if (x >= 0) then y = sqrt(x) else y = -99999.0 end if Conditional Operator False Condition Condition True Condition
Formula Node: Variabili temporanee " Si definiscono come uscite, ma non vengono collegate
Le Stringhe Una stringa è una sequenza di caratteri Ogni carattere ha una corrispondente codifica numerica in byte (8 bit) secondo lo standard ASCII I primi 32 dei 256 caratteri ASCII non sono visualizzabili (controllo) Gli ultimi 128 caratteri costituiscono il set esteso Impieghi: visualizzazione di messaggi, I/O su file, controllo di strumentazione Esistono controlli e indicatori di tipo stringa Stringa: V D C - 1 2. 4 5 6 # ASCII: 86 68 67 32 45 49 50 46 52 53 54
Display Modes per gli indicatori stringa Normal display Password display \ code display Hex display Backslash codes per alcuni caratteri di controllo: \b backspace \s spazio \r return (CR) \n new line (LF) \t tab Esempio 14
Funzioni per le stringhe (1) String Length String Length = 20 Concatenate Strings Strings The quick brown fox jumped over the lazy dog. Concatenated String Esempio 15
Funzioni per le stringhe (2) String Subset String Length Offset DC Substring Match Pattern quick brown fox
Funzioni per le stringhe (3) Format Into String ( è resizable ) Scan From String ( è resizable ) Esempio 16
Simulazione di segnali Generatore di 1) Onda Sinusoidale 2) Onda quadra 3) Onda Trinagolare 4) Onda a rampa
Simulazione di segnali GET WAVEFORM COMPONENTS BUILD WAVEFORM Esempio 17
Analisi di segnali Misure nel dominio del tempo e della frequenza
Analisi di segnali Esempio 18