in data 04-22-2011 12:15 PM
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
Risolto Andare alla soluzione.
in data 04-26-2011 09:30 AM
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
in data 04-27-2011 05:41 AM
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
in data 04-27-2011 07:28 AM
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
in data 04-27-2011 08:55 AM
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
in data 04-27-2011 10:09 AM
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
in data 04-28-2011 03:39 AM
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:
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
in data 04-28-2011 09:17 AM
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
in data 05-02-2011 04:11 AM
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:
Grazie mille in anticipo e buon inizio settimana.
Andrea