L ambiente di lavoro di LabVIEW FRONT PANEL dove compaiono gli oggetti che l utente vede (cioè la GUI dell utente) BLOCK DIAGRAM dove il programmatore disegna il codice che corrisponde a ciò che l utente vede Finestre di strumenti
Nuovo programma Un programma nel linguaggio LabView è detto VI: Virtual Instrument Supponiamo di realizzare un programma che in una finestra utente richieda 2 numeri in input e dia in uscita il risultato della seguente operazione: Cap01Es01: 2 2 2 y = x + x = x x + x x 1 1 1 2 2
Analisi del programma fatto Nel semplice codice appena disegnato troviamo gli elementi base di programma per LabVIEW: Nodi: i Digital Controls x1 e x2 ed il Digital indicator y Wires: le linee che collegano i nodi Data Packets: le informazioni che circolano tra i nodi tramite i wires. Per vedere quest ultimi utilizzare lo strumento di debug (lampadina)
Tipi di dati numerici Nell esempio appena fatto i controlli e gli indicatori compaiono con la scritta DBL, cioè LabVIEW li considera dei numeri in virgola mobile, doppia precisione Vediamo il formato dei numeri in LabVIEW: Integer Type Abbr. Range Signed 32 bit I32-2.147.483.648 to 2.147.483.647 Signed 16 bit I16-32.768 to 32.767 Signed 8 bit I8-128 to 127 Unsigned 32 bit U32 0 to 4.294.967.295 Unsigned 16 bit U16 0 to 65535 Unsigned 8-bit U8 0 to 255
Float. Type Abbr. Bits Decimal digits Extendedprecision floating-point Double-precision floating-point Single-precision floating-point EXT 128 varies from 15 to 33 by platform Range Minimum positive number: 6.48e-4966 Maximum positive number: 1.19e+4932 Minimum negative number: -6.48e-4966 Maximum negative number: -1.19e+4932 DBL 64 15 Minimum positive number: 4.94e-324 Maximum positive number: 1.79e+308 Minimum negative number: -4.94e-324 Maximum negative number: -1.79e+308 SGL 32 6 Minimum positive number: 1.40e-45 Maximum positive number: 3.40e+38 Minimum negative number: -1.40e-45 Maximum negative number: -3.40e+38
Numeri complessi Sequenza di due numeri reali: Float. Type Bits Decimal digits Complex Extendedprecision Complex Double-precision Complex Singleprecision 256 varies from 15 to 33 by platform Range Same as extended-precision floating-point for each (real and imaginary) part 128 15 Same as double-precision floating-point for each (real and imaginary) part 64 6 Same as single-precision floating-point for each (real and imaginary) part
Sempre sui tipi di dati Due nodi possono accettare in ingresso o produrre in uscita dati che possono essere: Singoli numeri Interi, virgola mobile, carattere, Arrays: vettori di numeri, stringhe, Clusters Un cluster è un insieme eterogeneo di dati. Nel modo di pensare di LabVIEW i dati viaggiano in pacchetti (data packets). Se un pacchetto, per portare l informazione dovuta, necessita, per esempio, di mettere insieme un array con una stringa, realizza un cluster (pensate alla struttura del C)
Waveform data type Dalla versione 6i di LabVIEW, esiste un nuovo tipo di dati: Waveform Esso è un cluster costituito da: Componente t0 dt Y Descrizione Rappresenta il tempo iniziale della forma d onda. E un DBL ed è definito come un tempo, tipo l output della funzione Get Date/Time In Seconds. Rappresenta l intervallo temporale in secondi fra un punto della sequenza temporale e il successivo (se esiste più di un punto) E la sequenza temporale vera e propria. Può essere un array o un singolo numero
Wires e Data types In base all informazione che si passano due nodi, il filo di collegamento assume aspetti diversi: Colore Blu Arancione Magenta Verde Marrone Tipo di dati Intero (Numerico) Virgola mobile (Numerico) Cluster che contiene tipi di dati non numerici(booleani, clusters, arrays ) Booleani Cluster con dati solo numerici
Il pannello dei controlli Il pannello dei controlli serve per mettere nel Front Panel una serie di controlli visibili all utente Ad ogni controllo corrisponde un nodo nel block diagram.
Il pannello delle funzioni Contiene nodi di diverso tipo da collocare nel Block Diagram Gli oggetti piazzati tramite questo pannello esistono solo nel Block Diagram e non nel Front Panel
Prendere decisioni con LabVIEW Il costrutto if/then/else è alla base di tutti i linguaggi di programmazione. Vediamo come lo implementa LabVIEW if valore > soglia then switch on LED
Controllo del flusso In LabVIEW il controllo del flusso del programma può avvenire in due soli modi: Dataflow, cioè unendo i nodi con i fili Utilizzando una Sequence Structure:
Arrays In LabVIEW si possono realizzare vettori tipi di dati omogenei Per esempio di numeri: [4, 6, 8, 3, 0, 1] o di stringhe [ Barbara, Paola, Francesca, Luisa ] Non si possono effettuare vettori eterogenei. Per questo occorroni i Clusters I vettori possono essere mono o multidimensionali Creiamo un vettore con LabVIEW: Front Panel -> Control Palette -> Array
Loops In LabVIEW è possibile implementare i loops di tipo: for i=0 to N-1 While continue if true stop if true
Grafici I grafici delle grandezze acquisite sono una componente fondamentale di un programma di DAQ LabVIEW ha diversi tipi di grafici: Grafico Waveform Chart Waveform graph XY Graph Intensity Chart Intensity Graph Digital waveform graph Descrizione Essenzialmente visualizza un punto o un gruppo di punti alla volta. Ha memoria interna chiamata history Visualizza un intero array (o più arrays) in un colpo solo, con punti equispaziati nell ascissa x. Non ha history Visualizza un intero array (o più arrays) in un colpo solo, con punti a spaziatura arbitraria nell ascissa x. Non ha history Vedi libro Comodo per visualizzare dati digitali (DAQ)
SubVI Se LabVIEW non ha la funzione che voi cercate e, per esempio, voi dovete utilizzarla ripetutamente, è conveniente creare un SubVI Questo corrisponde a crearsi una propria libreria di funzioni Supponiamo di dover creare un SubVI che esegue il teorema di Pitagora: a c 2 c = a + b 2 b
Clusters Un formato di dati molto usato in LabVIEW sono i clusters Un Array è un gruppo di dimensione variabile di oggetti dello stesso tipo Un Cluster è un gruppo, di dimensione fissata, di oggetti di tipo diverso Durante l esecuzione di un VI un array può anche incrementare o diminuire la sua dimensione, mentre un cluster la mantiene sempre fissa
File I/O LabVIEW ha diversi strumenti per la lettura/scrittura di dati su disco Essenzialmente li possiamo distinguere in due famiglie strumenti di alto livello vengono usati come funzioni, ma in realtà sono dei subvi più o meno complicati strumenti di basso livello sono funzioni proprie. Ogni qual volta viene aperto un file viene creato un numero di riferimento (refnumber) che viene utilizzato dalle funzioni di scrittura/lettura e chiusura file
Formato binario vs ASCII Scrivere i dati in ascii ha i seguenti vantaggi: I files scritti in ascii sono facilmente leggibili da altri programmi è facile capire il contenuto del file Scrivere i dati in ascii ha i seguenti svantaggi: il file assume notevoli dimensioni la scrittura è piuttosto lenta Conviene quindi usare il formato binario quando sono necessari requisiti di velocità di scrittura e riduzioni delle dimensioni dei files
Dimensioni dei dati scritti ASCII vs BINARIO Supponiamo di dover scrivere due numeri (10.347, 20.531) in singola precisione (SGL) in un file e di limitarci a 3 cifre decimali: ASCII: 1 0. 3 4 7, 2 0. 5 3 1 \r \n Cioè 15 Bytes Binario: 2x4Byte = 8Bytes
Variabili Locali e Globali Come in un linguaggio di programmazione più convenzionale è possibile definire delle variabili locali e globali Locali: che hanno valore solo nel VI corrente e necessitano di un pannello presistente Globali: hanno valore in tutti i Vis e hanno un proprio pannello E buona norma non utilizzare queste variabili per non incorrere in problemi tipici dei sistemi di acquisizione: race condition: due eventi avvengono in ordine casuale, mentre la condizione di correttezza vorrebbe un ordine ben preciso