Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

封装回调代码

添加封装代码

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

用途在 Mask Editor 中添加以编程方式指定
初始化封装Initialization 窗格MaskInitialization 参数
绘制封装图标Icon & Ports 窗格MaskDisplay 参数
封装参数的回调代码Parameters & Dialog 窗格MaskCallbacks 参数

执行绘图命令

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

  • 模块第一次在 Mask Editor 画布上渲染时。

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

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

注意

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

执行初始化命令

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

  • 更新图

  • 开始仿真

  • 开始代码生成

  • 应用封装更改

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

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

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

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

  • 在同一模型中或不同模型之间复制封装模块。

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

Simulink 仅在符合以下条件之一时,才对这些可见封装模块执行初始化命令:

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

    注意

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

  • 封装子系统属于一个库,并且已启用 Allow library block to modify its contents 参数。

当您只是将模型加载到内存中,而不以图形方式显示它时,将不会为任何封装模块运行初始化命令。有关加载模型但不显示模型的信息,请参阅加载模型load_system

注意

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

执行回调代码

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

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

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

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

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

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

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

    注意

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

  • 通过按 Ctrl+D 或点击 Simulink Editor 中 Modeling 选项卡上的 Update Model 来更新图。

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

注意

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

要了解相关的 Simulink 示例模型,请参阅:

相关主题