LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Initializing multiple Acqiris digitizers simultaneously (no NI drivers, so no DAQmx)

Hello, 

 

I'm trying to write a VI which will initialize n-number of Acqiris digitizers simultaneously when triggered. There are no NI drivers associated with this hardware, so DAQ Assist and DAQmx won't work with them. At the moment, I have six of them in a chassis, and NI MAX only recognizes it as an unnamed chassis and won't detect the digitizers.

 

However, I do have some LabVIEW functions which came with the software provided with the hardware. They are included in the sample VI's I'll attach in a second. The first VI shows the triggering and acquisition functionality I need, but I need to be able to read n-number of inputs on the same graph. The second VI I'm providing has successfully made the LEDs on each digitizer blink in sequence, but I need to modify part of the block diagram to enable simultaneous initialization of all connected digitizers.

 

I'm still learning LabVIEW, so any and all help is greatly appreciated.

Download All
0 Kudos
Message 1 of 11
(3,434 Views)

Don't know what happened to the first topic I posted about this, but here goes again.

 

I'm trying to initialize multiple Acqiris digitizers without NI drivers (so no NI Max, DAQmx, or DAQ Assist) all at the same time. I've had very little luck with this, but I have been provided some sample VIs to look to for inspiration. I'm still learning LabVIEW, though, and would appreciate any help or advice the community can give me.

 

Eventually, I need to create a VI that will initialize n-number of digitizers when triggered. The first VI I'm providing has the scope functionality I need and has enabled me to view two digitizers simultaneously, but I need to be able to initialize all of them at the same time. The second VI will cause the LEDs on each digitizer to blink, one digitizer after the other, but I need to learn how to get it to make them all blink at the same time. If I figure that out, I can figure out how to initialize all of the digitizers simultaneously.

 

Thanks for any and all help,

 

Marshall

Download All
0 Kudos
Message 2 of 11
(3,454 Views)

Is the question

a) "I need to initialize all devices exactly at the same time - how can I do this?" or

b) "I want to be able to talk to all of the devices (either by broadcasting to each, or by targetting a specific device) and I don't want to have to keep reopening references - how do I do this?" or

c) Some other question which I didn't quite see?

 

For a), I think you'd want to parallelize the outer For loop in your blinking example, but you need to get it to split to the same number of threads as inputs, which might not be simple/possible if N is large.

For b), it looks like the integer value returned by Initialize is a handle value (I can't see the SubVIs, but that's my guess). You can bundle these together with a name and form an array, or just put them in an array if you don't need to associate additional information, then index your array later to speak with specific devices. To broadcast, you'd just place the code in a For loop and autoindex through the array of handles (using Unbundle (by Name?) if needed).

For c) - please tell me what the question was 🙂


GCentral
0 Kudos
Message 3 of 11
(3,389 Views)

For clarity, the (I assume original) post is here: https://forums.ni.com/t5/LabVIEW/Initializing-multiple-Acqiris-digitizers-simultaneously-no-NI/td-p/...

 

I'm not quite sure what happened if it disappeared, but hopefully this link can keep discussion in one thread.


GCentral
0 Kudos
Message 4 of 11
(3,391 Views)

I need to initialize the devices all at the same time. In most applications, N would probably be between 6 and 24 (there are 4 chassis, each with 6 digitizers).

 

For now, I think I just need to know how to do this with 6. When we need to add more, I might just be able to scale the answer up to N devices.

 

How would I parallelize the outer For loop and split it to the same number of threads as inputs?

 

Marshall

0 Kudos
Message 5 of 11
(3,353 Views)

You can right click on a For loop and click "Configure Iteration Parallelism", but I doubt LabVIEW will run 24 iterations in parallel (unless you have a computer with 24+ threads).

 

If you keep the references (or the returned value from the Initialize) in an array or cluster, at least you can move slow operations like the flashing and waiting into a separate loop and you can initialize them all pretty quickly with one another. If your loops have waiting, this is a situation when loop parallelism should help, assuming the iterations are not linked (which for this, they shouldn't need to be).


GCentral
0 Kudos
Message 6 of 11
(3,338 Views)

Thanks for your reply!
The comments about parallelism are helpful.

 

As for my computer, it has 2 separate processors, each with 8 cores and 16 threads, and it's capable of hyper-threading. It's more than capable of running 24 simultaneous iterations as long as they're written correctly.

 

I'll look further into the training modules on creating parallel loops. Thanks.

0 Kudos
Message 7 of 11
(3,330 Views)

Ok, I just received clarification from my mentor. The digitizers may initialize separately, and that's fine. After that point, they need to be able to be triggered simultaneously, and that's what's giving me a hard time. How can I do this?

0 Kudos
Message 8 of 11
(3,319 Views)

If you're trying to trigger 24 separate devices simultaneously, I don't think you're really looking for a software solution anymore. Do they have a trigger input, for example taking a TTL pulse? If so, maybe you have something that can output a digital pulse to all of them via shared wiring?

 

Alternatively, perhaps they can be synchronised with a shared clock?

 

If it has to be via the message/command system using software only, I think a parallel For loop is your best bet. As above, I don't know exactly how 'simultaneous' that would be.


GCentral
0 Kudos
Message 9 of 11
(3,313 Views)

I have four Acqiris CC108 chassis, each with 6 Acqiris digitizers (hence the 24 devices). Each digitizer has multiple channels capable of sampling 1-2 GS/s. We are going to have one channel on each chassis act as a trigger for the other channels.

 

Could you point me in the direction of a good resource for learning more about parallel for loops?

 

Marshall

0 Kudos
Message 10 of 11
(3,303 Views)