S-Functions in Normal Mode Referenced Models
Note
For additional information, see Model Reference Requirements and Limitations.
When a C S-function appears in a referenced model that executes in Normal mode, successful execution is impossible if all of the following are true:
The S-function has both an
mdlProcessParameters
function and anmdlStart
function.The
mdlProcessParameters
function depends on themdlStart
function.The referenced model calls
mdlProcessParameters
before callingmdlStart
.
Execution fails because mdlProcessParameters
has dependency
requirements that mdlStart
has not satisfied. Automated analysis cannot
guard against all possible causes of such failure: you must check your code manually and
verify that mdlProcessParameters
is not in any way dependent on
mdlStart
being called first. Examples of such dependency include:
Allocating memory in
mdlStart
and using that memory inmdlProcessParameters
. This is often done usingssSetUserData
andssGetUserData
.Initializing any DWork or any global memory in
mdlStart
and reading the values inmdlProcessParameters
.
To remind you to check for any such dependency problems, an error message appears by
default for any S-function that is used in a Normal mode referenced model and contains both an
mdlProcessParameters
function and an mdlStart
function. The error message does not mean that any dependency problems exist, but only that
they might exist.
If you get such an error message, check for any problematic dependencies in the
S-function, and recode as needed to eliminate them. When no such dependencies exist, you can
safely suppress the error message and use the S-function in a Normal mode referenced model. To
certify that the S-function is compliant, and the message is therefore unnecessary, include
the following statement in mdlInitializeSizes
:
ssSetModelReferenceNormalModeSupport (S, MDL_START_AND_MDL_PROCESS_PARAMS_OK);
For information about referenced models, see Model Reference Basics.
Supporting the Use of Multiple Instances of Referenced Models That Are in Normal Mode
You may need to modify S-functions that are used by a model so that the S-functions work
with multiple instances of referenced models in Normal mode. The S-functions must indicate
explicitly that they support multiple exec
instances.
For C S-functions, use
ssSupportsMultipleExecInstances(s, true)
.For MATLAB® file S-functions, use
blockSupportMultipleExecInstances = true
.
The limitations for using S-functions with multiple instances of referenced models in Normal mode are the same as the limitations that apply to using S-functions with For Each Subsystem block.
See Also
Level-2 MATLAB S-Function | S-Function Builder | S-Function | MATLAB Function