初始化函数
初始化函数 (InitFcn
) 是一种在模型编译开始时执行或计算的回调类型。您可以将 InitFcn
回调指定为模型回调或模块回调。
注意
变体控制项只能在模型 InitFcn
回调中定义。
模型 InitFcn
回调
使用模型 InitFcn
回调来初始化特定于模型的参数和环境设置,例如:
模型参数中使用的变量
所需软件的许可证检查
在 Simulink® 工具条的建模选项卡上,点击模型设置箭头,然后点击模型属性。在“模型属性”对话框中,模型 InitFcn
回调位于回调选项卡上。
不要使用模型 InitFcn
回调来:
获取仿真状态。如果您使用
slbuild
函数仿真模型,或者使用软件在环 (SIL) 或快速加速模式,则模型InitFcn
回调状态可能显示为'stopped'
。运行仿真命令。例如,不要在模型
InitFcn
回调中使用set_param(ModelName,'SimulationCommand','start')
或set_param(ModelName,'SimulationCommand','update')
之类的命令。修改其他模型。同样,Model 模块的
InitFcn
模块回调不能修改引用模型的参数或结构。覆盖引用模型中使用的任何变量。例如,如果顶层模型和引用模型使用变量 k,则顶层模型的模型
InitFcn
回调不能修改引用模型的 k。在这样的建模模式中,请使用不同的变量名称或数据字典。编辑模型的结构,但不要定义变体控制项。例如,不要在模型
InitFcn
回调中使用add_line
或delete_line
之类的函数。
如果对模型使用 InitFcn
回调,则会对整个模型禁用针对模块参数中缺失变量的编辑时检查。
如需具有变体的模型 InitFcn
回调的示例,请打开 sldemo_variant_initFcn
模型。然后,双击绿色模块以打开一个使用推荐工作流的模型。打开的模型包含 Variant Subsystem 和 Variant Source 模块。
在此模型中,模型 InitFcn
回调用来初始化模型的参数。
虽然您可以在模型 PreLoadFcn
或 PostLoadFcn
回调中定义这些参数,但这些回调会在模型加载之前或之后执行。假设您从 MATLAB® 工作区中清空参数并仿真模型。模型 PreLoadFcn
和 PostLoadFcn
回调不会重新创建参数。当您在模型 InitFcn
回调中定义参数时,模型会更新并且仿真会重新创建参数。
模块 InitFcn
回调
使用模块 InitFcn
回调来初始化模块的参数和设置。
右键点击该模块。然后,点击属性。在“模块属性”对话框中,模块 InitFcn
回调位于回调选项卡上。
不要将模块 InitFcn
回调用于以下目的:
修改其他模块的参数(或变量),除非您使用 Subsystem 模块的
InitFcn
回调来修改其直接子模块的参数。进行结构性更改。例如,不要在模块
InitFcn
回调中使用add_block
或delete_block
之类的函数。修改另一个模块在使用的任何全局变量或模型工作区中的变量。
修改由 Model 模块引用的模型的参数、结构或设置。
如果对一个模块使用 InitFcn
回调,则会对该模块禁用针对模块参数中缺失变量的编辑时检查。