Variabili Locali e Globali

Local e Global Variable sono utili, facili da implementare, ma attenzione a non abusarne. In questo articolo cerchiamo di vederne l'utilizzo migliore, almeno dal nostro punto di vista.

Benvenuto a questo nuovo articolo della serie labVIEW.

Parliamo di Variabili locali e Globali che spesso sono iperutilizzate dai neofiti o addirittura messe al bando dagli sviluppatori più zelanti.

In labview il modello primario di programmazione è il data flow.

Il flusso di dati garantisce sincronismo nell’esecuzione dei nodi.

La programmazione parallela prevede l’esecuzione di thread o processi in modo asincrono, quindi un esecuzione indipendente e autonoma tra loro.

Per comunicare dati tra processi paralleli, esistono diversi metodi.

Un primo metodo è l’utilizzo di variabili locali e globali.

Variabili Locali

Sono una memoria implicitamente collegata a un controllo o indicatore.

Sono locali in quanto associate ad oggetti del Front Panel e quindi localmente al vi.

Possono scrivere o leggere il valore di un controllo o un indicatore programmaticamente.

Sono comode e facili da implementare, questo spesso ne crea un abuso nell’utilizzo.

Il problema principale nasce da una perdita di leggibilità e manutenibilitá del codice e quando abbiamo più di una variabile utilizzata in scrittura, si può verificare una race condition o accesso concorrente.

Esempio di Race Condition sull’indicatore Risultato

Altro problema è il collegamento implicito, che crea un incompatibilità con la mechanical action “latch” dei boolean, limitando l’usabilità del Front Panel, a meno di meccanismi old style.

Non possiedono un meccanismo di sincronizzazione.

Ma allora le local sono da evitare? Cosa dovrei utilizzare?

Non sono da evitare, ma circoscriverne l’utilizzo a compiti come inizializzare e scrivere programmaticamente su un controllo, mentre gli indicatori possono essere aggiornati con il data flow o altri metodi che possano fornire anche sincronizzazione tra loop paralleli.

Variabili Globali

Le variabili Globali, sono memorie dichiarate su file per cui le istanze sono esplicite ai controlli dell’interfaccia e sono condivisibili tra diversi vi.

Questo risolve il problema della incompatibilità per i boolean di tipo latch. Il che utilizzati in modalità 1wMr (1scrittore Molti lettori) possono essere comode come tag per leggere il valore di un controllo da un processo su un altro processo. Esempio: un loop scrive la variabile da un controllo di stop e gli altri loop leggono il valore della variabile che setta anche la loop condition, sincronizzando la chiusura dei processi.

Anche in questo caso quindi non si risolve la race condition, ne il sovrautilizzo che genera perdita di leggibilità e manutenibilitá.

Polling

Questo tipo di sincronismo inoltre avviene sul dato, quindi non fornisce un utilità di notifica o evento, costringendo sl polling programmatico(devo leggere sempre lo stato per capire se è successo qualcosa).

Approfondimenti

Utilizzo variabili locali e globali linee guida da NI

Potrebbe interessarti anche

Refactoring in LabVIEW.

Il refactoring in LabVIEW è un processo di ristrutturazione di codice, funzionante correttamente, con lo scopo di renderlo leggibile, manutenibile ed espandibile.

Malleable VI

I VIM o VI malleable, sono Vi polimorfi sul dato. Sono da tenere in considerazione nella creazione delle proprie API.

Variabili Locali e Globali

Local e Global Variable sono utili, facili da implementare, ma attenzione a non abusarne. In questo articolo cerchiamo di vederne l'utilizzo migliore, almeno dal nostro punto di vista.

Manutenzione predittiva: significato e obiettivi

Cosa significa svolgere manutenzione predittiva? Effettuare interventi mirati sui macchinari, per prevenire i guasti con largo anticipo.

WATS e OEE

WATS ha migliorato una delle sue features più importanti: l’OEE. Il focus sulla produttività è una sfida costante per le imprese, non di meno in un settore competitivo come quello della manifattura elettronica.

La manutenzione predittiva

Manutenzione predittiva per intervenire sul macchinario prima che si guasti. Fermi di produzione evitati, riduzione costi e pianificazione interventi.