NI TestStand

cancel
Showing results for 
Search instead for 
Did you mean: 

How do I fix error code: -17600?

I am in the midst of deploying a Teststand 3.1 / LabVIEW 7.1 system for a customer.  We have qualified the test functionality with their LabVIEW development system.  Now we want to create an executable so that they can remove the LabVIEW system. 
 
The target has the full application source code, a TestStand deployment  license, and a LabVIEW built executable.  However, while the application will start, none of the test perform correctly.
 
1. A user selects a recipe for a specific part type. 
2. The recipe is a sequence which dynamically calls each pre-defined test from a test dictionary for that part type.
3. Each pre-defined test includes one or more test actions that call modules in the source directory.
 
When the LV executable is built, only the Full OI launcher and top-level VI were included.  The system failed to operate as the test steps were loaded from the source directory, and common subVI's used default values rather than initialized values.  Examples of these common subVI's include a custom interface to 3rd party hardware (initialized in the executable) and LV application global properties (part type parameter information).  I concluded that two copies of the 'common' subVI's are in memory: one in the EXE and the other is a source copy invoked by the dynamic sequence call.
 
The next version of the LV executable added common start / cleanup VI's to the executable as dynamically called subVI's.  This would prove whether all the custom steps would need similar inclusion.   Also, the LV adapter was setup for the LabVIEW Runtime.  When any of the dynamic subVI's are to be invoked, error code -17600 is called stating that the runtime engine already has "..\Program.exe\startup.vi" and can not load "...\Source\Components\startup.vi"
 
I would like to better understand TestStand deployment, however the current page is "Document is not available"
0 Kudos
Message 1 of 2
(3,658 Views)

Kenneth,

 

My understanding of the heart of the problem is that you have a LabVIEW OI contains VIs that have the same names as VIs that your sequences call dynamically.    Since the LabVIEW OI loads first it will load "..\Program.exe\startup.vi" into memory.   Later a sequence tries to load a VI named "...\Source\Components\startup.vi" which fails with error code -17600.    The reason for the failure is that LabVIEW only allows one VI of a given name to be in memory at one time.   

 

There are two copies of this VI because every VI that is not dynamically called by the OI is copied into the exe at build time.   This problem can be solved by either calling the VI dynamically from the OI using VI server or by moving the calls out of the OI entirely.   If you are going to move the calls, they could be moved to the sequence that requires them or into the process model sequence if it is required by many sequences.  I am not familiar with your system so I can't say which is the best solution, however generally modifying a sequence is easier to do and debug then to modify the OI.

 

If you are unfamiliar with the process model here is a knowledge base article that describes it and how it is selected:

http://digital.ni.com/public.nsf/allkb/D9E7A0BDDDA2A87886256FD9007598D2

 

For more information on VI Server look in the LabVIEW examples: LabVIEW 7.1\examples\viserver\dynload.llb\Dynamic Load Example.vi

 
-Rick Francis
 
0 Kudos
Message 2 of 2
(3,641 Views)