Technical Solutions
How do I stop a simulation from within an S-function?
Date Last Modified: Friday, June 26, 2009
| Solution ID: |
|
1-18NS3 |
| Product: |
|
Simulink |
| Reported in Release: |
|
R12 |
| Platform: |
|
All Platforms |
| Operating System: |
|
All OS |
Subject:
How do I stop a simulation from within an S-function?
Problem Description:
How do I stop a simulation from within an S-function?
For example, I am attempting to stop a running simulation from within my S-Function, and I do not want to add a stop block. Is there any way I can stop the simulation in the same way as pressing the stop toolbar button but from within my code?
Solution:
There are several ways to stop a simulation from within an S-function:
1) For M-file S-functions you can use the command:
set_param(bdroot, 'SimulationCommand', 'stop');
For Simulink 4.0 (R12) and above you can use the following on C-MEX S-functions:
1) You can do a 'mexCallMatlab' with the SET_PARAM command with the same input arguments mentioned above for M-file S-functions.
2) You can use the macro ssSetStopRequested, which will allow you to stop a simulation from within your S-function (you will have to set the simulation flag in this macro to not zero). For more information on this function please see pg. 10-187 of the Writing S-function Guide. The online version of this Guide can be found at:
http://www.mathworks.com/access/helpdesk/help/toolbox/simulink/sfg/f6-633.html
|