Lezione I: Introduzione a LabView e Fondamenti del DataFlow

Slides:



Advertisements
Presentazioni simili
Introduzione al linguaggio C++
Advertisements

INFORMATICA Altre Istruzioni di I/O
ESERCITAZIONE R 12,19 marzo 2012 Mario Mastrangelo
Lezione 8 Anno accademico Titolare corso: Prof. Costanza Torricelli
MODULO 3 – ELABORAZIONE TESTI
Linguaggi algoritmici
PHP.
I linguaggi di programmazione
Ogni PC, per iniziare a lavorare, ha bisogno di un sistema operativo. Infatti questo è il primo programma che viene eseguito e che permette all'utente.
MATLAB. Scopo della lezione Programmare in Matlab Funzioni Cicli Operatori relazionali Esercizi vari.
Algoritmi e Programmazione
Sistema di controllo FORZA-SPOSTAMENTO in tempo reale tramite software di sviluppo CVI.
Fondamenti di Informatica I a.a Il linguaggio C Il preprocessore La sostituzione di macro Le compilazioni condizionali Linclusione di file C.
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
Indirizzi delle variabili A ogni variabile sono associati tre concetti fondamentali: il valore memorizzato; il tipo dati di appartenenza; lindirizzo. Il.
Argomenti dalla linea dei comandi Gli argomenti possono essere passati a qualsiasi funzione di un programma, compresa la main(), direttamente dalla linea.
Funzioni definite dall’utente
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Esercizi vari Esercizi.
Introduzione al LABVIEW
Creazione di matrici Delimititatore di riga Delimititatore di matrice
LabVIEW Laboratory Virtual Instrument Engineering Workbench
Introduzione alla programmazione lll
Access: Query semplici
INFORMATICA Altre Istruzioni di I/O. © Piero Demichelis 2 Funzioni di I/O Per la lettura e la scrittura da videoterminale il C prevede numerose istruzioni.
Corso di Laurea in Ingegneria per lAmbiente e il Territorio Informatica per lAmbiente e il Territorio Docente: Giandomenico Spezzano Tutor: Alfredo Cuzzocrea.
Windows Sistema operativo con interfaccia grafica per PC IBM compatibili (varie versioni dal 95) La gestione dei file viene fatta secondo le modalità.
Strutture di controllo in C -- Flow Chart --
I File.
Lezione VII Laboratorio di Programmazione. Simulazione esame Scrivere in C++ una funzione di nome RICERCA che, presi come parametri. un array A di numeri.
Lezione 2 Programmare in ASP
Corso di PHP.
Manipolazione dei dati
ARGONEXT Accesso Docente
Excel Avanzato Personalizzare Excel.
LABoratory Virtual Instrument Engineering Workbench LabVIEW.
INTRODUZIONE l sistema operativo è il primo software che lutente utilizza quando accende il computer; 1)Viene caricato nella memoria RAM con loperazione.
Università degli Studi di Bari Laurea in Chimica Di spense di Informatica - Dott. F. Mavelli Programmare in Matlab Funzioni di Libreria Funzioni definite.
Un report è in grado di personalizzare la stampa delle informazioni rispetto alla stampa di una tabella, di un recordset o di una maschera. I report possono.
STRUTTURA GENERALE DI UN ELABORATORE
LabVIEW LABoratory Virtual Instrument Engeneering Workbench LabVIEW LABoratory Virtual Instrument Engeneering Workbench.
13 Excel prima lezione.
File e Funzioni Si possono distinguere tre tipi di file che vengono utilizzati in MATLAB: M-file: hanno estensione .m e in essi vengono memorizzati i.
Programma di Informatica Classi Prime
Microsoft Access (parte 5) Introduzione alle basi di dati Scienze e tecniche psicologiche dello sviluppo e dell'educazione, laurea magistrale Anno accademico:
Tabelle Pivot Istogrammi e frequenze Diagramma box-plot
LABVIEW Sommario Che cosa è uno strumento virtuale (VI) creato con LABVIEW Parti di un VI: pannello frontale diagramma a blocchi Confronto tra il principio.
Lezione 3 Struttura lessicale del linguaggio
Microsoft Access Maschere (II).
Prof. Giuseppe Boncoddo
Introduzione a Javascript
Variabili Numeriche –Interi (byte, short, int, long): complemento a 2 –A virgola mobile (float, double): IEEE 745 Alfanumeriche –Carattere (char): Unicode.
ESPANSIONE Personalizzare l’interfaccia utente 2010.
1 Fabio Scotti – Università degli Studi di Milano Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani ( )
13 ottobre Decisioni F. Bombi 13 ottobre 2002.
Microsoft Access Chiavi, struttura delle tabelle.
ELABORAZIONE TESTI MICROSOFT WORD EM 09.
Informatica e Informatica di Base
Corso integrato di Matematica, Informatica e Statistica Informatica di base Linea 1 Daniela Besozzi Dipartimento di Informatica e Comunicazione Università.
Conversione Analogico/Digitale Le grandezze fisiche che vogliamo misurare variano con continuità in un dato intervallo ed in funzione del tempo: sono descrivibili.
Microsoft Access (parte 3) Introduzione alle basi di dati Scienze e tecniche psicologiche dello sviluppo e dell'educazione, laurea magistrale Anno accademico:
Manuale Utente – i-Sisen Questionario dei Consumi
Manuale Utente – i-Sisen Questionario del Gas Naturale
Corso integrato di Matematica, Informatica e Statistica Informatica di base Linea 1 Daniela Besozzi Dipartimento di Informatica e Comunicazione Università.
Microsoft Access Filtri, query. Filtri Un filtro è una funzione che provoca la visualizzazione dei soli record contenenti dati che rispondono a un certo.
SISTEMA GESTIONE TOMBINI
Labview I: Introduzione a LabView e Fondamenti del DataFlow.
Impariamo ad usare Excel. Utilizzare l’interfaccia Avviare Excel e iniziare ad esplorare l'interfaccia per acquisire familiarità con esso… Non c'è modo.
Lezione 13 Variabili Local e Global Obiettivi di apprendimento: A.Come usare le local variables B.Come usare le global variables C.Consigli sull’uso di.
V Audacity L’interfaccia e le operazioni base.
Transcript della presentazione:

Lezione I: Introduzione a LabView e Fondamenti del DataFlow Acquisire con labview

Introduzione a LabView LabView è una piattaforma specificatamente pensata per sviluppare sistemi di acquisizione, analisi e trattamento dati. I programmi in LabView sono definiti “Virtual Instruments” o VI in quanto simulano il comportamento di strumenti fisici reali.

Introduzione a LabView Ogni VI è composto da tre elementi: pannello frontale schema a blocchi icona dei connettori. Ogni operazione viene svolta graficamente in modo da semplificare lo sviluppo e l’uso dell’applicazione.

Il Pannello Frontale Il pannello frontale è l’INTERFACCIA che il VI presenta all’utente finale Deve contenere tutti i controlli necessari per interagire con il VI. Ogni dato da visualizzare all’utente deve essere riportato qui.

Il Pannello Frontale tutti gli elementi del pannello frontale sono: CONTROLLI, cioè oggetti a cui l’utente può fornire dati oppure INDICATORI, cioè oggetti da cui l’utente può ottenere dati

Lo Schema a Blocchi Contiene le controparti di tutti gli elementi presenti nel pannello frontale. Deve contenere i connettori e gli operatori necessari a definire come trattare il flusso di dati

Lo Schema a Blocchi costante operatore Oltre ai CONTROLLI ed agli INDICATORI sullo schema a blocchi troviamo anche: COSTANTI, cioè fonti di dati non definibili dall’utente OPERATORI, in grado di svolgere operazioni sulle linee di dati operatore costante

Icona dei Connettori Ogni VI può essere a sua volta incluso in un altro VI come un subVI. Ogni operatore dello schema a blocchi è in realtà un subVI L’icona dei connettori definisce input ed output di ogni subVI Un subVI espone la sua icona dei connettori al posto del pannello frontale

Esercitazione 001 Hands on Lab: Uso del pannello controlli e del pannello tools Suddivisione in tipi di dato Distinzione controlli/indicatori Riprodurre il pannello frontale mostrato di seguito preoccupandosi per ora unicamente dell’aspetto grafico Verificare di aver creato 7 controlli e 3 indicatori NB: -la barra verticale, “slide” è un controllo -tralasciare lo sfondo azzurro: è solo indicativo -i nomi di indicatori e controlli son solo esemplificativi

Esercitazione 001

Lavorare in DataFlow Il DataFlow specifica il PERCORSO che i dati devono compiere ma NON L’ORDINE con cui le singole operazioni vanno eseguite In LabView i dati sono rappresentati da delle linee che connettono la loro sorgente ad operatori ed indicatori. Ogni tipo di dato è rappresentato da un diverso colore, utilizzato sia per le linee che per i connettori dei subVI Una linea di spessore marcato indica un array od una matrice, mentre una linea sottile indica un valore scalare

Tipi di Dati LabView è basato sulla gestione del flusso di dati, quindi il loro tipo è fondamentale LabView gestisce un gran numero di tipi di dati diversi, suddivisi per categorie Dati di categorie diverse non possono interagire direttamente Tipi di dati diversi ma della stessa categoria possono interagire direttamente

Tipi di Dati Numerici (Interi, Decimali, Virgola Mobile, Date) Booleani Stringhe (Stringhe e Percorsi) Aggregati (Array, Matrici e Cluster) Forme d’Onda Dati Dinamici (Segnali ed Errori) Enumeratori

Modalità Debug È utile per visualizzare il flusso di dati nel diagramma a blocchi Rallenta l’esecuzione del VI e quindi non va usato se non necessario Permette di inserire delle sonde (probe) per visualizzare il valore del dato in un determinato punto del flusso

Esercitazione 002 Hands on Lab: Simmetria tra front panel e block diagram Distinzione tipi di dato e flussi Convenzione di verso per il flusso Help contestuale Convertire in indicatore il controllo slide Aggiungere dal block diagram due indicatori di tipo boolean Sfruttando la palette NUMERIC sommare al controllo ampiezza un numero casuale tra 0 e 1 Dividere il valore della fase per 180 e moltiplicarlo per π Collegare ad ogni INDICATORE presente un controllo del tipo corrispondente Eseguire in modalità debug, in run ed in run continously

Strutture Fondamentali Le strutture principali sono le medesime dei linguaggi di programmazione usuali: WHILE, FOR e CASE I dati entrano ed escono dalle strutture tramite TUNNEL letti solo all’avvio (ingresso) od alla fine (uscita) della struttura Ogni VI che interagisca con un utente richiede un ciclo WHILE principale che racchiuda ogni altro elemento e si interrompa tramite un controllo STOP per consentire all’utente di interagire

Strutture Fondamentali Sia i cicli iterativi (for, while) che i blocchi alternativi (case, conditional) possono essere visti come porzioni autonome di block diagram, in cui i dati viaggiano grazie ad ingressi ed uscite chiamati TUNNEL È bene mantenere la convenzione di flusso: ingressi a sinistra ed uscite a destra, in modo da leggere il flusso di dati da sinistra a destra

Ciclo WHILE Quello che si trova all’interno del ciclo viene ripetuto finchè la condizione di stop (dato booleano) è FALSE Ogni VI che interagisce con l’utente deve prevedere un ciclo WHILE generale con una condizione di STOP collegata ad un pulsante e contenere un operatore WAIT per evitare di saturare il processore

Esercitazione 003 Hands on Lab: Riprendere l’esercitazione 002 Ciclo WHILE generale con interruttore e WAIT Uso dell’operatore SELECT Mechanical action Riprendere l’esercitazione 002 Racchiudere l’intero front panel in un blocco WHILE con un operatore WAIT ms multiple a 500 ms che si interrompa alla pressione di STOP Sfruttando l’operatore di confronto SELECT fare in modo che la fase venga visualizzata in gradi se l’interruttore è off, in radianti se on Impostare la mechanical action di START su LATCH e quella dell’interruttore su SWITCH, quindi provare ad invertirle

Ciclo FOR Quel che si trova all’interno del ciclo viene ripetuto N volte: l’indice i va da 0 a N-1 Se un tunnel in ingresso trasporta un dato di tipo ARRAY all’interno del ciclo automaticamente avremo l’elemento i- esimo dell’array (indexing), viceversa in uscita possiamo scegliere di creare un array partendo dalla successione di dati

Esercitazione 004 Hands on Lab: FOR con contatore Debug e sonde Creare un nuovo VI in cui riprodurre il block diagram riportato nella slide precedente Per ora disattivare la funzione di autoindexing (verrà illustrata in seguito) Eseguire il VI in modalità debug

Struttura CASE Esegue solo ciò che è all’interno del riquadro corrispondente al dato cui è collegata la sua condizione. Il menu delle opzioni disponibili si adatta automaticamente al tipo di dato collegato alla condizione.

Esercitazione 005 Hands on Lab: Differenze tra CHART e GRAPH Struttura While, Case e For Creare un blocco while di interazione con l’utente (500ms) Creare un interruttore (switch) GENERATE RANDOM NUMBERS Creare sia un indicatore CHART che GRAPH Creare un controllo numerico MAX con valori tra 0 e 1000 Sfruttando opportunamente un blocco CASE ed un blocco FOR fare in modo che su entrambi gli indicatori (Chart e Graph) vengano visualizzati 100 numeri casuali compresi tra 0 e MAX, a che la generazione dei numeri avvenga solamente in caso di pressione dell’interruttore GENERATE RANDOM NUMBERS

Esercitazione 005

TODO: Prendere confidenza con i controlli del pannello frontale Capire la distinzione tra booleani LATCH e SWITCH Capire la distinzione tra Graph e Chart Iniziare a tracciare i valori tramite sonde e ricorrendo alla modalità debug Rappresentazione e formato dati Tunnel incompleti e completi Creazione automatica di costanti, indicatori e controlli

Lezione II: Array e Cluster Shift Register Forme d’Onda Acquisire con LabView

Riepilogo delle strutture Finora abbiamo visto le tre strutture di controllo base: WHILE, CASE e FOR Queste strutture possono svolgere funzioni complesse e molto utili, in modo da semplificare il lavoro quando si tratta di dati strutturati

Ciclo WHILE Quello che si trova all’interno del ciclo viene ripetuto finchè la condizione di stop (dato booleano) è FALSE Ogni VI che interagisce con l’utente deve prevedere un ciclo WHILE generale con una condizione di STOP collegata ad un pulsante e contenere un operatore WAIT per evitare di saturare il processore

Struttura CASE Esegue solo ciò che è all’interno del riquadro corrispondente al dato cui è collegata la sua condizione. Il menu delle opzioni disponibili si adatta automaticamente al tipo di dato collegato alla condizione.

Ciclo FOR Quel che si trova all’interno del ciclo viene ripetuto N volte: l’indice i va da 0 a N-1 Se un tunnel in ingresso trasporta un dato di tipo ARRAY all’interno del ciclo automaticamente avremo l’elemento i-esimo dell’array (indexing)

Shift Register Spesso è utile passare dei dati tra un’iterazione e la successiva all’interno di un ciclo: per farlo faccio ricorso ad uno SHIFT REGISTER A differenza di un tunnel lo shift register viene scritto e letto ad ogni iterazione È molto comodo per creare cumulate o sequenze di dati in congiunzione con l’operatore BUILD ARRAY

Esercitazione 006 Hands on Lab: Riprendere l’esercitazione 005 Shift register come memoria Riprendere l’esercitazione 005 Sfruttando uno shift register visualizzare in un nuovo controllo la differenza tra il valore di MAX attuale e quello precedente Calcolare e visualizzare min, max, media e deviazione standard dell’ultimo set di campioni generati alla pressione di un pulsante boolean CALCOLA (ma NON durante la generazione)

Array e Matrici Gli ARRAY sono strutture ordinate in una o due dimensioni contenenti un unico tipo di dato: se numerici possiamo vederli come vettori (monodimensionali) o come matrici (bidimensionali) Per creare un array partendo dai valori elementari esiste BUILD ARRAY, per l’inverso si sfrutta INDEX ARRAY In LabView gli array sono dinamici, quindi non hanno un numero fisso di elementi, ma possono essere ampliati con l’aggiunta di altri elementi tramite la funzione BUILD ARRAY Gli array possono contenere qualsiasi tipo di dato gestito da LabView, persino altri array, ma, a differenza dei cluster, non possono contenere elementi di tipi diversi Tutti gli array in LabView partono dall’elemento di indice 0

Esercitazione 007 Hands on Lab: Riprendere l’esercitazione 006 autoindexing Riprendere l’esercitazione 006 Sfruttando un build array ed uno shift register visualizzare min, max, media e deviazione standard anche di TUTTI I SET di dati generati dall’avvio del vi.

Cluster I CLUSTER sono aggregati, non necessariamente omogenei, di dati diversi. Per creare un cluster partendo dai dati elementari sfruttiamo l’operatore BUNDLE, per ottenere i dati elementari dal cluster si ricorre a UNBUNDLE Un cluster può anche definire delle etichette per i dati, ad esempio il tipo di dato ERRORE è un cluster contenente un booleano “STATUS” ed un intero “ERROR CODE”): sfruttiamo le funzioni “BY NAME” Un array può essere sempre convertito in cluster, ma non sempre è possibile l’inverso

Esercitazione 008 Hands on Lab: Riprendere l’esercitazione 007 Cluster ed operazioni su cluster Riprendere l’esercitazione 007 Alleggerire il ricorso alla memoria memorizzando e visualizzando le informazioni di max,min, media e dev.st solo sotto forma di cluster (per facilitare il calcolo aggiungere al cluster anche l’informazione del numero di campioni da cui i dati derivano) Mantenere in memoria solo i dati dell’ultima generazione di dati Visualizzare sia l’ultimo set di dati che lo storico temporale [eliminare il pulsante calcola e fare in modo che si avvii automaticamente al termine della generazione di numeri]

WaveForms & Signals Oltre ai dati classici già presentati esistono alcuni tipi di dati particolari dedicati a generare, rappresentare ed analizzare forme d’onda Un tipo di dato fondamentale è il waveform, per il quale esistono una serie di VI ed operatori già definiti Molti indicatori od operatori sono POLIMORFICI e si adattano al tipo di dato che viene collegato, waveform e signals compresi Questi tipi di dati sfruttano un set di VI autonomi per lettura e scrittura su file

Esercitazione 009 Hands on Lab: Riprendere l’esercitazione 008 Sfruttando gli operatori per la costruzione di waveform aggiungere ai dati generati casualmente l’informazione della frequenza di campionamento impostabile tramite un controllore numerico letto in avvio. [Impostare come istante di inizio della waveform l’ora attuale tramite gli operatori TIME/DATE]

Esercitazione 010 Hands on Lab: Mantenere il block diagram ordinato! Riprendere l’esercitazione 009 Sostituire all’operatore di costruzione delle waveform un operatore specifico di generazione di waveform a rumore bianco Sommare alla waveform a rumore bianco una sinusoidale generata secondo gli stessi parametri, di cui siano impostabili frequenza e ampiezza [Fare in modo che siano sommabili N sinusoidi]

LabView EXPRESS I componenti express consentono di sviluppare rapidamente applicazioni di analisi ed interpretazione misure Sono VI polimorfici con un apposito wizard di configurazione Spesso richiedono di riavviare il VI per poter funzionare correttamente (son progettati per un VI “monouso”)

Esercitazione 011 Hands on Lab: Componenti express Riprendere l’esercitazion 010 Sfruttando un operatore EXPRESS visualizzare su di un grafico a parte la componente in ampiezza della FFT del segnale generato [Fare in modo che l’FFT visualizzata sia il risultato di una media di N generazioni] [In caso di errore visualizzarlo all’utente ed interrompere l’esecuzione del programma]

Leggere Dati da File Esistono vari tipi di file che LabView può leggere, sia nativamente che interpretando stringhe formattate I più comuni sono i file SPREADSHEET, file ASCII che rappresentano numeri a virgola mobile separati in righe e colonne da tabulatori od altro, ad esempio i CSV, separati da “;” e facilmente leggibili in EXCEL Un’alternativa sono FILE DI TESTO, file ASCII che riportano solo array di stringhe (una per riga), ma che richiedono una conversione tramite parsing I FILE BINARI scritti da LabView sono di lettura immediata e riproducono esattamente i valori salvati senza bisogno di alcuna conversione. I DATALOG possono essere letti direttamente senza conversione, prestando però attenzione alla sequenzialità con cui sono stati salvati in origine

Salvare Dati su File Esistono vari tipi di file che LabView può scrivere, da utilizzare a seconda del dato che si vuole salvare I più comuni sono i file SPREADSHEET, file ASCII che rappresentano numeri a virgola mobile separati in righe e colonne da tabulatori od altro Un’alternativa sono FILE DI TESTO, file ASCII che riportano solo array di stringhe (una per riga) I FILE BINARI rappresentano qualsiasi tipo di dato, ma sono leggibili solo da LabView I DATALOG sono file binari ad accesso rapido, utili per tracciare l’andamento di valori nel corso dell’esecuzione del programma

Componenti EXPRESS Esistono anche funzioni ExpressVI per la lettura e la scrittura di forme d’onda e di vari dati dinamici Questi file sono chiamati MEASUREMENT FILES e possono essere sia binari che testuali L’uso di questi ExpressVI permette di configurare rapidamente un gran numero di opzioni di salvataggio

Esercitazione 012 Hands on Lab: OBIETTIVO: Permettere di salvare dei dati storici ed il loro spettro calcolato tramite la FFT Creare e visualizzare una coppia di sinusoidi di ampiezza casuale (0,1) e frequenze determinate dall’utente tramite controlli. Calcolare e visualizzare lo spettro di entrambe le waveform tramite il vi FFT Sfruttare il componente express WRITE MEAS. FILE Alla pressione di un tasto SALVA TIME HISTORY il VI deve chiedere all’utente il nome del file da scrivere e salvare i segnali già acquisiti in formato TESTO -è preferibile salvare aggiungendo (manualmente) l’estensione CSV -per comodità mantenere uno shift register con i segnali acquisiti -aggiungere una sola colonna di tempo per tutti i segnali -se il file già esiste salva con un nuovo nome Alla pressione di SALVA FFT deve fare lo stesso ma salvare lo spettro SALVARE UN PAIO DI GENERAZIONI ED UN PAIO DI SPETTRI

Esercitazione 013 Hands on Lab: Creare un nuovo VI autonomo, con il solito ciclo while generale, un pulsante di stop, un pulsante “LEGGI”, un pulsante “ACCODA” ed un wait a 50ms OBIETTIVO: Creare un vi che legga e visualizzi in un grafico i segnali contenuti in un file di testo precedentemente salvato (i file di misura si trovano sul sito archimedes nel materiale del corso) Sfruttare il componente express READ MEAS. FILE Alla pressione di LEGGI il VI deve chiedere all’utente il nome del file da leggere e visualizzare sul grafico i segnali contenuti nel file Alla pressione di ACCODA leggere i segnali contenuti in un file (chiedere all’utente il nome) ed accodarli ad uno shift array dei segnali già letti, in modo da visualizzare sia il nuovo file che i precedenti sullo stesso grafico LEGGERE 3 FILE TRA GLI ESEMPI ED I 2 DELL’ES. PRECEDENTE

subVI La programmazione in LabView, essendo prettamente grafica, richiede più che in altri ambiti modularità e possibilità di riutilizzo L’obiettivo nello sviluppare un VI è quello di realizzare un block diagram autoesplicativo Per ottenere tutto ciò si fa ricorso ai subVI, ovvero alla possibilità di ogni VI di essere richiamato all’interno di un altro VI

Icona dei Connettori Ogni VI può essere a sua volta incluso in un altro VI come un subVI. Ogni operatore dello schema a blocchi è in realtà un subVI L’icona dei connettori definisce input ed output di ogni subVI Un subVI espone la sua icona dei connettori al posto del pannello frontale

Icona dei Connettori Anche per la definizione di input ed output si procede per via grafica L’icona dei connettori, in modalità show connectors, permette di associare ogni elemento del front panel ad un terminale del VI Ogni terminale può essere consigliato (default), obbligatorio od opzionale È importante mantenere la convenzione che vuole gli input a sinistra e gli output a destra

Modalità di Esecuzione Grazie alla finestra VI properties possiamo definire varie proprietà di esecuzione del subVI, la principale rimane però la modalità di esecuzione L’esecuzione è detta reentrant se possono esistere più istanze del medesimo subVI in esecuzione in contemporanea L’esecuzione è invece non-reentrant se esiste una sola istanza del subVI cui accedono successivamente i vari VI che lo richiamano In entrambi i casi un unica istanza del subVI viene collegata ad ogni VI che l’ha richiamata, rendendo quindi possibili operazioni iterative in successione (ad esempio un inizializzazione di una risorsa solo alla prima chiamata od un contatore interno)

Esercitazione 014 Hands on Lab: CREARE UN NUOVO VI SENZA INTERAZIONE CON L’UTENTE RIPRENDERE L’ESERCITAZIONE 013 OBIETTIVO: Creare un nuovo operatore subVI in grado di calcolare la media, la varianza, il massimo ed il minimo di un segnale dato un segnale ed i valori storici di acquisizioni precedenti (vedi esercitazione 008 Collegare all’icona dei connettori i controlli double ed il grafico -rispettare le convenzioni input=sinistra output=destra!! -cambiare l’icona in modo che sia significativa Alterare le proprietà del vi in modo che non si apra quando viene chiamato (vi properties->execution->open when called) Impostare i valori di default dei vari controlli non obbligatori (data operation->make current value default) NEL VI DELL’ESERCITAZIONE 018 aggiungere (sfruttando il nuovo operatore) anche un canale che mostri il valore del modulo del vettore accelerazione sullo stesso grafico, nonché il valore RMS su un indicatore di tipo GAUGE

Errori RunTime Gli errori si distinguono a seconda dell’utilizzatore che li genera: se avvengono mentre stiamo progettando il VI sono errori di DESIGN TIME e impediscono l’avvio del VI stesso se avvengono quando il VI è in esecuzione sono errori di RUNTIME e non sono prevedibili a priori Ogni subVI in grado di generare errori deve prevedere un errore in input ed uno in output

Il Flusso degli Errori Ogni VI che può generare un errore RunTime dispone di due connettori, chiamati error in (no error) ed error out Il tipo di dati che gestiscono questi terminali è un cluster particolare, composto da status, codice e messaggio Alcuni controlli, come il blocco case, sono in grado di adattarsi al tipo di dato errore grazie al polimorfismo

Il Flusso degli Errori un VI che trovi un error in diverso da no error non viene eseguito, ma passa l’errore al terminale error out direttamente un VI che riscontri un errore RunTime scrive sul suo terminale error out l’errore riscontrato, se nulla è collegato ad error out, compare una finestra di errore standard all’utente

Sequenze di esecuzione Lavorando in dataflow non si possono controllare le sequenze di operazioni ma solo il flusso di dati Flussi paralleli avvengono secondo le disponibilità del processore e dell’hardware e non possiamo quindi definirne la sequenza Nel caso delle operazioni debbano necessariamente essere eseguite in successione possiamo ricorrere al FLUSSO DEGLI ERRORI per imporre una sequenza specifica Oltre agli errori anche altri tipi di dato contenenti risorse (task, handle, file) sfruttano una catena di connettori IN/OUT utili per creare sequenze

Esercitazione 015 Hands on Lab: RIPRENDE LE ESERCITAZIONI 012 E 013 OBIETTIVO: Poter visualizzare sulla finestra principale del sistema di acquisizione composizioni di file letti sfruttando il vi già creato Creare un flusso degli errori corretto per l’esercitazione 017 e 018 (inserire in fondo al vi 017 un visualizzatore di un eventuale errore con general error handler, e terminare il vi se l’errore è stato generato) Inserire nell’icona dei connettori dell’esercitazione 018 i terminali per ERROR IN, ERROR OUT e SEGNALI LETTI Inserire nel vi dell’es. 017 un pulsante LEGGI alla cui pressione la catena degli errori venga passata al vi 018 (usare SELECT A VI…) Sfruttando il terminale SEGNALI LETTI del vi 018 passare i segnali letti al grafico principale ed all’FFT LEGGERE 3 FILE TRA GLI ESEMPI PRECEDENTEMENTE SALVATI

Esercitazione 016 Hands on Lab: ESERCITAZIONE CONCLUSIVA OBIETTIVO: Creare un sistema di acquisizione completo in grado di: Simulare* l’acquisizione di dati sia in modalità continua che discontinua Salvare i dati delle time histories su file Leggere i dati da file Calcolare FFT da dati salvati o acquisiti Salvare le FFT calcolate su file di testo Prendere spunto dalle esercitazioni precedenti Ricorrere il meno possibile agli operatori express Sfruttare in maniera intensiva subVI e cluster *considerare che verrà poi sostituito con un’acquisizione reale