Due funzioni fondamentali che spesso vengono confuse, se sei un nuovo a questo linguaggio, sicuramente ti potrà esssere utile un approfondimento sul funzionamento delle seguenti funzioni e come utilizzarle al meglio nei vostri VI

La funzione Wait(ms) semplicemente blocca l’esecuzione fino a che il tempo specificato non trascorre.

La funzione Wait Until Next ms Multiple invece blocca l’esecuzione fino a quando il valore del clock di sistema, espresso in millisecondi, non è divisibile per valore specificato nella funzione.

Entrambe hanno funzione di “Attesa”, ma hsnno differenze da conoscere, per utilizzarle al meglio.

Abbiamo deciso di eseguire un esempio pratico su un VI.

Nell’esercizio utilizziamo il TickCount.

La funzione tick count (ms) viene utilizzata in LabVIEW come un cronometro, essa restituisce il tempo di esecuzione  in millisecondi(ms), perciò può essere molto utile anche per fare dei test di prestazione dei propri VI.

Citando l’ Help di LabVIEW

The base reference time (millisecond zero) is undefined. That is, you cannot convert millisecond timer value to a real-world time or date. Be careful when you use this function in comparisons because the value of the millisecond timer wraps from (2^32)–1 to 0.

Per lo scopo di questa dimostrazione può andare bene, pensare di utilizzare un elapsed time per non rischiare il passaggio (2^32).

Tornando a noi, cosa fa e come si comporta il VI?

Dividiamo la sequenza in 2 e analizziamola in modo più approfondito:

Nel primo frame della sequenza vi è in ingresso il Tick Count iniziale, il valore di esso non è alterato dalla funzione Wait, infatti vi è una misura iniziale che descrive il tempo di esecuzione del primo loop.
Nel secondo frame è presente un secondo Tick Count, questa possiamo dire che è influenzato dal Wait, se lo andiamo a esaminare possiamo notare che il suo valore in millisecondi è più alto del primo tick count, questo perché non ha misurato solamente il tempo per l’esecuzione del loop, ma ha anche atteso tempo poiché condizionato dalla funzione Wait del frame precedente.

Funzionamento Wait until next ms multiple

Nel terzo frame vi sono in ingresso i primi 2 Tick count, essi non vengono influenzati dalla funzione Wait until next ms multiple, infatti sarà il terzo ovvero quello presente nell’ultimo frame ad essere influenzato dal frame precedente, perciò anche da questa funzione.
Nella quarta è ultima frequenza è presente il terzo Tick count, questo in confronto agli altri è stato influenzato da tutte le funzioni ed è quello con valore in ms elevato poiché ha atteso per un periodo più elevato (Loop+Wait+Wait Until).

Adesso abbiamo tutti i dati necessari per eseguire operazioni all’ interno del VI.

Possiamo estrarre attraverso semplici operazioni di sottrazione il valore in tempo reale del Wait Until e del tempo totale.

Infatti per misurare il Wait Until basterà sottrarre al Tick 3 ( con il Wait Until), il Tick 2.

Mentre per calcolare il tempo totale per l’esecuzione del codice basterà eseguire un operazione di sottrazione tra il Tick 3 ed il Tick iniziale.

Consideriamo come valori di input Wait=50 e del WaitUntil= 100,  avremo come risultato:

Il WaitUntil risulta 50, poichè esso si adatta per far si che ogni iterazione avvenga ad intervalli regolari, ovvero ogni 100ms.

Infatti visto che il Tick 2, quello del wait risulta 50ms, la funzione WaitUntil che ha input=100 causerà un’attesa di 50ms.

Consideriamo adesso altri valori di input Wait=200 e del WaitUntil=100, avremo come risultato:

Il Wait Until adesso risulta 100, infatti non riesce adattarsi poichè abbiamo inserito come input nel Wait un ritardo ben superiore a 50, che riusciva ad essere “compensato” grazie alla funzione WaitUntil.

In questo caso Il Total time risulta 300 visto che: Tick 3= 50ms(Loop)+200ms(wait)+100ms(WaitUntil) =350ms- 50ms(loop)= 300ms