模块回调
您可以为模块事件(例如在加载、打开或编辑模块时)指定执行 MATLAB® 代码的模块回调。
在建模选项卡上,在设计下,点击属性检查器。
选择您要指定其回调的模块。
在属性检查器的属性选项卡上,请在回调部分中,选择您要定义的回调。
在框中,输入您希望回调执行的函数。
要以编程方式指定模块回调,请使用 set_param
为模块回调参数分配 MATLAB 代码。
如果模块回调在建模操作发生之前或之后执行,该回调将在该操作之前或之后紧接着发生。
与模块打开相关的回调参数
模块回调参数 | 执行时间 |
---|---|
| 打开模块时。 一般情况下,此参数与 Subsystem 模块结合使用。 当您双击模块,或者将 将 |
| 加载模块图之后。 对于 Subsystem 模块,将对子系统中定义了 |
与模块编辑相关的回调参数
模块回调参数 | 执行时间 |
---|---|
| 移动或调整模块大小时。 |
| 模块的名称或路径更改之后。 如果 Subsystem 模块路径发生变化,Subsystem 模块将先调用其后代模块的 |
PreCopyFcn | 在复制模块之前。如果使用 如果您复制的 Subsystem 模块包含的模块定义了 在执行所有 |
| 在复制模块之后。如果使用 如果您复制的 Subsystem 模块包含的模块定义了 |
| 在将模块复制或剪切到系统剪贴板时。 |
PreDeleteFcn | 在图形意义上删除模块之前(例如,当您直接从图中删除模块或对模块调用 当包含该模块的模型关闭时,不会调用 |
| 在图形意义上删除模块之后(例如,当您直接从图中删除模块,对模块调用 在调用 对于 Subsystem 模块,将对子系统中定义了 |
| 在内存中销毁该模块后(例如,当您对模块或包含该模块的子系统调用 如果之前未在图形意义上删除模块,模块的 |
| 在撤消模块删除操作时。 |
与模块编译和仿真相关的回调参数
模块回调参数 | 执行时间 |
---|---|
| 编译模块图之前以及计算模块参数之前。有关 |
| 编译模块图之后、仿真开始之前。 如果是 S-Function 模块, |
| 在仿真继续之前。 |
| 在仿真暂停之后。 |
| 在仿真因任何原因终止时。 如果是 S-Function 模块, |
模块保存和关闭回调参数
模块回调参数 | 执行时间 |
---|---|
| 保存模块图之前。 对于 Subsystem 模块,将对子系统中定义了 |
| 保存模块图之后。 对于 Subsystem 模块,将对子系统中定义了 |
| 使用 当您以交互方式关闭模块参数对话框、以交互方式关闭包含模块的子系统或模型,或使用 例如,若要关闭所有打开的 MATLAB 窗口,请使用如下命令: set_param('my_model','CloseFcn','close all') |
| 模块图关闭之前。 当模型关闭时,模块的 对于 Subsystem 模块,将对子系统中定义了 |
Subsystem 模块回调参数
您可以对 Subsystem 模块使用其他模块回调参数,但此表中的回调参数特定于 Subsystem 模块。
注意
封装子系统的回调不能直接引用封装子系统的参数(请参阅创建模块封装)。Simulink® 在 MATLAB 基础工作区中计算模块回调,而封装参数驻留在封装子系统的私有工作区中。然而,模块回调可以使用 get_param
获取封装参数的值。例如,此处的 gain
是当前模块的封装参数的名称:
get_param(gcb, 'gain')
模块回调参数 | 执行时间 |
---|---|
| 在子系统中删除模块或线条后。 如果模块有 |
| 当子系统中发生错误时。
newException = errorHandler(subsys, ... errorType, originalException) 其中
如果您提供原始异常,则不需要指定子系统和错误类型。 以下命令将子系统 set_param(subsys,'ErrorFcn','errorHandler') set_param 调用中,不要包含回调代码的输入参量。Simulink 显示由回调返回的错误消息。 |
| 在关闭包含模块的子系统之前,或者通过使用以下方式将模块纳入为新子系统的一部分时:
当您关闭模型时,Simulink 不会调模型根级的模块的 |