04-29-2025 04:36 PM
Hello,
I have a 4-socket test station, and I am running my test sequence in a batch mode.
On the test station, I am using 2 frequency counters for one of the tests, and each is a 2-channel frequency counter. The frequency counter_1, channel 1, and channel 2 are used by socket 0, and socket 1, respectively, and the frequency counter_2, channel 1, and channel 2 are used by socket 2 and socket 3, respectively. The frequency counter can not perform measurements on both input channels simultaneously, and each channel needs to be configured separately before taking measurements. Each frequency measurement is roughly 10 seconds long. Currently, the frequency measurement step for the batch takes ~40 seconds, and I would like to reduce the test execution time.
My goal is to be able to run both frequency counters together as opposed to running one at a time (currently, batch synchronization is set to Serial- One thread at a time). I would like to take measurements on test sockets 0 and 2, using frequency counters 1 and 2 together on channel 1, and then measure frequency on test sockets 1 and 3 using frequency counters 1 and 2 together on channel 2.
My question is, how can I achieve the above execution and essentially reduce the test time from 40 seconds to 20 seconds?
I am using LabVIEW and calling the VIs using the TestStand. Each of the LabVIEW VIs' properties is set to re-entrant mode execution (including the SubVIs as well). It would be great to see a dummy sequence with the needed synchronization steps or conditional statements.
Thank you,
Ravi K
Solved! Go to Solution.
04-30-2025 12:12 AM
Have you taken a look into, how Auto Scheduling steps may help?
05-01-2025 09:06 AM
You could just use named Locks in TestStand on the VI Steps. If it's socket 2,3 use "Lock2", if it's socket 0,1 use "Lock1". That way that step can run in parallel for 0,1 and 2,3, but not for 1 and 2 in parallel because they are locked. In this example I have a 5s wait. The test finishes in 10s though, because socket 0,2 run it at once, and then 1,3 run it next.
05-01-2025 05:13 PM
Thanks @ShockHouse. I am not sure how locks, as per your screenshot, worked, as there are no Lock1 or Lock 2 in the main or your screenshot. Also, I would like to execute Sockets 0 and 2 together, and Sockets 1 and 3 together. Sorry, I am not an expert with locks or advanced Test Stand functionality and please share more details.
05-01-2025 05:18 PM
"Lock1" and "Lock2" are just string values you can use for your Lock. See my screenshot where if the socket is 0 or 1, I pass in "Lock1", but if its 2,3 I pass in "Lock2". You would just need to alter that string so if its Socket 0,2 is uses one string, and Socket 1,3 use a different one.
If you want a deeper explanation of Locks, I would just look at the TestStand Manual. They are basically Named Semaphores.
05-01-2025 05:47 PM
Thanks again, ShockHouse.
If you can please share a screenshot(s) of the sequence and conditions/statements, I would appreciate it. I didn't quite understand. I am trying different things on my end as well, but I have not been able to make Socket 0 and 2 run simultaneously, and then Socket 1 and 3 simultaneously.
Thanks.
05-01-2025 06:08 PM
I have one solution, using the batch synchronization - parallel and using the following pre-conditions, and adding the same step in the sequence twice. However, I was hoping to find a better synchronization solution, as my solution will show skipped steps in the test report.
RunState.TestSockets.MyIndex == 0 ||RunState.TestSockets.MyIndex == 2
RunState.TestSockets.MyIndex == 1 ||RunState.TestSockets.MyIndex == 3
05-02-2025 08:46 AM
The screenshot in my first comment is all you need. On a TestStand step, you can go to Synchronization, and enable Synchronization at the step level based on a Lock. The Locks are just named strings, so you choose a common string for the ones you don't want to run at the same time so they lock each other out.