Numeric Limit Test - Several arrays and 1 limit set per array

Hello !
I am quite new to Teststand and I get stuck with an issue of which the solution should not be that intricate ... (I think ...).
I would like to use a "Numeric Limit Test" vi (LabVIEW module). This vi returns 3 arrays and I would like to define 1 "min/max" set for each array.
i.e. :
ARRAY1 => each element compared to min1 & max1
ARRAY2 => each element compared to min2 & max2
ARRAY3 => each element compared to min3 & max3
For 1 array, I found this solution : I write Locals.ARRAY1[RunState.LoopIndex]  in "DataSource" and all the elements of the array are compared to the limits I have chosen. Of course, when I add 2 arrays, the same limits are compared to those new arrays but I would like to allocate 1 limits set to 1 array.
Does anyone have an idea of an easy solution ?
My Teststand code and the little vi are here below if it might help.
Thank you in advance !
Solved!
Go to Solution.
Attachments:
Arrays_Generator.vi ‏11 KB
Sequence File 1.seq ‏7 KB

Consider this example.  The trick is Repeat One Measurement on the Data Source tab.
jigg
CTA, CLA
teststandhelp.com
~Will work for kudos and/or BBQ~
Attachments:
MultiARray.seq ‏7 KB
Output3Arrays.vi ‏10 KB

Similar Messages

  • Hi,  my iphone capacity change from 32GBs to 13GBs. I already restore it several times and even set it as new iphone. But nothing happened. Someone nows what is happening? thanks

    Hi,
    my iphone capacity change from 32GBs to 13GBs. I already restore it several times and even set it as new iphone. But nothing happened. Someone nows what is happening? thanks

    It is actually a 32GB iPhone?
    What shows in Settings > General > About?

  • Multiple Numeric Limit Test - Evaluate Post and Status Expression

    We have a Multiple Numeric Limit Test where the limits for one of the measurements is a function of one of the other measurements.
    In the Post-Expression there are two expressions that set the low and high limit based on one of the readings.
    But the comparison does not seem to be using the calculated limits.
    The report file shows the correct calculated Low and High Limits, and shows the measured reading as being in between the Low and High limit, but fails that measurement. I feel the Status Expression is using the default limits that are out of range.
    The post expression looks like this
    Step.Result.Measurement[2].Limits.Low=Step.NumericArray[1]*1.9,
    Step.Result.Measurement[2].Limits.High=Step.NumericArray[1]*2.1
    In Table 3-4 "Order of Action that a Step Performs", Evaluate Post-Expression (Action #15) is before Evaluate Status Expression (Action #16), but it seems that is not the case.
    Or am I changing the wrong Low and High Limits. Am I just changing the Limits used in the report file and not the limits used for comparison?
    Again the correct low and high limits are in the report but not used for comparison. 
    Thanks

    Digging into the NI step type for Multiple Numeric Limit Test, I find that the comparison is done at Post-Step substep which is before my Post Expression is evaluated to set the correct limits.
    So I have added code to my VI module to set the limits after taking the measurements but before returning to TestStand.

  • Dynamically configure multiple numeric limit test measurements

    I seek to dynamically (programatically) configure a multiple numeric limit test such that I may set / increase / change the number of measurements in the step during execution. For example, I'd like to setup the step for 5 measurements:
    M1, M2, M3, M4, M5 with limits 4<=x<=13.
    I'll set the result data to {1,2,3,4,5}.
    I can successfully set:
    MyMultipleNumLimTestStep.ExpectedNumMeas = 5
    MyMultipleNumLimTestStep.NumericArray (Number of elements to 5)
    MyMultipleNumLimTestStep.DataSourceArray (Number of elements to 5)
    MyMultipleNumLimTestStep.Result.Measurement (Numer of elements to 5)
    Following that, I can access the individual measurement property objects (by offset) and set the Name, Limits.Low, Limits.High, etc...
    During execution, I can view the step variables to see the values getting set correctly.
    BUT, in the report, I only see measurement name, status and the measurement value. NOT the units, limits, comparison type.
    Step
    Status
    Measurement
    Units
    Limits
    Low Limit
    High Limit
    Comparison Type
    AmpMatchTest
    Failed
    Measurement:
    M1
    Failed
    1.000
    M2
    Failed
    2.000
    M3
    Failed
    3.000
    M4
    Passed
    4.000
    M5
    Passed
    5.000
    Take note, prior to execution, I have no entries defined in the Limits tab of the step settings for this step. If I were to define, say, two steps and run again:
    Step
    Status
    Measurement
    Units
    Limits
    Low Limit
    High Limit
    Comparison Type
    AmpMatchTest
    Failed
    Measurement:
    M1
    Failed
    1.000
    dB
    4
    13
    GELE(>= <=)
    M2
    Failed
    2.000
    dB
    4
    13
    GELE(>= <=)
    M3
    Failed
    3.000
    M4
    Passed
    4.000
    M5
    Passed
    5.000
    If I define >5 entries, my code will limit the result to 5. Any ideas?
    Thanks,
    Derek

    Hi jigg.
    I also need to configure a multiple numeric limit test programatically. Unfortunately your solution seems not to work (in Teststand 2013). Also with your code I get limits and comparsion entries in the report only for the first measurement. This is the one already existing in the step configuration.
    Step
    Status
    Measurement
    Units
    Limits
    Low Limit
    High Limit
    Comparison Type
    Dynamic Call
    Passed
    Measurement:
    AllParts
    Passed
    1
    1 = Pass
    1
    EQ(==)
    Another Part
    Passed
    1
    Part 20
    Passed
    1
    Part 2
    Passed
    1
    Part 1
    Passed
    1
    If I add a second measurement in the step, this one is shifted (like expected) and shows the limits and comparsion in the report.
    Step
    Status
    Measurement
    Units
    Limits
    Low Limit
    High Limit
    Comparison Type
    Dynamic Call
    Failed
    Measurement:
    AllParts
    Passed
    1
    1 = Pass
    1
    EQ(==)
    Another Part
    Passed
    1
    Part 20
    Passed
    1
    Part 2
    Passed
    1
    Part 1
    Passed
    1
    Measurement 1
    Failed
    0
    1 = Pass
    1
    EQ(==)
    What is special with the preconfigured measurements, compared to the programatically created test? Any help is very appreciated.
    Thanks
    --rainer

  • Multiple Multiple Numeric Limit Test

    Hello
    I have a test that I have written (LabVIEW) that produces 2 arrays of numeric Values. 1 array of Gain data and 1 array of Noise data. I want to apply (different) limits to each array (Same limit for each element within array). How do I do this in TestStand. I have used the multiple numeric limit test for tests returning a single array of data but my test returns 2 arrays.
    It would be really in-efficient to split the test up into 2 tests as both Noise and Gain data comes back from the instruments in one sweep.
    Any clues ?
    Regards
    Chris

    Chris,
    Since your code module returns two arrays and you do not want to call the module twice you could have the LabVIEW multiple numeric limit test step to validate one of the arrays and have a None multiple numeric limit step  to validate the second array. You have to send one of the arrays to a local or global variable  so you can access it from the None multiple numeric limit step.
    You could even execute these steps in a separate sequence and call it using a Sequence Call step if you want to see all the process as  a single step.
    Another option would be to create your own multiple numeric limit step type in order to support two different arrays as the data source at the same time. This solution requires more work from you. You could take the existing multiple numeric limit step type code as a starting point.
    You can fin the code under <TestStand>\Components\NI\StepTypes\CommonSubSteps.
    If you plan on modifying the code it is better to make a copy under <TestStand>\Components\User\StepTypes and modify it there.
    This will prevent future upgrades from overwriting your changes.
    If you have any question let me know.
    Hope it Helps.
    Antonio Lie.

  • EA6500 Wireless Issues Performance Test and MTU setting

    Just changed from DSL to Comcast Internet with a 25Mbps download service.  Purchased the Comcast the Linksys cable modem to match the EA6500.  Last night when testing doing some Netflix HD streaming while downloading Direct TV HD movie noticed that performance was not streaming HD in fact it was as bad as the slow DSL.
    So tried the Smart Wifi Performance test several time and downloads were terrible 3.0 Mbps, however, when testing with other testers, speakeasy, speedtest performance was above 25 Mbps.  Called support and they had no answer.
    What is wrong with the speed test smart wifi?  Why was I not getting HD streaming speeds?  I shoulf have plenty of bandwidth.
    Also I can seem to find the right MTU setting.  Every packet amount I ping is working so I can not get a fragmented error.
    I thought this router was advertised as a HD video router.
    I have just about everything disabled including Media Priority.
    Comments, Ideas, help,
    Thank you

    Hi!
    To get the optimum HD streaming performance, you can try setting the following on the router's page :
     - disable or turn off  WMM Support  under Media Prioritization.
     - personalize the wireless settings, set different names on the 2.4 and 5 GHz networks.
     Let the streaming devices connect to the 5Ghz network.

  • Set Fixed Array Size

    Hello. I am trying to develop a VI for an FPGA target and I'm trying to make it so whoever is using the VI can specify the size of an input array when they instantiate it (such as by having an input to the VI that says "max array size" or something). So far it seems like the only way to do something like this is to go into the VI itself and manually set the array size for each input array for the VI (i.e. open the VI, right click on each input array, select "Set Dimension SIze", choose "fixed", set number of elements). I'd like to have one point where I can set the size of all the arrays at once (since in my case they are all the same size), and let the person using the VI set it to the proper size for whatever application they are using it for (to be clear, let's say I have two uses for this VI, and in one case I have an input array of size 100 and in anohter use of size 1000, I'd like to be able to set these somehow instead of doing it through the dialog). Thanks.
    Solved!
    Go to Solution.

    Unfortunately, per-call configuration of array size is not something that is supported today. This is a great idea, I would suggest that you post it on the FPGA Idea Exchange so we can get a feel for how many other people need this same feature.

  • How to ask for an array and how to save the values

    I'm supposed to be learning the differences between a linear search and a binary search, and the assignment is to have a user input an array and search through the array for a given number using both searches. My problem is that I know how to ask them how long they want their array to be, but I don't know how to call the getArray() method to actually ask for the contents of the array.
    My code is as follows:
    import java.util.Scanner;
    import java.util.ArrayList;
    public class Main
        private static Scanner input = new Scanner(System.in);
        public static void main (String args[])
            //creates ArrayList
            int List[];
            System.out.println("How long would you like the array to be?");
            int arrayLength = input.nextInt();
            //Initializes array list
            List = new int [arrayLength];
            System.out.println("Please enter the first value of the array");
        public static void getArray(int List[], int arrayLength)
            for(int i=0; i < arrayLength; i++) {
                 System.out.println("Enter the next value for array");
                 List[i] = input.nextInt();
         public static void printArray(int List[])
             for(int i=0; i < List.length; i++)
                 System.out.print(List[i] + " ");
    public class search
        public static int binarySearch(int anArray[], int first, int last, int value)
            int index;
            if(first > last) {
                index = -1;
            else {
                int mid = (first + last)/2;
                if(value == anArray[mid]) {
                    index = mid; //value found at anArray[mid]
                else if(value < anArray[mid]) {
                    //point X
                    index = binarySearch(anArray, first, mid-1, value);
                else {
                    //point Y
                    index = binarySearch(anArray, mid+1, last, value);
                } //end if
            } //end if
            return index;
        //Iterative linear search
        public int linearSearch(int a[], int valueToFind)
            //valueToFind is the number that will be found
            //The function returns the position of the value if found
            //The function returns -1 if valueToFind was not found
            for (int i=0; i<a.length; i++) {
                if (valueToFind == a) {
    return i;
    return -1;

    I made the changes. Two more questions.
    1.) Just for curiosity, how would I have referenced those methods (called them)?
    2.) How do I call the searches?
    import java.util.Scanner;
    import java.util.ArrayList;
    public class Main
        private static Scanner input = new Scanner(System.in);
        public static void main (String args[])
            //creates ArrayList
            int List[];
            System.out.println("How many values would you like the array to have?");
            int arrayLength = input.nextInt();
            //Initializes array list
            List = new int [arrayLength];
            //Collects the array information
            for(int i=0; i < arrayLength; i++) {
                 System.out.println("Enter a value for array");
                 List[i] = input.nextInt(); 
            //Prints the array
            System.out.print("Array: ");
            for(int i=0; i < List.length; i++)
                 System.out.print(List[i] + " ");
            //Asks for the value to be searched for
            System.out.println("What value would you like to search for?");
            int temp = input.nextInt();
            System.out.println(search.binarySearch()); //not working
    }

  • Clear array and take average of values in array continuously

    I have a continuous signal that I am acquiring with hardware (sampling at 1000Hz).  I want to be able to insert the data into a 1D array for 5 seconds, and then take the average of these 5000 samples.  So basically, every 5 seconds I need to take the average of a 1D array and create a new array for the next 5000 samples.

    There is no reason to accumulate the data into an array if all you need is the average.
    Simply add the values into a shift register. Every 5000 points devide the sum by 5000, output the average, and zero the shift register for the next series of data..
    LabVIEW Champion . Do more with less code and in less time .

  • Property Loader and Multiple Numeric Limit Test

    Hi!
    I'm trying to export the limits of all numeric limit tests im my sequence.
    I've no idea what i'm doing wrong, but i fail with exporting the limits of the multiple numeric limit tests. There are only the limits of the "normal" numeric limit tests in my export.
    Could someone please explain me how to export also the limits of the multiple numeric limit test?
    (TS 2013)

    when defining what to export, it is usually easiest/cleanest if you can explicitly define all multiple numeric step measurements as explicit indixes? For example if your MNL step has 2 measurements defined, you'd want to export 4 additional matches...
    Step.Result.Measurement[0].Limits.Low
    Step.Result.Measurement[0].Limits.High
    Step.Result.Measurement[1].Limits.Low
    Step.Result.Measurement[1].Limits.High
    ...and so on for more indexes....
    note how the pattern is different from the regular
    Step.Limits.*
    by default when you try to export using the '>' buttons for MNL steps, TestStand will usually try to help by generating an incomplete/invalid expression of:
    Step.Result.Measurement[?].Limits
    which it expects you as the user to fix before proceeding, however the '?' is often overlooked, because it's so small!
    some people prefer to simply export the entire Step.Result.Measurement.* to the file because they'd prefer not to define array indexes, but this will log the explicit XML for the container values, which may not be as easy for end users to work with... your mileage may vary. Good luck!
    -Elaine

  • Custom Looping Multiple Numeric Limit Test SequenceFilePostStepFailure

    Hi
    I am using a custom loop on Multiple Numeric Limit Test. The SequenceFilePostStepFailure callback is called each time the loop fails and called again when the step fails.
    I want to do something (not relevant for this question) when it is looping and something else when the step fails. How do I know the difference? Is there any flag to look for?
    I have tried looking at several variables under RunState but haven’t found the right one. Is there one?
    Thanks in Advance
    Kim

    Kim,
    Try Runstate.Caller.Step.Looptype you can compare this to NoLooping.  If NoLooping then the step doesn't loop.  You can also use Runstate.Caller.Step to get a Step object and then just use the API calls to manipulate it.  You can read about it in the TS help.  To get the loopindex try: Runstate.Caller.Loopindex.
    Both should be ran in the SequenceFilePostStepFailure Callback.
    jigg
    CTA, CLA
    teststandhelp.com
    ~Will work for kudos and/or BBQ~

  • Can I exclude measurement (of multiple numeric limit test) from results ?

    I'm working on test where instrument returns multiple results at one call.
    I use NI MultipleNumericLimitTest -step type (TS 2.0.1).
    In some cases I'd like to exclude certain measurement from the results.
    I could do this for example by setting Comparison type of selected measurement to "No Comparison", so that this measurement is assumed to PASS always.
    Is there any property flag or any other way to exclude measurement from the results completely ?
    (So I don't want this measurement to affect on multiple limit test status or to appear in the report)
    cheers,
    Masi

    Hi!
    Yes, there is a property that you can set/reset that specifies whether the property appears in the report or not.
    1. Right click on your multiple numeric step and select View Contents
    2. From the tree view, browse to YourStep->Results->Measurement.
    3. Right click Measurement and select properties.
    4. Click the Advanced button and look for the PropFlags_IncludeInReport flag and uncheck it.
    That's it, now your measurements will not appear in the report. If you want some of the measurements (but not all) to be included in the report, then browse to the specific measurement YourStep->Results->Measurement[i], and check the PropFlags_IncludeInReport flag for that property.
    I hope this helps. Let me know if you need more information.
    Marcela.

  • Multiple numeric limit test

    Hi,
    I have a mutiple numeric limit test. I want to modify the measurement set in the test based on my needs. How to access the measurement set property of the test.
    when I do the export of the property using the property loader utility, the data is in avery difficult format to read.
    Can you suggesst some alternative?
    Regards
    Gopal

    Hi Gopal,
    Besides using the Property loader step, you could use an expression to access the measurement set. To do this, right-click on the step and go to Properties>>Expressions, and the measurements are under Step>>Result>>Measurement. I hope this helps. Let me know if you have any questions.
    Regards,
    Ebele O.
    National Instruments

  • NI_LimitMeasurement in multiple numeric limit test results ?

    Hi,
    I'm setting up a database where I will store my teststand results. I've seen that the default "multiple numeric limit test" stores as first result an entry with type_name = "Array of NI_Measurement[0..n]" (n being the number of values returned by this step).
    What's the goal of storing this in the database ? Is it only used to know how many results have been returned by the step ?
    Regards,
    Alex

    Dear SG3,
    I've a written a simple TestStand sequence which executes a single "Multiple Numeric Limit Test" returning 2 random values :
    The results are stored in my database using the default "MySQL Insert (NI)" schema. When I look for what has been written to the database, there are 2 steps results in the "STEP_RESULT" table. The first one is the MainSequence Callback. The second one is my "Multiple Numeric Limit Test" step.
    If I then display the corresponding results of this step that are in the "PROP_RESULT" table, here is what I get :
    There are 3 entries in this table. The first one is named "Measurement" from type "Array of NI_LimitMeasurement[0..1]". The two other entries are my generated random numbers.
    What is the purpose of the first entry ?
    Regards,
    Alex

  • Measurement for multiple numeric limit test

    Hello,
            I am developing a test software using LabWindows and TestStand. In my application, I have added a no: of multinumeric tests. In Operator Interface, I want to display each measurement in run time, instead of waiting for completion of all the measurements with Multiple numeric limit test. Is there any way to receive in TSOP each runtime measurent taken for multiple numeric limit test without waiting for multinumeric limit test over?
    Thanks in advance......
    Best Regards,
    Vijay

    Hi Vijay,
    Unfortunately, a Multiple Numeric Limit Test will not allow you to return each measurement inside the step as it executes.  If you need this to occur, there are other methods that you could take.  You could create a custom step type or use many Numeric Limit Test steps and pass them the indexes in your array.
    Another method you might use would be to use an Action step and save the array locally.  Then, you could use Statement steps to evaluate each item in the array.
    Jessica
    National Instruments
    Product Support Engineer

Maybe you are looking for

  • How to use two fonts in one passage?

    I usually use PAGES to write compositions and every time i try to use another font to revise the composition, the font will change back automatically to the font  that I used for writing compositions. It bothered me a lot..... How can i revise the co

  • My book mark bar constantly asks me to refresh

    My mac book pro continually brings up the refresh icon in the bookmark bar no matter how many times I refresh, has any one any suggestions?

  • Getting the active role of an user in a trigger

    Hello forum!! I've been searching to find out if and how I can get the active role of an user when programming a trigger. Unfortunately I did not succeed in finding some information about this. Is it possible? If yes, how? Thanks for any hint regardi

  • Mail, App Store, Quicktime and much more won't work...

    Every time I start up Mail it unexpectedly quits. I get this message. Process:         Mail [307] Path:            /Applications/Mail.app/Contents/MacOS/Mail Identifier:      com.apple.mail Version:         6.2 (1499) Build Info:      Mail-1499000000

  • Virtual component problem in Multisim 11

    Hello all, I am a Multisim beginner.  I have a 3PDT switch in my circuit and when I try to Transfer to Utilboard it gives me an error message that this component will not be transfer because it is a virtual component.  What does this mean and how do