PostUUT Model callback

Hi
Can anyone tell me if there's an issue with including client sequence calls in the PostUUT Model callback, in TestStand 3.1? I've edited my main sequence to include the callback, and added a couple of calls just before the 'display banner' statements are executed. The calls execute ok, the banner is then displayed and the sequence ends, but in the test report it's always gives the UUT Result as 'Running' and there's no execution time. If I delete the 2 calls and copy & paste the same statements from the 2 sequences straight into the callback, everything executes as before, but now I get a Passed or Failed UUT result and also the execution time. In trying to find out why, I tried including a call to a sequence that just displays a pop-up message and nothing else, and that causes the same problem with the report as before. Is there some setting or parameter I need to check, if I include calls in the PostUUT callback or can I not do this?
Thanks
Bruce

Hi Ray
I'm not sure which out of the callbacks I can edit, is one that's equivalent. The list that comes up for the Modal callbacks, is:
MainSequence
PreUUT
PostUUT
PreUUTLoop
PostUUTLoop
ReportOptions
DatabaseOptions
ModelOptions
TestReport
ModifyReportHeader
ModifyReportEntry
ModifyReportFooter
LogToDatabase
ProcessSetup
ProcessCleanup
Is it one of these or am I looking in the wrong place?
Thanks
Bruce

Similar Messages

  • How to run SequenceFilePostStepFailure model callback after step failing with nested sequence calls

    Hi,
    I would like to pop up a message box immediately on any test failures.  I had thought I could use the SequenceFilePostStepFailure model callback to achieve this,but when I modify the process model callback to achieve this, I've found that the callback code is executed only for step failures of the top level sequence file.
    My test code has mutiple sequence files being called before getting down to the granularity of the basic numeric limit test that will pass or fail, so I'd like to execute the SequenceFilePostStepFailure callback immediately at that level.  I can achieve this by adding a SequenceFilePostStepFailure callback override in the sequence file in question, but I'd prefer to use the default model callback implementation so I don't have to find all the places where numeric limit tests are executed and cause the DUT to pass/fail.
    I've attached some example sequences that I hope illustrate the problem.
    Thanks for the help,
    Daniel
    Solved!
    Go to Solution.
    Attachments:
    TestCode.zip ‏55 KB

    My fault, I see now that the model callback I should have modified is the ProcessModelPostStepFailure.  Problem solved.

  • Teststand callback sequential model

    Hello everyone,
    I'm looking for some documentation related to TestStand sequential model callbacks, I need to know when each callback is launched. I'd like to get this info for Application manager and Engine callbacks.
    Also, I'd like to know how to detect when an execution ends to trigger an event in my HMI (LabVIEW)
    Best regards,
    Rodéric L
    Certified LabVIEW Architect

    You can look at your process model and see when all the model callbacks are being called.  Just open the process model in the Sequence Editor.  It is just a sequence file.  Engine callbacks are trickier because they occur when a specific event occurs.
    http://zone.ni.com/devzone/cda/tut/p/id/6605
    http://zone.ni.com/reference/en-XX/help/370052J-01/tssuppref/infotopics/callbacks/
    http://digital.ni.com/public.nsf/allkb/E9BA6B7ABE026D7086256FD4005C0F7A
    Also look in the TestStand Reference Manual found in your TestStand documentation folder.
    In regards to your HMI.  Is this something you created yourself or are you customizing the User Interfaces that ship with TestStand?  Or is this something you want to execute once the Execution is completed.  Does it have to happen upon completion or near the end of completion.  Because you could just override the Process Cleanup callback which occurs close to the end.
    jigg
    CTA, CLA
    teststandhelp.com
    ~Will work for kudos and/or BBQ~

  • How to set the report path in a model plugin

    I am trying to figure out how to set the report path in a process model plug-in. I can seem to figure out how to get access to it. It seems like this would be a reasonable thing to do since the plug-ins are for results processing. Does anyone know how to do this? We typically use the Sequential process model but I am trying to keep my plug-in as independent of that as possible. 
    Thanks.
    Solved!
    Go to Solution.

    If I understand, you want your plug-in, when enabled, to alter the settings of any other instances of the NI report plug-in such that their reports share the same directory as your plug-in is configured to use.
    If so, your plug-in can access and modify the settings of all other plug-in instances. All instances are passed to all plug-in entries point in the plugins array sub-property of the ModelConfiguration parameter. You can iterate through this array. Any element of the array with a Base.SequenceFilename equal to "NI_ReportGenerator.seq" is an instance of the NI report plug-in. Its report options are stored in the element under PluginSpecific.Options.
    You can change the report options to what ever you want. Note that the ReportOptions model callback is called from the Initialize model-plugin entry point, so you might want to ensure that your changes are applied after that, so they aren't overwritten. To do that, you could make your changes in the the Initialize entry point of your plug-in, and ensure that your plugin runs last. To make it run last, you could set the FileGlobals.ModelPluginComponentDescription.Default.Base.RunOrder in your plug-in file to a value greater than 0, such as 1.0 (see TestStand Help>>Fundamentals>>Process Model Architecture>>Process Model Plug-in Architecture>>Structure of Plug-in Sequence Files>>Model Plug-in Entry Points>>Order of Entry Point Execution at Run Time).

  • How does the parameter LoadModelPluginAddons in the ModelOptions callback work?

    I ask this question because I am running a scenario in TestStand 2012 where I want to run one sequence file using the execution entry point "Test UUTs" which then starts another sequence file using the execution entry point "Single Pass". The first sequence file uses the Parallel model and the second uses the Batch model.
    For the first sequence file I want to run a model plugin add-on but I do not want to run or even load it for the second sequence file. So in the second sequence i made an override of the model callback sequence ModelOptions and create a step which just sets the parameter LoadModelPluginAddons = False. But it does not seem to work like I expected since the model add-on sequence file is still loaded and executed for the second sequence.
    Can anyone tell me what happens?
    Best regards Jens Christian Andersen
    Best regards
    Jens Christian Andersen.
    CLA, CTA
    Solved!
    Go to Solution.

    There is also a ModelPluginConfigurationToLoad parameter, which defaults to "".   "" is a wildcard that means load the 'active configuration' from each configuration file. Alternatively, you can specify a configuration name explicilty, such as "<Default for Inline Processing>". 
    You don't edit the automatically created Addons.cfg, file, it contains only one configuration and it is named "<Addons>. Thus is will only be loaded if your configuration name is "" or "<Addons>". The LoadAddonOns parameters is a way to force the addon configuration to be loaded even if you specify some other configuration name.
    So, it is not exactly for what you are trying to do, but if you can specify a specific configuration name, it will serve your purpose.

  • SequenceFileUnload in TestStand 4.0 Parallel Model

    Has anyone experienced a problem when updating to TestStand 4.0 with the SequenceFileLoad and SequenceFileUnload callbacks?  I’m using the parallel process model configured for 8 threads and in earlier versions of TestStand have had no problems placing my hardware initialization steps in the SequenceFileLoad callback and the cleanup steps that release hardware references, in the SequenceFileUnload.   It seems very random that sometimes when I close my sequence, the Unload steps are executed.  Sometimes they only run if I select File->Unload All Modules or close TestStand. 
    Is there a flag in TestStand that I can use to trigger the Unload steps or possibly a better place in the parallel model to place my hardware cleanup?  I don’t want to release and have to reinitialize hardware references with each loop so any cleanup steps will need to be done once after all parallel threads are finished.

    Most of the time people do this in the Process Setup Callback and Process Cleanup Callback.  Those are process model callbacks that you can override from your client sequence.  They are probably better to use than the engine callbacks (SequenceFileUnload and SequenceFileLoad).  They get executed before and after the looping respectively.
    If you open the process model you'll see where they get called.  Process Setup Callback is in the Setup step group and Process Cleanup Callback is in the Cleanup step group.
    Regards,
    jigg
    CTA, CLA
    teststandhelp.com
    ~Will work for kudos and/or BBQ~

  • Help with the Parallel Model configuration

    This is my first time posting, but I am a long time reader....
    First off, I would consider my Teststand knowledge level as high novice to low intermidiate. I created  a test sequence using in Teststand which calls labview vi's. My test sequence tests 5 units at a time in a parallel model (parallel model sequence). Functionally, everything runs great in single pass and looping. However, here is my issue:
    When selecting "Test UUT's", it brings up a window that asks for the serial number for each of the five stations. The operator then needs to enter a serial number for each and press okay to proceed. This setup is not valid for what I am doing. My test fixture has a button at each of the 5 stations. The user is to push the button to start the test (connects to a DAQ). Then, the serial number is read from the UUT and populated in the report.
    How would I go about reconfiguring this? I am not looking for someone to solve my problems for me, I just need a little direction. I looked at the parallel model sequence and I can't figure out where to go with it.
    Please help,
    Ryan
    Teststand 4.2
    Labview 2009
    Solved!
    Go to Solution.

    No problem Ryan,
    When you are done here you will be a pro.  
    Here is a link that talks about callbacks and how overriding them works: http://zone.ni.com/devzone/cda/tut/p/id/6605
    The PreUUT will be a Model Callback.
    One thing I should point out- There is a huge difference between the Batch Model and the Parallel Model.  People tend to get them confused and sometimes use the wrong when the other one is a better fit for their architecture.  They way I think about it is like a race track.  Each car on the track represents a different test socket.  One time around the track represents a full test.  Pretend the race is completed by teams of cars.  Each team can only race one car for one lap (sorta like a relay).  The team would represent the available test fixture for the next UUT and the car would be the UUT. Here's how the race would work with each model:
    Batch Model-  Let's say there are 2 available spots in the race so we have 2 teams of 5 cars each.  Both of the teams 1st cars would line up at the starting line.  The gun would go off and each car would take off.  Let's say team 1's car gets around the lap first.  Before they can start their 2nd car they have to wait for team 2's 1st car to get around the track as well.  Then both team's 2nd cars would line up and continue the same as the first go around and so on until all 5 cars had raced.
    Parallel Model-  In the same car scenario as the Batch Model both of the team's 1st cars would line up and the gun would go off and they would go.  However, this time if team 1's car gets around the track they can immediately send their second car without waiting for Team 2's 1st car.  In fact all 5 of team 1's cars could be finished before team 2's 1st car even finishes it's lap.
    Not sure if you are a fan of analogies but they work for me. In short-
    Batch Model- Everything in that set of test sockets must start and stop at the same time.
    Parallel Model- Each test socket is independant of any other test sockets.
    I'm picturing your scenario where you have 5 different stations that will be running independantly of each other and trying to figure out if you would want the Batch behavior or the Parallel behavior.  Or..... Why wouldn't you just use the sequential model on each station and deploy your sequence to each station?  Maybe you can describe your setup in a little more detail and we could come up with a better solution.
    How does the one station know that the others have the Go button pushed?
    Regards, 
    jigg
    CTA, CLA
    teststandhelp.com
    ~Will work for kudos and/or BBQ~

  • Callback for specific step group

    Hi,
    I have a sequence, Main sequence. In this sequence, there is Setup, Main and Cleanup step group. Setup is to initialise my devices, Main is to perform the tests on my UUTs, Cleanup is to stop and clear task for my devices. I would like to have a TS sequence in such a way that it runs Setup and Cleanup once and continue to loop Main. With this setting, I would still want to have the UUT Information window popup.
    I have tried using SequenceLoadFile callback and put my vis for initialising my deivces (found in Setup) in this callback. It works when I first open my sequence file. However, I would like to know if I can do it in such a way that everytime I click Run (F5), it will run my initialise vis (found in Setup) once and keep looping Main with popup of UUT Information window for each UUT and run Cleanup with I click Stop on the UUT Information window.
    Could anyone give me some advise on how I can do so??
    Thank you & Regards
    Lee

    Process Setup Callback and Process Cleanup Callback.  They are model callbacks that you can add to your client sequence and put your initialize and cleanup code in.  You add them the same way that you added the Sequence File Load callback (which, by the way, is an engine callback). 
    The Purple sequences are engine callbacks.  The Green sequences are Model callbacks.
    It doesn't matter if you override engine callbacks like you are doing.  It just matters what kind of behavior you want.  In your case you need the two model callbacks I mentioned at the first.
    Hope that helps,
    jigg
    CTA, CLA
    teststandhelp.com
    ~Will work for kudos and/or BBQ~

  • How to make a callback to be executed between PreUUTLoop and PreUUT?

    I am building a model in Teststand, which will be a base of any client sequence file, I expect some of callbacks in the model to be executed between PreUUTLoop and PreUUT, how  can I do it?
    Thanks
    Jacky

    Jacky,
    You can make as many callbacks as you like execute between the PreUUTLoop and PreUUT callbacks.  Just as an example, here is how I would insert a new callback a modification of the Sequential Model:
    - Copy over the <TestStand>\Components\NI\Models directory to <TestStand>\Components\User\Models directory.
    - Open the SequentialModel.seq found in the User\Models Directory
    - Go to 'All Sequences' under the view dropdown.  Right click, and select Insert Sequence.
    - Rename the sequence to whatever name you would like.  Right click on this newly created sequence, and go to Properties...  Click the Model Tab, and select Model under the dropdown box.  You have now created a model callback.  The only thing left to do is insert it into the "TestUUT" and/or "SinglePass" execution sequences. 
    - In the view dropdown box, select the TestUUT execution sequence.   You'll notice that quite a few subsequence calls and statements are already used between PreUUTLoop and PreUUT.  Note the "Next UUT" Label.  If you would like to have a callback run only once, before the start of the UUTLoop, you'll need to insert the sequence call before this label.  Otherwise, you can insert the sequence call after the label.  For this example, lets insert a sequence call before the NextUUT label.  Right click on PreUUTLoop Callback step, and select Insert Step >>Sequence Call. 
    -Go to specify module under this sequence step.  Select the current file checkbox, and choose your newly create model callback  from the dropdown list.
    At this point, you've inserted a model callback between PreUUTLoop and PreUUT.
    Chapter 10 of the TestStand reference manual should provide you with a lot of information on modifying the process model.  Make sure to take a look at it.
    Let me know if you need any other help.  Have a great day!
    Andrew W || Applications Engineer
    National Instruments

  • Secondary Process Model

    The TestStand Reference Manual states on page A-4:
    "In addition to using a primary, or parent, process model file, you can use a secondary, or child, process model file to encapsulate specific functionality, such as report generation."
    A "secondary process model" file is also mentioned on page 10-3:
    "A primary process model file can directly call model callback sequences in a secondary process model file. At run time, if the client sequence file of the primary sequence file implements a callback defined in the secondary process model file, TestStand invokes the callback sequence in the client sequence file, even if the primary process model file does not define the callback. You must add a copy of the callback sequence to the primary model file for the callback to appear in the Sequence File Callbacks dialog box for the client sequence file."
    I cannot find any additional information on the secondary process model.
    Can anyone explain how a secondary process model would be used?
    Are there any examples using a secondary process model?
    Thanks!
    CLA, CTA
    Solved!
    Go to Solution.

    1. How does one create/designate a secondary/child process model?
    It appears this is done by creation of a callback sequence in a "child" sequence file AND the "parent sequence file".  Is this correct?
    To create a process model in general you would open a sequence file and go to Edit>>Sequence File Properties.  Then on the Advanced tab change the Type to Model.  For it to become a secondary/child process model you would make a sequence call to it from the primary process model.  For instance the SequentialModel.seq at one point makes a call to ProcessOTFStepResult in either of the Engine callbacks in there.  Then the ProcessOTFStepResult sequence makes a call to PutOneResultInReport (if you are using the reportgen_txt.seq).  Then the PutOneResultInReport sequence makes a call to ModifyReportEntry (which is a callback).  However, if I have a client sequence file I would like to intercept that result and do some modifications.  So I would override that callback.  But since ProcessOTFStepResult and PutOneResultInReport are not in the process model there needs to be a mechanism for me to override that from the client.  This is because reportgen_txt.seq has different behavior than reportgen_html.seq or reportgen_xml.seq.  So it doesn't make sense to put everything in the process model.  Otherwise, your PM would be ridiculously large.  But you also need to make a copy of the callback in the PM so the client can see it.
    2. Is the parent sequence file callback simply acting as a pointer to the child sequence file callback?  Yes and No.  It depends on if it's invoked in the secondary PM or in the primary PM.
    3. How many levels of "child process models" can one create?  Is it possible to create a "third process model"? I just tested this out and it looks like you can.  But you do not have to put the callback in your secondary one.  Just the third layer and primary PM. 
    jigg
    CTA, CLA
    teststandhelp.com
    ~Will work for kudos and/or BBQ~

  • Replacing the default Parallel model UUT Dialog

    What is the best way to replace the default UUT Dialog for the parallel model? I don't want to modify the default parallel model, but use the callback options in my sequence to replace the default UUT dialog.
    Things already tried:
    1) Generated a UIR to replace the default UUT dialog.
    2) Placed an action to call the new dialog into the PreUUT callback.
    3) Created a statement function that change the status to display the default UUT Dialog and place into the ModelOption callback.
    This replaced Default UUT Dialog with the new UUT dialog. But the new UUT Dialog panel shows up in four different panel, one for each of the four socket being executed.
    The goal is to have the new UUT Dialog appear only once to handle all 4 sockets. The default parallel model initialize the default UUT dialog panel then uses display panel to view UUT dialog. Is there a different method to have the new UUT Dialog panel appear only once for all four socket inputs and not multiple times?

    There is an example for this under the directory:
    <TestStand>\Examples\ProcessModels\ParallelModel
    Edited: Just realized that what you asked is a bit different than the example.
    I recommend you try one of 2 possibilities:
    1) In addition to disabling the old dialog as shown in the example,
    override the ProcessSetup and ProcessCleanup model callbacks and add
    your code to display and remove your dialog there (you should probably use a "new thread" sequence call when displaying the dialog so that it has its own thread for message processing). Then also override
    the preuut callback and add code to communicate with your dialog in
    some way to pass and return the necessary information for each
    testsocket. This could be a dll call or some other way of doing this communication.
    2) Modify the existing code for the current dialog or implement something similar. The code for the dialog is in the cvi project for modelsupport in the same directory as the process models. If you are going to modify this dll you should copy the Models directory from Components\NI to Components\User and modify the version of it there. The Components\User version will override the version under Components\NI.
    -Doug
    Message Edited by dug9000 on 03-06-2006 10:25 AM

  • Save Report before last Step

    I have a vi that I created that takes a Teststand Report, cleans it up and modifies it in several ways (including changing the filename and saving it on a server). The problem is that I must wait for Teststand to finish the sequence and save the report before I run this vi. I would like to call this vi as the last vi in my sequence and have it do its magic automatically.
    I suspect that in order to do so, I must modify the TestStandModel.Seq but I do not have much experience in this. Is their anyway to save the html file that it is building (tempReport) before the last step so I can have my last action modify it. Another possibility might be to complete all steps, build report, then call the vi after I (the user) declines to proceed to
    next UUT. BTW, I only ever have a report for one UUT so the html report only represents one run through the sequence.
    Thanks for any help.

    Hi,
    Since you mentioned you don�t have a lot of experience with the process model, I'll explain to you a little how that works and then tell you how you can solve your problem.
    The process model (SequentialModel.seq if you are using the sequential process model) is the sequence that handles the execution of your tests. When you select Test UUTs a sequence called Test UUTs is executed. It asks you for the serial number, calls you main sequence, reports the results, generates the report, and continues in a loop until the user declines to continue with the next UUT.
    The Test UUTs sequence calls other sequences in the same sequence file. It calls PreUUT Loop before it starts looping several UUTs, it calls PreUUT before testing every UUT, it calls MainSequence, it calls PostUUT after every UUT is tested, and finally, it calls PostUUT Loop when the user declines to execute the next UUT after generating the report.
    These sequences are configured as callback sequences. You can override callback sequences in the process model in your own sequence file. Actually, you are already doing that. I mentioned above that the process model call a sequence called Main Sequence. Well in your own sequence file you have a sequence called Main Sequence, so your Main Sequence executes instead of the Main Sequence of the process model (which is empty).
    You can do the same with the rest of the callbacks. What you need to do is override the PostUUT Loop callback in your sequence and call your VI in this sequence. This will execute when you decline to go to the next UUT.
    What you need to do is go the edit menu in TestStand and select Sequence File callback. Here you have a list of callbacks that you can override. You will see that you are already overriding the MainSequence callback. Select the PostUUTLoop callback and click add. Now your sequence file will have a sequence called PostUUTLoop that will be executed when you decline to go to the next UUT.
    Good luck and let me know if this solves your problem.
    Marcela.

  • How to run a do-while loop on the 2nd execution after a stop on failure occurs?

    I am trying to use the Stop on Failure process model callback from the TestStand Examples.
    If a step fails within a Do-While loop and the test is terminated, the second time the test is run (continuing to the Next UUT in the process model), the condition for the do-while loop is checked first before it ever enters the loop. This is incorrect because the Do-While loop should execute once and then check the "while" condition.
    Also, If I was to stop the execution altogether and then restart the test (instead of continuing with the Next UUT), it runs the loop once, then checks the "while" condition.
    I'm not sure if I am describing this clearly enough. The execution seems to flow like this:
    Start test
    Do
    NumericTest step FAILS  -> terminate
    Next UUT starts
    While (condition is false and skips over Numeric Test step).
    So it seems that TestStand thinks it's still within that Do-While loop on the second execution and whatever runtime variables are not reset correctly.
    Is this a TestStand bug?  It happens in both TestStand 3.1 and 3.5.
    Is there any way around this?
    Thanks for any help.

    If it is what I think it is, it is a bug. Try unchecking Sequence Properties>>Optimize Non-Reentrant Calls to This Sequence and please tell me if that fixes it.

  • Performanc​e benchmark

    Hi,
    I would like to do some performance benchmarking using Xmath and SystemBuild.  Matlab has a tic/toc function, and for Simulink there's model callback.
    Is there a similar function in both Xmath and SystemBuild?
    Thanks

    pkad,
    Another thing you might want to take a look at is the Hyperbuild manual.  As part of its tutorial it describes a way to time the run-time of a simulation.
    Have a great weekend,
    NathanT

  • Expression​.Evaluate(​) - how to use it with propertyob​ject?

    Hi,
    I code in a process model callback and would like to evaluate an expression with the Runstate.Caller context.
    I found the method 
    Expression.Evaluate (
    evaluationContext, evaluationOptions = EvalOption_NoOptions)
    This is exactly what I need. However, if I have a CallingStep.Expr, which is a expression, I can't access the Evaluate() function. It is not available, only the PropertyObjects functions are.
    How can I cast it to be an Expression so I can access the function Evaluate?!
    I though I could do:
    Runstate.CallingStep.Expr.Evaluate(Runstate.Caller​, 0x0)
    This would return the expression evaluated in the caller context as a PropertyObject.
    But it's not the case, I'm missing something so TS know Runstate.CallingStep.Expr is an Expression... even if I add it to Watch panel, it shows it's an expression...
    Thank you.
    Solved!
    Go to Solution.

    I have an object of type Expression (from what I understand and from what the watch panel is showing) and I was expecting to be able to use the Evaluate() function.
    Expression.Evaluate(seqContext, options)
    But it seems that it's a propertyobject because only the function of this type are available.
    I've attached a screenshot. Thank you.
    Attachments:
    watchPanel.PNG ‏14 KB

Maybe you are looking for

  • What is the right bios for Satellite A100-749?

    Hi I bought a A100-749 (PSAARE) in France and I would like to update a firmware. I found a firmware version 5.90 for model PSAAR (there is no PSAARE so i think this model match) and inside the archive there are two files: s10pm590.rom s10pm590.rom Wh

  • [SOLVED] I can't get virtual hosts working. What's wrong?

    What I've decided to do is try to set up each domain name in the user folder to whom it belongs (for example: /home/username/somedomain.com/htdocs). I can't get it to work though. I keep getting an error saying that there's no index file (although th

  • CS3 Outline Stroke Problems

    I don't know if anyone else has noticed this. But since upgrading to CS3, I've got a serious problem moving the points from a stroke I changed to an object with the Outline Stroke command. I use this quite often, since I like the control it gives me

  • New SAP Fiori Launchpad issues

    Hi all, I want to use the new Fiori Launchpad, but I ran into two issues: 1 - When I try to logon at the new Launchpad, the result is the following image: Instead, the old Launchpad was this : 2- If I want to set the new Lanchpad URL in the APP 'SAP

  • RE: ELM deletion Of BP's.

    Hi, Any one could please calrify the following, This is related to ELM business scenario, i have 15 Bp's which are rented now i exceuted a campaign and converted 10 Bp's in to PROSPECT and the remainig 5 Bp's i want to delete it from CRM Server how c