Writing 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
- Introduction
- S-Function Arguments
- S-Function Outputs
- Defining S-Function Block Characteristics
- Processing S-Function Parameters
- Examples of M-File S-Functions
- Simple M-File S-Function Example
- Example - Continuous State S-Function
- Example - Discrete State S-Function
- Example - Hybrid System S-Function
- Example - Variable Sample Time S-Function
- Introduction
- Creating C MEX S-Functions
- Building S-Functions Automatically
- S-Function Builder Dialog Box
- Setting the Include Path
- 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
- Source File Format
- Making C++ Objects Persistent
- Building C++ 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
- 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
- Dialog Parameters
- Tunable Parameters
- Run-Time Parameters
- Creating Run-Time Parameters
- Updating Run-Time 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
- Work Vectors
- Work Vectors and Zero Crossings
- Example Involving a Pointer Work Vector
- Memory Allocation
- Function-Call Subsystems
- 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
- Introduction
- Classes of Problems Solved by S-Functions
- Types of S-Functions
- Basic Files Required for Implementation
- Noninlined S-Functions
- S-Function Module Names for Real-Time Workshop Builds
- Writing Wrapper S-Functions
- MEX S-Function Wrapper
- TLC S-Function Wrapper
- The Inlined Code
- Fully Inlined S-Functions
- Multiport S-Function Example
- Fully Inlined S-Function with the mdlRTW Routine
- S-Function RTWdata
- The Direct-Index Lookup Table Algorithm
- The Direct-Index Lookup Table Example
- Creating Code-Reuse-Compatible S-Functions
- mdlCheckParameters
- mdlDerivatives
- mdlGetTimeOfNextVarHit
- mdlInitializeConditions
- mdlInitializeSampleTimes
- mdlInitializeSizes
- mdlOutputs
- mdlProcessParameters
- mdlRTW
- mdlSetDefaultPortComplexSignals
- mdlSetDefaultPortDataTypes
- mdlSetDefaultPortDimensionInfo
- mdlSetInputPortComplexSignal
- mdlSetInputPortDataType
- mdlSetInputPortDimensionInfo
- mdlSetInputPortFrameData
- mdlSetInputPortSampleTime
- mdlSetInputPortWidth
- mdlSetOutputPortComplexSignal
- mdlSetOutputPortDataType
- mdlSetOutputPortDimensionInfo
- mdlSetOutputPortSampleTime
- mdlSetOutputPortWidth
- mdlSetWorkWidths
- mdlStart
- mdlTerminate
- mdlUpdate
- mdlZeroCrossings
- 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
- Macro Reference
- ssCallExternalModeFcn
- ssCallSystemWithTid
- ssGetAbsTol
- ssGetBlockReduction
- ssGetContStateAddress
- ssGetContStates
- ssGetDataTypeId
- ssGetDataTypeName
- ssGetDataTypeSize
- ssGetDataTypeZero
- ssGetDiscStates
- ssGetDTypeIdFromMxArray
- ssGetDWork
- ssGetDWorkComplexSignal
- ssGetDWorkDataType
- ssGetDWorkName
- ssGetDWorkRTWIdentifier
- ssGetDWorkRTWStorageClass
- ssGetDWorkRTWTypeQualifier
- ssGetDWorkUsedAsDState
- ssGetDWorkWidth
- ssGetdX
- ssGetErrorStatus
- ssGetInlineParameters
- ssGetInputPortBufferDstPort
- ssGetInputPortComplexSignal
- ssGetInputPortConnected
- ssGetInputPortDataType
- ssGetInputPortDimensions
- ssGetInputPortDirectFeedThrough
- ssGetInputPortFrameData
- ssGetInputPortNumDimensions
- ssGetInputPortOffsetTime
- ssGetInputPortOverWritable
- ssGetInputPortRealSignal
- ssGetInputPortRealSignalPtrs
- ssGetInputPortRequiredContiguous
- ssGetInputPortReusable
- 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
- ssGetOutputPortBeingMerged
- ssGetOutputPortComplexSignal
- ssGetOutputPortDataType
- ssGetOutputPortDimensions
- ssGetOutputPortFrameData
- ssGetOutputPortNumDimensions
- ssGetOutputPortOffsetTime
- ssGetOutputPortRealSignal
- ssGetOutputPortReusable
- ssGetOutputPortSampleTime
- ssGetOutputPortSignal
- ssGetOutputPortSignalAddress
- ssGetOutputPortWidth
- ssGetParentSS
- ssGetPath
- ssGetPlacementGroup
- ssGetPortBasedSampleTimeBlockIsTriggered
- ssGetPWork
- ssGetPWorkValue
- ssGetRealDiscStates
- ssGetRootSS
- ssGetRunTimeParamInfo
- ssGetRWork
- ssGetRWorkValue
- 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
- ssSetExternalModeFcn
- ssSetInputPortComplexSignal
- ssSetInputPortDataType
- ssSetInputPortDirectFeedThrough
- ssSetInputPortFrameData
- ssSetInputPortMatrixDimensions
- ssSetInputPortOffsetTime
- ssSetInputPortOverWritable
- ssSetInputPortRequiredContiguous
- ssSetInputPortReusable
- ssSetInputPortSampleTime
- ssSetInputPortSampleTimeIndex
- ssSetInputPortVectorDimension
- ssSetInputPortWidth
- ssSetIWorkValue
- ssSetModeVectorValue
- ssSetNumContStates
- ssSetNumDiscStates
- ssSetNumDWork
- ssSetNumInputPorts
- ssSetNumIWork
- ssSetNumModes
- ssSetNumNonsampledZCs
- ssSetNumOutputPorts
- ssSetNumPWork
- ssSetNumRunTimeParams
- ssSetNumRWork
- ssSetNumSampleTimes
- ssSetNumSFcnParams
- ssSetOffsetTime
- ssSetOptions
- ssSetOutputPortComplexSignal
- ssSetOutputPortDataType
- ssSetOutputPortFrameData
- ssSetOutputPortMatrixDimensions
- ssSetOutputPortOffsetTime
- ssSetOutputPortReusable
- ssSetOutputPortSampleTime
- ssSetOutputPortVectorDimension
- ssSetOutputPortWidth
- ssSetParameterName
- ssSetParameterTunable
- ssSetPlacementGroup
- ssSetPWorkValue
- ssSetRWorkValue
- ssSetRunTimeParamInfo
- ssSetSampleTime
- ssSetSFcnParamNotTunable
- ssSetSFcnParamTunable
- ssSetSolverNeedsReset
- ssSetStopRequested
- ssSetTNext
- ssSetUserData
- ssSetVectorMode
- ssUpdateAllTunableParamsAsRunTimeParams
- ssUpdateRunTimeParamData
- ssUpdateDlgParamAsRunTimeParam
- ssUpdateRunTimeParamInfo
- ssWarning
- ssWriteRTW2dMatParam
- ssWriteRTWMx2dMatParam
- ssWriteRTWMxVectParam
- ssWriteRTWParameters
- ssWriteRTWParamSettings
- ssWriteRTWScalarParam
- ssWriteRTWStr
- ssWriteRTWStrParam
- ssWriteRTWStrVectParam
- ssWriteRTWVectParam
- ssWriteRTWWorkVect
| Overview of S-Functions | |