NI TestStand Idea Exchange

Community Browser
cancel
Showing results for 
Search instead for 
Did you mean: 
Post an idea

Recently I am trying to customize process model and found somethig that may be useful for making fast process.

Here is the Idea.

Suppose I have ~20 sequence(Engine callback, Process model callback etc..). If i want to edit any one of this  sequence than I have to scroll down and select particular sequence. Moreover, sometime if two or three sequence has same initial name than I have to increase the length of sequence column and find sequence of my interest.

but what if teststand has ability that i just give initial character and teststand redirect selection to the sequence starting with same character(like in windows or Step Type in teststand)

Greetings,

 

The current behavior of the Batch Synchronization options "One Thread Only (first thread executes step, remaining threads skip)" and "Serial (one thread at a time)" is that the threads wait at that step until all threads have gotten to that point before it executes using the selected behavior. It essentially has a rendezvous built into the step. There are many times when I want the first thread that encounters that step to perform the action immediately (and then continue, with other threads skipping that step) without waiting for the other threads to also get to that point in the test.

 

For example, I may have three threads running in the Batch model and when the first one gets to a certain point in the test I want it to perform some action (log activity, turn something on, etc.) that I only want to be done once. I can use the "One Thread Only" option, but this causes the test to pause until all of the threads have reached that point before it performs the action of the step (once). Additionally, the remaining threads also pause at that step until the first thread completes the activity. So the undesirable delay is twofold: the first thread doesn't run the step until the other threads have also reached that point, and the other threads now wait until that activity is completed before continuing.

 

It would be great to have the option to select how I want this to behave. If the rendezvous could be selectable then it would provide the desired functionality. I'm sure custom coding could create this effect somehow, but I don't see a straightforward way to have only one thread run a step (and others skip) without waiting for the other threads to arrive or the remaining threads to wait until the first completes. The "Serial" Batch Synchronization option can be implemented in a different way without major effort (using locks, rendezvous, etc.), but the "One Thread Only" with selectable rendezvous option is what is truly missing (and it may make sense to have it available for both).

Recently I tried to add in custom error handling to the NI_DatabaseLogger.seq, but because Plugin Sequence files don't support Engine Callbacks, this was difficult.

 

This idea is to allow model plugins to access Engine Callbacks, so that we can override their behaviour with customised sequences.

This is the existing function:

returnvalue = AllOf(True,False,True)

 

 

But I need often this:

my_boolarray = {True,False,True}

returnvalue = AllOf(my_boolarray)

> Error: Expected Boolean, found Array of Booleans

There is a major flaw with packed project libraries in LabVIEW.  That is that they pull the dependencies in to the same folder as the PPL.  For example if you use advanced math functions then lvanlys.dll will be put in the directory.  The problem is that LabVIEW doesn't like it when you try to load multiple files with the same name.  So if I have a test system with multiple ppls that use the same dependencies I could potentially run into collisions.  There is a document here that discusses a solution for this:

https://forums.ni.com/t5/LabVIEW-Development-Best/Packed-Project-Library-Pitfalls/ta-p/3523762

 

I would like to see the option to prefix my dependencies for PPLs.  This could easily be added to the Packed Project Library Options dialog. 

Now TestStand 2016 supports enums, I found myself in need of an Enum Step Type to check the value of a Enum.

I have VI that returns the UUT's current status as an enum. E.g. Booted OK, Bootloader, Timeout or Error. 

In this case I want to check the UUT has got to the Bootloader...  

I intially worked around using numeric limit test with Datasource set to  "Val( Enum("Boot_State","Bootloader"))". But then in results it would be nicer to see "error" than the enum constant. 

Then I relaised I could use the String test instead.... which is better. Example attached, casting to Str instead of Val.....

 

Hello,

 

As we can read in this very good document, we can add information in header for UUT in Report.

It is mentionned that we can do that for StationInfo in the same way:

"The report below includes the custom data in the AdditionalData container.  The process for adding custom Station data is similar, but uses the Parameters.ModelData.StationInfo property instead of Parameters.UUT."

In fact, it doesn't work in TestStand 2014 and later, certainly the same for 2013 because the default report plug-ins doesn't support it as you can see in the help of TestStand 2016.

Maybe NI can add it like it is done for UUT.AdditionalData. The goal is to avoid to put some Station Info in UUT result to show it easily in reports.

 

Best regards.

MaximeR

CLA - CTD

 

When opening a LVOOP dynamic dispach VI in LabVIEW it will present us a 'Choose Implementation' dialog box. Can this dialog box also be presented when the Edit VI.. button is beïng clicked in TestStand? And when the user dubble click the LabVIEW action step?

 

ChooseLVOOP.png

 

 

Hope it will be good to have AddArrayElements in TestStand (OperatorslFunctions) which will reduce effort using Loops to do the same function.

Add Array Elements.PNG

It will be good to have a converter to convert numeric/string value as dotnet object or get the numeric/string value from dotnet object, just like the fuctions present in LabVIEW. While using the dll in teststand , it will be helpful

This idea must already be on here somewhere, but a search did not find it.

Currently, it is necessary to give all types a unique name. So if I have multiple products, all with similar data types, I need to add a prefix to like types. This is the same as LabVIEW used to be. Why not allow for type libraries? This likely means a rewrite of code that loads and manages types, so I can understand why NI would be hesitant.

Defining a custom step type is an iterative process getting the Post Step VI, Edit VI, Step Type Fields, etc. all matched up and working together.  I often tweak controls and indicators throughout the process.  If I have defined the substeps in TestStand, that means reloading the VI prototype throughout this iteration.

 

Custom Step Type Properties.png

 

Reload Proto.PNG

 

If my controls/indicators are numerics, strings, or arrays of either, the existing parameter values are retained during the reload.  Containers are different, however.  If the cluster input of the VI is unchanged between the exisiting prototype and the reloaded version, the container parameter values are retained.  My complaint is that if one element in the cluster changes, the entire container gets thrown out during the reload.

paramter assignments.PNG

 

In this particular case, all I did was change a cluster element from an array to an element.  Nothing else (cluster labels, etc.) changed.  Because of this, the entire container gets thrown out during the reload along with 30+ values that I had assigned.

 

Unfortunately, I find myself doing this multiple times during development so the time it takes to re-type everyhting adds up over the entire dev cycle.

 

My idea is to have container values retained (similar to non-container values) during a VI prototype reload.

 

Thanks,

Jacob

The "TestStand - Set Property Value" and "TestStand - Get Property Value" VIs do not have containers as an option.

 

Set-Get Property Value.png

 

Is this something that can be added?  I can see requiring a cluster input being part of the Set/Get VI that requires the user to match the names/data types of the container.  This is similar to Bundle By Name where you have to provide an input cluster.

 

PS - While you're at it, please add Array of Containers as well.

Currently there is only the "Create type from struct" button available, when there is an parameter, that requires an array of structs, in a .NET call

2016-07-13_15-53-49.png

 

What would be nice, is to have the features available, that are available when passing clusters to labview:

2016-07-13_15-58-35.png

 

That is: 

  • The Add Array Item button
  • The Delete/Delete All Item buttons
  • The feature of 'uncollapsing' a struct and setting the values for each field in the struct.

 

My original thought was to have a context menu appear when you right click the response box of the popup so that you could then click 'Paste' but having a right click paste like in a Linux console would be even better since it is pretty rare that someone would be copyiing data from the input box. The feature could be selectable in the Property Browser (e.g., "RespRightClick" with two options--"Enable" and a toggle between "Paste" and "ContextMenu") or maybe just check boxes on the "Options" tab.

Adding XML file support to Property Loader will be easily to generate custom editor for final customer of TS sequence.

 

Paolo

Adding FOR function i.e. you could manipulate easily array in the expression, instead to include addition sw code.

 

 

Paolo

Adding Wait function i.e. you could insert a delay in case of "Looping" setting different from "none".

 

Paolo

To have shortest TS Sequence will be great the possibility to apply specific precondition for each measurement in Multiple Numeric Limit Test

 

Paolo

When running teststand deployment licence there is no Teststand GUI available to set or configure Results Processing.

I think it should be easy to export the active configuration to file. And then have a property loader type step to load the settings back into the sequence at runtime on the deployed machine. Note in my case I want to run different sequences with different reporting requirements on the same deployment PC.


I have found https://decibel.ni.com/content/docs/DOC-32076
and after more stuffing around than was justified I have got it working with TestStand 2014.

 

Export.png

 

 

Also it should be much easier to specify a relative UDL file. 

UDL.png

 

 

I resolved this by adding an expression after ReadEx that was:

Parameters.ModelPlugin.PluginSpecific.Options.ConnectionString="\"FILE NAME="+Left(RunState.SequenceFile.Path, Find(RunState.SequenceFile.Path, "\\", 0, True, True)) +"\\60467Database.udl\""

 

This means I can select an absolute path to the UDL file in the development directory on my laptop and then use a relative to sequence path in the deployment. 

 

I feel there should be an more obvious way or am I missing something?