Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

封装回调代码

添加封装代码

您可以使用 MATLAB® 代码来初始化封装和绘制封装图标。由于代码的位置会影响模型性能,因此请根据所需功能在适当位置添加代码。

用途在封装编辑器中添加以编程方式指定
初始化封装代码窗格Initialization 参数
绘制封装图标图标窗格Display 参数
封装参数的回调代码参数和对话框窗格CallbackFile 参数

执行绘图命令

将绘制封装图标的 MATLAB 代码放置在图标窗格的图标绘制命令部分中。当出现以下情况时,Simulink® 会按顺序执行这些命令代码以重绘封装图标:

  • 模块第一次在封装编辑器画布上渲染时。

  • 依赖于绘图命令的封装参数和值发生变化时。

  • 模块外观因为旋转或其他更改而改变时。

注意

将绘制封装图标的 MATLAB 代码放置在初始化节中会影响模型性能。这是因为每次在模型中计算封装模块时,Simulink 都会重绘此图标。

执行初始化命令

当您执行以下操作时,模型中所有封装模块的初始化命令将会运行:

  • 更新图

  • 开始仿真

  • 开始代码生成

  • 应用封装更改

  • 使用封装编辑器或 set_param 更改定义封装的任何参数,例如 MaskDisplayMaskInitialization

  • 旋转或翻转封装模块(如果图标依赖于初始化命令)。

  • 致使图标被绘制或重绘,并且图标绘制依赖于初始化代码。

  • 通过使用模块对话框或 set_param 更改封装参数的值。

当您打开模型时,Simulink 会查找驻留在模型顶层或已打开的子系统中的可见封装模块。

Simulink 仅在这些可见封装模块及其父模块满足以下任一条件时执行其初始化命令:

  • 封装模块具有图标绘制命令。

    注意

    在模型加载期间,Simulink 不会初始化不包含图标绘制命令的封装模块,即使它们具有初始化命令也是如此。

  • 封装子系统属于一个库,并且已启用允许库模块修改其内容参数。

当您将模型加载到内存中而没有以图形方式显示该模型时,初始化命令不会对封装模块运行,但具有可自修改封装的库模块除外。有关加载模型但不显示模型的信息,请参阅加载模型load_system

注意

如果模型已编译(初始化),则不计算封装模块的不可调参数。

执行回调代码

封装参数回调代码在临时工作区中执行,而不是在基础工作区中执行。如果您需要在回调中创建的变量在以后(不是在回调处理期间)可用,您必须显式地将这些变量分配给基础工作区。

Simulink 在以下情况下执行回调命令:

  • 您打开封装对话框时。这种情况下将按顺序从顶部封装对话框开始执行回调命令。

  • 您在封装对话框中修改参数值,然后更改光标所在的位置时。例如,更改参数值后按 Tab 键,或者点击进入对话框中的另一个字段。

  • 当您通过使用 set_param 命令修改参数值时,会执行回调命令。

  • 您在封装对话框中或使用 set_param 修改参数值,然后通过点击应用确定应用更改时。封装初始化命令在回调命令之后执行。有关详细信息,请参阅 代码窗格

  • 您将鼠标指针悬停在封装模块上查看模块的工具提示,而工具提示又包含参数名称和值时。

    注意

    如果出现模块工具提示时封装对话框处于打开状态,回调命令将不会执行。

  • 通过按 Ctrl+D 或点击 Simulink 编辑器中建模选项卡上的更新模型来更新图。

  • 当您关闭封装对话框而不保存所做更改时,将按顺序执行参数的回调命令。

注意

当与封装对话框上的按钮关联的回调代码正在执行时,这些按钮将不可用。

相关主题