NI TestStand

cancel
Showing results for 
Search instead for 
Did you mean: 

Multiple UUT Testing Over Temp - Which Thread or Process Should Control the Chamber?

I am using TestStand 3.5 to write an automated system that can test up to 4 UUTs inside a temperature chamber.  If any of the UUT's fail, the user will have the option to abort the UUT test and either leave the test socket empty or add a new UUT in it's place.  Each UUT must pass 6 cycles of hot and cold testing before temperature testing is complete.  Each UUT may be in a different cycle than the UUT's in the other test sockets.  The parallel process model seems to work best due to the fact that individual UUT tests can be stopped and started at any time.
 
I am trying to determine which part of the software should have control over the temperature chamber.  When all UUT's have completed testing at each hot or cold interval, the chamber must be commanded to proceed to the next temperature set point.  My first idea was to have a seperate software module (or TestStand sequence) that only controlled the chamber and gave start test commands to each UUT, but a NI apps engineer told me that this would be like writing my own test engine and not taking advantage of TestStand's capabilities.  He then advised me to let whatever test socket has an index of 0 control the chamber.  I know there will always be a 0-index socket, but I am not sure which order the sockets will run (maybe it doesn't matter). 
 
Has anyone ever dealt with this situation before?  What is the architecture for this scenario?
0 Kudos
Message 1 of 7
(3,661 Views)
Hi,
 
I would have thought the a task should be part of the process model, but leave the Test Sockets for your Test Sequence.
 
Launch a sequence in a new thread or execution to monitor your chamber I/O to determine where you are in your thermal cycle.
 
regards
Ray Farmer
Regards
Ray Farmer
0 Kudos
Message 2 of 7
(3,639 Views)
As Ray suggested, you might want to have a separate thread or execution controling the temperature chamber and running it through regular cycles. Then I'd recommend using the notification step type to synchronize with the UUT threads by signaling to the UUT threads the begining and end of each cycle. You can do this by having the UUT sequence wait for a notification before begining the test and before continuing on. Then have the temperature chamber controlling sequence perform a pusle operation on the notification to wake up all waiting threads. Look at the help pages for the notification step type and see if it might be what you are looking for.

Hope this helps,
-Doug

0 Kudos
Message 3 of 7
(3,633 Views)
Thanks for the replies to this.  I am brand new to TestStand (just got back from training in Austin last week) and am not sure how to launch a seperate chamber control thread that will not also be launched every time a UUT test thread is launched.  Do I need to modify the process model or just use a standard parallel process model? 
0 Kudos
Message 4 of 7
(3,629 Views)

Hi,

Hope you enjoyed yourself in Austin.

The easies way to launch a seperate thread would be to use a SequenceCall and use the Multithreading and Remote Execution control in the Edit Sequence Call dialog. You will need to put in the Process Model not your Client Sequence File as you say. You dont want multiple versions of it running everytime the UUT test thread is launched.

I would thing the standard process models supplied with TestStand aren't really suited for a Thermal Process. You might be better starting from a blank piece of paper ( sequence file).

Regards

Ray Farmer

 

Regards
Ray Farmer
0 Kudos
Message 5 of 7
(3,619 Views)
Instead of modifying the process model you could just override the ProcessSetup and ProcessCleanup sequence file callbacks in your client sequence file (go to the edit menu and choose sequence file callbacks). Then you can just add code to the ProcessSetup to launch the new thread or execution, and then add code to ProcessCleanup to tell it to exit. Unless you want a drastically different or simpler model from what is supplied I wouldn't recommend starting from scratch.

If you don't want to add code to the client sequence then editing the existing model might be your best approach. Make sure you copy the entire TestStandModels directory from components\ni\Models into components\user\Models first and modify the version under the user subdirectory. For the parallel model you would likely want to add code to the ProcessSetup and ProcessCleanup in the model itself, or to the Test UUTs sequence itself where you want your new thread to be created and exited.

Hope this helps.
-Doug
0 Kudos
Message 6 of 7
(3,600 Views)
Thanks Doug!  I talked to another TestStand person today who gave me this same advice, so I am going to go this route.  I don't know why I didn't think of this before.
0 Kudos
Message 7 of 7
(3,597 Views)