NI TestStand Idea Exchange

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

Trying to minimize memory used by Teststand, I have selected from sequence properties "Disable Result Recording for All Steps".  This works great except for sequence which DO need to record results.  There is currently no way to override this sequence option to enable recording for the specific measurement steps.  I would recommend added an option which allows the step to 'Override' the sequence disable result recording setting.  In TestStand 2014 there is an option under the Step / Run Options / Result Recording Options to "Enabled (overriding sequence setting)" but this does NOT work to enable / override the sequence setting, the results don't get recorded.  The only solution I found was to NOT enable the sequence "Disable Result Reporting" option on sequences with measurements, and select each step, disabling the Result Recording, except for the measurement steps.

In the first TestStand tutorial,  one suggestion for tracking local variable values is to apply a breakpoint to the code, then step through the execution and observe the variable values on the Variables tab in the Execution window.  One problem I see with this is that with each Step Over in the execution, the focus switches back to the Steps tab.  I have to keep switching back to the Variables tab to see the values.  And this method is taught in the NI tutorial.

 

Perhaps NI can provide a way to lock focus on one of the tabs, in this case Variables, as we step through the execution (such as when debugging code).  Maybe allow the user to jump to another view manually, but then set the focus such as when the next Step is requested, the view automatically jumps back to the view that was set in focus lock.  This would make such a method truly helpful when debugging a TestStand sequence.

Problem:

I create a model plugin and add some model callbacks to it.  Then I want to access those model callbacks from my client file.  I have to now add them to the process model so they show up in the list when I go to add callbacks.  I get that I can add it as a blue sequence and it will work   However, that is confusing to other developers if they don't know the plugin has the callback in it.  It is painful to change the process model every time I create a new plugin because the process model could be used on hundreds of machines whereas my plugin may only be needed for 1 or 2 machines.

 

Solution:

Option 1: Show all callbacks from any plugins in the callback dialog list

 

Option 2: create a configurable list of model callbacks.  Basically add any sequence files marked as model to the list and it will show all the callbacks from the sequence files in the list to the client, unless it cannot find the file in any search directory.  Then it wouldn't show.

 

Option 3: From the add callback dialog allow the user to browse to a sequence file which contains model callbacks

 

I think adding this functionality will greatly help in making the plugins more abstracted from the process models.  Just saying.

 

Cheers,

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. 

TortoiseSVN is an easy to use Source Code Control tool. However, it needs a MSSCC API plugin in order to be integrated with TestStand. On NI web page, PushOK is listed as a tested plugin with TortoiseSVN by NI tech team. PushOK is made by a Russian company. Another AgentSVN plugin is made by an Australia company. From an end user perspective, the time zone difference will cause some difficulty to access tech support in case it is needed. I used TamTamSVN 1.4.9 plugin for TortoiseSVN integration with TestStand and it worked fine. TamTamSVN plugin is made by an US company located near NYC area. I will suggest NI Tech team to test TamTamSVN plugin for TortoiseSVN integration with TestStand to ensure its features and functionality are acceptable to NI applications. If it pass the test, please add it into tested list. 

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

 

 

It would be really helpful to have a diagram showing the order in which process model callbacks execute for the sequential, parallel, and batch models and their relations to the various test sockets.  The TestStand documentation does contain a list of the model callbacks, but it would be nice to have them in a diagram format so that a developer doesn't have to open the process model files and figure out that information.

For an easier debugging it would be good to have coloured lines for (nested) loops or the the possibility to hide the content on demand.

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.