Main Content

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 软件。有关详细信息,请参阅Write Level-2 MATLAB S-Functions

您也可以在 MATLAB 程序中使用此类的实例,以在仿真期间获取有关 2 级 MATLAB S-Function 模块的信息。有关详细信息,请参阅 在仿真期间访问模块数据

2 级 MATLAB S-Function 模板 matlabroot/toolbox/simulink/blocks/msfuntmpl.m 说明如何使用以下几个方法。

派生的类

属性摘要

名称

描述

AllowSignalsWithMoreThan2D

启用 2 级 MATLAB S-Function 以使用多维信号。

DialogPrmsTunable

指定哪些 S-Function 的对话框参数是可调的。

NextTimeHit

可变采样时间 S-Function 的下一个采样时间命中点的时间。

方法摘要

名称

描述

AutoRegRuntimePrms

将此模块的对话框参数注册为运行时参数。

AutoUpdateRuntimePrms

更新此模块的运行时参数。

IsDoingConstantOutput

确定当前仿真阶段是否为固定采样时间阶段。

IsMajorTimeStep

确定当前仿真时间步是否为主时间步。

IsSampleHit

确定在当前仿真时间是否有此模块所处理的某项任务处于活动状态。

IsSpecialSampleHit

确定在当前仿真时间是否有此模块所处理的多项任务处于活动状态。

RegBlockMethod

为此模块注册一个回调方法。

RegisterDataTypeFxpBinaryPoint

将定点数据类型注册为二进制小数点定标。

RegisterDataTypeFxpFSlopeFixexpBias

将定点数据类型注册为以小数斜率、固定指数和偏置指定的 [斜率 偏置] 定标的数据类型。

RegisterDataTypeFxpSlopeBias

将数据类型注册为 [斜率 偏置] 定标。

SetAccelRunOnTLC

指定是否使用此模块的 TLC 文件为使用它的模型生成仿真目标。

SetPreCompInpPortInfoToDynamic

将此模块的输入端口的预编译属性设置为继承。

SetPreCompOutPortInfoToDynamic

将此模块的输出端口的预编译属性设置为继承。

SetPreCompPortInfoToDefaults

将此模块的端口的预编译属性设置为默认值。

SetSimViewingDevice

指定模块是否为查看器。

SupportsMultipleExecInstances

 

WriteRTWParam

将自定义参数信息写入 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 以将此模块的可调对话框参数注册为运行时参数。

AutoUpdateRuntimePrms

用途

更新模块的运行时参数。

语法

AutoUpdateRuntimePrms;

描述

在调用 ProcessParameters 期间自动更新运行时参数的值。

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;

描述

如果当前时间步是主时间步,则返回 true;如果是子时间步,则返回 false。此方法只能从 OutputsUpdate 方法调用。

IsSampleHit

用途

确定在当前仿真时间是否有此模块所处理的某项任务处于活动状态。

语法

bVal = IsSampleHit(stIdx);

参量
stIdx

要查询的采样时间的全局索引。

描述

当 MATLAB S-Function 具有多个采样时间时在 OutputsUpdate 模块方法中使用,以确定在 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

要查询的第二项任务的采样时间的索引。

描述

OutputsUpdate 模块方法中使用,以确保以不同采样率运行的多项任务所共享数据的有效性。如果一个采样命中点发生在 stIdx1 且在同一时间步中的 stIdx2 也发生一个采样命中点(类似于 C-MeX S-Function 的 ssIsSpecialSampleHit),则返回 true。

当使用 IsSpecialSampleHit 宏时,较慢采样时间必须是较快采样时间的整数倍。

RegBlockMethod

用途

注册一个模块回调方法。

语法

RegBlockMethod(methName, methHandle);

参量
methName

要注册的方法的名称。

methHandle

要注册的回调方法的 MATLAB 函数句柄。

描述

注册由 methNamemethHandle 指定的模块回调方法。在 2 级 MATLAB S-Function 的 setup 函数中使用此方法以指定 S-Function 实现的模块回调方法。

RegisterDataTypeFxpBinaryPoint

用途

将定点数据类型注册为二进制小数点定标。

语法

dtID = RegisterDataTypeFxpBinaryPoint(isSigned, wordLength, fractionalLength, obeyDataTypeOverride);

参量
isSigned

如果是有符号数据类型,则返回 true

如果是无符号数据类型,则返回 false

wordLength

数据类型中的总位数,包括任何符号位。

fractionalLength

二进制小数点右侧的数据类型中的位数。

obeyDataTypeOverride

true 指示将遵循子系统的数据类型覆盖设置。根据数据类型覆盖的值,生成的数据类型可能是 DoubleSingleScaledDouble 或函数的其他参量指定的定点数据类型。

false 指示将忽略数据类型覆盖设置。

描述

此方法向 Simulink 软件注册一个定点数据类型并返回一个数据类型 ID。该数据类型 ID 可用于指定输入和输出端口、运行时参数和 DWork 状态的数据类型。它还可用于为此类的实例定义的所有标准数据类型访问方法,例如 DatatypeSize

如果您要将定点数据类型注册为仅按二进制小数点定标的数据类型,请使用此函数。您也可以使用一个其他定点注册函数:

如果已注册的数据类型不是一种 Simulink 内置数据类型,Fixed-Point Designer™ 许可证将被签出。

RegisterDataTypeFxpFSlopeFixexpBias

用途

通过指定小数斜率、固定指数和偏置注册 [斜率 偏置] 定标的定点数据类型

语法

dtID = RegisterDataTypeFxpFSlopeFixexpBias(isSigned, wordLength, fractionalSlope, fixedexponent, bias, obeyDataTypeOverride);

参量
isSigned

如果是有符号数据类型,则返回 true

如果是无符号数据类型,则返回 false

wordLength

数据类型中的总位数,包括任何符号位。

fractionalSlope

数据类型的小数斜率。

fixedexponent

数据类型的斜率指数。

bias

数据类型的定标偏置。

obeyDataTypeOverride

true 指示将遵循子系统的数据类型覆盖设置。根据数据类型覆盖的值,生成的数据类型可能是 True DoublesTrue SinglesScaledDouble 或函数的其他参量指定的定点数据类型。

false 指示将忽略数据类型覆盖设置。

描述

此方法向 Simulink 软件注册一个定点数据类型并返回一个数据类型 ID。该数据类型 ID 可用于指定输入和输出端口、运行时参数和 DWork 状态的数据类型。它还可用于为此类的实例定义的所有标准数据类型访问方法,例如 DatatypeSize

如果您要通过指定字长、小数斜率、固定指数和偏置注册定点数据类型,请使用此函数。您也可以使用一个其他定点注册函数:

如果已注册的数据类型不是一种 Simulink 内置数据类型,Fixed-Point Designer 许可证将被签出。

RegisterDataTypeFxpSlopeBias

用途

将数据类型注册为 [斜率 偏置] 定标。

语法

dtID = RegisterDataTypeFxpSlopeBias(isSigned, wordLength, totalSlope, bias, obeyDataTypeOverride);

参量
isSigned

如果是有符号数据类型,则返回 true

如果是无符号数据类型,则返回 false

wordLength

数据类型中的总位数,包括任何符号位。

totalSlope

数据类型的定标的总斜率。

bias

数据类型的定标偏置。

obeyDataTypeOverride

true 指示将遵循子系统的数据类型覆盖设置。根据数据类型覆盖的值,生成的数据类型可能是 True DoublesTrue SinglesScaledDouble 或函数的其他参量指定的定点数据类型。

false 指示将忽略数据类型覆盖设置。

描述

此方法向 Simulink 软件注册一个定点数据类型并返回一个数据类型 ID。该数据类型 ID 可用于指定输入和输出端口、运行时参数和 DWork 状态的数据类型。它还可用于为此类的实例定义的所有标准数据类型访问方法,例如 DatatypeSize

如果您要将某定点数据类型注册为 [斜率 偏置] 定标,请使用此函数。您也可以使用一个其他定点注册函数:

如果已注册的数据类型不是一种 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 之前推出