Forum Italiano sui Prodotti NI

annulla
Visualizzazione dei risultati per 
Cerca invece 
Intendevi dire: 

ACQUISIZIONE E SALVATAGGIO DATI SU EXCELL

Premetto che è pochissimo che ho iniziato a usare LV . il mio problema è che  vorrei acquisire e salvare alcuni dati a comando su excell continuando a visualizzare gli altri sul VI , praticamente vorrei costruire un banco di flussaggio e mi occorre salvare il valore del flusso aria in base all' alzata della valvola mantenendo il valore di pressione costante, questo si ottiene aumentando i giri del generatore aria .

mi serve acquisire a comando alcuni valori per realizzare un grafico ma no riesco a capire come fare , allego il VI per meglio capire . se qualcuno può darmi una dritta.

grazie a tutti .

 

0 Kudos
Messaggio 1 di 6
2.398Visualizzazioni

Ciao, hai risolto? Spero di non essere troppo fuori tempo.

La più importante cosa da fare accingendosi a programmare con LabVIEW è capire bene il concetto di "Dataflow", cioè il fatto che la sequenza di programmazione è determinata dallo "scorrere" dei dati sui fili. Il tuo vi non è molto sensato da questo punto di vista.

Cercando di indovinare il tuo obiettivo, credo che tu voglia acquisire una serie di dati e, a mano a mano che arrivano, salvarli in un file Excel.

Osservando il tuo vi, invece, si vedono molti fili che escono dal loop di acquisizione ed entrano nel loop di salvataggio. Questo significa che il secondo loop viene eseguito quando finisce il primo, cioè quando hai premuto STOP. A questo punto, però, siccome non hai memorizzato i dati acquisiti, ti ritrovi solo con l'ultimo dato, che viene in effetti salvato. Siccome il valore booleano in entrata sul filo è True, il loop termina immediatamente (e comunque non ci sono altri dati disponibili).

Se vuoi acquisire e salvare in due loop diversi, è necessario che entrambi vengano eseguiti contemporaneamente, passando i dati dall'uno all'altro in un altro modo, usando per esempio una Queue. Bisogna anche fare in modo di terminare entrambi i loop quando viene premuto STOP. Se si utilizza una queue per il passaggio dei dati, usualmente si distrugge la coda all'uscita di un loop, mentre l'altro verifica se Dequeue Element ritorna un errore.

Puoi ottenere uno "scheletro" del codice creando un nuovo vi (New...) dal template "Producer/Consumer Design Pattern (Data)".

Naturalmente in un caso molto semplice si possono usare altri schemi, per esempio acquisire tutti i dati, accumulandoli in un array (usa Build Array e non Insert Into Array), e alla fine salvarli in un unico passo, oppure acquisirli e salvarli in un unico loop.

Non entro approfonditamente nel merito del salvataggio su Excel, visto che non conosco bene il Report Generator, però osservo che salvare l'intera tabella ogni volta - e non solo una riga - mi sembra eccessivo.

Paolo
-------------------
LV 7.1, 2011, 2017, 2019, 2021
0 Kudos
Messaggio 2 di 6
2.346Visualizzazioni

Prima di tutto grazie per l' interessamento , mi sono accorto che il vi non è molto fluido , specialmente adesso che ho implementato la gestione di un motorino passo passo  , e l'acquisizione dei vari dati è un po' macchinosa , il problema è che devo decidere io  quando acquisire , perché prima devo registrare manualmente la pressione  dell' aria ad un valore costante poi acquisire il valore di portata aria ho provato con un interruttore ma mettere un loop dentro un altro mi rallentava ulteriormente tutto il sistema . considera che questo è il mio primo vi e l' ho realizzato unendo degli esempi che sono allegati a labviev. Non ho creato tutto io . so che non è il sistema migliore per imparare , ma in questo modo mi rimane più in mente le varie funzioni del programma . il discorso delle tabelle excell separate è per avere un confronto su una sequenza di dati acquisiti in diversi momenti. mi spiego meglio:

metto una testata di un veicolo sul banco e faccio acquisizioni ogni 0.5 mm di alzata di valvola , salvo tutto sul primo foglio , faccio delle modifiche ai condotti di aspirazione , rifaccio altrettante acquisizioni alle medesime alzate , salvo tutto su nuovo foglio, così avanti per tutte le modifiche che faccio .

alla fine tutti i fogli sono collegati ad un singolo excel con dei grafici , che mi visualizzano le migliorie che ci sono state , se ci sono state...

ma se io creassi dei sotto vi verrebbero eseguiti in contemporanea o in sequenza ?

grazie della pazienza

cordiali saluti

max

0 Kudos
Messaggio 3 di 6
2.341Visualizzazioni

Mi sono dimenticato allego il nuovo vi

Scarica tutti
0 Kudos
Messaggio 4 di 6
2.340Visualizzazioni

Una cosa importante è capire il flusso delle operazioni. Nel tuo vi non riconosco la descrizione che hai fatto (probabilmente per mancanza di qualche elemento importante). Forse è il motore passo-passo che alza le valvole?

A quanto leggo, devi fare una serie di regolazioni (manuali?) e acquisire ogni volta. Ma il tuo vi acquisisce sempre, quindi sono perplesso.

Alcune cose sospette: perchè devi scrivere i bit di avvio ed inversione ad ogni giro? Perchè rimuovi una riga della tabella ad ogni giro?

Il pulsante di stop dice SALVA TUTTI I DATI E FERMA, ma i dati in effetti sono già salvati!

Un'altra cosa: dovresti fare un piccolo sacrificio e rendere il codice più ordinato. Innanzitutto cerca di seguire il criterio che il flusso di dati è da sinistra a destra e non viceversa: non perchè sia necessario, ma perchè rende il codice molto più leggibile. Inoltre cerca di evitare incroci di fili e spezzate varie. Col tasto sinistro su un filo puoi scegliere Clean Up Wire che ti aiuta a ripulire il codice. Vedi l'esempio sotto: non trovi che si capisca molto meglio?

 

pincpanter_1-1615280836495.png

 

 

Paolo
-------------------
LV 7.1, 2011, 2017, 2019, 2021
0 Kudos
Messaggio 5 di 6
2.331Visualizzazioni

Buona sera , il motore passo passo  serve per aprire e chiudere una valvola a farfalla per regolare la pressione di aspirazione . Comunque per chiarezza spiego cosa cerco di realizzare :

Utilizzando un motore di un aspirapolvere creo depressione nella zona della valvola di aspirazione di una testata di una automobile , collegati ad arduino ci sono due sensori di pressione uno legge la pressione atmosferica l' altro la pressione nel condotto dell' aspirapolvere , sullo stesso tubo è presente un misuratore portata aria (debimetro a filo caldo) di un automobile . non mi è possibile regolare la potenza del motore dell' aspirapolvere allora regolo la depressione creata aprendo una valvola a valle del debimetro. il motorino passo passo serve solo a questo .la procedura di lettura del valore viene effettuata nel seguente modo:

con la valvola della testata completamente chiusa avvio l' aspirapolvere e regolo la depressione ad un valore prestabilito poi manualmente apro la valvola della testata di 0.5 mm chiaramente il valore di depressione cala , allora vado a chiudere tramite il motorino un po' la valvola a farfalla per riportare la pressione al valore di lettura , fatto questo leggo il volume di aria che passa del debimetro . ripeto gli ultimi passaggi per avere una lettura ogni 0.5 mm di apertura valvola testata . per questo motivo devo scrivere i dati sulla tabella una riga per volta e allo stesso tempo devo poter leggere i valori per poter registrare la depressione . l' unico modo che ho trovato è stato di togliere una riga in modo che la lettura non avanzasse automaticamente nel foglio excel creandomi centinaia di righe di dati che non mi servono . il vi acquisisce sempre perché i dati li devo leggere in diretta per tarare la depressione . sicuramente lo schema è molto ingarbugliato proverò ad usare il comando che mi hai suggerito .

grazie di tutto

Max

 

0 Kudos
Messaggio 6 di 6
2.297Visualizzazioni