Trasferimento dati tra le iterazioni di Loop in NI LabVIEW

Programmando con i cicli, dovete spesso accedere ai dati provenienti da iterazioni del ciclo precedenti in LabVIEW. Per esempio, se state acquisendo un campione di dato in ogni iterazione di un ciclo e dovete fare la media ogni cinque campioni, dovete memorizzare i dati delle iterazioni precedenti del ciclo.

Shift Register

 

Video: Shift Register

Usate gli shift register quando volete passare i valori dalle iterazioni precedenti all’iterazione successiva in un ciclo. Uno shift register appare come una coppia di terminali opposti direttamente uno all’altro sui lati verticali del bordo del ciclo.

Il terminale sul lato destro del ciclo contiene una freccia verso l’alto e memorizza i dati al completamento di un’iterazione. LabVIEW trasferisce i dati connessi al lato destro del registro all’iterazione successiva. Dopo l’esecuzione del ciclo, il terminale sul lato destro del ciclo restituisce l’ultimo valore memorizzato nello shift register.

Create uno shift register cliccando con il tasto destro sul lato sinistro o destro di un ciclo e selezionando Add Shift Register dal menu rapido.

Uno shift register trasferisce qualunque tipo di dato e si modifica automaticamente per corrispondere al tipo di dato del primo oggetto connesso allo shift register. I dati che collegate ai terminali di ogni shift register devono essere dello stesso tipo.

Potete aggiungere più di uno shift register ad un ciclo. Se si hanno operazioni multiple che utilizzano i valori dell’iterazione precedente all’interno del ciclo, usare shift register multipli per memorizzare i valori dei dati dei diversi processi nella struttura, come mostrato in Figure 1.

Figura 1. Uso di shift register multipli

Inizializzazione degli shift register

L’inizializzazione degli shift register ripristina il valore che lo shift register trasmette alla prima iterazione del ciclo quando il VI entra in esecuzione. Inizializzate lo shift register collegando un controllo o una costante al terminale dello shift register sul lato sinistro del ciclo, come mostrato in Figura 2.

Figura 2. Shift Register inizializzato

In Figura 2, il For Loop va in esecuzione cinque volte, incrementando ogni volta di uno il valore che lo shift register trasporta. Dopo cinque iterazioni del For Loop, lo shift register trasmette il valore finale, 5, all’indicatore e il VI termina l'esecuzione. Ogni volta che mandate in esecuzione il VI, lo shift register comincia dal valore  0. Se non inizializzate lo shift register, il ciclo usa il valore scritto sullo shift register durante l’ultima esecuzione del ciclo oppure, se il ciclo non è mai stato eseguito, utilizza il valore di default per il tipo di dato. Usate uno shift register non inizializzato per preservare l’informazione di stato tra esecuzioni successive di un VI.

Figura 3. Shift Register non inizializzato

In Figura 3, il For Loop va in esecuzione cinque volte, incrementando ogni volta di uno il valore che lo shift register trasporta. La prima volta che si avvia il VI, lo shift register comincia con un valore 0, che è il valore di default per i numeri a 32-bit. Dopo cinque iterazioni del For Loop, lo shift register trasmette il valore finale, 5, all’indicatore e il VI termina l'esecuzione. La volta seguente quando si manda in esecuzione il VI, lo shift register comincia dal valore 5, che era l'ultimo valore dell'esecuzione precedente. Dopo cinque iterazioni del For Loop, lo shift register trasmette il valore finale, 10, all’indicatore. Se si manda nuovamente in esecuzione il VI, lo shift register comincia dal valore 10 e così via. I registri non inizializzati mantengono il valore dell’iterazione precedente fino alla chiusura del VI.

Stacked Shift Register

Gli stacked shift register consentono di accedere ai dati di iterazioni precedenti del ciclo. Gli stacked shift register memorizzano i valori provenienti da iterazioni multiple precedenti e trasportano questi valori alle iterazioni successive. Per creare uno stacked shift register, cliccate con il tasto destro del mouse sul terminale sinistro e selezionate Add Element dal menu rapido.

Gli stacked shift register possono stare solo sul lato sinistro del ciclo perché il terminale destro trasferisce i dati generati solo dall’iterazione corrente a quella successiva, come mostrato in Figura.

Figura 4. Uso di stacked shift register

Se aggiungete un altro elemento al terminale sinistro nel diagramma a blocchi precedente, i valori delle ultime due iterazioni passano all’iterazione seguente, con i valori dell’iterazione più recente registrati nello shift register superiore. Il terminale inferiore conserva i dati che gli sono stati passati dall’iterazione precedente.

Impara le basi fondamentali di LabVIEW in un modo nuovo

Scopri LabVIEW con questa nuova esperienza interattiva

Clicca qui

Prev Strutture di Dati in NI LabVIEW
Gestione errori in NI LabVIEW Next