NI TestStand

cancel
Showing results for 
Search instead for 
Did you mean: 

Runtime error -17308: Value has not expected type

Hi,

seems I ran into a new problem, which I could not solve alone - NI tech support Germany gave the proper hint what to try and fix:

After a power outage my sequence did no longer run. It produced a runtime error as above when trying to access a sub-sequence, either in the very same or in another sequence file. This runtime error occured before even accessing that sequence and said 'Error, expected String, found Container. [Error Code: -17308, Specified value does not have the expected type.]

BTW, a test1.seq file producing this error is attached. I operated this in the parallel process model with just on test socket (for testing purposes).

I tried to create a new sequence file and copy all my sequences to it
, but with no success.

What solved the problem was creating a whole new sequence file and creating all steps and subsequences new. A lot of work, but a solution.

So a good hint: Install a working backup system and, if necessary, an uninterruptabel power supply to your test systems.

AND, a sequnce that opens properly does not necessarily be OK and may not run as expected!
0 Kudos
Message 1 of 5
(4,586 Views)
Hi Lul,

The error seems to be regarding the data you are passing between a subsequence. It looks as though you are trying to pass a container for a value that is supposed to be a string. I am not sure if you are trying to pass this value between subsequences via a parameter or access a DLL or ActiveX step that is expecting a certain datatype. Nevertheless, one of your input arguments does not match. I would guess that before the power failure, you added some call and passed the incorrect data type. I would check the values for the step(s) that are causing this error. I don't think it was necessay to delete the whole sequence and start from scratch.

Bob
0 Kudos
Message 2 of 5
(4,586 Views)
Hi Bob,

thanx for your quick reply. It is not yet too much work . AND I've installed a 'Backup for lazy people' NOW, that copies all changed sequence files regularely onto a second drive. So it will probably never become too much work.
Anyhow, if you could have a look at the originally attached file and give me a more specific hint on what to change, that would probably help even better.

I did some editing, yes, but the original sequence has called a subsequence from my private sequence model file. There is no data exchange. The callee itself calls a LabVIEW VI that acquires some system info (text and array of text) and stores that in a station global. Is there a better way to get such data types into my target sequence rather that via station globals? Or shoul
d I use a LabVIEW2-type global for storage purposes?

TIA -- LuI
0 Kudos
Message 3 of 5
(4,586 Views)
Hi,

If you are trying to access model specific data, then storing this in a station global variable is one method. However, you may also access model variables through the RunState.Root property. For example, if in my model I had a local variable called X, the I could access that variable from my client file via, RunState.Root.Locals.X. This is the preferred method. You LabVIEW VI would store the info it gathered in the model's local. Let me know if you need more info.

Bob
0 Kudos
Message 4 of 5
(4,586 Views)
Bob,

I still have problems understanding the TestStand API and data exchange. Your answer is still unlogical to me. Let me explain:
I have a sequence file called unittest. It has two sequences, test and main, where main just calls test. It also has some file globals, amoung are devicelist (Array of string) and TAList (array of myType). The sequence test calls at the moment 3 sequences in the process model file, as are GetDeviceList, DevicesOK and GetTAList. All those sequences have a parameter CallerRef, which is set by test to RunState.ThisContext. The called sequences accept CallerRef and forward it to a LabVIEW VI. I have tried to pass the results of that LabVIEW VI to different locations in order to get it back to some of the fileglobals in unittest. Tried CallerRef.locals.xxx, CallerRef.FileGlobals.xxx and so on; even tried to experiment with Runstate.Root.Step.TS.SData.Stepname and related values.

You told me I could access a local variable X from my model file as RunState.Root.Locals.X. I ever thought of locals being related to sequences, not to sequence files. So I am missing a statement resulting in the proper seuence _within_ RunState.Root.
The TSHelp states, that RunState.Root is the 'Sequence context for the root sequence invocation. If you ... use an entry point from the default TestStand process model, the Root property is the sequence context of the Test UUTs or the Single Pass sequence.'

With my tests I have found, that Runstate.Root.Step.TS.SData.Stepname point to test in Unittest. If I use Main instead of root, it points to the very same. If I use Caller, this points to the direct caller for the sequence in queestion.

Maybe I am just overloaded or 'misdirected' with my LabVIEW experience, but I am still disappointed with that TS API and its documentation. Maybe I need an example on how to build a library of tool sequences in the process model file and haw to transfer (large?) data to the callers in the target sequence file. Could you or someone else at NI help me with a more detailled explanation?

I would even call to Texas from Germany, If I could get a contact. This might be more effective than exchanging emails.
You may contact me at "u . frenz @ getemed . de" (remove the spaces between the quotation marks - I do not like my adress being fished out of the web for SPAM). But please remember the time zone relations when dating a contact! AFAIK it is 10 hours later here, isn't it? I assume the first chance was on monday evening my time, morning yours.

Thanx for your help!
0 Kudos
Message 5 of 5
(4,586 Views)