Forum Italiano sui Prodotti NI

annulla
Visualizzazione dei risultati per 
Cerca invece 
Intendevi dire: 

state machine e diital output

Buongiorno,

ho un problema legato a state machine e digital output: ho creato diversi stati nello stato 1 devo inviare un segnale digitale, quando passo allo stato 2 il segnale digitale non deve più essere inviato. Come posso risolvere questo prblema? Io uso il Daq assistant, ho pensato di metterlo fuori dai casi. Però non so come dirgli di accendersi e spegnersi nel passaggio da uno stato e l'altro e mi rimane sempre acceso. Che comandi dovrei usare?

 

Grazie

0 Kudos
Messaggio 1 di 8
5.858Visualizzazioni

Il problema è che il daq assistant ferma il task quando esce, quindi per cambiare il valore all'uscita digitale lo dovresti eseguire daccapo (quindi dovresti avere un daq assistant per ogni stato che deve variare il valore dell'uscita).

Probabilmente in una struttura come la tua la cosa migliore è passare ai VI di DAQmx, mettendo la creazione e la chiusura del task prima e dopo la state machine, e le opportune write negli stati che devono agire sull'uscita digitale. Immagina una struttura come l'esempio examples\daqmx\digital\generate values.llb\Write Digital Chan.vi, solo che invece del while loop hai la tua macchina a stati.



Proud to use LW/CVI from 3.1 on.

My contributions to the Developer Community
________________________________________
If I have helped you, why not giving me a kudos?
0 Kudos
Messaggio 2 di 8
5.855Visualizzazioni

Ok, è la soluzione corretta utilizzare daqmx. Tuttavia mi compare il codice errore: Error -200587 occurred at DAQmx Start Task.vi:3

Io Sto anchye utilizzando un daq assistant per campionare un segnale analogico, e viene utilizzato appunto per scegliere, nei vari casi, se inviare il segnale digitale. E' possibile che il daq assistant e il daqmx, anche se il primo riferito ad un segnale analogico e il seconddo ad un segnale digitale, vadano in conflitto?

 

Grazie

0 Kudos
Messaggio 3 di 8
5.846Visualizzazioni

Inoltre, ho utilizzato: daqmx+ daqmx start/stop a seconda dei casi( all'interno dei vari stati)+ il daqmx write ( digital bool 1 line 1 point)+daqmx clear. E' corretto? Il segnale digitale viene inviato, però non riesco più a fermarlo, anche quando all'interno di un caso mettto il daq mx stop. Non riesco a capire come mai. Inoltre il daqmx write ( digital bool 1 line 1 point), per quanto riguarda il collegamento data, ho messo un operatore booleano come richiesto; è corretto anche nel mio caso in cui accensione e spegnimento dovrebbe venire in automatico? Il dispositivo non si arresta, e non riesco a capire dove sbaglio.

 

Grazie

0 Kudos
Messaggio 4 di 8
5.844Visualizzazioni

Questo errore non dovrebbe riguardare l'acquisizione analogica perchè come vedi qui è riferito esplicitamente alle linee digitali: i due task dovrebbero poter vivere vita autonoma senza interferire l'uno con l'altro. Piuttosto potresti stare leggendo dallo stesso canale in due punti contemporaneamente: controlla di non avere altre read nascoste da qualche parte nel tuo vi.

Per quanto riguarda la successione dei blocchi, dovresti avere il Create Channel e lo Start task prima della macchina a stati; all'interno dei vari casi solamente il Write mentre lo Stop/Clear va alla fine, quando stai terminando il vi.



Proud to use LW/CVI from 3.1 on.

My contributions to the Developer Community
________________________________________
If I have helped you, why not giving me a kudos?
0 Kudos
Messaggio 5 di 8
5.841Visualizzazioni

Grazie mille per i suoi consigli....sono riuscito a risolvere il problema e tutto dovrebbe funzionare. Un'ultima domanda: c' è un comando per registrare il tempo di on, cioè per quanto tempo viene inviato il segnale digitale? Qual è il comando e come faccio a registrare tale valore?

 

Grazie

0 Kudos
Messaggio 6 di 8
5.838Visualizzazioni

Per calcolare il tempo puoi usare l'Elapsed time.vi nella palette timing: va resettato a inizio conteggio (quando porti il digitale a ON) e letto a fine conteggio (quando spegni l'uscita digitale).



Proud to use LW/CVI from 3.1 on.

My contributions to the Developer Community
________________________________________
If I have helped you, why not giving me a kudos?
0 Kudos
Messaggio 7 di 8
5.836Visualizzazioni

Sono riuscito a risolvere i vari problemi che le ho posto.

La ringrazio per il suo aiuto e per la disponibilità dimostrata.

0 Kudos
Messaggio 8 di 8
5.824Visualizzazioni