SystemTest's Limit Check throws an error as the variable being tested on is empty. How do I get this LimitCheck working?

I have a SystemTest of a Simulink model, where the outport signals are mapped to Test Variables.
When I try and perform a limitcheck, I get the Error Message: "[variableName] is empty."
I've not managed to figure out a workaround. When I attach a scope onto the outport signal, I find it is producing a signal right from the start of model simulation.

 Accepted Answer

Within SystemTest the order of execution corresponds to the order of elements within each of Pre/Main/Post test. So a LimitCheck or MatLab code that is run before the Simulink Model (i.e. listed above the Simulink Model, within Main Test) will not have access to the variables corresponding to the output of the model. This gives the variable is empty error.
To sort, click on the LimitCheck/MatLab script test elements and drag them down within SystemTest to below the Simulink test element.

More Answers (1)

I think the problem might be that the signal is not logged. Do you have a signal label for that signal line? Does the "variableName" exist in the base workspace after the simulation? Right click the signal line, choose "signal properties", you will see a dialog to specify the signal name, log name, etc. Make it match the variable name.

9 Comments

Yes, it all matches up - except I'm using outport signals rather than 'Logged Signals'
I don't know if it makes a difference, but when I plot the data coming out the model it doesn't start quite from zero (although a scope always finds output from the start).
That is probably unrelated. The scope has a default of 5000 points limit.
By plot I mean a System Test plot. I don't think it's losing values through a limit being imposed as you can watch them being drawn on in simulation.
What do you mean? A signal line is connected to your Outport block. You are performing a limit check. The check has to be performed on a variable which contains the data representing the signal values along time. Do you check the 'variableName' in the workspace? How and where do you record the data? What variable do you use to record the data?
The outport signal maps to a test variable of the same name.
Limit Check tries to perform comparisons on these test variables.
It's quite tempermental, I've not changed the variables but I closed and reopened system test and I don't have the error now :D
Although now I do have the check failing now when it shouldn't :( - graphs of the data show all points are equal, expected and actual output (I'm testing for equality)
Thanks :)
If you are comparing doubles, it is likely that the values you are comparing against are not exact double precision matches for the outputs of the model. This could be a combination of conversion to binary and limited number of significant digits. You probably want to use the Tolerance Check tab of the Limit Check Element. This will give you control over how much precision you expect from the test.

Sign in to comment.

Products

Asked:

on 26 Aug 2011

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!