Forum Italiano sui Prodotti NI

annulla
Visualizzazione dei risultati per 
Cerca invece 
Intendevi dire: 

Richiesta chiarimento a riguardo dell'esempio "Multi Device M Series PCI - Sample Clock"

Risolto!
Vai alla soluzione

Ciao,

come da oggetto volevo cercare di capire qualcosa in più su questo esempio. In particolare vorrei capire che blocco devo mettere al posto di quello con il punto interrogativo. Forse mi è poco chiaro perchè non ho ben chiaro il funzionamento del "ai/start Trigger". Ho cercato info in merito ma comunque non sono riuscito a chiarirmi le idee a riguardo.

Per completezza riporto di seguito un sunto del mio intento finale.

Quello che vorrei riuscire ad ottenere è la partenza sincronizzata di una scheda NI Serie M 6220 e Arduino, le quali dopo aver ricevuto un segnale di START inizino l'acquisizione di segnali.

Purtroppo se ho capito bene, per effettuare un'acquisizione continua con la scheda NI Serie M devo obbligatoriamente avvalermi di un trigger SOFTWARE, quindi l'unica soluzione sarebbe di esportare questo segnale di trigger all'esterno per darlo in pasto ad Arduino.

Si accettano suggerimenti.

Allego l'esempio sopra citato.

Grazie

Andrea

il dubbio è l'inizio della conoscenza...
0 Kudos
Messaggio 1 di 9
6.857Visualizzazioni
Soluzione
Accettato da autore argomento Andrew6

Ciao Andrea,

puoi trovare la funzione che vedi con il "?" sotto C:\Program Files\National Instruments\LabVIEW xx\examples\DAQmx\_Utility\Utility.llb\Get Terminal Name with Device Prefix.vi. Il subVI semplicemente crea una stringa, da passare al subVI DAQmx Start Trigger.vi, concatenando il nome del primo dispositivo (il "master") a "ai/StartTrigger": in questo modo, si setta il dispositivo "slave" a triggerarsi sullo start del "master". Questo garantisce la sincronizzazione delle due acquisizioni, considerando anche che entrambe le schede utilizzano lo stesso clock (in particolare, la scheda slave utilizza il segnale di clock interno a quella master).

Puoi trovare anche un esempio simile sotto Help=> Find Examples=> Hardware Input and Output=> DAQmx=> Synchronization=> Multi-Device.

Qui puoi trovare un tutorial dettagliato sulla sincronizzazione tra schede serie M, con esempi ulteriori.

Non è vero che l'acquisizione con schede serie M deve utilizzare un trigger software: infatti, tramite la funzione DAQmx Start Trigger.vi è possibile settare un trigger hardware specificando una linea PFI della scheda a cui è collegato il trigger. In questo modo, la scheda master inizierà l'acquisizione quando viene visto il trigger HW, mentre, se la scheda slave ha settata come sorgente di trigger "ai/StartTrigger", inzierà solo quando la master inizia l'acquisizione: infatti, il segnale "ai/StartTrigger" è un segnale interno che viene generato automaticamente dalla scheda quando l'acquisizione ha inzio.

Spero di aver risposto alle tue domande!

Ciao!

 

Licia

Messaggio 2 di 9
6.847Visualizzazioni

Grazie Licia,

sei stata veramente gentile ed esaustiva, infatti credo di aver risolto il mio problema anche se ancora devo testarne la soluzione.

Scusami se approffitto della tua esperienza, ma mi farebbe piacere se riuscissi a dare un'occhiata al file che allego per avere un tuo parere, ovviamente per i blocchi che riguardano la sincronizzazione e quindi l'esportazione del segnale "ai\startTrigger" e "ai\sampleClock" verso una periferica che non sia una scheda NI.

P.S.: nella tua risposta dici che un'acquisizione non deve per forza partire da un segnale di trigger "software" ma può anche partire da un segnale di trigger "hardware". Giusto, ma la mia domanda è: "Anche un'acquisizione in modalità continua può partire da un trigger Hardware? perchè sulla documentazione mi sembra di aver capito che l'acquisizione continua necessita di un trigger strettamente software".

Grazie ancora per la disponibilità.

Andrea

il dubbio è l'inizio della conoscenza...
0 Kudos
Messaggio 3 di 9
6.840Visualizzazioni

Ciao Andrea,

ho dato un'occhiata al tuo VI e sembrerebbe corretto (anche se mancano alcuni subVI): esporti i segnali di clock e di trigger su una linea della scheda (ad esempio, una linea PFI, che setterai con i controlli sul front panel) e così saranno disponibili come segnali da collegare all'altra scheda.

Confermo che anche un'acquisizione continua può avere un trigger hardware di start, cioè partire in corrispondenza di un fronte di un segnale esterno: dai un'occhiata agli esempi LabVIEW Cont Acq&Graph Voltage- Ext Clk- Dig Start.vi (che puoi facilmente adattare per acquisire con il clock interno alla scheda) e questo.

Spero di aver chiarito i tuoi dubbi!

Ciao!

 

Licia

0 Kudos
Messaggio 4 di 9
6.837Visualizzazioni

Assolutamente si Licia,

hai chiarito tutti i miei dubbi, e anche io pensavo fosse corretto il mio VI, ma quando lo provo mi genera degli errori che sono identici agli errori che mi genera testando l'esempio che mi hai consigliato di visionare ovvero "Cont Acq&Graph Voltage- Ext Clk- Dig Start.vi".

Ti posto gli screenshot delle due situazioni che mi si vengono a creare, se sei ancora così paziente da dargli un'occhiata te ne sarò grato.

 

1) CASO

          Scelgo come segnale di clock "ai\sample clock" e come segnale di trigger "ai\startTrigger" con l'intento di: usare un clock interno alla scheda da settare con una frequenza pari a 100Hz e di usare il famoso segnale di trigger che mi suggerivi tu.

 

2) CASO

          Scelgo come segnale di clock "ai\sample clock" e some segnale di trigger "dev1\Rtsi0" con l'intento di: usare un clock interno alla scheda da settare con una    frequenza pari a 100Hz e di usare un segnale proveniente dall'esterno e instradato sul bus RTSI.

 

3) CASO

          Scelgo come segnale di clock "OnBoardClock" e come segnale di trigger "dev1\Rtsi0" con l'intento di : usare un clock interno alla scheda da settare con una     frequenza pari a 100Hz e di usare un segnale proveniente dall'esterno e instradato sul bus RTSI.

 

P.S.:Nel primo e nel secondo caso mi da errore, nel terzo caso non mi da errore ma l'acquisizione parte anche se in realtà io ho solo simulato il bus RTSI quindi materialmente non immetto nessun segnale fisico di start Trigger.

 

Scusami ancora per il disturbo e grazie ancora per la disponibilità non sai quanto mi sei stata d'aiuto.

Andrea

il dubbio è l'inizio della conoscenza...
Scarica tutti
0 Kudos
Messaggio 5 di 9
6.834Visualizzazioni

Ciao Andrea,

se vuoi utilizzare come segnale di clock quello interno alla scheda, potresti anche utilizzare l'altro esempio che ti avevo linkato nel mio post precedente.

Non mi è forse completamente chiaro qual è il tuo scopo: tu vuoi effettuare un'acquisizione continua con una sola scheda serie M oppure devi sincronizzare l'acquisizione tra più schede serie M? L'acquisizione deve partire con un segnale di trigger esterno? Se sì, non puoi collegarlo semplicemente ad una linea PFI della scheda e specificare questa come sorgente di clock?

Ciao,

 

Licia

0 Kudos
Messaggio 6 di 9
6.826Visualizzazioni

Buongiorno Licia,

hai ragione forse non sono stato così chiaro nell'esporti il mio problema, se mi concedi qualche altro post di tempo sono certo di risolvere il tutto, sono sicuro del fatto che la soluzione è alle porte ma la mia scarsa dimestichezza con i prodotti NI e Labview mi fanno sembrare ogni piccolo problema un questione insormontabile.

Se hai ancora la pazienza di leggere questo post te ne sarò grato a vita.

Allora provo a spiegarti il mio problema in modo più dettagliato...

Posseggo una scheda serie M a cui è collegato un sensore che legge 6 valori di tensione in continuo, poi posseggo una scheda Arduino collegata ad un altro sensore che acquisisce altri valori di tensione...

Il mio intento sarebbe:

 

  1. Attraverso un segnale esterno o interno alla scheda M sincronizzare l'acquisizione delle due schede, ovvero fargli condividere un segnale di trigger (anche se esterno) che funga da START per entrambe le schede in modo tale che l'acquisizione parti nello stesso istante.In particolare se dovessi prendere, come mi consigliavi ieri il segnale di "ai/startTrigger" dalla scheda (che non ho capito bene come funziona) vorrei esportarlo tramite bus RTSI dalla serie M ad arduino.
  2. Sono inoltre interessato ad acquisire ad una frequenza che possa essere regolata dai 100 ai 240 Hz per quanto riguarda la serie M, e sinceramente non ho capito quale clock usare, se esiste un "onboardClock" o se posso usare "sample clock" sempre ammesso che sia regolabile.
  3. Infine per rendere le misure più efficienti potrei provare, una volta scelto il clock della serie M, ad esportarlo sempre su bus RTSI per farlo usare anche per l'acquisizione di Arduino in modo da bypasssare il proprio Clock interno che ho appurato essere meno preciso di quello della serie M.

Qualsiasi informazione tu possa darmi sono certo mi sarà utilissima.

Ti ringrazio tantissimo sinceramente già per l'attenzione che mi hai prestato fino ad adesso.

Spero un giorno di poter  ricambiare anche perchè vorrà dire che ho imparato qualcosa in più a riguardo...

P.s: ti allego un piccolo schema

Andrea

 

il dubbio è l'inizio della conoscenza...
0 Kudos
Messaggio 7 di 9
6.823Visualizzazioni

Ciao Andrea,

quindi la serie M e Arduino saranno connesse fisicamente tramite cavo RTSI.

Ti ricordo innanzitutto che RTSI va configurato in MAX, come spiegato qui.

Se vuoi condividere il segnale di clock tra le due schede, queste saranno sincronizzate, ma ovviamente dovranno acquisire alla stessa frequenza di campionamento.

Puoi anche utilizzare il clock a bordo della scheda: in tal caso, nella configurazione della temporizzazione della scheda serie M devi utilizzare la funzione DAQmx Timing senza passare nulla all'input "source" (in tal modo la scheda utilizzerà il proprio sample clock), ma solo passando il rate di campionamento desiderato. Dovrai poi esportare il segnale ai/Sample Clock ad una linea RTSI tramite una delle due funzioni dello screenshot allegato. La differenza tra le due funzioni è spiegata qui.

Ho trovato questo esempio, che però è relativo alla sincronizzazione di due task di analog output: può servirti però, con le opportune modifiche, per la parte di configurazione delle temporizzazioni.

Spero che queste indicazioni ti siano d'aiuto!

Ciao!

 

Licia

 

 

0 Kudos
Messaggio 8 di 9
6.814Visualizzazioni

Ciao Licia,

grazie alla tua pazienza e alle tue preziose informazioni sono giunto a degli ottimi risultati, ti aggiorno...

Sono riuscito a collegare la PCI 6220 con Arduino tramite RTSI, e sono riuscito a fare in modo che un segnale di trigger esterno inviato sia alla 6220 che ad Arduino ne sincronizzi l'inizio acquisizione.

Il mio intento adesso sarebbe, come accennavi tu nell'ultima risposta, quello di sincronizzare l'acquisizione ad una stessa frequenza ad esempio la frequenza di clock del sampleClock della 6220.

Il problema è che quando metto in uscita questo segnale non riesco a leggere niente sull'oscilloscopio, quindi per il momento per testare il lavoro ho dato in ingresso alle due schede sia un segnale di trigger sia un clock esterno e tutto funziona alla grande.

Ho pensato che il problema che ho riscontrato potrebbe essere dovuto:

  1. Al fatto che non so se posso usare contemporaneamente una linea (ad esempio RTSI1) in ingresso per il trigger e un'altra (ad esempio RTSI2) in uscita per esportare il clock.
  2. Al bug di cui si parla in questo post e del quale non ho trovato ulteriori informazioni a riguardo --->  http://forums.ni.com/t5/LabVIEW/how-to-export-counter-to-rtsi/m-p/917776#M413151

Grazie mille in anticipo e buon inizio settimana.

Andrea

il dubbio è l'inizio della conoscenza...
0 Kudos
Messaggio 9 di 9
6.809Visualizzazioni