配置C/ c++ S-Function特性
为C/ c++ s -function配置块功能
C/ c++ S-functions允许您通过各种回调和SimStruct方法配置扩展块功能。
创建和配置输入/输出端口。
指定基于块和基于端口的采样时间。
将对话框参数传递给s -函数。
建模零交叉并为s函数分配内存。
配置s函数的代码生成设置。
s函数回调方法
输入与输出
初始化,输出,终止
mdlInitializeSizes |
指定C MEX s函数的输入、输出、状态、参数和其他特性 |
mdlInitializeSampleTimes |
指定此C MEX s函数运行时的采样率 |
mdlOutputs |
计算这个块发出的信号 |
mdlUpdate |
更新块的状态 |
mdlTerminate |
执行模拟终止时所需的任何操作 |
信号规范
mdlSetDefaultPortComplexSignals |
设置不能通过块连接确定端口的数值类型(实、复杂或继承) |
mdlSetDefaultPortDataTypes |
设置无法通过块连通性判断数据类型的端口的数据类型 |
mdlSetDefaultPortDimensionInfo |
设置C MEX s函数端口接收或发出的信号的默认尺寸 |
mdlSetInputPortComplexSignal |
设置输入端口接受的信号的数字类型(实数、复数或继承) |
mdlSetInputPortDataType |
设置输入端口接收信号的数据类型 |
mdlSetInputPortSampleTime |
设置输入端口的采样时间,该输入端口从其连接的端口继承其采样时间 |
mdlSetOutputPortComplexSignal |
设置输出端口接受的信号的数字类型(实数、复数或继承) |
mdlSetOutputPortDataType |
设置输出端口信号的数据类型 |
mdlSetOutputPortSampleTime |
设置输出端口的采样时间,该输出端口从其连接的端口继承其采样时间 |
信号的维度
mdlSetInputPortDimensionInfo |
设置输入端口接受的信号尺寸 |
mdlSetInputPortDimensionsModeFcn |
传播维度模式 |
mdlSetInputPortWidth |
设置接收1-D(矢量)信号的输入端口宽度 |
mdlSetOutputPortDimensionInfo |
设置输出端口接受的信号尺寸 |
mdlSetOutputPortWidth |
设置输出一维(矢量)信号的输出端口宽度 |
信号接入
mdlSetWorkWidths |
指定工作向量的大小并创建此C MEX s -函数所需的运行时参数 |
样品时间
mdlSetInputPortSampleTime |
设置输入端口的采样时间,该输入端口从其连接的端口继承其采样时间 |
mdlSetOutputPortSampleTime |
设置输出端口的采样时间,该输出端口从其连接的端口继承其采样时间 |
运行时参数
mdlSetWorkWidths |
指定工作向量的大小并创建此C MEX s -函数所需的运行时参数 |
mdlCheckParameters |
检查C MEX S-function参数的有效性 |
mdlProcessParameters |
处理C MEX S-function参数 |
模型参考
mdlStart |
初始化这个C MEX s函数的状态向量 |
mdlProcessParameters |
处理C MEX S-function参数 |
mdlSetWorkWidths |
指定工作向量的大小并创建此C MEX s -函数所需的运行时参数 |
相互作用万博1manbetx引擎
模拟信息
mdlGetOperatingPoint |
返回C MEX S-function的模拟工作点为aMATLAB数据结构 |
mdlSetOperatingPoint |
C MEX s功能恢复工作点 |
错误处理
mdlStart |
初始化这个C MEX s函数的状态向量 |
mdlTerminate |
执行模拟终止时所需的任何操作 |
状态和功向量
mdlSetWorkWidths |
指定工作向量的大小并创建此C MEX s -函数所需的运行时参数 |
mdlZeroCrossings |
更新过零矢量 |
mdlInitializeConditions |
初始化这个C MEX s函数的状态向量 |
SimStruct功能
输入与输出
信号规范
信号接入
信号的维度
信号区域
ssCallSelectedSignalsFcn |
为s函数调用所选信号函数 |
ssCallSigListCreateFcn |
为s函数调用信号列表创建函数 |
ssCallSigListDestroyFcn |
为s函数调用信号列表破坏函数 |
ssCallSigListUnavailSigAlertFcn |
为s函数中的信号列表调用不可用信号警报函数 |
ssCallGenericDestroyFcn |
为s函数调用通用销毁函数 |
ssCallGetPortNameFcn |
获取给定端口的名称 |
ssCallUnselectSigFcn |
为s函数调用信号取消选择函数 |
gsl_FirstReg |
获取信号列表中元素的第一个区域 |
gsl_nSigRegions |
获取信号列表元素中的区域数 |
gsl_nSigs |
获取信号列表中的信号数 |
gsl_NumElements |
获取信号列表中某个元素的元素个数 |
gsl_PortObj |
获取与信号列表元素关联的端口 |
gsl_TieWrap |
确定信号列表中的元素是否连续 |
gsr_Complex |
判断信号区域的数据是否复杂 |
gsr_currDims |
访问信号区域中可变大小信号的当前尺寸 |
gsr_data |
访问信号区域中的数据 |
gsr_DataType |
得到了万博1manbetx区域的数据类型标识符 |
gsr_DataTypeSize |
获取信号区域中单个实值的大小 |
gsr_Dims |
访问信号区域的维度向量中的值 |
gsr_nEls |
获取区域中元素的数量 |
gsr_NextReg |
获取对应信号列表中的下一个区域 |
gsr_NumDims |
获取信号区域中数据的维数 |
gsr_portObj |
获取与信号区域关联的端口 |
gsr_startIdx |
获取区域开始处信号列表中元素的索引 |
gsr_status |
判断信号区域内的信号是否可用 |
gsr_Unit |
得到了万博1manbetx信号区域的单元标识符 |
gsr_M |
确定矩阵信号中的行数 |
gsr_N |
获取信号的行数或宽度 |
方块对话框参数
ssGetDTypeIdFromMxArray |
获取s函数参数的数据类型 |
ssGetNumSFcnParams |
获取an的参数个数功能块预计 |
ssGetSFcnParam |
获取一个参数功能块 |
ssGetSFcnParamsCount |
获取块对话框参数的个数功能块有 |
ssSetNumSFcnParams |
指定一个参数的数目功能块有 |
ssSetSFcnParamTunable |
使块参数可调 |
数据类型和采样时间
样品时间
数据类型
ssRegisterDataType |
注册自定义数据类型 |
ssRegisterTypeFromNamedObject |
类注册自定义数据类型万博1manbetx仿真软件。AliasType ,万博1manbetx仿真软件。NumericType ,或万博1manbetx仿真软件。公共汽车 对象。 |
ssSetDataTypeSize |
设置自定义数据类型的大小 |
ssSetDataTypeZero |
设置数据类型的零表示形式 |
ssSetInputPortDataType |
设置输入端口的数据类型 |
ssSetOutputPortDataType |
设置输出端口的数据类型 |
ssGetDataTypeId |
获取数据类型的ID |
ssGetDataTypeIdAliasedThruTo |
获取与数据类型别名关联的基本数据类型 |
ssGetDataTypeName |
获取数据类型的名称 |
ssGetDataTypeSize |
获取自定义数据类型的大小 |
ssGetDataTypeZero |
获取数据类型的零表示形式 |
ssGetInputPortDataType |
获取输入端口的数据类型 |
ssGetNumDataTypes |
获取为此模拟注册的数据类型数量,包括内置类型 |
ssGetOutputPortDataType |
获取输出端口的数据类型 |
ssGetOutputPortSignal |
获取由输出端口发出的信号元素的向量 |
ssGetSFcnParamDataType |
类的参数的数据类型功能块 |
公共汽车
ssGetBusElementComplexSignal |
获取总线元素的信号复杂度 |
ssGetBusElementDataType |
获取总线元素的数据类型标识符 |
ssGetBusElementDimensions |
获取总线元素的尺寸 |
ssGetBusElementName |
获取总线元素的名称 |
ssGetBusElementNumDimensions |
获取总线元素的维度数 |
ssGetBusElementOffset |
获取从总线数据类型开始到总线元素的偏移量 |
ssGetNumBusElements |
获取总线信号中的元素数 |
ssGetSFcnParamName |
获取s函数块的块参数值 |
ssIsDataTypeABus |
确定数据类型标识符是否代表总线 |
ssRegisterTypeFromParameter |
注册Simulink数据类型表中参数指定的数据类型万博1manbetx |
ssRegisterTypeFromNamedObject |
类注册自定义数据类型万博1manbetx仿真软件。AliasType ,万博1manbetx仿真软件。NumericType ,或万博1manbetx仿真软件。公共汽车 对象。 |
ssSetBusInputAsStruct |
指定是否将s函数的输入总线信号从虚信号转换为非虚信号 |
ssSetBusOutputAsStruct |
指定s函数的输出总线信号必须是虚信号还是非虚信号 |
ssSetBusOutputObjectName |
指定定义输出总线信号的结构和类型的总线对象的名称 |
字符串
ssGetInputStringLength |
从输入端口获取字符串长度 |
ssGetStringDataTypeMaxLength |
获取字符串数据类型的最大长度 |
ssIsStringDataType |
确定数据类型是否为字符串 |
ssReadInputString |
从输入端口读取C字符串 |
ssRegisterStringDataType |
寄存器字符串数据类型 |
ssWriteOutputString |
将C字符串写入输出端口 |
运行时参数
ssGetNumRunTimeParams |
获取由这个s函数创建的运行时参数的数量 |
ssGetRunTimeParamInfo |
获取运行时参数的属性 |
ssRegAllTunableParamsAsRunTimeParams |
将所有可调参数注册为运行时参数 |
ssRegDlgParamAsRunTimeParam |
将对话框参数注册为运行时参数 |
ssSetNumRunTimeParams |
指定由这个s函数创建的运行时参数的数量 |
ssSetRunTimeParamInfo |
指定运行时参数的属性 |
ssUpdateAllTunableParamsAsRunTimeParams |
更新运行时参数的值,使其与相应的可调对话框参数的值相同 |
ssUpdateDlgParamAsRunTimeParam |
更新与对话框参数对应的运行时参数 |
ssUpdateRunTimeParamData |
更新运行时参数的值 |
ssUpdateRunTimeParamInfo |
更新运行时参数的属性 |
函数调用子系统,万博1manbetx函数和模型引用
函数调用子系统
ssCallSystemWithTid |
调用函数调用子系统的更新和输出方法 |
ssDisableSystemWithTid |
禁用与此连接的函数调用子系统功能块 |
ssEnableSystemWithTid |
启用连接到这个s函数的函数调用子系统 |
ssGetCallSystemNumFcnCallDestinations |
获取函数调用目的地的数量。 |
ssGetExplicitFCSSCtrl |
确定这个s函数是否显式地启用和禁用它调用的函数调用子系统 |
ssSetCallSystemOutput |
指定输出端口发出函数调用 |
ssSetExplicitFCSSCtrl |
指定这个s函数是否显式启用和禁用它调用的函数调用子系统 |
万博1manbetx功能
ssDeclare万博1manbetxSimulinkFunction |
用给定的函数原型万博1manbetx和作用域声明Simulink Function。 |
ssDeclareFunctionCaller |
用给定的函数原型万博1manbetx声明Simulink Function调用。 |
ssCall万博1manbetxSimulinkFunction |
在运行时调用给定函数原型的已声明万博1manbetx的Simulink函数。 |
ssQuery万博1manbetxSimulinkFunction |
确定函数名称是否声明为Simulink函数。万博1manbetx |
ssGet万博1manbetxSimulinkFunctionInput |
获取一个指向传递给Simulink函数的输入参数的指针。万博1manbetx |
ssGet万博1manbetxSimulinkFunctionOutput |
获取一个指向传递给Simulink函数的输出参数的指针。万博1manbetx |
ssSet万博1manbetxSimulinkFunctionArgComplexity |
声明Simulink函数参数的复杂度。万博1manbetx |
ssSet万博1manbetxSimulinkFunctionArgDataType |
声明Simulink函数参数的数据类型。万博1manbetx |
ssSet万博1manbetxSimulinkFunctionArgDimensions |
声明Simulink函数参数的维数。万博1manbetx |
模型参考
ssRTWGenIsModelReferenceRTWTarget |
确定模型是否引用万博1manbetx编码器目标正在生成 |
ssRTWGenIsModelReferenceSimTarget |
确定模型参考仿真目标是否正在生成 |
ssSetModelReferenceNormalMode万博1manbetxSupport |
指定s函数是否可用于正常模式下的参考模型模拟 |
ssSetModelReferenceSampleTimeDefaultInheritance |
指定包含此s函数的引用模型可以从其父模型继承其采样时间 |
ssSetModelReferenceSampleTimeDisallowInheritance |
指定在引用模型中使用此s函数可以防止引用模型从其父模型继承其采样时间 |
ssSetModelReferenceSampleTimeInheritanceRule |
指定在引用模型中使用此s函数是否会阻止引用模型从其父模型继承其采样时间 |
ssSet万博1manbetxSupportedForCodeReuseAcrossModels |
指定s函数是否可以跨模型重用 |
相互作用万博1manbetx引擎
模拟信息
ssSetStateAbsTol |
设置可变步长求解器对特定s函数连续状态所使用的绝对容差。 |
ssSetBlockReduction |
要求万博1manbetx引擎试图减少一个块 |
ssSetOperatingPointCompliance |
对象的行为万博1manbetx在保存和恢复包含s函数的模型的工作点时使用s函数 |
ssSetOperatingPointVisibility |
指定是否在模型仿真工作点中显示s函数仿真工作点 |
ssSetSolverNeedsReset |
问万博1manbetx引擎重置求解器 |
ssSetSkipContStatesConsistencyCheck |
问万博1manbetx引擎跳过连续状态一致性检查 |
ssSetStopRequested |
设置模拟停止请求标志 |
ssGetBlockReduction |
确定一个块是否在模拟开始之前请求减少块,以及在模拟循环开始之后是否实际减少了块 |
ssGetErrorStatus |
获取标识最后一个错误的字符向量 |
ssGetFixedStepSize |
得到包含s函数的模型的固定步长。 |
ssGetMaxStepSize |
获取包含s函数的模型所使用的最大步长。 |
ssGetMinStepSize |
获取包含s函数的模型所使用的最小步长。 |
ssGetSimMode |
获取的仿真模式功能块 |
ssGetSimStatus |
对象的当前模拟状态功能块 |
ssGetSolverMode |
获取用于求解s函数的求解器模式 |
ssGetSolverName |
获取用于求解s函数的求解器的名称 |
ssGetStateAbsTol |
获取可变步长求解器在指定状态下使用的绝对公差 |
ssGetStopRequested |
获取模拟停止请求标志的值 |
ssGetT |
获取当前模拟时间 |
ssGetTaskTime |
获取当前任务的当前时间 |
ssGetTFinal |
获取模拟停止时间 |
ssGetTNext |
获取下一个样本命中的时间 |
ssGetTStart |
获取模拟开始时间 |
ssIsExternalSim |
确定模型是否在外部模式下运行。 |
ssIsFirstInitCond |
判断模拟时间是否等于开始时间。 |
ssIsModeUpdateTimeStep |
确定是否允许在时间步长上更新到模式向量 |
ssIsMajorTimeStep |
确定模拟是否处于主要步骤 |
ssIsMinorTimeStep |
确定模拟是否在小步骤中 |
ssIsVariableStepSolver |
确定是否使用可变步长求解器来求解s函数 |
ssRTWGenIsAccelerator |
确定模型是否在加速模式下运行。 |
ssIsRapidAcceleratorActive |
确定模型是否正在快速加速模式下运行 |
错误处理
ssGetErrorStatus |
获取标识最后一个错误的字符向量 |
ssGetLocalErrorStatus |
获取标识最后一个错误的字符向量 |
ssPrintf |
打印可变内容的消息 |
ssSetErrorStatus |
报告错误 |
ssSetLocalErrorStatus |
以线程安全的方式报告错误 |
ssWarning |
显示警告消息 |
信息和选项
ssSetOptions |
指定s函数选项 |
ssCallExternalModeFcn |
为s函数调用外部模式函数 |
ssGetModelName |
获取模型名称 |
ssGetParentSS |
获取SimStruct的父类 |
ssGetPath |
获取一个块的路径 |
ssGetRootSS |
获取SimStruct层次结构的根 |
ssGetUserData |
访问用户数据 |
ssSetExternalModeFcn |
为s函数指定外部模式函数 |
ssSetPlacementGroup |
指定块的放置组的名称 |
ssSetUserData |
指定用户数据 |
ss万博1manbetxSupportsMultipleExecInstances |
指定每个子系统块支持在子系万博1manbetx统内部运行的s函数。 |
状态和功向量
ssSetNumDWork |
指定一个块使用的Dwork向量的数量 |
ssSetDWorkComplexSignal |
指定Dwork向量的元素是实数还是复数 |
ssSetDWorkDataType |
指定Dwork向量的数据类型 |
ssSetDWorkName |
指定Dwork向量的名称 |
ssSetDWorkUsageType |
指定如何在s函数中使用DWork向量 |
ssSetDWorkUsedAsDState |
指定Dwork向量用作离散状态向量 |
ssSetDWorkWidth |
指定Dwork向量的宽度 |
ssGetNumDWork |
获取一个块使用的Dwork向量的数量 |
ssGetDWork |
得到一个DWork向量 |
ssGetDWorkComplexSignal |
确定一个Dwork向量的元素是实数还是复数 |
ssGetDWorkDataType |
获取Dwork向量的数据类型 |
ssGetDWorkName |
获取一个Dwork向量的名称 |
ssGetDWorkUsageType |
确定如何在s函数中使用DWork向量 |
ssGetDWorkUsedAsDState |
确定是否使用Dwork向量作为离散状态向量 |
ssGetDWorkWidth |
求一个Dwork向量的大小 |
ssGetdX |
求块的连续状态的导数 |
ssSetNumContStates |
指定块具有的连续状态的数量 |
ssSetNumDiscStates |
指定块具有的离散状态的数量 |
ssSetNumNonsampledZCs |
指定块检测到样本点之间发生零交叉的状态数 |
ssGetContStates |
获取一个块的连续状态 |
ssGetDiscStates |
获取一个块的离散状态 |
ssGetRealDiscStates |
得到一个块的离散状态向量 |
ssGetNonsampledZCs |
得到过零信号值 |
ssGetNumContStates |
获取一个块的连续状态数 |
ssGetNumDiscStates |
获取一个块所具有的离散状态的数量 |
ssGetNumNonsampledZCs |
得到过零向量的大小 |
ssSetNumRWork |
指定块的浮点工作向量的大小 |
ssGetNumRWork |
获取块的浮点工作向量的大小 |
ssGetRWork |
获取一个块的浮点工作向量 |
ssGetRWorkValue |
获取一个块的浮点工作向量的元素 |
ssSetRWorkValue |
设置块的浮点工作向量的一个元素 |
ssSetNumIWork |
指定块的整数工作向量的大小 |
ssGetNumIWork |
获取块的整数工作向量的大小 |
ssGetIWork |
获取一个块的整数工作向量 |
ssGetIWorkValue |
获取块的整数工作向量的一个元素 |
ssSetIWorkValue |
设置块的整数工作向量的一个元素 |
ssSetNumPWork |
指定块指针工作向量的大小 |
ssGetNumPWork |
获取块指针工作向量的大小 |
ssGetPWork |
获取一个块的指针工作向量 |
ssGetPWorkValue |
从一个块的指针工作向量中获取一个指针 |
ssSetPWorkValue |
设置块指针工作向量的一个元素 |
ssSetNumModes |
指定块的模式向量的大小 |
ssGetNumModes |
获取模式向量的大小 |
ssGetModeVector |
得到模态向量 |
ssGetModeVectorValue |
获取一个块的模式向量的元素 |
ssSetModeVectorValue |
设置块的模式向量的一个元素 |
代码生成
ssGetDWorkRTWIdentifier |
获取用于在相关s函数生成的代码中声明DWork向量的标识符 |
ssGetDWorkRTWIdentifierMustResolveToSignalObject |
获取一个标志,指示DWork向量是否解析为a万博1manbetx仿真软件。信号 对象 |
ssGetDWorkRTWStorageClass |
从相关的s函数生成的代码中获取DWork向量的存储类 |
ssGetDWorkRTWTypeQualifier |
获取C类型限定符(例如,常量 )用于在相关s函数生成的代码中声明DWork向量 |
ssGetPlacementGroup |
获取块的放置组的名称 |
ssRTWGenIsCodeGen |
识别加速器未使用的任何代码生成。 |
ssSetArrayLayoutForCodeGen |
指定s函数的数组布局 |
ssSetDWorkRTWIdentifier |
指定用于在相关s函数生成的代码中声明DWork向量的标识符 |
ssSetDWorkRTWIdentifierMustResolveToSignalObject |
指定DWork向量是否解析为a万博1manbetx仿真软件。信号 对象 |
ssSetDWorkRTWStorageClass |
在相关s函数生成的代码中指定DWork向量的存储类 |
ssSetDWorkRTWTypeQualifier |
指定C类型限定符(例如,常量 )用于在相关s函数生成的代码中声明DWork向量 |
ssSetPlacementGroup |
指定块的放置组的名称 |
ssWriteRTW2dMatParam |
函数中写入一个矩阵参数 文件 |
ssWriteRTWMx2dMatParam |
写入一个矩阵参数MATLAB格式为 文件 |
ssWriteRTWMxVectParam |
写入一个向量参数MATLAB格式为 文件 |
ssWriteRTWParameters |
将可调参数信息写入 文件 |
ssWriteRTWParamSettings |
将不可调参数的值写入 文件 |
ssWriteRTWScalarParam |
类中写入标量参数 文件 |
ssWriteRTWStr |
写入字符向量到 文件 |
ssWriteRTWStrParam |
对象写入字符向量参数 文件 |
ssWriteRTWStrVectParam |
对象中写入字符向量参数的向量 文件 |
ssWriteRTWVectParam |
向量参数写入 文件 |
ssWriteRTWWorkVect |
将功向量写入 文件 |
主题
- 输入输出接口
在C/ c++ S-function块上创建输入和输出端口。
- 将对话框参数传递给s -函数
通过C/ c++ S-function块对话框处理参数。
- 指定s函数采样次数
指定在C/ c++ s -function中块操作的速率。
- DWork矢量基础
学习DWork向量的关键概念。
- 配置自定义数据类型
在C/ c++ S-functions中为块的信号值和参数配置自定义数据类型。
- 用s -函数实现函数调用子系统
创建带有s -函数的函数调用子系统。
- 使用函数调用子系统
创建一个使用函数调用执行的子系统。
- s -函数遵从ModelOperatingPoint
使用
ModelOperatingPoint
C-MEX S-functions中的对象用于保存和恢复模拟数据。 - 创建和更新s函数运行时参数
在C/ c++ s -function中创建和更新运行时参数。
- 编写线程安全的s函数指南
当您希望使s函数是线程安全的时,请考虑这些指导原则。
- 在外部模式下使用C/ c++ S-Functions作为Sim卡查看设备
指定C/ c++ S-function作为sim查看设备,以便在外部模式下使用。
- 处理s函数中的错误
处理s函数中的意外事件。
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。万博1manbetx
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。