Cerca nel blog

Loading

10 ottobre 2012

[LabVIEW] La definizione di nuovi tipi, controlli e indicatori

Chi nella propria vita ha programmato almeno un po' in un linguaggio testuale, sicuramente si è imbattuto nella definizione di nuovi tipi di dati. A partire dai tipi standard, come i numeri interi, quelli in virgola mobile, i caratteri e i booleani, in gran parte dei linguaggi di programmazione è possibile definire nuovi tipi. La domanda sorge spontanea: è possibile fare altrettanto in LabVIEW?

Scaricate il progetto tutorial da questo indirizzo e continuate a leggere...

Nuovi tipi, perché?

Bella domanda. Ci sono svariate ragioni per volere definire un nuovo tipo di dato, ma il motivo di base resta sempre quello di semplificare la vita dell'utente. A volte un solo numero non basta per descrivere il risultato di un processo, potrebbero essere necessarie più informazioni simultaneamente per qualificare il risultato. Immaginiamo che il vostro programma si occupi di interrogare strumenti di misura: in genere il risultato che ci attendiamo da questa operazione è un numero, ma in alcune particolari situazioni potrebbe non essere sufficiente.

Per esempio, potrebbe essere interessante sapere, oltre al valore misurato, anche quando questo valore è stato misurato, tecnicamente si parla di un time-stamping. Poi ci piacerebbe conoscere lo stato dello strumento, infatti se questo si trova in una condizione di malfunzionamento, andremo ad interpretare in modo assolutamente differente il valore numerico ottenuto come risultato della misura.

Il cluster

Immaginiamo che la nostra informazione di base sia composta da quattro sottovariabili:
  • un time-stamp che rappresenta l'istante in cui è stata effettuata la misura
  • un numero in virgola mobile doppia precisione (a.k.a. double) che è il vero e proprio risultato della misura
  • un enumeratore con un certo numero di valori che rappresenta lo stato del sistema tipo: Ok, Errore, etc...
  • una stringa di dimensioni variabili in cui viene riportato una sorta di commento.
In C e in altri linguaggi testuali andremmo a definire quella che è una struct, ovvero l'insieme disomogeneo di variabili a cui possiamo accedere per nome. L'equivalente LabVIEW delle struct sono i cluster che sono dei contenitori di altre variabili e li raggruppa al suo interno. Per accedere al valore di una singola variabile si ricorre all'unbundle (letteralmente disassemblare) o chiamando per nome il membro del cluster a cui siamo interessati o per posizione all'interno dell'oggetto. 

Tre modi per i nuovi tipi

Con LabVIEW quando immaginiamo un nuovo tipo di variabile, oltre a pensare al modo in cui questi dati sono organizzati nella memoria (quanti byte per esempio) immaginiamo anche come questa venga rappresentata sul pannello frontale. Abbiamo tre differenti modi per definire un nuovo tipo/controllo/indicatore
  • Possiamo l'aspetto di un controllo, diciamo una modifica estetica e che vale esclusivamente per quello specifico controllo. In questo caso la parola chiave è "control".
  • Possiamo creare un tipo nuovo, in questo modo aggreghiamo insieme uno o più tipi esistenti, disponiamo gli elementi sul pannello frontale e li salviamo come "type def". In questo modo stiamo associando questo nuovo elemento ad un file e potremo inserirlo tutte le volte che vogliamo sul pannello frontale o sul diagramma. Qualora dovessimo modificarne il contenuto (la struttura dei dati) questo si propagherà per tutti gli indicatori/controlli/costanti di quel tipo che abbiamo inserito. Se facciamo una modifica estetica, questa varrà solo per il controllo/indicatore specifico che stiamo modificando.
  • La terza ed ultima possibilità è lo "strict type def". La differenza sta in quello strict, che significa che qualunque modifica, anche estetica si ripercuoterà su tutte le istanze di quel controllo/indicatore personalizzato. 
Operativamente si procede in modo molto semplice: cliccate con il tasto destro sopra il controllo che volete personalizzare, selezionate Advanced e quindi Customize. Vi si aprirà la finestra di modifica per i controlli, fate tutte le modifiche del caso e prima di chiudere decidete quale delle tre modalità di cui sopra scegliere utilizzando il menu a tendina evidenziato nella finestra qui a lato. 

Alcuni esempi di utilizzo

Torniamo al nostro caso iniziale con il cluster che contiene le informazioni che ci servono per caratterizzare una lettura del nostro strumento. Immaginiamo di volere trasferire questo gruppo di informazioni ad un altro computer, per esempio attraverso una connessione TCP o UDP o scegliete voi quale protocollo. Quello che dobbiamo fare è letteralmente spiaccicare il cluster in una stringa (flatten to string): questo VI denaturalizza la struttura del cluster per renderlo una sequenza di singoli byte come fosse una stringa di caratteri. Sul computer ricevente esiguirete l'operazione contraria (unflatten to string) dove dovete suggerire al VI di utilizzare il tipo che abbiamo appena creato per eseguire la ricostruzione. 
Altro esempio molto comodo è quando dobbiamo salvare queste informazioni su un file. Tanti preferiscono salvare su file di testo per poterle rileggere facilmente da un editor di testo, ma con un grosso spreco di spazio su disco. La soluzione migliore è quella di salvare su un file binario, più difficile da re-interpretare dall'occhio umano, ma facilissimo per il computer. Guardate quanto sono semplici i diagrammi per scrivere e leggere il nostro cluster personalizzato (non fatevi spaventare dal diagramma di destra, tutta la complicazione è per riempire il cluster con qualcosa di diverso tutte le volte!)



Chiunque può lasciare commenti su questo blog, ammesso che vengano rispettate due regole fondamentali: la buona educazione e il rispetto per gli altri.

Per commentare potete utilizzare diversi modi di autenticazione, da Google a Facebook e Twitter se non volete farvi un account su Disqus che resta sempre la nostra scelta consigliata.

Potete utilizzare tag HTML <b>, <i> e <a> per mettere in grassetto, in corsivo il testo ed inserire link ipertestuali come spiegato in questo tutorial. Per aggiungere un'immagine potete trascinarla dal vostro pc sopra lo spazio commenti.

A questo indirizzo trovate indicazioni su come ricevere notifiche via email sui nuovi commenti pubblicati.

0 commenti:

Posta un commento

Chiunque può lasciare commenti su questo blog, ammesso che vengano rispettate due regole fondamentali: la buona educazione e il rispetto per gli altri.

Per commentare potete utilizzare diversi modi di autenticazione, da Google a Facebook e Twitter se non volete farvi un account su Disqus che resta sempre la nostra scelta consigliata.

Potete utilizzare tag HTML <b>, <i> e <a> per mettere in grassetto, in corsivo il testo ed inserire link ipertestuali come spiegato in questo tutorial. Per aggiungere un'immagine potete trascinarla dal vostro pc sopra lo spazio commenti.

A questo indirizzo trovate indicazioni su come ricevere notifiche via email sui nuovi commenti pubblicati.

Related Posts Plugin for WordPress, Blogger...