Every S-function must implement a set of methods, called callback methods, that the Simulink® engine invokes when simulating a model that contains the S-function.
The S-function callback methods perform tasks required at each simulation stage. During simulation of a model, at each simulation stage the Simulink engine calls the appropriate methods for each S-Function block in the model.
Tasks performed by S-function callback methods include:
Initialization — Prior to the first simulation loop, the engine initializes the S-function, including:
Initializing the SimStruct
, a simulation
structure that contains information about the S-function
Setting the number and dimensions of input and output ports
Setting the block sample times
Allocating storage areas
Calculation of next sample hit — If you created a variable sample time block, this stage calculates the time of the next sample hit; that is, it calculates the next step size.
Calculation of outputs in the major time step — After this call is complete, all the block output ports are valid for the current time step.
Update of discrete states in the major time step — In this call, the block performs once-per-time-step activities such as updating discrete states.
Integration — This applies to models with continuous states and/or nonsampled zero crossings. If your S-function has continuous states, the engine calls the output and derivative portions of your S-function at minor time steps. This is so the solvers can compute the states for your S-function. If your S-function has nonsampled zero crossings, the engine also calls the output and zero-crossings portions of your S-function at minor time steps so that it can locate the zero crossings.
Note
See Simulation Phases in Dynamic Systems for an explanation of major and minor time steps.
Some callback methods are optional. The engine invokes an optional callback only if the S-function defines the callback.
C MEX S-functions must implement the following callback methods:
– Specifies the sizes of
various parameters in the mdlInitializeSizes
SimStruct
, such as the
number of output ports for the block.
– Specifies the
sample time(s) of the block.mdlInitializeSampleTimes
– Calculates the output of the
block.mdlOutputs
– Performs any actions required
at the termination of the simulation. If no actions are required, this
function can be implemented as a stub.mdlTerminate
The following callback methods are optional. The engine invokes an optional callback only if the S-function defines the callback.
Level-2 MATLAB S-functions must implement the following callback methods:
setup
– Specifies the
sizes of various parameters in the SimStruct
, such as
the number of output ports for the block.
Outputs
– Calculates
the output of the block.
– Performs any actions required at
the termination of the simulation. If no actions are required, this
function can be implemented as a stub.Terminate
For information on writing callback methods, see Write Level-2 MATLAB S-Functions.
The following callback methods are optional. The engine invokes an optional callback only if the S-function defines the callback.
Level-2 MATLAB S-Function | MATLAB Function | S-Function | S-Function Builder