Simulink.MSFcnRunTimeBlock
获取有关 2 级 MATLAB S-Function 模块的运行时信息
描述
此类允许 2 级 MATLAB® S-Function 或其他 MATLAB 程序从 Simulink® 软件获取信息,并将有关 2 级 MATLAB S-Function 模块的信息提供给 Simulink 软件。Simulink 软件为模型中的每个 2 级 MATLAB S-Function 模块创建此类的一个实例。Simulink 软件在更新或仿真模型时将对象传递给 2 级 MATLAB S-Function 的回调方法,从而允许回调方法获取与模块相关的信息并将此信息提供给 Simulink 软件。有关详细信息,请参阅编写 2 级 MATLAB S-Function。
您也可以在 MATLAB 程序中使用此类的实例,以在仿真期间获取有关 2 级 MATLAB S-Function 模块的信息。有关详细信息,请参阅 在仿真期间访问模块数据。
2 级 MATLAB S-Function 模板 matlabroot/toolbox/simulink/blocks/msfuntmpl.m 说明如何使用以下几个方法。
派生的类
无
属性摘要
名称 | 描述 |
|---|---|
启用 2 级 MATLAB S-Function 以使用多维信号。 | |
指定哪些 S-Function 的对话框参数是可调的。 | |
可变采样时间 S-Function 的下一个采样时间命中点的时间。 |
方法摘要
名称 | 描述 |
|---|---|
将此模块的对话框参数注册为运行时参数。 | |
更新此模块的运行时参数。 | |
确定当前仿真阶段是否为常数采样时间阶段。 | |
确定当前仿真时间步是否为主时间步。 | |
确定在当前仿真时间是否有此模块所处理的某项任务处于活动状态。 | |
确定在当前仿真时间是否有此模块所处理的多项任务处于活动状态。 | |
为此模块注册一个回调方法。 | |
将定点数据类型注册为二进制小数点定标。 | |
将定点数据类型注册为以小数斜率、固定指数和偏置指定的 [斜率 偏置] 定标的数据类型。 | |
将数据类型注册为 [斜率 偏置] 定标。 | |
指定是否使用此模块的 TLC 文件为使用它的模型生成仿真目标。 | |
将此模块的输入端口的预编译属性设置为继承。 | |
将此模块的输出端口的预编译属性设置为继承。 | |
将此模块的端口的预编译属性设置为默认值。 | |
指定模块是否为查看器。 | |
将自定义参数信息写入 Simulink Coder™ 文件。 |
属性
AllowSignalsWithMoreThan2D
允许 2 级 MATLAB S-Function 使用多维信号。您必须设置 setup 方法中的 AllowSignalsWithMoreThan2D 属性。
布尔
RW
DialogPrmsTunable
指定 S-Function 的对话框参数是否可调。当您调用 AutoRegRuntimePrms 方法时,可调参数注册为运行时参数。请注意 SimOnlyTunable 参数不会注册为运行时参数。例如,下列代码行初始化三个对话框参数,其中第一个可调,第二个不可调,第三个仅在仿真期间可调。
block.NumDialogPrms = 3;
block.DialogPrmsTunable = {'Tunable','Nontunable','SimOnlyTunable'};
数组
RW
NextTimeHit
可变采样时间 S-Function 的下一个采样命中点的时间。
双精度
RW
方法
AutoRegRuntimePrms
将模块的可调对话框参数注册为运行时参数。
AutoRegRuntimePrms;
MATLAB S-Function 可调参数的默认名称为 MSFcnParameter, MSFcnParameter1, … MSFcnParameterN。您可以通过将元胞数组传递给 AutoRegRuntimePrms 来分配其他名称。在 PostPropagationSetup 方法中使用 AutoRegRuntimePrms 以将此模块的可调对话框参数注册为运行时参数。
IsDoingConstantOutput
确定这是否在仿真的常数采样时间阶段中。
bVal = IsDoingConstantOutput;
如果处于仿真的常数采样时间阶段,即仿真开始时的阶段(Simulink 软件在此阶段计算仿真过程中不能更改的模块输出值),则返回 true(请参阅 常数采样时间)。在 S-Function 的 Outputs 方法中使用此方法和基于端口的采样时间可避免不必要地计算具有常数采样时间(即 [inf, 0])的端口的输出。
function Outputs(block)
.
.
if block.IsDoingConstantOutput
ts = block.OutputPort(1).SampleTime;
if ts(1) == Inf
%% Compute port's output.
end
end
.
.
%% end of Outputs
有关详细信息,请参阅 Specifying Port-Based Sample Times。
IsMajorTimeStep
确定当前时间步是主时间步还是子时间步。
bVal = IsMajorTimeStep;
IsSampleHit
确定在当前仿真时间是否有此模块所处理的某项任务处于活动状态。
bVal = IsSampleHit(stIdx);
stIdx要查询的采样时间的全局索引。
当 MATLAB S-Function 具有多个采样时间时在 Outputs 或 Update 模块方法中使用,以确定在 stIdx 上是否出现采样命中点。采样时间索引 stIdx 是 Simulink 模型的全局索引。例如,假设一个模型包含三个采样率 0.1、0.2 和 0.5,一个 MATLAB S-Function 模块包含两个采样率 0.2 和 0.5。在 MATLAB S-Function 中,block.IsSampleHit(0) 对采样率 0.1(而不是采样率 0.2)返回 true。
此模块方法类似于 C-MeX S-Function 的 ssIsSampleHit,但 ssIsSampleHit 返回仅基于 S-Function 中包含的采样时间的值。例如,如果上述模型包含具有采样率 0.2 和 0.5 的 C-MeX S-Function,则 ssIsSampleHit(S,0,tid) 对采样率 0.2 返回 true。
使用基于端口的采样时间以避免对多采样率系统使用全局采样时间索引(请参阅 Simulink.BlockPortData)。
IsSpecialSampleHit
确定在当前仿真时间是否有此模块实现的多项任务处于活动状态。
bVal = IsSpecialSampleHit(stIdx1,stIdx1);
stIdx1要查询的第一项任务的采样时间的索引。
stIdx2要查询的第二项任务的采样时间的索引。
在 Outputs 或 Update 模块方法中使用,以确保以不同采样率运行的多项任务所共享数据的有效性。如果一个采样命中点发生在 stIdx1 且在同一时间步中的 stIdx2 也发生一个采样命中点(类似于 C-MeX S-Function 的 ssIsSpecialSampleHit),则返回 true。
当使用 IsSpecialSampleHit 宏时,较慢采样时间必须是较快采样时间的整数倍。
RegBlockMethod
注册一个模块回调方法。
RegBlockMethod(methName, methHandle);
methName要注册的方法的名称。
methHandle要注册的回调方法的 MATLAB 函数句柄。
注册由 methName 和 methHandle 指定的模块回调方法。在 2 级 MATLAB S-Function 的 setup 函数中使用此方法以指定 S-Function 实现的模块回调方法。
RegisterDataTypeFxpBinaryPoint
将定点数据类型注册为二进制小数点定标。
dtID = RegisterDataTypeFxpBinaryPoint(isSigned, wordLength, fractionalLength, obeyDataTypeOverride);
isSigned如果是有符号数据类型,则返回
true。如果是无符号数据类型,则返回
false。wordLength数据类型中的总位数,包括任何符号位。
fractionalLength二进制小数点右侧的数据类型中的位数。
obeyDataTypeOverridetrue指示将遵循子系统的数据类型覆盖设置。根据数据类型覆盖的值,生成的数据类型可能是Double、Single、ScaledDouble或函数的其他参量指定的定点数据类型。false指示将忽略数据类型覆盖设置。
此方法向 Simulink 软件注册一个定点数据类型并返回一个数据类型 ID。该数据类型 ID 可用于指定输入和输出端口、运行时参数和 DWork 状态的数据类型。它还可用于为此类的实例定义的所有标准数据类型访问方法,例如 DatatypeSize。
如果您要将定点数据类型注册为仅按二进制小数点定标的数据类型,请使用此函数。您也可以使用一个其他定点注册函数:
使用 RegisterDataTypeFxpFSlopeFixexpBias 通过指定字长、小数斜率、固定指数和偏置注册 [斜率 偏置] 定标的数据类型。
使用 RegisterDataTypeFxpSlopeBias 将数据类型注册为 [斜率 偏置] 定标。
如果已注册的数据类型不是一种 Simulink 内置数据类型,Fixed-Point Designer™ 许可证将被签出。
RegisterDataTypeFxpFSlopeFixexpBias
通过指定小数斜率、固定指数和偏置注册 [斜率 偏置] 定标的定点数据类型
dtID = RegisterDataTypeFxpFSlopeFixexpBias(isSigned, wordLength, fractionalSlope, fixedexponent, bias, obeyDataTypeOverride);
isSigned如果是有符号数据类型,则返回
true。如果是无符号数据类型,则返回
false。wordLength数据类型中的总位数,包括任何符号位。
fractionalSlope数据类型的小数斜率。
fixedexponent数据类型的斜率指数。
bias数据类型的定标偏置。
obeyDataTypeOverridetrue指示将遵循子系统的数据类型覆盖设置。根据数据类型覆盖的值,生成的数据类型可能是True Doubles、True Singles、ScaledDouble或函数的其他参量指定的定点数据类型。false指示将忽略数据类型覆盖设置。
此方法向 Simulink 软件注册一个定点数据类型并返回一个数据类型 ID。该数据类型 ID 可用于指定输入和输出端口、运行时参数和 DWork 状态的数据类型。它还可用于为此类的实例定义的所有标准数据类型访问方法,例如 DatatypeSize。
如果您要通过指定字长、小数斜率、固定指数和偏置注册定点数据类型,请使用此函数。您也可以使用一个其他定点注册函数:
使用 RegisterDataTypeFxpBinaryPoint 将数据类型注册为二进制小数点定标。
使用 RegisterDataTypeFxpSlopeBias 将数据类型注册为 [斜率 偏置] 定标。
如果已注册的数据类型不是一种 Simulink 内置数据类型,Fixed-Point Designer 许可证将被签出。
RegisterDataTypeFxpSlopeBias
将数据类型注册为 [斜率 偏置] 定标。
dtID = RegisterDataTypeFxpSlopeBias(isSigned, wordLength, totalSlope, bias, obeyDataTypeOverride);
isSigned如果是有符号数据类型,则返回
true。如果是无符号数据类型,则返回
false。wordLength数据类型中的总位数,包括任何符号位。
totalSlope数据类型的定标的总斜率。
bias数据类型的定标偏置。
obeyDataTypeOverridetrue指示将遵循子系统的数据类型覆盖设置。根据数据类型覆盖的值,生成的数据类型可能是True Doubles、True Singles、ScaledDouble或函数的其他参量指定的定点数据类型。false指示将忽略数据类型覆盖设置。
此方法向 Simulink 软件注册一个定点数据类型并返回一个数据类型 ID。该数据类型 ID 可用于指定输入和输出端口、运行时参数和 DWork 状态的数据类型。它还可用于为此类的实例定义的所有标准数据类型访问方法,例如 DatatypeSize。
如果您要将某定点数据类型注册为 [斜率 偏置] 定标,请使用此函数。您也可以使用一个其他定点注册函数:
使用 RegisterDataTypeFxpBinaryPoint 将数据类型注册为二进制小数点定标。
使用 RegisterDataTypeFxpFSlopeFixexpBias 通过指定字长、小数斜率、固定指数和偏置注册数据类型
如果已注册的数据类型不是一种 Simulink 内置数据类型,Fixed-Point Designer 许可证将被签出。
SetAccelRunOnTLC
指定是否使用模块的 TLC 文件来针对 Simulink 软件的加速模式生成代码。
SetAccelRunOnTLC(bVal);
bVal可以是
'true'(使用 TLC 文件)或'false'(在解释模式下运行模块)。
指定模块是否应使用其 TLC 文件生成与加速器一起运行的代码。如果此选项为 'false',则该模块在解释模式下运行。请参阅 Simulink 模型 msfcndemo_timestwo 中的 S-Function msfcn_times_two.m 以查看示例。
注意
默认 JIT 加速模式不支持内联用户编写的 TLC S-Function。有关详细信息,请参阅 加速模式的工作原理和 控制 S-Function 的执行。
SetPreCompInpPortInfoToDynamic
将此模块的输入端口的预编译属性设置为继承。
SetPreCompInpPortInfoToDynamic;
将此模块的输入端口的编译信息(维度、数据类型、复/实性以及采样模式)初始化为继承。
SetPreCompOutPortInfoToDynamic
将此模块的输出端口的预编译属性设置为继承。
SetPreCompOutPortInfoToDynamic;
将模块的输出端口的编译信息(维度、数据类型、复/实性以及采样模式)初始化为继承。
SetPreCompPortInfoToDefaults
将此模块的端口的预编译属性设置为默认值。
SetPreCompPortInfoToDefaults;
将模块的端口的编译信息(维度、数据类型、复/实性以及采样模式)初始化为默认值。默认情况下,端口接受数据类型为 double 的实数标量采样信号。
SetSimViewingDevice
指定此模块是否为查看器。
SetSimViewingDevice(bVal);
bVal可以是
'true'(是查看器)或'false'(不是查看器)。
指定模块是否为查看器/示波器。如果指定此标志,则该模块仅在仿真过程中使用并自动在生成的代码中去掉。
SupportsMultipleExecInstances
指定 For Each Subsystem 内是否支持 S-Function。
SupportsMultipleExecInstances(bVal);
bVal可以是
'true'(支持 S-Function)或'false'(不支持 S-Function)。
指定 S-Function 是否可以在 For Each Subsystem 内运行。
WriteRTWParam
将自定义参数写入用于代码生成的 Simulink Coder 信息文件。
WriteRTWParam(pType, pName, pVal)
pType要写入的参数的类型。有效值为
'string'和'matrix'。pName要写入的参数的名称。
pVal要写入的参数的值。
在 MATLAB S-Function 的 WriteRTW 方法中使用以写出自定义参数。这些参数一般是用于确定应如何在 S-Function 的 TLC 文件中生成代码的设置。
版本历史记录
在 R2006a 之前推出