Set Up Model for Controlling Program Execution - MATLAB & Simulink (original) (raw)
To enable control of when generated code stops executing, for example, for instrumentation purposes, use the model configuration parameter Stop time or the Stop Simulation block.
When specifying stop time for generated code:
- The value of parameter Stop time must be greater than or equal to 0, the required setting of parameter Start time for code generation.
- If the stop time is zero or less than the start time, the generated program runs for one step.
- If the stop time is set to
inf
, the generated program runs indefinitely. Typically, this is the stop time used when generating production code.
For the Stop Simulation block, the code generator inserts a call to thertmSetStopRequested
macro in the generated code. Amain
function can then check the setting ofstopRequestedFlag
. For more information, see Real-Time Model Data Structure.
Absolute Time Considerations
Some blocks have a dependency on absolute time (see Blocks That Depend on Absolute Time). If your model uses a block that depends on absolute time you might want to set up the code generated from the model to run indefinitely (withStop time set to inf
). The structure and macros that you use to do this depends on your system target file. For simulation targets, such as the one for Simulink® accelerator mode, the code generator produces the SimStruct
data structure and corresponding macros. For other system target files, such asgrt.tlc
and ert.tlc
, the code generator produces thertModel
data structure and corresponding macros. ThertModel
data structure eliminates the potential for timer overflows that might occur during program execution. For more information, see Real-Time Model Data Structure and S-Function SimStruct Functions.
If you know how long an application that depends on absolute time needs to run, you can prevent timers from overflowing and force the use of optimal word sizes by changing the setting of model configuration parameter Application lifespan (days). See Optimize Memory Usage and Prevent Overflows for Time Counters for details.
Embedded Coder Considerations
For Simulink Coder, the code generator always honors the specified stop time from the generated static main
function (see Static Main Function Module). When using Embedded Coder, the code generator honors a stop time setting if you select one of these model configuration parameters:
If you do not select one of these parameters, the program runs indefinitely.
The ERT system target file provides generated and static examples of theert_main.c
file. This file controls the overall model code execution by:
- Calling the model_step function
- Stopping program execution and then checking the settings of the error status (
error_status
) and simulation stop requested (stopRequestedFlag
) flags in the real-time model data structure. For more information, see Real-Time Model Data Structure
Override Stop Time Set in Generated Code
From the Microsoft® Windows® command prompt or UNIX®1 command line, you can override the stop time that was set up for a generated program. To override the stop time, use the -tf
switch.
The program runs for n
seconds. If n
isinf
, the program runs indefinitely.
Custom Target Considerations
For a custom target, if you provide your own custom static main.c
file, consider including support for stopping program execution. Use the macrosrtmGetErrorStatus
and rtmGetStopRequested
to check the settings of the error status and simulation stop requested flags in the real-time model data structure (rtModel
).
For more information, see Real-Time Model Data Structure and Custom Software for Target Hardware.
See Also
Topics
1 UNIX is a registered trademark of The Open Group in the United States and other countries.