Forum Italiano sui Prodotti NI

annulla
Visualizzazione dei risultati per 
Cerca invece 
Intendevi dire: 

reinizializzare un arrey e fare un a media

Risolto!
Vai alla soluzione

Buonasera, devo acquisire e comandare delle misure di pressione in tempo reale e ho pensato ad un array su labview. Vorrei sapere se esiste un array che mi permetta di fare una media ogni n valori e mandarla in uscita.

Per comprenderci meglio dovrei fare una media mobile degli n-valori di pressione in modo da stabilizzare il controllo di una valvola di riduzione delle pressioni visto che il segnale del misuratore di pressione oscilla eccessivamente. 

grazie e spero di essere stato chiaro.

 

 

0 Kudos
Messaggio 1 di 15
6.127Visualizzazioni

La funzione Mean Point By Point, che trovi nella palette Signal Processing -> Point By Point -> Prob & Stat, risolve tutti i tuoi problemi senza dover creare un array. Restituisce la media su un numero fisso di campioni.

Se però hai bisogno di elaborazioni più raffinate, per esempio variare il numero di campioni in base al valore, allora devi implementare un buffer circolare, col quale potrai fare tutto ciò che vuoi (con un po' di lavoro).

Paolo
-------------------
LV 7.1, 2011, 2017, 2019, 2021
Messaggio 2 di 15
6.097Visualizzazioni

Ciao, ti ringrazio per avermi risposto.

Ho provato la mean ptbypt  ad esempio se imposto sample lenght 5 il VI dovrebbe darmi la media ogni 5 valori in ingresso, giusto?

Nello schema allegato però non funziona, mi restituisce lo stesso numero che il generatore di numeri casuali mi fornisce. Perchè?

Grazie ancoraaa

 

 

0 Kudos
Messaggio 3 di 15
6.083Visualizzazioni
Soluzione
Accettato da autore argomento Fabrisalsh

Se passi sempre true all'input di Reset, il vi ogni volta ricomincia dall'inizio.

Devi resettare, una sola volta, per sbarazzarti dei dati vecchi quando passi da una sessione di misura ad un'altra.

Paolo
-------------------
LV 7.1, 2011, 2017, 2019, 2021
Messaggio 4 di 15
6.073Visualizzazioni

Perdona la mia inesperienza, ma se metto come sample lenght=2 e i valori di input sono 1 ogni secondo dovrebbe restituirmi 1 valore mediato ogni due secondi (se ho capito bene) e questo lavoro lo dovrebbe fare in continuo così da mandare a comando la media.

ps Ho corretto il true con un boolean, l' ho inizializzato con true e poi sono passato a false mai da sempre lo stesso problema e cioè mi da i valori del random number. 

ripeto scusa la mia inesperienza e ti ringrazio tantissimo.

0 Kudos
Messaggio 5 di 15
6.065Visualizzazioni
Soluzione
Accettato da autore argomento Fabrisalsh

Restituisce, ogni secondo, il valore mediato sugli ultimi due secondi.

Dal momento in cui passi false in poi, comincia a mediare, prima ovviamente no.

Manda il vi oppure un'immagine se hai LabVIEW 2018 (con LV2017 non lo potrei aprire).

Paolo
-------------------
LV 7.1, 2011, 2017, 2019, 2021
Messaggio 6 di 15
6.058Visualizzazioni

Quindi ogni secondo avrei la media degli ultimi due e automaticamente al primo secondo avrei lo stesso numero del random number ovviamente.

TI ho allegato immagine e VI (ho il 2017 purtroppo);

Quando eseguo a rallentatore, in uscita (Numeric 2 sul VI), leggo sempre lo stesso numero del random number.

perchè?

 

 

Scarica tutti
0 Kudos
Messaggio 7 di 15
6.051Visualizzazioni
Soluzione
Accettato da autore argomento Fabrisalsh

Se mandi un true nel Conditional Terminal, il loop termina subito e così il vi. Siccome hai usato Run Continuously, però, il vi viene continuamente riavviato. Questo vuol dire che ad ogni iterazione si riparte da zero; il risultato è quello che vedi, ed è equivalente a resettare ogni volta.

Ti consiglio di non usare mai Run Continuously, genera più danni che altro. Crea invece un pulsante per terminare il loop  (rimuovi la costante booleana e il suo filo, poi fai right-click sull'input del Conditional Terminal e seleziona Create Control). Usa il bottone Run per avviare il vi.

 

Paolo
-------------------
LV 7.1, 2011, 2017, 2019, 2021
Messaggio 8 di 15
6.048Visualizzazioni
Soluzione
Accettato da autore argomento Fabrisalsh

Ora si che funziona! graziee

Lo implemento nel mio PID e ti faccio sapere, intanto ti ringrazio..mi hai risolto un problemone:):)

0 Kudos
Messaggio 9 di 15
6.043Visualizzazioni
Soluzione
Accettato da autore argomento Fabrisalsh

Salve, avrei un dubbio e mi rivolgo subito a te pincpanter, visto che l'ultima volta mi hai risolto subito il problema. Intanto ti ringrazio, vorrei chiederti come faccio a far partire un ciclo dopo che si è verificata una certa condizione? Sto lavorando ad un sistema con logica PI (proporzionale integrativo) e vorrei che l'integrativo partisse da un certo punto in poi (per non cumulare troppo errore). come posso risolvere? grazieeee

0 Kudos
Messaggio 10 di 15
5.583Visualizzazioni