Writing S-Functions | ![]() ![]() |
The SimStruct
The file matlabroot
/simulink/include/simstruc.h
is a C language header file that defines the Simulink data structure and the SimStruct
access macros. It encapsulates all the data relating to the model or S-function, including block parameters and outputs.
There is one SimStruct
data structure allocated for the Simulink model. Each S-function in the model has its own SimStruct
associated with it. The organization of these SimStruct
s is much like a directory tree. The SimStruct
associated with the model is the root SimStruct
. The SimStruct
s associated with the S-functions are the child SimStruct
s.
SimStruct Macros and Functions Listed by Usage
This section groups SimStruct macros by usage.
Miscellaneous
Macro |
Description |
ssCallExternalModeFcn |
Invoke the external mode function for an S-function. |
ssGetModelName |
Get the name of an S-Function block or model containing the S-function. |
ssGetParentSS |
Get the parent of an S-function. |
ssGetPath |
Get the path of an S-function or the model containing the S-function. |
ssGetRootSS |
Return the root (model) SimStruct . |
ssGetUserData |
Access user data. |
ssSetExternalModeFcn |
Specify the external mode function for an S-function. |
ssSetOptions |
Set various simulation options. |
ssSetPlacementGroup |
Specify the execution order of a sink or source S-function. |
ssSetUserData |
Specify user data. |
Error Handling and Status
Macros |
Description |
ssGetErrorStatus |
Get a string that identifies the last error. |
ssPrintf |
Print a variable-content msg . |
ssSetErrorStatus |
Report errors. |
ssWarning |
Display a warning message. |
I/O Port
Macro |
Description |
ssGetInputPortBufferDstPort |
Determine the output port that is overwriting an input port's memory buffer. |
ssGetInputPortComplexSignal |
Get the numeric type (complex or real) of an input port. |
ssGetInputPortConnected |
Determine whether an S-Function block port is connected to a nonvirtual block. |
ssGetInputPortDataType |
Get the data type of an input port. |
ssGetInputPortDimensions |
Get the dimensions of the signal accepted by an input port. |
ssGetInputPortDirectFeedThrough |
Determine whether an input port has direct feedthrough. |
ssGetInputPortFrameData |
Determine whether a port accepts signal frames. |
ssGetInputPortNumDimensions |
Get the dimensionality of the signals accepted by an input port. |
ssGetInputPortOffsetTime |
Determine the offset time of an input port. |
ssGetInputPortOverWritable |
Determine whether an input port can be overwritten. |
ssGetInputPortRealSignal |
Get the address of a real, contiguous signal entering an input port. |
ssGetInputPortRealSignalPtrs |
Access the signal elements connected to an input port. |
ssGetInputPortRequiredContiguous |
Determine whether the signal elements entering a port must be contiguous. |
ssGetInputPortReusable |
Determine whether memory allocated to the input port is reusable. |
ssGetInputPortSampleTime |
Determine the sample time of an input port. |
ssGetInputPortSampleTimeIndex |
Get the sample time index of an input port. |
ssGetInputPortSignal |
Get the address of a contiguous signal entering an input port. |
ssGetInputPortSignalAddress |
Get the address of an input port's signal (Ada only). |
ssGetInputPortSignalPtrs |
Get pointers to input signal elements of type other than double . |
ssGetInputPortWidth |
Determine the width of an input port. |
ssGetNumInputPorts |
Determine how many input ports a block has. |
ssGetNumOutputPorts |
Can be used in any routine (except mdlInitializeSizes ) to determine how many output ports you have set. |
ssGetOutputPortBeingMerged |
Determine whether the output of this block is connected to a Merge block. |
ssGetOutputPortComplexSignal |
Get the numeric type (complex or real) of an output port |
ssGetOutputPortDataType |
Get the data type of an output port. |
ssGetOutputPortDimensions |
Get the dimensions of the signal leaving an output port. |
ssGetOutputPortFrameData |
Determine whether a port outputs signal frames. |
ssGetOutputPortNumDimensions |
Get the number of dimensions of an output port. |
ssGetOutputPortOffsetTime |
Determine the offset time of an output port. |
ssGetOutputPortRealSignal |
Access the elements of a signal connected to an output port. |
ssGetOutputPortReusable |
Determine whether memory allocated to the output port is reusable |
ssGetOutputPortSampleTime |
Determine the sample time of an output port. |
ssGetOutputPortSignal |
Get the vector of signal elements emitted by an output port. |
ssGetOutputPortSignalAddress |
Get address of an output port's signal (Ada only). |
ssGetOutputPortWidth |
Determine the width of an output port. |
ssSetInputPortComplexSignal |
Set the numeric type (real or complex) of an input port. |
ssSetInputPortDataType |
Set the data type of an input port. |
ssSetInputPortDimensionInfo |
Specify the dimensionality of an input port. |
ssSetInputPortDirectFeedThrough |
Specify that an input port is a direct-feedthrough port. |
ssSetInputPortFrameData |
Specify whether a port accepts signal frames. |
ssSetInputPortMatrixDimensions |
Specify dimension information for an input port that accepts matrix signals. |
ssSetInputPortOffsetTime |
Specify the sample time offset for an input port. |
ssSetInputPortOverWritable |
Specify whether an input port is overwritable by an output port. |
ssSetInputPortRequiredContiguous |
Specify that the signal elements entering a port must be contiguous. |
ssSetInputPortReusable |
Specify whether an input port's memory buffer can be reused by other signals in the model. |
ssSetInputPortSampleTime |
Set the sample time of an input port. |
ssSetInputPortSampleTimeIndex |
Specify the sample time index of an input port. |
ssSetInputPortVectorDimension |
Specify dimension information for an input port that accepts vector signals. |
ssSetInputPortWidth |
Set the width of an input port. |
ssSetNumInputPorts |
Set the number of input ports on an S-Function block. |
ssSetNumOutputPorts |
Specify the number of output ports on an S-Function block. |
ssSetOutputPortComplexSignal |
Specify the numeric type (real or complex) of this port. |
ssSetOutputPortDataType |
Specify the data type of an output port. |
ssSetOutputPortDimensionInfo |
Specify the dimensionality of an output port. |
ssSetOutputPortFrameData |
Specify whether a port outputs framed data. |
ssSetOutputPortMatrixDimensions |
Specify dimension information for an output port that emits matrix signals |
ssSetOutputPortOffsetTime |
Specify the sample time offset value of an output port. |
ssSetOutputPortReusable |
Specify whether an output port's memory can be reused. |
ssSetOutputPortSampleTime |
Specify the sample time of an output port. |
ssSetOutputPortVectorDimension |
Specify dimension information for an output port that emits vector signals |
ssSetOutputPortWidth |
Specify the width of a 1-D (vector) output port. |
ssSetOutputPortMatrixDimensions |
Specify the dimensions of a 2-D (matrix) signal. |
ssSetOutputPortVectorDimension |
Specify the dimension of a 1-2 (vector) signal. |
ssSetVectorMode |
Specify the vector mode that an S-function supports. |
Dialog Box Parameters
These macros enable an S-function to access and set the tunability of parameters that a user specifies in the S-function's dialog box.
Macro |
Description |
ssGetDTypeIdFromMxArray |
Return the Simulink data type of a dialog parameter. |
ssGetNumParameters |
Get the number of parameters that this block has (Ada only). |
ssGetNumSFcnParams |
Get the number of parameters that an S-function expects. |
ssGetSFcnParam |
Get a parameter entered by a user in the S-Function block dialog box. |
ssSetNumSFcnParams |
Set the number of parameters that an S-function expects. |
ssSetParameterName |
Set the name of a parameter (Ada only). |
ssSetParameterTunable |
Set the tunability of a parameter (Ada only). |
ssGetSFcnParamsCount |
Get the actual number of parameters specified by the user. |
ssSetSFcnParamNotTunable |
Obsolete. |
ssSetSFcnParamTunable |
Specify the tunability of a dialog box parameter. |
Run-Time Parameters
These macros allow you to create, update, and access run-time parameters corresponding to a block's dialog parameters.
Macro |
Description |
ssRegDlgParamAsRunTimeParam |
Register a run-time parameter. |
ssUpdateDlgParamAsRunTimeParam |
Update a run-time parameter. |
ssGetNumRunTimeParams |
Get the number of run-time parameters created by this S-function. |
ssGetRunTimeParamInfo |
Get the attributes of a specified run-time parameter. |
ssRegAllTunableParamsAsRunTimeParams |
Register all tunable dialog parameters as run-time parameters. |
ssSetNumRunTimeParams |
Specify the number of run-time parameters to be created by this S-function. |
ssSetRunTimeParamInfo |
Specify the attributes of a specified run-time parameter. |
ssUpdateAllTunableParamsAsRunTimeParams |
Update all run-time parameters corresponding to tunable dialog parameters. |
ssUpdateRunTimeParamData |
Update the value of a specified run-time parameter. |
ssUpdateRunTimeParamInfo |
Update the attributes of a specified run-time parameter from the attributes of the corresponding dialog parameters. |
Sample Time
Macro |
Description |
ssGetSampleTimeOffset |
Get the offset of the current sample time (Ada only). |
ssGetSampleTimePeriod |
Get the period of the current sample time (Ada only). |
ssGetTNext |
Get the time of the next sample hit in a discrete S-function with a variable sample time. |
ssGetNumSampleTimes |
Get the number of sample times an S-function has. |
ssGetPortBasedSampleTimeBlockIsTriggered |
Determine whether a block that uses port-based sample times resides in a triggered subsystem. |
ssIsContinuousTask |
Determine whether a specified rate is the continuous rate. |
ssIsSampleHit |
Determine the sample rate at which an S-function is operating. |
ssIsSpecialSampleHit |
Determine whether the current sample time hits two specified rates. |
ssSampleAndOffsetAreTriggered |
Determine whether a sample time and offset value pair indicate a triggered sample time. |
ssSetNumSampleTimes |
Set the number of sample times an S-function has. |
ssSetOffsetTime |
Specify the offset of a sample time. |
ssSetSampleTime |
Specify a sample time for an S-function. |
ssSetTNext |
Specify the time of the next sample hit in an S-function. |
State and Work Vector
Macro |
Description |
ssGetContStateAddress |
Get the address of a block's continuous state vector. |
ssGetContStates |
Get an S-function's continuous states. |
ssGetDiscStates |
Get an S-function's discrete states. |
ssGetDWork |
Get a DWork vector. |
ssGetDWorkComplexSignal |
Determine whether the elements of a data type work vector are real or complex numbers. |
ssGetDWorkDataType |
Get the data type of a data type work vector. |
ssGetDWorkName |
Get the name of a data type work vector. |
ssGetDWorkUsedAsDState |
Determine whether a data type work vector is used as a discrete state vector. |
ssGetDWorkWidth |
Get the size of a data type work vector. |
ssGetdX |
Get the derivatives of the continuous states of an S-function. |
ssGetIWork |
Get an S-function's integer-valued (int_T ) work vector. |
ssGetIWorkValue |
Get a value from a block's integer work vector. |
ssGetModeVector |
Get an S-function's mode work vector. |
ssGetModeVectorValue |
Get an element of a block's mode vector. |
ssGetNonsampledZCs |
Get an S-function's zero-crossing signals vector. |
ssGetNumContStates |
Determine the number of continuous states that an S-function has. |
ssGetNumDiscStates |
Determine the number of discrete states that an S-function has. |
ssGetNumDWork |
Get the number of data type work vectors used by a block. |
ssGetNumIWork |
Get the size of an S-function's integer work vector. |
ssGetNumModes |
Determine the size of an S-function's mode vector. |
ssGetNumNonsampledZCs |
Determine the number of nonsampled zero crossings that an S-function detects. |
ssGetNumPWork |
Determine the size of an S-function's pointer work vector. |
ssGetNumRWork |
Determine the size of an S-function's real-valued (real_T ) work vector. |
ssGetPWork |
Get an S-function's pointer (void * ) work vector. |
ssGetPWorkValue |
Get a pointer from a pointer work vector. |
ssGetRealDiscStates |
Get the real (real_T ) values of an S-function's discrete state vector. |
ssGetRWork |
Get an S-function's real-valued (real_T ) work vector. |
ssGetRWorkValue |
Get an element of an S-function's real-valued work vector. |
ssSetDWorkComplexSignal |
Specify whether the elements of a data type work vector are real or complex. |
ssSetDWorkDataType |
Specify the data type of a data type work vector. |
ssSetDWorkName |
Specify the name of a data type work vector. |
ssSetDWorkUsedAsDState |
Specify that a data type work vector is used as a discrete state vector. |
ssSetDWorkWidth |
Specify the width of a data type work vector. |
ssSetIWorkValue |
Set an element of a block's integer work vector. |
ssSetModeVectorValue |
Set an element of a block's mode vector. |
ssSetNumContStates |
Specify the number of continuous states that an S-function has. |
ssSetNumDiscStates |
Specify the number of discrete states that an S-function has. |
ssSetNumDWork |
Specify the number of data type work vectors used by a block. |
ssSetNumIWork |
Specify the size of an S-function's integer (int_T ) work vector. |
ssSetNumModes |
Specify the number of operating modes that an S-function has. |
ssSetNumNonsampledZCs |
Specify the number of zero crossings that an S-function detects. |
ssSetNumPWork |
Specify the size of an S-function's pointer (void * ) work vector. |
ssSetNumRWork |
Specify the size of an S-function's real (real_T ) work vector. |
ssSetPWorkValue |
Set an element of a block's pointer work vector. |
ssSetRWorkValue |
Set an element of a block's floating-point work vector. |
Simulation Information
Macro |
Description |
ssGetAbsTol |
Get the absolute tolerances used by a model's variable-step solver. |
ssGetBlockReduction |
Determine whether a block has requested block reduction before the simulation has begun and whether it has actually been reduced after the simulation loop has begun |
ssGetErrorStatus |
Get a string that identifies the last error. |
ssGetInlineParameters |
Determine whether the user has set the inline parameters option for the model containing this S-function. |
ssGetSimMode |
Determine the context in which an S-function is being invoked: normal simulation, external-mode simulation, model editor, etc. |
ssGetSolverMode |
Get the solver mode being used to solve the S-function. |
ssGetSolverName |
Get the name of the solver being used for the simulation. |
ssGetStateAbsTol |
Get the absolute tolerance used by the model's variable-step solver for a specified state |
ssGetStopRequested |
Get the value of the simulation stop requested flag |
ssGetT |
Get the current base simulation time. |
ssGetTaskTime |
Get the current time for a task. |
ssGetTFinal |
Get the end time of the current simulation. |
ssGetTNext |
Get the time of the next sample hit. |
ssGetTStart |
Get the start time of the current simulation. |
ssIsFirstInitCond |
Determine whether this is the first call to mdlInitializeConditions. |
ssIsMajorTimeStep |
Determine whether the current time step is a major time step. |
ssIsMinorTimeStep |
Determine if the current time step is a minor time step. |
ssIsVariableStepSolver |
Determine whether the current solver is a variable-step solver. |
ssSetBlockReduction |
Request that Simulink attempt to reduce a block. |
ssSetSolverNeedsReset |
Ask Simulink to reset the solver. |
ssSetStopRequested |
Ask Simulink to terminate the simulation at the end of the current time step. |
Function Call
Macro |
Description |
ssCallSystemWithTid |
Execute a function-call subsystem connected to an S-function. |
ssSetCallSystemOutput |
Specify that an output port element issues a function call. |
Data Type
Macro |
Description |
ssGetDataTypeId |
Get the ID for a data type. |
ssGetDataTypeName |
Get a data type's name. |
ssGetDataTypeSize |
Get a data type's size. |
ssGetDataTypeZero |
Get the zero representation of a data type. |
ssGetInputPortDataType |
Get the data type of an input port. |
ssGetNumDataTypes |
Get the number of data types defined by an S-function or the model. |
ssGetOutputPortDataType |
Get the data type of an output port. |
ssGetOutputPortSignal |
Get an output signal of any type except double . |
ssRegisterDataType |
Register a data type. |
ssSetDataTypeSize |
Specify the size of a data type. |
ssSetDataTypeZero |
Specify the zero representation of a data type. |
ssSetInputPortDataType |
Specify the data type of signals accepted by an input port. |
Real-Time Workshop
Macro |
Description |
ssGetDWorkRTWIdentifier |
Get the identifier used to declare a DWork vector in code generated from the associated S-function. |
ssGetDWorkRTWStorageClass |
Get the storage class of a DWork vector in code generated from the associated S-function. |
ssGetDWorkRTWTypeQualifier |
Get the C type qualifier (e.g., const ) used to declare a DWork vector in code generated from the associated S-function. |
ssGetDWorkRTWTypeQualifier |
Set the identifier used to declare a DWork vector in code generated from the associated S-function. |
ssGetPlacementGroup |
Get the name of the placement group of a block |
ssSetDWorkRTWIdentifier |
Set the storage class of a DWork vector in code generated from the associated S-function. |
ssSetDWorkRTWStorageClass |
Set the C type qualifier (e.g., const ) used to declare a DWork vector in code generated from the associated S-function. |
ssSetPlacementGroup |
Specify the name of the placement group of a block. |
ssWriteRTW2dMatParam |
Write a Simulink matrix parameter to the S-function's model.rtw file. |
ssWriteRTWMx2dMatParam |
Write a MATLAB matrix parameter to the S-function's model.rtw file. |
ssWriteRTWMxVectParam |
Write a MATLAB vector parameter to the S-function's model.rtw file. |
ssWriteRTWParameters |
Write tunable parameters to the S-function's model.rtw file. |
ssWriteRTWParamSettings |
Write settings for the S-function's parameters to the model.rtw file. |
ssWriteRTWScalarParam |
Write a scalar parameter to the S-function's model.rtw file. |
ssWriteRTWStr |
Write a string to the S-function's model.rtw file. |
ssWriteRTWStrParam |
Write a string parameter to the S-function's model.rtw file. |
ssWriteRTWStrVectParam |
Write a string vector parameter to the S-function's model.rtw file |
ssWriteRTWVectParam |
Write a Simulink vector parameter to the S-function's model.rtw file. |
ssWriteRTWWorkVect |
Write the S-function's work vectors to the model.rtw file. |
![]() | Language Support | Macro Reference | ![]() |