Select Index


Overview of S-Functions

    What Is an S-Function?
    Using S-Functions in Models
        Passing Parameters to S-Functions
        When to Use an S-Function

    How S-Functions Work
        Mathematics of Simulink Blocks
        Simulation Stages
        S-Function Callback Methods

    Implementing S-Functions
        M-File S-Functions
        MEX-File S-Functions

    S-Function Concepts
        Direct Feedthrough
        Dynamically Sized Arrays
        Setting Sample Times and Offsets

    S-Function Examples

Writing S-Functions in M

    Introduction
    Writing Level-2 M-File S-Functions
        About Level-2 M-File S-Functions
        The Level-2 M-File S-Function API
        M-file S-Function Demos
        S-Function Template
        Instantiating a Level-2 M-File S-Function
        Generating Code from a Level-2 M-File S-Function
        Callback Methods
        Main Method
        Runtime Object

    Maintaining Level-1 M-File S-Functions
        S-Function Arguments
        S-Function Outputs
        Defining S-Function Block Characteristics
        Processing S-Function Parameters

Writing S-Functions in C

    Introduction
        Creating C MEX S-Functions

    Building S-Functions Automatically
        Setting the Include Path

    S-Function Builder Dialog Box
        Parameters/S-Function Name Pane
        Port/Parameter Pane
        Initialization Pane
        Data Properties Pane
        Input Ports Pane
        Output Ports Pane
        Parameters Pane
        Data Type Attributes Pane
        Libraries Pane
        Outputs Pane
        Continuous Derivatives Pane
        Discrete Update Pane
        Build Info Pane

    Example of a Basic C MEX S-Function
        Defines and Includes
        Callback Implementations
        Simulink/Real-Time Workshop Interface
        Building the Timestwo Example

    Templates for C S-Functions
        S-Function Source File Requirements
        The SimStruct
        Compiling C S-Functions

    How Simulink Interacts with C S-Functions
        Process View
        Data View

    Writing Callback Methods
    Converting Level 1 C MEX S-Functions to Level 2
        Obsolete Macros

Creating C++ S-Functions

    Source File Format
    Making C++ Objects Persistent
    Building C++ S-Functions

Creating Ada S-Functions

    Introduction
    Ada S-Function Source File Format
        Ada S-Function Specification
        Ada S-Function Body

    Writing Callback Methods in Ada
        Callbacks Invoked by Simulink
        Implementing Callbacks
        Omitting Optional Callback Methods
        SimStruct Functions

    Building an Ada S-Function
        Ada Compiler Requirements

    Example of an Ada S-Function

Creating Fortran S-Functions

    Introduction
        Level 1 Versus Level 2 S-Functions

    Creating Level 1 Fortran S-Functions
        The Fortran MEX Template File
        Example
        Inline Code Generation Example

    Creating Level 2 Fortran S-Functions
        Template File
        C/Fortran Interfacing Tips
        Constructing the Gateway
        Example C-MEX S-Function Calling Fortran Code

    Porting Legacy Code
        Find the States
        Sample Times
        Multiple Instances
        Use Flints If Needed
        Considerations for Real Time

Implementing Block Features

    Dialog Parameters
        Tunable Parameters

    Run-Time Parameters
        Creating Run-Time Parameters
        Updating Run-Time Parameters
        Tuning Runtime Parameters

    Creating Input and Output Ports
        Creating Input Ports
        Creating Output Ports
        Scalar Expansion of Inputs
        Masked Multiport S-Functions

    Custom Data Types
    Sample Times
        Block-Based Sample Times
        Specifying Port-Based Sample Times
        Hybrid Block-Based and Port-Based Sample Times
        Multirate S-Function Blocks
        Synchronizing Multirate S-Function Blocks
        Specifying Model Reference Sample Time Inheritance

    Work Vectors
        Work Vectors and Zero Crossings
        Example Involving a Pointer Work Vector
        Memory Allocation

    Function-Call Subsystems
    Processing Frame-Based Signals
    Handling Errors
        Exception Free Code
        ssSetErrorStatus Termination Criteria
        Checking Array Bounds

    S-Function Examples
        Example of a Continuous State S-Function
        Example of a Discrete State S-Function
        Example of a Hybrid System S-Function
        Example of a Variable-Step S-Function
        Example of a Zero Crossing S-Function
        Example of a Time-Varying Continuous Transfer Function

S-Function Callback Methods

    mdlCheckParameters
    mdlDerivatives
    mdlDisable
    mdlEnable
    mdlGetTimeOfNextVarHit
    mdlInitializeConditions
    mdlInitializeSampleTimes
    mdlInitializeSizes
    mdlOutputs
    mdlProcessParameters
    mdlRTW
    mdlSetDefaultPortComplexSignals
    mdlSetDefaultPortDataTypes
    mdlSetDefaultPortDimensionInfo
    mdlSetInputPortComplexSignal
    mdlSetInputPortDataType
    mdlSetInputPortDimensionInfo
    mdlSetInputPortFrameData
    mdlSetInputPortSampleTime
    mdlSetInputPortWidth
    mdlSetOutputPortComplexSignal
    mdlSetOutputPortDataType
    mdlSetOutputPortDimensionInfo
    mdlSetOutputPortSampleTime
    mdlSetOutputPortWidth
    mdlSetWorkWidths
    mdlSimStatusChange
    mdlStart
    mdlTerminate
    mdlUpdate
    mdlZeroCrossings

SimStruct Functions

    Introduction
        Language Support
        The SimStruct

    SimStruct Macros and Functions Listed by Usage
        Miscellaneous
        Error Handling and Status
        I/O Port
        Dialog Box Parameters
        Run-Time Parameters
        Sample Time
        State and Work Vector
        Simulation Information
        Function Call
        Data Type
        Real-Time Workshop

    Function Reference
        FssCallExternalModeFcn
        ssCallSystemWithTid
        ssDisableSystemWithTid
        ssEnableSystemWithTid
        ssGetAbsTol
        ssGetBlockReduction
        ssGetContStateAddress
        ssGetContStates
        ssGetDataTypeId
        ssGetDataTypeName
        ssGetDataTypeSize
        ssGetDataTypeZero
        ssGetDiscStates
        ssGetDTypeIdFromMxArray
        ssGetDWork
        ssGetDWorkComplexSignal
        ssGetDWorkDataType
        ssGetDWorkName
        ssGetDWorkRTWIdentifier
        ssGetDWorkRTWStorageClass
        ssGetDWorkRTWTypeQualifier
        ssGetDWorkUsedAsDState
        ssGetDWorkWidth
        ssGetdX
        ssGetErrorStatus
        ssGetExplicitFCSSCtrl
        ssGetInlineParameters
        ssGetInputPortBufferDstPort
        ssGetInputPortComplexSignal
        ssGetInputPortConnected
        ssGetInputPortDataType
        ssGetInputPortDimensions
        ssGetInputPortDirectFeedThrough
        ssGetInputPortFrameData
        ssGetInputPortNumDimensions
        ssGetInputPortOffsetTime
        ssGetInputPortOptimOpts
        ssGetInputPortOverWritable
        ssGetInputPortRealSignal
        ssGetInputPortRealSignalPtrs
        ssGetInputPortRequiredContiguous
        ssGetInputPortSampleTime
        ssGetInputPortSampleTimeIndex
        ssGetInputPortSignal
        ssGetInputPortSignalAddress
        ssGetInputPortSignalPtrs
        ssGetInputPortWidth
        ssGetIWork
        ssGetIWorkValue
        ssGetModelName
        ssGetModeVector
        ssGetModeVectorValue
        ssGetNonsampledZCs
        ssGetNumContStates
        ssGetNumDataTypes
        ssGetNumDiscStates
        ssGetNumDWork
        ssGetNumInputPorts
        ssGetNumIWork
        ssGetNumModes
        ssGetNumNonsampledZCs
        ssGetNumOutputPorts
        ssGetNumParameters
        ssGetNumRunTimeParams
        ssGetNumPWork
        ssGetNumRWork
        ssGetNumSampleTimes
        ssGetNumSFcnParams
        ssGetOffsetTime
        ssGetOutputPortBeingMerged
        ssGetOutputPortComplexSignal
        ssGetOutputPortConnected
        ssGetOutputPortDataType
        ssGetOutputPortDimensions
        ssGetOutputPortFrameData
        ssGetOutputPortNumDimensions
        ssGetOutputPortOffsetTime
        ssGetOutputPortOptimOpts
        ssGetOutputPortRealSignal
        ssGetOutputPortSampleTime
        ssGetOutputPortSignal
        ssGetOutputPortSignalAddress
        ssGetOutputPortWidth
        ssGetParentSS
        ssGetPath
        ssGetPlacementGroup
        ssGetPortBasedSampleTimeBlockIsTriggered
        ssGetPWork
        ssGetPWorkValue
        ssGetRealDiscStates
        ssGetRootSS
        ssGetRunTimeParamInfo
        ssGetRWork
        ssGetRWorkValue
        ssGetSampleTime
        ssGetSampleTimeOffset
        ssGetSampleTimePeriod
        ssGetSFcnParam
        ssGetSFcnParamsCount
        ssGetSimMode
        ssGetSolverMode
        ssGetSolverName
        ssGetStateAbsTol
        ssGetStopRequested
        ssGetT
        ssGetTaskTime
        ssGetTFinal
        ssGetTNext
        ssGetTStart
        ssGetUserData
        ssIsContinuousTask
        ssIsFirstInitCond
        ssIsMajorTimeStep
        ssIsMinorTimeStep
        ssIsSampleHit
        ssIsSpecialSampleHit
        ssIsVariableStepSolver
        ssPrintf
        ssRegDlgParamAsRunTimeParam
        ssRegAllTunableParamsAsRunTimeParams
        ssRegisterDataType
        ssSampleAndOffsetAreTriggered
        ssSetBlockReduction
        ssSetCallSystemOutput
        ssSetDataTypeSize
        ssSetDataTypeZero
        ssSetDWorkComplexSignal
        ssSetDWorkDataType
        ssSetDWorkName
        ssSetDWorkRTWIdentifier
        ssSetDWorkRTWStorageClass
        ssSetDWorkRTWTypeQualifier
        ssSetDWorkUsedAsDState
        ssSetDWorkWidth
        ssSetErrorStatus
        ssSetExplicitFCSSCtrl
        ssSetExternalModeFcn
        ssSetInputPortComplexSignal
        ssSetInputPortDataType
        ssSetInputPortDimensionInfo
        ssSetInputPortDirectFeedThrough
        ssSetInputPortFrameData
        ssSetInputPortMatrixDimensions
        ssSetInputPortOffsetTime
        ssSetInputPortOptimOpts
        ssSetInputPortOverWritable
        ssSetInputPortRequiredContiguous
        ssSetInputPortSampleTime
        ssSetInputPortVectorDimension
        ssSetInputPortWidth
        ssSetIWorkValue
        ssSetModelReferenceSampleTimeInheritanceRule
        ssSetModeVectorValue
        ssSetNumContStates
        ssSetNumDiscStates
        ssSetNumDWork
        ssSetNumInputPorts
        ssSetNumIWork
        ssSetNumModes
        ssSetNumNonsampledZCs
        ssSetNumOutputPorts
        ssSetNumPWork
        ssSetNumRunTimeParams
        ssSetNumRWork
        ssSetNumSampleTimes
        ssSetNumSFcnParams
        ssSetOffsetTime
        ssSetOneBasedIndexInputPort
        ssSetOneBasedIndexOutputPort
        ssSetOptions
        ssSetOutputPortComplexSignal
        ssSetOutputPortDataType
        ssSetOutputPortDimensionInfo
        ssSetOutputPortFrameData
        ssSetOutputPortMatrixDimensions
        ssSetOutputPortOffsetTime
        ssSetOutputPortOptimOpts
        ssSetOutputPortOverwritesInputPort
        ssSetOutputPortSampleTime
        ssSetOutputPortVectorDimension
        ssSetOutputPortWidth
        ssSetParameterName
        ssSetParameterTunable
        ssSetPlacementGroup
        ssSetPWorkValue
        ssSetRWorkValue
        ssSetRunTimeParamInfo
        ssSetSampleTime
        ssSetSFcnParamNotTunable
        ssSetSFcnParamTunable
        ssSetSolverNeedsReset
        ssSetStopRequested
        ssSetTNext
        ssSetUserData
        ssSetVectorMode
        ssSetZeroBasedIndexInputPort
        ssSetZeroBasedIndexOutputPort
        ssUpdateAllTunableParamsAsRunTimeParams
        ssUpdateRunTimeParamData
        ssUpdateDlgParamAsRunTimeParam
        ssUpdateRunTimeParamInfo
        ssWarning
        ssWriteRTW2dMatParam
        ssWriteRTWMx2dMatParam
        ssWriteRTWMxVectParam
        ssWriteRTWParameters
        ssWriteRTWParamSettings
        ssWriteRTWScalarParam
        ssWriteRTWStr
        ssWriteRTWStrParam
        ssWriteRTWStrVectParam
        ssWriteRTWVectParam
        ssWriteRTWWorkVect