LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

What is the best approach to testing 10 of the same item independently?

I’m going to write a program that will test up to ten controllers at once. The test involves a 48 hour burn-in, then power cycling then another 48 hour burn-in while controlled by CAN, so the total test time is about a week. I want to be able to run the tests independently of each other. That is, I want to be able to start and stop the testing of each controller independently and replace a controller while the other tests continue to run. Each controller has its own power supply built into the test fixture and I’m going to use an Agilent 34970 switch box. My question is in Labview is it possible and is it the best approach to run 10 procedures, i.e. while loops, independent of each other, starting and stopping any of the 10 loops when desired to check or replace a controller, or should I consider an alternative approach such as what would be a very complicated state machine?

 

Thanks!

0 Kudos
Message 1 of 10
(3,021 Views)

You mention switch box, so you have some shared measurement equipment for all 10 devices?

 

If so, you could just use a for loop and a flag for each fixture if it is operational or not (replacing controller), and if not operational skip the testing code.

 

Felix

0 Kudos
Message 2 of 10
(3,012 Views)

I have done a similar project. I tried the parallel loop method and round-robbin in a state machine. I found the parallel loops to be much more convienent, for hot swapping, and if one unit started to hiccup or "get behind", it didn't stop the others from trucking along. I know this can be done with queues in a good state machine, but parallel loops are just more intuative, IMO.

10 loops seems like a lot, but it depends on the complexity!

Be cautious, with that many loops, about building arrays, concatenating strings, etc.

 

Richard






Message 3 of 10
(3,010 Views)
I am currently working on a project that has some similarities. I am also testing 10 items at once and need to be able to control them independently. What I did was create the program for controlling one and then made it reentrant. When I launch my main program, it starts 10 instances of my test program and loads them into subpanels. I could just as easily spawn a seperate window per item, or use some other type of data aggregator. You can create user events and pass those references to the instances of your testing program and that way, you can control actions in all of your test with a single control on the main vi.
Message 4 of 10
(3,008 Views)
LabVIEW can do it but you might also want to consider TestStand. You write one test sequence and to run multiple, you just go to the menu and select how many you want to run in parallel. TestStand does all of the reporting and logging so you just have to concentrate on writing the actual test code.
0 Kudos
Message 5 of 10
(3,004 Views)
Both the reentrant and multiple loop options sound good. What are the advantages and disadvanges of each?
0 Kudos
Message 6 of 10
(2,956 Views)
I can't say too much about how i've seen this done, as it wasn't my project, but one thing to consider is that you may want the ability to update the code on individual test 'lanes' without having to stop all testing. Sorry I can't go into more detail. 🙂
0 Kudos
Message 7 of 10
(2,950 Views)

ctardi wrote:
I can't say too much about how I've seen this done, as it wasn't my project, but one thing to consider is that you may want the ability to update the code on individual test 'lanes' without having to stop all testing. Sorry I can't go into more detail. 🙂

Multiple, parallel tasks are easier to do in LV (or as smerc. Suggests TS) than in any other programming language that I've heard about!!!!!

 

That being said, consider that the people posting have exceptional experience with developing these types of projects.  This question is NOT about the "best method" is it?  I feel the root question is ____"how should my corporation define a policy for code development?"____

 

 There are good resources available if (as I suspect) your organization lacks Test Engineers with current practical expertise.  A consult with an NI Alliance member will be your greatest form of information!


"Should be" isn't "Is" -Jay
0 Kudos
Message 8 of 10
(2,943 Views)

Hey Jeff,

I don't want to go too far off topic here, but the jest of it is that I am not a Test Engineer, the company I work for has a very talented group of test engineers, which I have expressed some interested towards joining at some point in time.  My employer was nice enough to buy me a licence for labview so that I can learn it, but I do the learning on my time, and can't really depend too much on our team of engineers to teach me at this point. 🙂  I don't want to drag things too off topic here...

 

To hint a bit towards what I was attempting to say...We have a similar setup, multiple sets of 24 hour 'burn in', but they do not start at all the same time.  The expected production numbers VS the budget means 0 down time for the rig.  Software updates still need to happen.  By dynamically calling a vi template, you can update the template without stopping lanes that are running.

Message Edited by ctardi on 06-27-2009 10:19 PM
Message 9 of 10
(2,937 Views)

ctardi,

 

I see what you mean now.  I have solved for this in the past by storing multiple versions of the test to launch (renamed.)  Use a configuration file to control which test lane uses what test version and launch that VI from the test executive.  Your test vi's will need to be reenterant so you can launch as many as needed.  Also all resources that the test vi needs should be in the config file as well (VISA names, com ports settings, data files etc...)


"Should be" isn't "Is" -Jay
Message 10 of 10
(2,921 Views)