How can I access simulation output signals in custom criteria callbacks for real-time tests in Simulink Test R2018b?

10 views (last 30 days)
How can I access simulation output signals in custom criteria callbacks for real-time tests in Simulink Test R2018b?
I am running real-time test cases on a Speedgoat target machine and I would like to assess some conditions in a
. For normal desktop simulations, the "STMCustomCriteria" object has an "sltest_simout" property where I can access simulation output signals. However, this property is empty when I look at a "STMCustomCriteria" object for real-time tests. How can I access simulation output signals in this case? 
test =
STMCustomCriteria with properties:
TestResult: [1×1 sltest.testmanager.TestIterationResult]
sltest_simout: {1x0 cell} sltest_testCase: [1×1 sltest.testmanager.TestCase]
sltest_bdroot: {'RollReference_Requirement1_3'}
sltest_sut: {'RollAutopilotMdlRef/Roll Reference'}
sltest_isharness: 1
sltest_iterationName: ''

Accepted Answer

MathWorks Support Team
MathWorks Support Team on 5 Oct 2022
Edited: MathWorks Support Team on 5 Oct 2022
The "STMCustomCriteria" object for real-time tests has a "TestResult" property, which is a testIterationResult object. The simulation output signals can be accesses using the getOutputRuns method of this object. 
test =
STMCustomCriteria with properties:
 
              TestResult: [1×1 sltest.testmanager.TestCaseResult]
                  sltest_simout: [1×1 Simulink.SimulationOutput]
         sltest_testCase: [1×1 sltest.testmanager.TestCase]
           sltest_bdroot: {'RollReference_Requirement1_3'}
              sltest_sut: {'RollAutopilotMdlRef/Roll Reference'}
        sltest_isharness: 1
    sltest_iterationName: ''
testResults = test.TestResult;
simOutResult = getOutputRuns(testResults);
  1 Comment
Pablo Romero
Pablo Romero on 28 Oct 2022
Edited: Pablo Romero on 28 Oct 2022
Please find below an extended example of how customCriteria can be written to get data access following the previous suggestion.
% Extract Run object from TestResult
simOutResult = getOutputRuns(TestResult);
% Example of extracting signal objects from Run objects
mySignal1 = simOutResult.getSignalByIndex(1);
mySignal2 = simOutResult.getSignalsByName('mySignal2');
% Example of verifications to append to the test object
test.verifyGreaterThan(all(mySignal1.Values.Data),3);
test.verifyEqual(mySignal2.Values.Data(end),0);

Sign in to comment.

More Answers (0)

Products


Release

R2018b

Community Treasure Hunt

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

Start Hunting!