NI TestStand

cancel
Showing results for 
Search instead for 
Did you mean: 

How to structure a sequence for a product line

I have inherited a set of test sequences for a line of products. All of the different products of the product line are tested in their own sequence. The sequences differ mostly in their inputs (like frequency and voltage) and in their specifications.

 

Currently there is a sequence for each model (let's call them "model_A.seq", "model_B.seq", and "model_C.seq" and their individual specifications and test inputs are embedded in each sequence. If I need to make a change to a sequence, then I might need to make the same change to all of the sequences.

 

Is there a nicer way of doing this? I was thinking of having a core sequence file that contains the tests that are common to the product line. Passing in the inputs is straightforward, but how about the specifications, which are numerous?

0 Kudos
Message 1 of 9
(4,101 Views)

i have the same question one thread down. I'm doing the same thing but the PLC will be telling me what the new part number is. I will be talking to the PLC via ethernet ip but the message received from the PLC will determine what sequence I will call to execute. these may change each run based on changeovers. I dont know how to pass the values back to the main sequence or LabView VI

Bill Lewis
0 Kudos
Message 2 of 9
(4,095 Views)

I answered this in Bill's post:

http://forums.ni.com/t5/NI-TestStand/Question-for-the-Teststand-Experts/td-p/3226194

 

jigg
CTA, CLA
testeract.com
~Will work for kudos and/or BBQ~
0 Kudos
Message 3 of 9
(4,090 Views)

Thank you! I will try it.  Smiley Very Happy

Bill Lewis
0 Kudos
Message 4 of 9
(4,086 Views)

Well, yes that is a useful example of dynamically choosing a sequence to run. There still is the issue of having all this duplicated code in the various sequences, and having to propagate a code change to every sequence.

 

Doing some more digging, I might want a property loader file for every product that populates the limits for the core test subsequence.

0 Kudos
Message 5 of 9
(4,084 Views)

Ok so that is working but I'm stuck now on how to make teststand sit and wait for my PLC to tell the sequence to run. I would like to have some type of user interface for the techs to be able to exit the program or restart. the seq will need to be looping monotiring the PLC and then do a single pass on the uut, then return back to the loop to wait on the next part that has been introduced to the station. So in your example the main sequence file i would expect would have a LabView vi that will be monitoring the PLC. when the plc sends the command the vi will send out what test seq file to execute (testA or testB), then will need to give a pass fail banner and return to the main sequence file to wait again for the next part.

 

how do i keep the sequences running and teststand to remain active is my new question?

Bill Lewis
0 Kudos
Message 6 of 9
(4,052 Views)

Stephen,

 

Check out this thread: http://forums.ni.com/t5/NI-TestStand/Running-parametrized-sequences/td-p/3218264

 

I personally am not a fan of the property loader.  It has it's limitations on what can go in the file. Also, the file tends to get bulky if you put too much in there.

 

How many items do you need to vary between automations?

jigg
CTA, CLA
testeract.com
~Will work for kudos and/or BBQ~
0 Kudos
Message 7 of 9
(4,045 Views)

Thanks, you've given me something to think about. I have 222 limits in my file export, most of them in multiple numeric limit tests. As a text file, it is really not that bad. Anyone know if the trailing whitespace on the lines as exported by the import/export property dialog is important?

 

Option 2 you mentioned in the thread link you posted is to have limits in a sequence that loads variables locally instead. With 222 values it would be easier to use file globals. For my case I am leaning towards option 1.

0 Kudos
Message 8 of 9
(4,032 Views)

I'm dealing with this exact problem my self.

I don't know if this is best practice but it's one way of doing it.

I have one sequence which works for all UUTs versions.

I the main sequence I have three property loaders executed in the following order (so that the most specific is winging if a property is set twice).

1. General limits and variables which is the same for every one.

2. Hardware specific limits (e.g. chip or coax antenna...)

3. Software specific data and limits (same hardware have different functionality depending on the software we do load)

 

I use some if state ment deviding the execution paths depending on the proteryloaders data.

 

For the wait state:

Use a wait dialog looping back (if the user did say the UUT is present but you did not find it) or if you want no user interface you can just pull for the data every 1/10 of a second and when the UUT is present release the loop.

Implement a nice way to get out of that loop.

 

Hope that helps.

0 Kudos
Message 9 of 9
(4,017 Views)