From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

NI TestStand

cancel
Showing results for 
Search instead for 
Did you mean: 

PCI-6033E Multi-thread readings

Hello,
 
    I am trying to find out if I can take multiple readings (in parallel) from one PCI-6033E board. I am using TestStand to test multiple UUTs in parallel. The test station I am running TestStand on has one PCI-6033E board. For the sake of this conversation, I have Channel 1 of the PCI-6033E board connected to UUT 1, Channel 2 connected to UUT 2, etc. My question is can I take adavantage of TestStand's parallel test mode to test all of the UUTs in parallel by reading Channel 1, Channel 2, etc. at the same time from the same (one) PCI-6033E board?
 
   Thank you in advance for your help!
 
Thank you,
Jim
0 Kudos
Message 1 of 22
(4,352 Views)
Jim,

in generell, the answer on this is yes, you can use one board for several threads.
but as it is very common in this job, it is not so easy to make it work.... so: what adapter are you using for your modules? what processmodel do you use?
another point: for this to work you have to acquire the samples from the UUTs at the same time or completely seperatly.

Norbert B.
NI Germany
Norbert
----------------------------------------------------------------------------------------------------
CEO: What exactly is stopping us from doing this?
Expert: Geometry
Marketing Manager: Just ignore it.
0 Kudos
Message 2 of 22
(4,334 Views)

Norbert,

    Thank you for your response.

    In response to your questions: 1. The adaptor I am using is LabVIEW. 2. The process model is a Batch model. I have set the synchronization on the TestStand step that call the DAQ/LabVIEW adapter to "parallel".

    Could you expand on what you meant when you said "it is not easy to make it work"/

    Also, do I need to set up the Execution property on my LabVIEW VI to "reentrant execution" if I am to run this VI in a multi-threaded mode?

    Again, thank you for your time and I look forward to your response.

 

Thank you,
Jim

0 Kudos
Message 3 of 22
(4,330 Views)
Jim,

i would NOT advise you to set the VI reentrant neither to use the apropriate step as parallel execution.
here is what i would do:
- using batch processmodel, i would make sure that only one thread acquires the data. therefore i would use the batch-synchronization steps (setting "one thread only"). the step has to deliver the data to TestStand, not only to the socket (not locale variable!).
- after the acquistion, i would extract the apropriate channel for each socket.
- work with the data. please make sure that acquisition/retrieval of data has to be synchronized in some ways (batch-synchronization and rendevouz i would recommend).

Norbert B.
NI Germany
Norbert
----------------------------------------------------------------------------------------------------
CEO: What exactly is stopping us from doing this?
Expert: Geometry
Marketing Manager: Just ignore it.
0 Kudos
Message 4 of 22
(4,328 Views)
To clarify on Norbert's answer-
 
There is only one clock on that device.  Therefore, it is only possible to have one DAQ Task going on at a time for that board.  If you allow the VI to be reentrant, you may run into a situation that multiple tasks are attempted to start, which will result in an error.  So there are two possible ways to do this:
 
1)  Collect all the data for every UUT at a single point
 
OR
2)  Collect the data for each UUT individually, but only one at a time.
 
For method 1- You will need to have a step that runs in one thread only.  You can then use Notifiers to pass the data to each step (I would put a loop on the notifier to strip out the data for each socket and send the data), and then wait for the data.  You can then set up a Numeric Limit Test after collecting the data that runs in each thread to test the data.  For very long tests, this is the optimial way.
 
For method 2-  You will need to have a step that runs in every thread, but the VI is not reentrant.  For short tests, this is easier and may be faster.
 
Hope this helps!
 
Allen P.
NI

Message Edited by AllenP on 12-12-2005 11:03 AM

0 Kudos
Message 5 of 22
(4,318 Views)
 

Message Edited by AllenP on 12-12-2005 11:01 AM

0 Kudos
Message 6 of 22
(4,318 Views)

Norbert and Allen,

      Thank you for your prompt responses. I think the both of you are leading me to my solution. Let me give you a quick back ground to my problem..

       In our test environment, test time is a critical factor. Thus, I was hoping to take my DAQ readings for each UUT in parallel. If I were to take them serially (i.e. run each test, one at a time for each UUT), then my test time takes a big hit (i.e. gets longer). The other approach that the two of you mentioned was to take all of the measurements at once, and then grab the individual data for each UUT in their respective thread. I think this will work, however are there any examples of how I can grab this data (i.e. Allen, you mention "notify", is this a TestStand function or step)?

       You guys are pointing me in the right direction, I think the only thing I need to know is how to grab the data from the data acquisition single step and hand it to the individual UUT threads. Again, if there are any examples you are aware of, I would greatly appreciate if you could forward them onto to me.

Thank you,

Jim 

0 Kudos
Message 7 of 22
(4,312 Views)
You are looking at the Notification Step Type found under Synchronization Step Types.
 
It will allow you to pass data and recieve data.  I have made an example, but simulated the DAQ Step.
 
Hope this helps!

Allen P.
NI
0 Kudos
Message 8 of 22
(4,302 Views)

Thanks Allen!! I'll give this a shot.

Thanx,

Jim

0 Kudos
Message 9 of 22
(4,291 Views)

Allen,

      I ran your example sequence and have a couple of (final) questions:

     1) The test step "Get Data" has its Batch Synchronization mode set to "Use Sequence File Setting". Should this be set to "One Thread Only"? I believe this would be my DAQ test step, which I only want to have run once.

    

0 Kudos
Message 10 of 22
(4,282 Views)