Main Content

初始化函数

初始化函数 (InitFcn) 是一种在模型编译开始时执行或计算的回调类型。您可以将 InitFcn 回调指定为模型回调或模块回调。

注意

变体控制项只能在模型 InitFcn 回调中定义。

模型 InitFcn 回调

使用模型 InitFcn 回调来初始化特定于模型的参数和环境设置,例如:

  • 模型参数中使用的变量

  • 所需软件的许可证检查

在 Simulink® 工具条的建模选项卡上,点击模型设置箭头,然后点击模型属性。在“模型属性”对话框中,模型 InitFcn 回调位于回调选项卡上。

InitFcn in Model Properties dialog box

不要使用模型 InitFcn 回调来:

  • 获取仿真状态。如果您使用 slbuild 函数仿真模型,或者使用软件在环 (SIL) 或快速加速模式,则模型 InitFcn 回调状态可能显示为 'stopped'

  • 运行仿真命令。例如,不要在模型 InitFcn 回调中使用 set_param(ModelName,'SimulationCommand','start')set_param(ModelName,'SimulationCommand','update') 之类的命令。

  • 修改其他模型。同样,Model 模块的 InitFcn 模块回调不能修改引用模型的参数或结构。

  • 覆盖引用模型中使用的任何变量。例如,如果顶层模型和引用模型使用变量 k,则顶层模型的模型 InitFcn 回调不能修改引用模型的 k。在这样的建模模式中,请使用不同的变量名称或数据字典。

  • 编辑模型的结构,但不要定义变体控制项。例如,不要在模型 InitFcn 回调中使用 add_linedelete_line 之类的函数。

如果对模型使用 InitFcn 回调,则会对整个模型禁用针对模块参数中缺失变量的编辑时检查。

如需具有变体的模型 InitFcn 回调的示例,请打开 sldemo_variant_initFcn 模型。然后,双击绿色模块以打开一个使用推荐工作流的模型。打开的模型包含 Variant SubsystemVariant Source 模块。

Model with Variant Subsystem and Variant Source blocks

在此模型中,模型 InitFcn 回调用来初始化模型的参数。

InitFcn that defines V, W, W.Value, and W.DataType

虽然您可以在模型 PreLoadFcnPostLoadFcn 回调中定义这些参数,但这些回调会在模型加载之前或之后执行。假设您从 MATLAB® 工作区中清空参数并仿真模型。模型 PreLoadFcnPostLoadFcn 回调不会重新创建参数。当您在模型 InitFcn 回调中定义参数时,模型会更新并且仿真会重新创建参数。

模块 InitFcn 回调

使用模块 InitFcn 回调来初始化模块的参数和设置。

右键点击该模块。然后,点击属性。在“模块属性”对话框中,模块 InitFcn 回调位于回调选项卡上。

InitFcn in Block Properties dialog box

不要将模块 InitFcn 回调用于以下目的:

  • 修改其他模块的参数(或变量),除非您使用 Subsystem 模块的 InitFcn 回调来修改其直接子模块的参数。

  • 进行结构性更改。例如,不要在模块 InitFcn 回调中使用 add_blockdelete_block 之类的函数。

  • 修改另一个模块在使用的任何全局变量或模型工作区中的变量。

  • 修改由 Model 模块引用的模型的参数、结构或设置。

如果对一个模块使用 InitFcn 回调,则会对该模块禁用针对模块参数中缺失变量的编辑时检查。

相关主题