LabView Lezione 4 by 9Q1057zw

VIEWS: 65 PAGES: 17

									Lezione IV:
File I/O, subVI ed errori

ACQUISIRE CON LABVIEW
                         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 017
Hands on Lab:
   RIPRENDERE L’ESERCITAZIONE 016
   Aggiungere un pulsante SALVA TIME HISTORY
    ed un pulsante SALVA FFT



OBIETTIVO:
   Permettere di salvare sia i dati acquisiti
   che lo spettro calcolato tramite la FFT

   Sfruttare il componente express WRITE MEAS. FILE
   Alla pressione di 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 ACQUISIZIONI ED UN PAIO DI SPETTRI
                                        Esercitazione 018
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 019
Hands on Lab:
   CREARE UN NUOVO VI
    SENZA INTERAZIONE CON L’UTENTE
   RIPRENDERE L’ESERCITAZIONE 018




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 020
Hands on Lab:
   RIPRENDE LE ESERCITAZIONI 017 E 018



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 021
Hands on Lab:
 ESERCITAZIONE CONCLUSIVA



OBIETTIVO:
  Creare un sistema di acquisizione completo in grado di:
      Acquisire segnali da più canali 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

								
To top