in data 07-14-2006 10:25 AM
in data 10-22-2006 10:31 AM
05-26-2009 10:47 AM - modificato 05-26-2009 10:48 AM
Ciao a tutti!
Anch'io ho un problema..simile.
Ho costruito un VI capace di leggere il ciclo di pressione di un cilindro (di un motore).
Ora vorrei poter salvare un certo numero di cicli ad un mio comando.
Come posso fare?
Nuvola!
in data 06-01-2009 07:22 AM
Ciao Nuvola
Mi vengono in mente alcune possibili soluzioni. Prova a scegliere tu quella più adatta.
Se vuoi acquisire in continuazione e salvare solo un certo numero di cicli su comando a pannello frontale (FP), potresti eseguire un'acquisizione continua e bufferizzare i dati letti attraverso una coda FIFO ad un altro while loop. Quest'ultimo verifica se è stato fornito il comando di salvataggio su FP. In assenza di comando, elimina i dati, altrimenti salva N cicli. QUINDI: la lettura continua dei dati avviene in un loop, il controllo e il salvataggio avviene in un altro loop -> architettura producer/consumer.
Se vuoi acquisire e salvare solo su richiesta da FP, potresti inizializzare il task della scheda di acquisizione all'avvio dell'applicazione, dopo di chè entri in un while loop che monitora il segnale di acquisizione su FP. Quando premuto, esegue l'acquisizione, poi il salvataggio, poi torna ad "ascoltare" il segnale su FP. QUINDI: controllo, salvataggio e lettura avvengono in uno stesso loop, la lettura è di N samples. -> architettura a macchina a stati.
Se vuoi acquisire su un comando HW esterno (trigger), allora potresti usare un segnale TTL che fa da GATE per un contatore. Il contatore è la sorgente del clk per gli altri contatori. Qunado il segnale di trigger viene ricevuto, il counter genera il clock per l'acquisizione degli altri contatori.
Spero questi consigli possano esserti d'aiuto.
L'help e il Find Examples di LabVIEW contengono strutture di codice già implementate che potresti usare come riferimento.
Buon lavoro!
in data 06-04-2009 04:54 AM
Ciao hudson!
ti ringrazio per la tua disponibilità!
Tra le tue proposte credo che la più opportuna per le mie esigenze sia la struttura producer/consumer ma credo di aver commesso qualche errore perchè in alcune condizione mi vengono segnalati degli errori.
Mi spiego meglio: (osserva la figura in allegato) se non switccio nè il pulsante 1, nè 2 non vedo più il segnale plottato a video allo switch del pulsante "save?" riesco a salvare;
se switccio il pulsante 2(stop2) vedo il segnale plottato ma allo switch del pulsante "save?" non riesco a salvare;
se switccio il pulsante 1 (stop1) non vedo ma riesco a salvare.
Cosa devo modificare per vedere il segnale plottato e riuscire a salvare?
come posso modificare il programma al fine di poter sanvare n cicli, dove ogni ciclo è composto da m punti?
Grazie!!!
in data 06-04-2009 09:16 AM
Ciao Nuvola,
ho guardato il file allegato ma sinceramente non ho trovato alcun pulsante di save, stop o simili.
E non ho trovato neanche figure da osservare.
Sei sicura di aver allegato il file giusto?
in data 06-04-2009 10:03 AM
Ops!
Ho sbagliato ad allegare file!
Ecco qua quello giusto!
Ti ringrazio in anticipo!!!
in data 06-04-2009 10:50 AM
Mmmhh...
nel tuo codice ci sono un po' di problemi. Provo ad elencare i principali:
1) che tu clicchi o meno sul pulsante stop1 non cambia nulla: è infatti fuori dal loop, quindi il suo valore viene letto una sola volta all'avvio del vi (quindi vale il valore impostato prima del run); comunque quel controllo è superfluo (quando l'esecuzione esce dal loop non può far altro che fare lo stop del task).
2) il ciclo di scrittura su file termina solo quando c'è un errore sulla dequeue (immagino quando viene chiusa la coda): dovresti usare una variabile locale in lettura sulla condizione di stop del ciclo di acquisizione
Detto questo mi aspetto che finché il ciclo di acquisizione continua a girare (ovvero stop2 vale false e non ho errori sulla read), i dati vengano plottati: tieni presente che se acquisisci a 1 Hz e leggi 10 campioni (Sample to read = 10), la read resterà in pausa per dieci secondi e in quel lasso di tempo il grafico non verrà aggiornato.
Il mio consiglio è di cercare di capire come gira il tuo codice (aiutati con l'highlight execution), di guardare eventualmente i codici d'errore e di cercarli nei nostri forum. Se poi hai bisogno, posta qui 🙂
Buon lavoro
in data 06-05-2009 08:02 AM
Grazie mille, sei stato gentilissimo!
Avrei una curiosità: il "write labview measurement file" genera file .lvm, è possibile generare file con altre estensioni?
grazie!
in data 06-05-2009 09:31 AM
Grazie mille, sei stato gentilissimo!
Avrei delle curiosità:
1) il "write labview measurement file" genera file .lvm, è possibile generare file con altre estensioni?
2) Con il DAQmx acquisisco il ciclo di pressione: tempo in funzione della Pressione; è possibile sdoppiare i due segnali? dovrei elaborare il tempo in modo da ottenere angola manovella (funzione del tempo) e Pressione.
grazie!