La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

LABVIEW Sommario Che cosa è uno strumento virtuale (VI) creato con LABVIEW Parti di un VI: –pannello frontale –diagramma a blocchi Confronto tra il principio.

Presentazioni simili


Presentazione sul tema: "LABVIEW Sommario Che cosa è uno strumento virtuale (VI) creato con LABVIEW Parti di un VI: –pannello frontale –diagramma a blocchi Confronto tra il principio."— Transcript della presentazione:

1

2 LABVIEW Sommario Che cosa è uno strumento virtuale (VI) creato con LABVIEW Parti di un VI: –pannello frontale –diagramma a blocchi Confronto tra il principio di funzionamento di uno strumento creato con LABVIEW (diagramma a blocchi) e la programmazione convenzionale (es. linguaggio “C” o JAVA) Descrizione degli strumenti disponibili in LABVIEW per la creazione del pannello frontale di uno strumento virtuale. Realizzazione di un semplice strumento: un misuratore di temperatura con registratore a carta incorporato Descrizione dello STRUMENTO TOOLS Che cosa è un SUBVI Creazione di un SUBVI Utilizzazione della struttura For.. Next Utilizzazione della struttura Do … while Utilizzazione della struttura If … else if.. Endif Utilizzazione della struttura Formula Node Utilizzazione della struttura SEQUENZA Realizzazione di grafici: modo CHART e modo GRAPH Esempi di elaborazione numerica dei dati Esempi di controllo di processi industriali di laboratorio Sistemi di acquisizione DAQ e Labview Trasduttori e Labview

3 Introduzione Una delle possibili ragioni per usare LABVIEW è quella di rilevare, durante una esperienza di laboratorio, il comportamento di alcune grandezze fisiche, come la temperatura, la pressione, in modo automatico, utilizzando un computer. In questo modo i dati potranno poi essere elaborati e visualizzati in opportuni grafici. Con LABVIEW vengono creati degli strumenti virtuali (VI) in cui il monitor sostituisce il pannello, mentre il computer sostituisce il cuore dello strumento, eseguendo le operazioni definite all'interno di uno schema a blocchi che ne descrive il principio di funzionamento.

4 Il collegamento tra i dati provenienti dal mondo esterno e il computer avviene tramite una delle porte di comunicazione previste come standard (RS232, IEE488,USB,parallela CENTRONICS), oppure tramite una scheda di acquisizione (ADC) inserita direttamente nel bus del computer. Mentre nel caso di uno strumento reale le operazioni vengono eseguite agendo manualmente sui vari comandi, nel caso di uno strumento virtuale tutte le operazioni vengono effettuate utilizzando semplicemente il mouse.

5 Componenti di uno strumento virtuale Uno strumento virtuale è costituito da due parti: il pannello frontale il diagramma a blocchi. Il pannello frontale agisce da interfaccia utente, ovvero permette di impostare i parametri di input e di visualizzare i risultati di un’operazione o di una misura all’interno di un display digitale o di una finestra grafica. Il diagramma a blocchi definisce il principio di funzionamento dello strumento e corrisponde al codice sorgente di un programma eseguito utilizzando i metodi standard di programmazione. Esempio: Aquisizione di una temperatura e visualizzazione su un termometro digitale Pannello frontale Vengono definite 3 variabili: Il nome del canale di ingresso da cui viene acquisita la temperatura. Il componente grafico corrispondente è un box di input Una variabile definita POWER che permetterà di eseguire le operazioni sino a che il suo valore rimane TRUE (strumento acceso). Il componente grafico per questa operazione è di solito un pulsante o un interruttore. Una variabile di uscita denominata temperatura, che visualizza il valore della temperatura acquisito dallo strumento. Il componente grafico corrispondente è un termometro con annesso un box di output, che simula un display digitale. Sul pannello frontale sono stati inseriti 3 componenti a ciascuno dei quali corrisponderà una variabile di input o di output, a seconda se il componente viene utilizzato per impostare un parametro oppure per visualizzare il risultato di una misura. I componenti utilizzati per impostare i parametri di ingresso e di uscita vengono denominati, rispettivamente, CONTROLLI e INDICATORI.

6 Aquisizione di una temperatura e visualizzazione su un termometro digitale ( programmazione convenzionale ) do { String canale=“temperatura”; connetti(canale);//apri il canale di comunicazione con la scheda ADC collegata a un trasduttore di T double T=acquisisci();//acquisisci la temperatura visualizza(T);//visualizza la temperatura ritarda(1000);//ritarda di 1000 mS } while (POWER==TRUE);

7 Aquisizione di una temperatura e visualizzazione su un termometro digitale (diagramma a blocchi) A ciascun componente inserito sul pannello frontale corrisponde una variabile di input o di output, visualizzata mediante un simbolo grafico, la cui forma dipende dal fatto se la variabile è di input o di output; inoltre, al suo interno sono presenti delle scritte che indicano il tipo di dato (es. DBL = numerico decimale doppia precisione, TF = booleano, abc = variabile stringa). Inoltre sono presenti dei simboli che rappresentano : L’acquisizione del segnale da una scheda ADC Il ritardo di lettura tra un dato e il successivo Il ciclo DO ….. WHILE che permette di ripetere tutte le operazioni, rappresentato dalla zona rettangolare grigia. Le operazioni che devono essere ripetute vanno inserite all’interno della zona rettangolare. (E’ come se inserissimo un set di istruzioni all’interno del ciclo DO ….. WHILE. Confrontando lo schema a blocchi con il codice sorgente descritto nella pagina precedente, si vede che ciascun simbolo grafico, a parte le variabili di input e di output, corrisponde a una subroutine o una funzione contenente tutta una serie di istruzioni, che svolgono un determinato compito.

8 Aquisizione di una temperatura e visualizzazione su un termometro digitale (schema a blocchi) (segue) Per far sì che l’apparecchio possa funzionare correttamente è poi necessario collegare tra di loro le varie icone in modo da definire come vengono elaborate le varie variabili. Avremo le seguenti connessioni: Definisce che la connessione deve avvenire con il canale di ingresso dell’ADC collegato al trasduttore di T Il dato acquisito viene inviato sul display digitale Eseguo un ritardo di 1000 mS Corrisponde alla condizione POWER==TRUE del ciclo DO…. WHILE

9 Viene simulata l’acquisizione di una temperatura da un trasduttore; il segnale letto viene rappresentato graficamente all’interno di una finestra grafica, che simula un registratore a carta. Al termine della lettura i dati vengono memorizzati su un file dati. Sono stati inseriti i seguenti componenti : Un box di input che definisce il n. di letture Un potenziometro RITARDO che imposta l’intervallo di lettura tra un dato e il successivo Un display grafico con annesso un display digitale che visualizza la temperatura istantanea Un display digitale che riporta il valor medio della temperatura. Registratore a carta di una temperatura Pannello di controllo

10 Registratore a carta di una temperatura (Programmazione convenzionale) int nletture=20;//imposto il n. di letture int ritardo=500;//ritardo di lettura in millisecondi double T[nletture+1];//definisco un vettore che conterrà le temperature lette for(int i=0;i

11 Registratore a carta di una temperatura (Diagramma a blocchi) Oltre alle icone che rappresentano le variabili di input e di output sono presenti i seguenti simboli: L’acquisizione del segnale da una scheda ADC Il ritardo tra una lettura e la successiva in ms Il ciclo FOR … NEXT rappresentato da 3 rettangoli leggermente sfalsati. Viene utilizzato per ripetere N-1 volte la lettura del segnale Un simbolo che rappresenta una subroutine che calcola il valore medio di una serie di dati Un simbolo associato a una subroutine che permette di registrare i dati su un file.

12 Registratore a carta di una temperatura (Diagramma a blocchi : connessioni) Dal listato del programma convenzionale possiamo dedurre che le connessioni necessarie per far sì che “l’apparecchio funzioni correttamente”, sono le seguenti: Il n. totale di letture va associato alla variabile N. Il segnale proveniente dal trasduttore deve essere visualizzato sul grafico Alla subroutine associata all’icona TIMER deve essere passata la variabile di input Timer che definisce l’intervallo di tempo tra una lettura e la successiva, espressa in mS I dati acquisiti tramite il ciclo FOR … NEXT vengono memorizzati in una variabile vettore. Tali dati, che sono disponibili una volta che è terminato il ciclo, vengono inviati a una subroutine che ne esegue la media; Il valore medio viene inviato e visualizzato sul display numerico I dati contenuti nel vettore vengono anche inviati a una subroutine che permette di memorizzare i dati su un file.

13 Il pannello frontale Per costruire il pannello frontale basta selezionare i vari componenti all'interno di una finestra detta Controls e disporli sullo schermo con l’aiuto del mouse. In questa finestra i vari oggetti sono rappresentati mediante dei simboli grafici e possono riguardare sia componenti meccanici (interruttori, deviatori), che elettronici (display digitali e analogici, registratori, ecc). Ciascuna icona presente nella finestra Controls rappresenta un gruppo di oggetti di caratteristiche similari. Inoltre è possibile anche inserire dei componenti speciali (pulsanti particolari, indicatori grafici,ecc), creati all'interno di Labview mediante un editor grafico oppure utilizzando un programma di grafica esterno.

14 Alcuni tipi di controlli

15 A seconda della funzione prevista, gli oggetti inseriti in un pannello possono inoltre essere suddivisi in CONTROLLI e INDICATORI. Mentre i primi servono per immettere dei dati o impostare dei parametri, i secondi servono per visualizzare dei risultati (ad esempio un grafico in tempo reale). Per definire la caratteristiche di ciascun oggetto inserito nel pannello frontale, basta fare clic col pulsante destro all'interno dell'oggetto. Sarà così possibile definire il tipo di dato (intero, decimale, booleano), l’intervallo entro cui esso può variare, l'unità di misura, ecc.

16 Il diagramma a blocchi Il diagramma a blocchi sostituisce il classico codice sorgente di un programma creato con uno dei soliti linguaggi. Nel diagramma compaiono dei simboli grafici detti nodi, collegati tra di loro mediante delle linee o fili che rappresentano il percorso seguito dal segnale (o dati). Ciascun nodo svolge una determinata funzione. Alcune delle funzioni più comuni sono le seguenti: lettura dati impostati sul pannello frontale oppure provenienti da una scheda di acquisizione ADC visualizzazione dei risultati (come numero o come grafico) operazioni di tipo matematico o logico (moltiplicazioni, addizioni, conversioni logaritmiche, ecc.) confronti tra dati funzioni di controllo di ben definiti intervalli di tempo ripetizione di determinate operazioni (equivalenti alle istruzioni FOR.. NEXT, DO.. WHILE, ecc.). Il risultato di una determinata funzione viene inviato al nodo successivo tramite il filo che collega tra di loro i due nodi. Nelle seguenti figure vengono riportati, rispettivamente, il pannello frontale e il diagramma a blocchi di un semplice misuratore di temperatura. Il sensore è direttamente collegato a una scheda di acquisizione ADC. La temperatura viene visualizzata su un grafico a intervalli regolari di tempo definiti col potenziometro “ritardo”.

17 1 interruttore alimentazione 2 potenziometro ritardo 3 display grafico 4 lettura tensione da ADC 5 costante numerica 6 operaz. Aritm. Ritardo (sec)=ritardo x timer 8 struttura do ….. while

18 Quando inseriamo degli oggetti sul pannello dello strumento, LABVIEW automaticamente inserisce nel diagramma a blocchi dei simboli corrispondenti al tipo di oggetto. Nel caso di controlli il simbolo ha un contorno più spesso, mentre nel caso di indicatori, il contorno è più sottile. Per inserire i vari nodi (o funzioni) che dovranno elaborare i dati provenienti dai controlli, si fa clic all'interno della finestra Functions. Le varie funzioni previste in LABVIEW vengono rappresentate mediante diversi simboli grafici raggruppati per tipo :

19 strutture corrispondenti alle istruzioni di ripetizione (for.. next; do.. while ) oppure strutture relative alle istruzioni di salto condizionato (es. if.. Else.. Endif). Inoltre è presente anche una struttura, denominata FORMULA NODE, che permette di eseguire delle istruzioni, in maniera analoga a quanto fatto per un programma tradizionale operazioni aritmetiche (somma,sottrazione, moltiplicazione, sommatoria, reciproco, funzioni trigonometriche, ecc) operazioni logiche (AND, OR, EOR, NOT, NAND, NOR, ecc.) operazioni su stringhe (lunghezza, concatenazione, estrazione, confronto, conversione, ecc)

20 Operazioni su matrici e su vettori (costruzione di una matrice, sostituzione e inserzione di un elemento, valore min o max, ecc.) operazioni di confronto (uguale, diverso, maggiore, minore, ecc.) funzioni tempo (cronometro, intervallo di tempo, data e ora,ecc.) operazioni su file (memorizzazione e lettura dati)

21 Operazioni di comunicazione via INTERNET gestione collegamento con uno strumento via IEE488 o via RS232 gestione acquisizione dati da una scheda ADC (configurazione scheda, ingresso e uscita analogica e digitale, ecc.) funzioni matematiche e statistiche per la elaborazione dei dati (calcolo di una grandezza mediante immissione di formule, regressioni lineari e non, interpolazioni, integrazioni numeriche, analisi di Fourier, operazioni su matrici, ecc.)

22 Realizzazione di un semplice strumento: un misuratore di temperatura con registratore a carta incorporato Lanciamo LABVIEW facendo due volte clic su LABVIEW.EXE. Al comparire della seguente finestra di dialogo, facciamo clic su NEW VI. Compariranno sullo schermo due finestre vuote, Untitled1 e Untitled 1 Diagram : la prima ci servirà per costruire il pannello frontale e la seconda il relativo diagramma a blocchi.

23 Facciamo clic sull’icona Boolean nella finestra Controls e quindi selezioniamo il bottone Vertical toggle switch. Col mouse collochiamo il bottone sul pannello, facendo clic col sinistro, una volta individuata la sua posizione. Teniamo presente che i vari componenti possono essere spostati o ridimensionati in qualsiasi momento mediante la finestra Tools, descritta più avanti. Appena sopra il bottone compare un rettangolino grigio scuro, che serve per assegnare un’etichetta all’oggetto. Digitiamo da tastiera Power e premiamo il tasto INVIO del tastierino numerico del computer. Se il rettangolino non dovesse essere visibile sullo schermo, basta portare il mouse sopra il bottone e, premendo il pulsante destro, selezionare la voce Show Label. Inseriamo nel pannello un registratore a carta facendo clic sull’icona Graph della finestra Controls e quindi su Waveform Chart. Inseriamo nella sua etichetta la scritta “misuratore di temperatura”. Per cambiare la scala delle Y in maniera che vengano visualizzati i valori compresi tra 0 e 100 gradi, selezioniamo Realizzazione del pannello frontale Iniziamo a realizzare il pannello frontale facendo clic sulla finestra Untitled 1. Inoltre, se la finestra Controls utilizzata per selezionare i componenti da inserire nel pannello, non dovesse essere visibile sullo schermo, allora basterà selezionare la voce Show Controls Palette del menù Windows.

24 l’icona Operating Tool all’interno della finestra Tools, poi facciamo due volte clic su 10.0, immettiamo il valore e premiamo il tasto INVIO. Se lo desideriamo, possiamo ridimensionare il registratore in modo che occupi sul pannello uno spazio maggiore. A tale scopo selezioniamo l’icona Positioning Tool della finestra Tools e trasciniamo col mouse uno degli estremi dell’area rettangolare che include il registratore. Oltre a registrare la temperatura “su carta” vogliamo visualizzare il suo valore con un display digitale. Per fare questo portiamo il mouse sopra il registratore e premiamo il pulsante destro del mouse; poi selezioniamo la voce Show e quindi Digital Display. Collochiamo il display appena sotto la scritta Plot 0. Selezioniamo ora l’icona Labeling all’interno della finestra Tool e immettiamo la scritta “T(gradi), dopo aver fatto clic lateralmente a destra del display. Terminiamo l’iimissione dell’etichetta premendo il tasto INVIO del tastierino numerico. Vogliamo ora inserire la manopola del ritardo appena sotto il display digitale della temperatura, in modo da acquisire e registrare i dati ad intervalli di tempo regolari compresi tra 0 e 10 secondi. A tale scopo facciamo clic sull’icona Numeric della finestra Controls, scegliamo il potenziometro Dial e collochiamolo col mouse sotto il display digitale. Infine assegnamo al potenziometro l’etichetta “Ritardo (sec).

25 Abbiamo così terminato la realizzazione del pannello frontale che dovrebbe presentarsi come mostrato nella seguente figura

26 Realizzazione del diagramma a blocchi Facciamo clic sulla voce Show Diagram del menù Windows. Comparirà in primo piano la finestra Untitled1 Diagram contenente tre simboli che corrispondono ai seguenti componenti collocati precedentemente sul pannello: interruttore di accensione, registratore a carta e potenziometro Ritardo. Ciascun simbolo, oltre a presentare l’etichetta dell’oggetto a cui si riferisce, contiene al suo interno delle sigle, il cui significato è legato al tipo di dato che è in grado di gestire: I8 - I16 - I32 intero a 8, 16,32 bit SGL - DBL - EXT decimale a precisione singola, doppia e estesa TF numero booleano abc stringa testo

27 Inoltre il contorno del simbolo è diverso a seconda se l’oggetto a cui si riferisce è un controllo (ovvero serve per immettere dei dati da pannello), come è il caso dell’interruttore di accensione e del potenziometro “ritardo”, che hanno un contorno più spesso, oppure se esso è un indicatore (ovvero serve per visualizzare i dati) (registratore a carta)( contorno sottile). Spostiamo gli oggetti presenti nel diagramma in modo da ottenere la seguente figura: N.B. Per spostare un oggetto è sufficiente selezionare l’icona Positioning Tool della finestra Tools, fare clic all’interno del simbolo e trascinarlo col mouse sino ad arrivare alla posizione prescelta. Facciamo ora clic sull’icona Tutorial della finestra Functions e, dopo aver selezionato il simbolo Digital Thermometer, collochiamolo col mouse lateralmente a sinistra del simbolo misuratore di temperatura.

28 Il simbolo Digital Thermometer permette di simulare la lettura di un segnale proveniente da un trasduttore di temperatura collegato direttamente a una scheda ADC. Per poter ripetere ciclicamente il processo di lettura della temperatura, è necessario inserire nel diagramma a blocchi la funzione While Loop che permette di ripetere un certo gruppo di operazioni, sino a che non venga posta a FALSE la variabile che definisce la condizione di uscita dal loop. Nel nostro caso faremo in modo che questa variabile venga posta a False quando spegniamo lo strumento, intervendo sull’interruttore di accensione presente sul pannello frontale. Facciamo quindi clic sull’icona Structures della finestra Functions e quindi sul simbolo While Loop Portiamo il mouse in alto a sinistra della finestra contenente il diagramma a blocchi e, tenendo premuto il pulsante sinistro, trasciniamo il mouse verso il basso a destra della finestra sino a racchiudere tutti i simboli presenti sul diagramma. La seguente figura mostra come si presenterà il diagramma dopo aver eseguito l’operazione appena descritta.

29 Per far sì che l’operazione di lettura venga ripetuta ad intervalli di tempo regolari definiti dal potenziometro “ritardo”, dobbiamo inserire nel diagramma un timer. Per fare questo facciamo clic sull’icona Time & Dialog della finestra Functions e quindi sul simbolo Wait Until Next ms Multiple ; infine collochiamo questo simbolo a destra del potenziometro “ritardo”. Tale simbolo creerà un ritardo espresso in millisecondi. Se vogliamo operare, ad esempio, con un ritardo compreso tra 0 e 10 secondi, bisogna pertanto moltiplicare il dato definito col potenziometro “ritardo” per Per fare questo basta inserire nel diagramma una costante numerica e una funzione che permette di moltiplicare un dato per un certo valore. Inserzione della costante numerica Facciamo clic su Numeric della Finestra Functions e quindi su Numeric constant. Collochiamo tale costante sotto il simbolo corrispondente al potenziometro “ritardo”, digitiamo il numero 1000 e premiamo INVIO del tastierino numerico. Inserzione della funzione moltiplicazione Facciamo ancora una volta clic su Numeric e quindi sul simbolo Multiply e collochiamolo tra il simbolo del “ritardo” e quello del “timer” secondo come mostrato nella seguente figura che ci fa vedere come deve presentarsi il diagramma a blocchi dopo aver eseguito le operazioni di cui sopra.

30 Affinchè il nostro strumento possa funzionare, oltre a collocare le varie funzioni sul diagramma a blocchi, è necessario collegare con del “filo” i vari simboli in modo che i dati possano seguire il percorso necessario per il funzionamento dello strumento. Per collegare un simbolo con un altro si usa lo strumento Wire della finestra Tools. Iniziamo a collegare il simbolo “Power” con la variabile che condiziona il ciclo Do WHILE. Tale variabile è raffigurata sul diagramma dal simbolo. Per eseguire la connessione basta portare il mouse sul rettangolino verde TF e, dopo aver fatto clic su di esso, trascinare il mouse sopra il simbolo ed infine fare di nuovo clic col pulsante sinistro. N.B. Quando portiamo il mouse sopra l’oggetto da unire, questo inizia a lampeggiare, indicando che l’operazione sta avvenendo in maniera corretta.

31 Inoltre, ad operazione ultimata, il colore del filo deve rispecchiare il tipo di dato che trasporta (nel nostro caso, essendo un dato booleano, è verde). Se invece dovesse essere nero e tratteggiato, allora significa che abbiamo collegato tra di loro due simboli sbagliati (ad esempio un controllo con un controllo), oppure, nel caso di simboli con più ingressi ed uscite (vedi la funzione moltiplicazione che moltiplica due dati che devono essere collegati con i suoi due ingressi),abbiamo scelto il terminale sbagliato. Se tutto ciò dovesse accadere anche nei passaggi descritti più avanti, basta usare lo strumento Positioning Tool della finestra Tools, facendo clic sul collegamento errato e premendo infine il tasto CANC della tastiera del computer. Eseguiamo ora i collegamenti tra i seguenti simboli: 1) Icona “Temp” con il “misuratore di temperatura” N.B Quando portiamo il mouse sopra l’icona Temp, vengono visualizzati due terminali: uno di ingresso verde a sinistra, che nel nostro caso non viene utilizzato e uno di uscita arancione, che deve essere collegato col simbolo “misuratore di temperatura”. 2) Ingressi funzione moltiplicazione con il simbolo “ritardo” e la costante numerica ) L’uscita della funzione moltiplicazione con l’ingresso del “timer”. Il diagramma a blocchi dovrebbe ora presentarsi secondo come mostrato nella seguente figura:

32 Possiamo finalmente provare il nostro primo strumento creato con LABVIEW. A tale scopo eseguiamo le seguenti operazioni, dopo aver visualizzato il pannello frontale, facendo clic sulla finestra Untitled 1. 1) Selezioniamo lo strumento Operating Tool della finestra Tools e facciamo clic sull’interruttore di accensione sul pannello frontale. 2) Clicchiamo sull’icona che si trova appena sotto il menù principale presente nella finestra Untitled 1. Il registratore inizierà a registrare “su carta” la temperatura. Possiamo in qualsiasi istante regolare il ritardo agendo col mouse sulla manopola del potenziometro “Ritardo”. 3) Per spegnere lo strumento è sufficiente agire sull’interruttore di accensione oppure sull’icona Abort

33 Finestra Tools La finestra Tools contiene degli strumenti che permettono di eseguire delle operazioni di editing sugli oggetti presenti all’interno delle due finestre relative al pannello di controllo e al diagramma a blocchi. Inoltre sono presenti anche dei simboli che servono per controllare il funzionamento di uno strumento. Operating tool Serve per disporre gli oggetti sul pannello e sul diagramma a blocchi Positioning tool Permette di selezionare e modificare le dimensioni di un oggetto Labeling tool Permette di modificare il testo di un’etichetta e di crearne delle nuove Wiring tool Crea le connessioni tra i vari componenti

34 Finestra Tools (segue) Scrolling tool Permette di far scorrere orizzontalmente o verticalmente il contenuto di una finestra Probe Tool Permette di leggere il contenuto di una variabile o il risultato di un’operazione in un punto qualunque del diagramma a blocchi Color Copy Tool Permette di leggere il colore presente in un punto qualsiasi dello schermo Coloring Tool Permette di modificare il colore associato a un oggetto

35 Che cosa è un SUBVI Quando un programma scritto in un linguaggio convenzionale diventa complesso, di solito si cerca di strutturare il codice in modo da suddividerlo in blocchi, o subroutine (o metodi (JAVA) o funzioni (“C”)), che svolgono determinati compiti. In questo modo è più semplice la manutenzione del codice; inoltre è possibile riutilizzare le stesse porzioni di codice anche in altri programmi: basta conoscere il significato delle variabili di input e di output di ciascuna funzione. In LABVIEW il contenuto di un diagramma a blocchi, rispetto al listato di un programma convenzionale, è reso più semplice grazie all’uso di simboli grafici, che rappresentano delle subroutine, le cui funzioni possono essere anche complesse. Come abbiamo avuto modo di vedere, LABVIEW ci mette a disposizione una notevole quantità di simboli (o subroutine) con cui svolgere i compiti più disparati. Tuttavia può accadere che, a forza di inserire dei simboli all’interno di un diagramma, quest’ultimo si complichi a tal punto, che sarebbe di aiuto la possibilità di suddividere il contenuto in più sottoblocchi denominati SUBVI, ciascuno corrispondente ad una macro subroutine. All’interno di essa saranno racchiusi diversi simboli, in maniera analoga a quanto accade in un diagramma a blocchi di uno strumento. Inoltre, per poter essere operativi, oltre a connettere i vari simboli tra di loro in modo da dare un percorso logico al segnale (ovvero all’elaborazione delle variabili) all’interno del diagramma, sarà necessario definire quali sono le variabili di input (o connessioni di input) e le variabili di output (o connessioni di output). In maniera analoga ai simboli di default, anche i SUBVI si presenteranno sotto forma di simboli, il cui aspetto potrà essere definito graficamente dall’utente e potranno essere inseriti all’interno di qualsiasi diagramma a blocchi, in modo da riutilizzare le stesse porzioni di diagramma.

36 Creazione di un SUBVI Vogliamo creare un SUBVI per l’acquisizione di una temperatura da un trasduttore. A tale scopo la prima cosa da fare è quella di realizzare il programma in maniera analoga a quanto fatto precedentemente per un normale strumento virtuale (o VI). La seguente figura ne mostra il diagramma a blocchi e il corrispondente pannello frontale. Al valore della temperatura viene sommato un numero casuale, in modo da sovrapporre al segnale un rumore, che di solito è presente sperimentalmente quando il segnale è molto basso. Per poter funzionare, lo strumento non ha bisogno di alcun parametro di input, mentre, come output, esso restituisce il valore della temperatura; pertanto il pannello frontale mostrerà solo un indicatore. In altri termini, se dovessimo immaginare di utilizzare il diagramma a blocchi come una subroutine, a quest’ultima non avremo bisogno di passare alcuna variabile di input, mentre essa restituirà il valore associato a T. Tutto ciò equivale a scrivere: T1=T1sub(); Vediamo ora quali sono i passi successivi per realizzare un SUBVI a partire dal VI appena creato.

37 Creazione di un SUBVI(segue) 1) Associazione di un simbolo al VI. Per poter poi utilizzare il SUBVI in maniera analoga a quanto fatto con i simboli presenti nella finestra FUNCTIONS (di fatto ciascun simbolo è equivalente a una subroutine nella programmazione convenzionale e a un SUBVI in LABVIEW), è necessario associare ad esso un’icona grafica. A tale scopo, dopo aver attivato la finestra del pannello frontale, facciamo clic col pulsante destro del mouse in alto a destra e precisamente sull’icona mostrata nella seguente figura, che non è altro che il simbolo di default associato inizialmente a un VI dal LABVIEW. Al comparire di un sottomenù selezioniamo la voce EDIT ICON. Comparirà la seguente finestra che ci permetterà di definire graficamente il simbolo da associare al SUBVI. Useremo poi tale simbolo per inserire il SUBVI all’interno del diagramma a blocchi di uno strumento virtuale, in maniera analoga a quanto facciamo quando inseriamo dell’icone scelte all’interno della finestra FUNCTIONS, che rappresentano i vari SUBVI disponibili di default in LABVIEW.

38 Creazione di un SUBVI(segue) Utilizziamo gli strumenti grafici disponibili nella finestra ICON EDITOR per disegnare un’icone che rappresenti, in qualche modo, la funzione svolta dal SUBVI. Sono disponibili, nell’ordine, i seguenti strumenti: Matita utilizzata per disegnare a mano libera Retta traccia una retta tra due punti Contagocce permette di impostare il colore prelevandolo da un punto qualsiasi dello schermo Secchiello riempie un’area chiusa con un colore Rettangolo traccia un poligono rettangolare non colorato Rettangolo pieno traccia un poligono rettangolare colorato Rettangolo tratteggiato permette di selezionare una porzione di grafico; può, ad esempio, essere utilizzato inizialmente per ripulire la finestra grafica premendo semplicemente il tasto CANC Testo permette di inserire del testo

39 Creazione di un SUBVI(segue) Una volta disegnato il simbolo e fatto clic su OK, verrà visualizzato il nuovo simbolo in alto a destra della finestra PANNELLO, come mostra la seguente figura. 2) Definizione delle connessioni di input e di output Dobbiamo ora associare ciascuna variabile di input (o CONTROLLO) e di output (o INDICATORE) a un punto di connessione, in modo poi da collegare correttamente il SUBVI con gli altri componenti presenti nel diagramma a blocchi dello strumento virtuale che utilizzerà il nostro SUBVI. A tale scopo facciamo di nuovo clic, col pulsante destro, sul simbolo appena creato e selezioniamo la voce SHOW CONNECTOR. Il simbolo appena creato verrà sostituito con un nuovo simbolo suddiviso in un ben definito numero di aree rettangolari corrispondente al n. di variabili di input e di output definite nel SUBVI. Nel nostro caso avremo solo un’area, in quanto è stata definita soltanto una variabile di output (l’indicatore T1). Contemporaneamente il mouse assumerà l’aspetto del rocchetto di filo, che ci permetterà di associare a ciascuna area rettangolare un CONTROLLO o un INDICATORE, facendo semplicemente dapprima clic su un rettangolino e poi su un CONTROLLO o su un INDICATORE e infine facendo di nuovo clic su quest’ultimo. Naturalmente l’operazione deve essere ripetuta per ciascun CONTROLLO o INDICATORE presente sul pannello frontale.

40 Creazione di un SUBVI(segue) 3) Documentazione del SUBVI Per poter conoscere, in qualsiasi momento, le funzioni svolte da un SUBVI e il significato di ciascun connettore, conviene descrivere dettagliatamente tali informazioni all’interno del SUBVI, in maniera a quanto viene fatto nella programmazione convenzionale, quando si inseriscono dei commenti all’interno di un listato. A tale scopo utilizziamo la voce VI PROPERTIES del menù FILE. Comparirà la seguente finestra: Dopo aver selezionato la CATEGORIA Documentation, comparirà una nuova finestra di dialogo che ci permetterà di descrivere dettagliatamente le funzioni svolte dal SUBVI e il significato di ciascun connettore. Quando inseriremo il SUBVI all’interno di un diagramma a blocchi, tali informazioni saranno visualizzate sullo schermo se facciamo clic sul simbolo del SUBVI e se abbiamo attivato l’opzione SHOW CONTEXT HELP del menù HELP.

41 Creazione di un SUBVI(segue) 4)Memorizzazione del SUBVI e sua riutilizzazione all’interno di un diagramma a blocchi Una volta che abbiamo terminato le operazioni precedenti, memorizziamo sul dischetto il SUBVI. Per poterlo riutilizzare all’interno del diagramma a blocchi di un nuovo strumento virtuale, è sufficiente utilizzare la funzione SELECT VI disponibile nella finestra FUNCTIONS, come mostra la seguente figura: SELECT VI

42 Utilizzazione della struttura For … Next Esempio 1: Acquisizione di N dati Programma convenzionale int n=20; double T; int i; for (i=0;i

43 Utilizzazione della struttura For … Next (segue) Esempio 2: acquisizione di N dati e calcolo del valore medio. Per poter calcolare il valore medio di N letture, è necessario dapprima memorizzare i dati all’interno di una variabile vettore (o array) e poi, una volta che il ciclo ha terminato il suo compito, passare quest’ultima come variabile di input al simbolo MEDIA, ovvero a una subroutine che ricava il valore medio di una serie di dati. Per fare questo è necessario inserire sul simbolo del ciclo for..next un rettangolino denominato TUNNEL, che viene creato automaticamente da LABVIEW, quando si connette l’uscita del segnale acquisito con il simbolo del valore medio. Il TUNNEL non fa altro che permettere ai dati di uscire dal ciclo e di giungere alla subroutine MEDIA.

44 Utilizzazione della struttura For … Next (segue) Programma convenzionale int n=20; double [] T=new double[n+1]; int i; for (i=0;i

45 Utilizzazione della struttura For … Next (segue) Esempio 3: acquisizione di N dati con trasferimento del contenuto di una variabile da un ciclo a quello successivo. Alcune volte è necessario riutilizzare nei cicli successivi il valore associato a una variabile calcolato nel ciclo precedente. A tale scopo LABVIEW ci mette a disposizione i cosiddetti SHIFT REGISTER che permettono di memorizzare temporaneamente il contenuto di una variabile in modo da renderla disponibile al ciclo successivo. Per fare questo, tramite la pressione del pulsante destro del mouse ovvero tramite l’opzione ADD SHIFT REGISTER, vengono inseriti due rettangolini ai lati del simbolo del ciclo, contenenti al loro interno due frecce, di cui una rivolta verso l’alto e l’altra verso il basso. La prima sta ad indicare che il dato esce dal ciclo corrente e la seconda che immette il contenuto della stessa variabile nel ciclo successivo.

46 Utilizzazione della struttura For … Next (segue) Programma convenzionale int n=20; double T; double Tmax=0; int i; for (i=0;i Tmax) Tmax=T; visualizza(Tmax); } Diagramma a blocchi Shift register Trasmettono il valore di Tmax da un ciclo al successivo Il simbolo disponibile tra le funzioni di CONFRONTO, permette di eseguire una istruzione di salto condizionato: all’uscita troviamo il valore associato all’ingresso t se s è TRUE, altrimenti il valore associato all’ingresso f se s è FALSE. Dato che la variabile che viene passata, Tmax, deve essere inizializzata con il valore 0, allora si usa inizializzare lo shift register di sinistra collegandolo con la costante numerica 0.0

47 Ciclo Do …. While Programmazione convenzionale double r; do { r=random();//genera un numero casuale visualizza(r); ritardo(500); }while (power=true); Diagramma a blocchi

48 Strutture IF.. ELSE IF …ENDIF e SELECT.. CASE La struttura IF … ELSE IF …ENDIF e la struttura SELECT … CASE sono rappresentate in LABVIEW da due o più aree rettangolari sovrapposte. Ciascuna area viene utilizzata per contenere la porzione di codice da eseguire, relativamente al verificarsi di una determinata condizione, definita tramite il terminale di selezione. Il valore di una variabile o il risultato di una operazione viene dapprima passato al terminale di selezione e poi confrontato con il valore rappresentato in alto, delimitato da due freccette. Se il confronto ha un esito positivo allora viene eseguito il codice sottostante, altrimenti verrà eseguito il codice contenuto in quell’area rettangolare che soddisfa la condizione. Per far funzionare correttamente la struttura IF.. ELSE..ENDIF è necessario prima definire tutte le operazioni associate alle varie condizioni. Inoltre, per spostarsi tra le varie condizioni, è sufficiente fare clic in alto sulle freccette laterali.

49 Struttura IF.. ELSE.. ENDIF (esempi) Esempio 1: somma e sottrazione di due numeri. Viene eseguita la somma o la sottrazione di due numeri a seconda se, tramite un deviatore disposto sul pannello frontale, viene scelta l’operazione di somma oppure quella di sottrazione Programma convenzionale double x=0.5; double y=1.2; double ris; boolean somma=TRUE; If(somma==TRUE) ris=x+y; else ris=x-y; Visualizza(ris); Diagramma a blocchi

50 Struttura IF.. ELSE.. ENDIF (esempi) Esempio 2: Divisione di due numeri. Vengono divisi tra di loro x e y, dopo aver controllato se y=0. Se lo è, viene visualizzato il simbolo di infinito. Programma convenzionale double x=0.5; double y=1.2; double ris; If(Y==0) ris=+infinito; else ris=x/y; Visualizza(ris); Diagramma a blocchi OSSERVAZIONE Se in un’area rappresentante il verificarsi di una determinata condizione viene passata esternamente il risultato di una operazione tramite il cosiddetto tunnel, allora anche nelle altre aree deve essere passato qualcosa per lo stesso tunnel, che non necessariamente utilizza le stesse variabili, altrimenti il rettangolino raffigurante il tunnel sarà colorato in bianco invece che in arancione, ad evidenziare che c’è un errore.

51 Struttura FORMULA NODE La struttura FORMULA NODE permette di inserire, all’interno di un diagramma a blocchi, una sequenza di istruzioni scritte in un linguaggio assai simile al “C”. Si presenta come un’area rettangolare di dimensioni variabili. Per poter funzionare correttamente, è necessario definire quali sono le variabili di input e di output, associando a ciascuna di esse un rettangolino ai lati dell’area (a sinistra se di input e a destra se di output) tramite le voci ADD INPUT e ADD OUTPUT del menù, che compare quando si clicca col pulsante destro sulla struttura stessa. Nel seguente diagramma a blocchi è riportato un esempio in cui viene calcolato il valore della funzione y=x-e*sin(x). OSSERVAZIONI La struttura FORMULA NODE è molto comoda per implementare velocemente semplici porzioni di codice specie per chi sa già programmare in “C” o in linguaggi da esso derivati (es. JAVA). E’ inoltre molto comoda per valutare il risultato di espressioni numeriche. A ciascuna variabile utilizzata all’interno di FORMULA NODE deve essere impostata o come variabile di input o come variabile di output, anche se poi essa non viene utilizzata esternamente alla struttura, ma solo per eseguire dei calcoli intermedi.

52 STRUTTURA SEQUENZA Alcune volte può risultare utile eseguire più gruppi di operazioni in maniera sequenziale, proprio come avviene in un programma convenzionale complesso. Se associamo a ogni gruppo un diagramma a blocchi, possiamo pensare di realizzare uno strumento il cui il diagramma a blocchi di fatto è costituito da più sottodiagrammi, che vengono eseguiti uno dopo l’altro. Per fare questo il programma LABVIEW ci mette a disposizione la struttura SEQUENZA, la cui forma nel diagramma è rappresentata dalla seguente figura Ciascun sottodiagramma viene inserito all’interno di un’area rettangolare denominata FRAME. Per passare da un FRAME a quello successivo, è sufficiente fare clic in alto sulle freccette accanto all’etichetta in cui viene mostrato sia il n. del FRAME corrente, che il n. totale di FRAME di cui è costituita la SEQUENZA.

53 STRUTTURA SEQUENZA (ESEMPI) Esempio 1: Gestione di un dosimetro automatico Sono reperibili in commercio dei dosimetri che permettono di eseguire delle titolazioni controllandole tramite computer. Esiste ad esempio un caso in cui lo sgocciolamento del liquido viene gestito semplicemente inviando una sequenza di impulsi. Nel seguente strumento VI viene simulato l’invio di una serie di impulsi a un dosimetro automatico, utilizzando la struttura SEQUENZA. Il dosimetro viene simulato con un led che dapprima si accende per un determinato tempo e poi si spegne. OSSERVAZIONE Per gestire realmente un dosimetro in laboratorio, sarebbe sufficiente inserire, all’interno della sequenza, dei simboli che rappresentano il collegamento reale tra una scheda di acquisizione DAQ connessa tra il computer e il dosimetro.

54 STRUTTURA SEQUENZA Gestione di un dosimetro automatico(segue) Local variable OSSERVAZIONE Per poter utilizzare lo stesso INDICATORE (ovvero la variabile associata al led) più volte all’interno della struttura SEQUENZA, è necessario creare dapprima delle copie dell’indicatore tramite l’opzione CREATE LOCAL VARIABLE. Per fare questo è sufficiente cliccare col pulsante destro sul simbolo dell’indicatore all’interno del diagramma a blocchi e quindi selezionare la voce CREATE LOCAL VARIABLE.

55 STRUTTURA SEQUENZA Gestione di un dosimetro automatico(segue) Il seguente strumento VI è una modifica di quello precedente: sono stati aggiunti alcuni parametri relativi alla quantità di liquido da sgocciolare. Programma convenzionale double viniz=0.0; double vfin=50.0; double deltav=0.5; double vattuale; boolean cicla=true; vattuale=viniz; do { visualizza(vattuale); vattuale=vattuale+deltav; if(vattuale<=vfin) sburetta(); else cicla=false; }while(cicla==true);

56 GRAFICI LABVIEW mette a disposizione dei simboli che permettono di implementare uno strumento virtuale con dei monitor grafici con cui rappresentare i dati sperimentali. Esistono due differenti modi per generare un grafico: Modo CHART Il grafico viene generato tracciando un punto dopo l’altro man a mano che il relativo dato si rende disponibile. Equivale ad utilizzare un registratore a carta. Viene utilizzato il simbolo denominato WAVEFORM CHART del sottomenù GRAPH. Modo GRAPH Il grafico viene creato una volta che sono stati acquisiti tutti i dati. Esistono due diversi tipi di grafici: nel primo caso il simbolo viene denominato WAVEFORM GRAPH e i dati vengono visualizzati distribuendoli in modo uniforme rispetto all’asse delle x, ovvero utilizzando tra un dato e il successivo lo stesso intervallo, il cui valore di default è 1, mentre il valore iniziale è 0. Naturalmente è possibile modificare tali valori. Il secondo caso invece corrisponde alla classica rappresentazione XY di dati in cui y è una funzione di x. N.B. In entrambi i casi è possibile visualizzare più serie di dati contemporaneamente. OSSERVAZIONE Tramite degli accorgimenti che vedremo più avanti, è possibile tracciare i dati XY graficamente ANCHE man a mano che vengono acquisiti!

57 Grafici : Modo CHART (Esempi) Esempio 1: Rappresentazione grafica di un dato che varia casualmente nel tempo. Sull’asse delle X viene riportato il tempo espresso in secondi e sull’asse delle y il valore numerico associato al dato. Programma convenzionale double r; double rit=0.3;//ritardo in S boolean power=TRUE; do { r=random(); visualizza(r); ritardo(rit); }while(power==TRUE); Diagramma a blocchi Quando il tempo trascorso ha raggiunto il valore massimo impostato sull’asse dei tempi, il grafico viene fatto scorrere orizzontalmente da destra a sinistra, in modo da permettere la visualizzazione dei dati successivi, proprio come avviene in un registratore a carta in cui la carta scorre man a mano che viene tracciato il grafico. Gli estremi degli assi x e y possono essere modificati facendo semplicemente clic su di essi ed introducendo il nuovo valore tramite tastiera. (N.B. Deve essere attivo lo strumento TESTO della finestra TOOLS !). Inoltre, se si seleziona un asse e si fa clic col pulsante destro del mouse, viene visualizzato sullo schermo un sottomenù, che permette di intervenire su diversi parametri come l’autoscaling, il n. di tacche, il n. di decimali, ecc. E’ addirittura prevista la possibilità di leggere direttamente sul grafico i valori cliccando semplicemente col mouse.

58 Grafici : Modo CHART (Esempi)(segue) Esempio 2: Utilizzazione del modo CHART per visualizzare più grafici contemporaneamente. In questo esempio vengono acquisiti i segnali provenienti da due trasduttori di temperatura e visualizzati contemporaneamente sul grafico. Per fare questo la subroutine associata al simbolo WAVEFORM CHART ha bisogno, come input, di una struttura dati denominata CLUSTER, formata dall’insieme dei dati corrispondenti ai segnali provenienti dai due trasduttori. Tale funzione si chiama BUNDLE ed è disponibile nel sottomenu CLUSTER della finestra FUNCTIONS. y1 y2 Output (y1,y2) OSSERVAZIONI La struttura CLUSTER assomiglia alla struttura ARRAY (o MATRICE); entrambi permettono di raggruppare una o più serie di dati: nel primo caso i dati possono essere anche di tipo diverso, mentre nel secondo caso devono essere dello stesso tipo. Il programma utilizza due SUBVI, denominati SUBT1 e SUBT2, che permettono di simulare l’acquisizione di due temperature T1 e T2I il primo è già stato descritto precedentemente nel capitolo SUBVI, mentre il secondo non è altro che il primo leggermente modificato, in modo da avere un valore di T un po’ diverso.

59 Grafici : Modo CHART (Esempi)(segue) Programma convenzionale double T1,T2; boolean power=TRUE; double rit; do { T1=subv1(); T2=subv2(); visualizza(T1,T2); ritardo(rit*1000); }

60 Grafici : Modo GRAPH (Esempi) Esempio 1: Utilizzazione del modo GRAPH per visualizzare la forma d’onda proveniente da un determinato strumento. Il valore iniziale della x è 0, mentre l’intervallo con cui sono spaziati i dati è 1. La subroutine WAVEFORM GRAPH ha bisogno, come input, di un vettore contenente la serie di dati da visualizzare. Un modo molto semplice è quello di generare una serie di dati mediante un’iterazione FOR … NEXT oppure un ciclo DO.. WHILE. Teniamo presente che il grafico viene tracciato una volta che il ciclo FOR.. NEXT è terminato.

61 Grafici : Modo GRAPH (Esempi)(segue) Esempio 2: Visualizzazione di una forma d’onda in cui sia il valore iniziale delle x che l’intervallo hanno un valore diverso da quelli impostati per default. In questo caso è necessario inviare alla subroutine WAVEFORM GRAPH una struttura dati di tipo CLUSTER che, oltre ai dati, contenga i valori relativi a x 0 e a  x. Nell’esempio è stato posto x 0 =0 e  x=0.1. Per creare il CLUSTER viene usata la funzione BUNDLE, dopo aver modificato le sue dimensioni col mouse, in modo da raggruppare 3 entità di dati di input.

62 MODO GRAPH Simulazione dell’acquisizione di una tensione di vapore Esempio 3: Simulazione dell’acquisizione di una tensione di vapore. In questo esempio viene utilizzato il SUBVI CLAPEYRONSUBVI per simulare la lettura di una tensione di vapore da un trasduttore di pressione. Inoltre è stato sovrapposto al segnale un rumore gaussiano, in modo da “introdurre un po’ di rumore sperimentale”. Se si volesse eseguire la misura realmente, sarebbe sufficiente sostituire questo SUBVI con un altro che permetta di acquisire il segnale dal trasduttore tramite una scheda di acquisizione DAQ.(Vedi SCHEDE DI ACQUISIZIONE DAQ). OSSERVAZIONE Come mostra il pannello frontale, è stato attivato il cursore grafico, in modo da leggere i valori x,y direttamente sul grafico.

63 MODO GRAPH Simulazione dell’acquisizione di una tensione di vapore (segue) SUBVI Clapeyron

64 MODO GRAPH Simulazione dell’acquisizione di una tensione di vapore (segue) DIAGRAMMA A BLOCCHI PROGRAMMA CONVENZIONALE Double Tiniz=10.0; double Tfin=100.0; double deltaT=1.0; double N=1+(Tfin-Tiniz)/deltaT; double [] pi=new double[N+1]; double [] Ti=new double[N+1]; double T=Tiniz; int i; for(i=0;i

65 MODO GRAPH (ESEMPI)(segue) Esempio XX :Un trucco per utilizzare il GRAPH, in modo da visualizzare un grafico durante l’acquisizione dei dati. Come abbiamo descritto precedentemente, il modo CHART non permette di visualizzare un grafico XY, bensì una serie di dati, man a mano che vengono acquisiti, in cui la x parte da un valore predefinito e aumenta con un incremento costante. Anche se ciò è possibile col metodo GRAPH,, tuttavia quest’ultimo visualizza il grafico dopo che sono stati acquisiti tutti i dati. Questo esempio utilizza un SUBVI disponibile nel pacchetto LABVIEW, che permette di realizzare dei grafici XY in tempo reale, pur utilizzando il modo GRAPH. E’ sufficiente inserire nel diagramma a blocchi il SUBVI denominato XY CHART BUFFER. Per fare questo bisogna dapprima selezionare la voce SELECT A VI della finestra FUNCTIONS e poi selezionare il file charts.llb dal seguente percorso: c:\programmi\national instrument\labview 6 SE\examples\general\graphs. Il file charts.llb è una libreria di SUBVI, per cui, una volta selezionato, comparirà la seguente finestra, che ci permette di selezionare il file XY Chart Buffer.vi.

66 MODO GRAPH (ESEMPI)(segue) Esempio 4 :Un trucco per utilizzare il GRAPH, in modo da visualizzare un grafico durante l’acquisizione dei dati. Come abbiamo descritto precedentemente, il modo CHART non permette di visualizzare un grafico XY, bensì una serie di dati, man a mano che vengono acquisiti, in cui la x parte da un valore predefinito e aumenta con un incremento costante. Anche se ciò è possibile col metodo GRAPH,, tuttavia quest’ultimo visualizza il grafico dopo che sono stati acquisiti tutti i dati. Questo esempio utilizza un SUBVI disponibile nel pacchetto LABVIEW, che permette di realizzare dei grafici XY in tempo reale, pur utilizzando il modo GRAPH. E’ sufficiente inserire nel diagramma a blocchi il SUBVI denominato XY CHART BUFFER. Per fare questo bisogna dapprima selezionare la voce SELECT A VI della finestra FUNCTIONS e poi selezionare il file charts.llb dal seguente percorso: c:\programmi\national instrument\labview 6 SE\examples\general\graphs. Il file charts.llb è una libreria di SUBVI, per cui, una volta selezionato, comparirà la seguente finestra, che ci permette di selezionare il file XY Chart Buffer.vi.

67 MODO GRAPH (ESEMPI)(segue) Al SUBVI xy chart buffer è stata assegnata la seguente icona: Il principio di funzionamento di tale VI è quello di memorizzare temporaneamente i dati in una memoria denominata buffer e di ingannare la subroutine XY GRAPH, inviando una coppia di dati alla volta e facendogli considerare tale coppia come se fosse l’unica serie di dati da graficare. Se il buffer non viene cancellato, i dati vengono accumulati, man a mano che sono visualizzati sino a riempirlo. Per ripetere da capo l’operazione è necessario azzerare il contenuto della memoria utilizzando il connettore clear first, come descritto qui di seguito. Il significato delle variabili di input e di output utilizzate in questo esempio è il seguente: PARAMETRI DI INPUT new point qui va inviata la variabile matrice xy[1][2] contenente la coppia di dati X i,Y i da visualizzare all’istante i Chart length n. totale di punti da acquisire e da graficare Clear first variabile booleana; se posta uguale a TRUE, il buffer viene cancellato PARAMETRI DI OUTPUT XY chart data Qui sono disponibili i dati da inviare alla subroutine XY GRAPH, una coppia alla volta.

68 MODO GRAPH :Simulazione di uno spettrofotometro UV-VIS La seguente figura mostra il VI di un semplice spettrofotometro UV-VIS. L’acquisizione viene fatta simulando il segnale proveniente da un trasduttore ottico posto lungo il cammino ottico. A tale scopo viene usato il SUBVI LEGGIDENS_SUB, descritto più avanti. Naturalmente nulla vieta di sostituire tale SUBVI con uno che acquisisce il segnale da uno spettrofotometro reale collegato al comnputer tramite una scheda di acquisizione DAQ.

69 MODO GRAPH :Simulazione di uno spettrofotometro UV-VIS(segue) PROGRAMMA CONVENZIONALE double lambda_iniz=400; double lambda_fin=700; double delta=0.5; double intensita=0; boolean stop=FALSE; double lambda=lambda_iniz; azzera_buffer(); do { intensita=leggi_dens(lambda); visualizza(lambda,intensita); if(lambda

70 MODO GRAPH :Simulazione di uno spettrofotometro UV-VIS(segue) DIAGRAMMA A BLOCCHI

71 ELABORAZIONE NUMERICA DATI Come abbiamo accennato all’inizio, LABIEW mette a disposizione una notevole quantità di subroutine (o SUBVI) per eseguire i compiti più disparati, che sono tutti ben documentati sui manuali presenti sul CD. In particolare esistono dei SUBVI, che permettono di analizzare una serie di dati sperimentali e di elaborarli, utilizzando le più note procedure matematiche. I simboli corrispondenti sono disponibili nella finestra FUNCTIONS sotto i gruppi ANALYZE e MATHEMATICS. Vi è addirittura la possibilità di elaborare i dati utilizzando delle procedure scritte in MATLAB. ESEMPIO N. 1: Utilizzazione del metodo dei minimi quadrati per il calcolo della miglior retta passante per dei dati sperimentali. In questo esempio vengono creati due CONTROLLI e un INDICATORE di tipo VETTORE (o ARRAY), che vengono utilizzati per immettere direttamente da tastiera i dati da elaborare e per visualizzare i risultati del calcolo. Successivamente vedremo come sia possibile elaborare i dati man a mano che vengono acquisiti da uno strumento. Per eseguire il calcolo col metodo dei minimi quadrati è sufficiente inserire, all’interno del diagramma a blocchi il SUBVI LINEAR FIT.VI.

72 ELABORAZIONE NUMERICA DATI (segue) N.B. Per inserire un ARRAY come CONTROLLO o come INDICATORE nel pannello frontale di uno pannello, è necessario eseguire le seguenti operazioni: 1) Selezioniamo il sottomenù ARRAY & CLUSTER e quindi ARRAY all’interno della finestra CONTROLS. Successivamente collochiamo col mouse l’ARRAY sul pannello. Tale ARRAY non è altro che un contenitore vuoto; dobbiamo poi riempirlo con degli elementi. Nella programmazione convenzionale è come se avessimo dichiarato il nome di un array e non lo avessimo ancora inizializzato definendo il tipo di variabile e le sue dimensioni. 2) Per definire il contenuto dell’ARRAY inseriamo all’interno un oggetto di tipo numerico prendendolo dal menù NUMERIC della finestra CONTROLS. L’area dell’ARRAY si adatterà all’elemento appena introdotto. Abbiamo così ottenuto un ARRAY a una dimensione contenente un solo valore. Per aggiungere altri elementi utilizziamo il mouse per ingrandire verticalmente l’area dell’ARRAY. DIAGRAMMA A BLOCCHI

73 ELABORAZIONE NUMERICA Misure sperimentali di una tensione di vapore e relativa elaborazione dei dati in tempo reale Il seguente pannello virtuale è una modifica di quello visto precedentemente per la lettura simulata di una tensione di vapore. Oltre a visualizzare i dati sperimentali come diagramma p/T, è stato aggiunto un altro monitor grafico che riporta il risultato del calcolo dei minimi quadrati adattando ai dati, opportunamente modificati, la nota equazione di Clapeyron lnP = A – DeltaHvap/RT Le modifiche sono state fatte semplicemente inserendo sul pannello un display grafico XY e richiamando, all’interno del diagramma a blocchi, la subroutine MINQUADSUBVI descritta qui di seguito.

74 ELABORAZIONE NUMERICA Misure sperimentali di una tensione di vapore e relativa elaborazione dei dati in tempo reale (segue)

75 ELABORAZIONE NUMERICA Misure sperimentali di una tensione di vapore e relativa elaborazione dei dati in tempo reale (subvi MINQUADSUB)

76 CONTROLLO DI PROCESSI INDUSTRIALI DI LABORATORIO LABVIEW può essere utilizzato per monitorare il funzionamento di un processo industriale di laboratorio. A tale scopo è sufficiente collegare al computer una scheda di acquisizione DAQ, che permette di gestire, ad esempio, i seguenti aspetti tecnici: Il controllo di una o più temperature tramite l’acquisizione dei relativi segnali provenienti dai trasduttori di temperatura inseriti in quelle parti dell’impianto, in cui deve essere monitorata la temperatura. La gestione delle eventuali valvole di apertura e chiusura di un flusso di vapore (o di liquido) Il controllo delle eventuali pompe Il monitoraggio della pressione tramite l’acquisizione del segnale proveniente da un trasduttore di pressione. Le seguenti figure riportano due esempi di applicazione in cui il processo viene controllato da LABVIEW. Gli esempi simulano il comportamento di una scheda DAQ e sono disponibili nella sezione DEMONSTRATION/PROCESS CONTROL di ESEMPI.

77 CONTROLLO DI PROCESSI INDUSTRIALI (segue) Nel primo esempio vengono introdotti due fluidi in un contenitore, dopodichè essi vengono riscaldati per un determinato tempo. Infine il prodotto viene pompato all’interno di un altro contenitore. Nel secondo esempio viene simulato il processo di riempimento di un contenitore con controllo dei seguenti parametri: Velocità di flusso del fluido in entrata Temperatura del fluido in entrata Temperatura di riscaldamento

78 CONTROLLO DI PROCESSI INDUSTRIALI Realizzazione di un semplice processo In questa figura è riportato il pannello frontale di uno strumento che permette di controllare il riempimento di un contenitore con un fluido e il relativo riscaldamento ad una data temperatura. Per realizzarlo, sono stati usati alcuni CONTROLLI e INDICATORI con semplici operazioni di COPIA e INCOLLA sull’esempio riportato nella pagina precedente (CONTROL MIXER PROCESS).

79 Realizzazione di un semplice processo (segue) Programma convenzionale boolean t12=false; boolean valv1=false; boolean heater=false; double viniz=0; double deltav=1; double vfin=3000; double Tiniz=25; double Tfin=135; double deltaT=1; boolean full=false; double T=Tiniz; double V=viniz; boolean power=true; do { visualizza(V); if(valv1==true) { t12=true; if(v =vfin) full=true; } else { t12=false; } visualizza(T); if(heater==true) { if(T

80 Realizzazione di un semplice processo (segue)

81 Un altro esempio di un semplice processo industriale In questo esempio viene realizzato uno strumento che permette di controllare il mescolamento di due sostanze liquide e di riscaldare il prodotto ad una data temperatura. In pratica si inizia ad aprire la valvola valv1, in modo da immettere all’interno del contenitore Mixer una certa quantità della prima sostanza; dopodichè si chiude la valvola valv1, si apre la valvola valv2 e si fa partire la pompa pump1, in modo da pompare la seconda sostanza all’interno del contenitore. Quando il processo di riempimento è terminato, si chiude la valvola valv2 e si spegne la pompa pump1; dopodichè si accende il riscaldatore. Anche in questo caso sono stati usati alcuni CONTROLLI e INDICATORI con semplici operazioni di COPIA e INCOLLA sull’esempio CONTROL MIXER PROCESS.

82 Un altro esempio di un semplice processo industriale (segue) Pur essendo limitate le operazioni da compiere, tuttavia il diagramma a blocchi risulta essere piuttosto complesso. Per comprenderlo meglio è bene prima dare uno sguardo alle istruzioni presenti nel corrispondente programma convenzionale Programma convenzionale //definizioni variabili boolean t12=false; boolean t22=false; boolean t23=false; boolean valv1=false; boolean valv2=false; boolean pump1=false; double viniz1=0; double deltav1=1; double deltav2=10; double vfin1=500; double vfin2=2500; double vmix=3000; double Tiniz=25; double Tfin=135; double deltaT=1; boolean full=false; boolean heater=false; double T=Tiniz; double V=viniz1; boolean ciclo1=true; //inizio sequenza 1 do { visualizza(V); if(valv1==true) { t12=true; if(V =vfin1) ciclo1=false; } else { t12=false; } }while (ciclo1==true);

83 Un altro esempio di un semplice processo industriale (segue) //Inizio sequenza 2 boolean ciclo2=true; do { visualizza(V); if(valv2==true); { pump1=true; t22=true; t23=true; if(V =vmix) full=true; } else { pump1=false; t22=false; t23=false; } visualizza(T); if(heater==true) { if(T =Tfin) ciclo2=false; } }while(ciclo2==true); Il listato è stato suddiviso in due parti che corrisponderanno a due sottodiagrammi della struttura SEQUENZA nel diagramma a blocchi visualizzato nella pagina successiva. Inoltre sarà necessario utilizzare due nuove tipi di variabili denominate SEQUENCE LOCAL, che permetteranno di trasferire i valori associati a T e a V da una sequenza a quella successiva. Per fare questo, dapprima è necessario fare clic col pulsante destro del mouse sul simbolo di SEQUENZA e poi, al comparire di un sottomenù, selezionare la voce ADD SEQUENCE LOCAL. Infine, sono state create delle variabili LOCAL VARIABLE, laddove un determinato INDICATORE e/o CONTROLLO viene utilizzato più di una volta nel diagramma.

84 Un altro esempio di un semplice processo industriale (segue) Diagramma a blocchi : SEQUENZA 1

85 Un altro esempio di un semplice processo industriale (segue) Diagramma a blocchi : SEQUENZA 2


Scaricare ppt "LABVIEW Sommario Che cosa è uno strumento virtuale (VI) creato con LABVIEW Parti di un VI: –pannello frontale –diagramma a blocchi Confronto tra il principio."

Presentazioni simili


Annunci Google