Use a Stateflow® chart to provide a function-call scheduler where you can fully control the scheduling process for periodic (synchronous) or aperiodic (asynchronous) call sequences.
Create a new Simulink® model.
Add a Model block that references the export-function model.
Specify function-call Inputs using a Stateflow chart.
Specify data inputs.
To create the model for this example, see Create Export-Function Model.
Referencing an export-function model from a Model block allows the addition of function-calls signals from a Stateflow chart and the logging of signals without changing the model itself.
Add a Model block to a new Simulink model. In the Model name box, enter
Add Outport blocks to the ouput_100ms and output_10ms ports for saving simulation data to MATLAB.
Add a Sine Wave block to provide data input. Set
2 and Sample
0.01. Connect the block to the
input_10ms input port on the Model block.
Create a new Stateflow chart. This step requires a Stateflow license.
From the menu, select View > Model Explorer > Model Explorer. In the Model Hierarchy pane, select
Add function-call events with output ports to the chart. From the menu, select Add > Event. In the Name box, enter
From the Scope list, select
Simulink. Repeat step to create a function-call event and output port
Open the chart by double-clicking the block. Add a State block and a Default transition arrow.
Rename the state to
Add periodic function-calls every 10 and 100 milliseconds. In the state block, enter the following commands.
on every(10, tick):send(out_10ms); on every(100, tick):send(out_100ms);
tick is an implicit event that counts the number of
simulation steps while
send is an explicit event that outputs a
function-call event to the output ports.
You use a Simulink test model only for simulation. After simulation testing, generate code from the export-function model, and then integrate exported function code with an externally coded scheduler.
Drag the Stateflow chart to your test model.
Connect Stateflow Chart outputs to Model block inputs.
If a test model references an export-function model, there are some restrictions to ensure consistency with simulation results.
For the test model:
Function-calls to the input ports on the Model block must follow the execution order of the root-level function-call Inport blocks in the referenced export-function model.
If the test model calls the referenced model functions out of order at any time step, Simulink displays an error . For information on sorted execution order, see Control and Display the Sorted Order. To disable this restriction, clear the check box Model Configuration Parameters > Model Referencing > Enable strict scheduling checks for referenced models.
For the export-function model:
The sample times for the root-level function-call Inport blocks
must be set to inherited (
-1) or match the sample time of the
function-calls from the Stateflow chart that drives them.
Simulate the export-function model to test and observe its behavior before generating code.
When using export-function models in top-model simulations, do not change the enable/disable status of the model during simulation. Enable it at the start of simulation and use function-calls to call it.
Clear the configuration parameter Enable strict scheduling check for referenced models.
Verify the configuration parameters Solver Type is set to
Fixed-step, Solver set to
discrete (no continuous states), and Fixed-step size
(fundamental sample time) set to
Right-click output port signals on the Model block and select Log selected signal.
Open the Simulation Data Inspector by clicking the icon .
After you test your model, you can generate code for the functions. See Generate Code for Export-Function Model.