Main Content

动态封装子系统

创建可以修改其结构性内容的封装库模块。

允许库模块修改其内容

选项允许封装初始化代码以修改子系统的内容将允许模块初始化代码修改封装子系统的内容(即,它允许代码添加或删除模块以及设置这些模块的参数)。要在 MATLAB® 提示符下设置此选项,请选择自修改模块,输入以下命令,然后保存此模块。

set_param(gcb, 'MaskSelfModifiable', 'on');
open_system("slexMaskSelfModifiableExample.slx")

为库模块创建自修改封装

您可以创建能修改其结构性内容的封装库模块。这些自修改封装使您能够:

  • 基于封装对话框中的参数,或者在最初将子系统从库拖到新的模型中时,修改封装子系统的内容。

  • 改变位于库中的多端口 S-Function 模块上的端口数目。

在您加载模块时,Simulink® 对可自修改的库模块运行封装初始化代码。

使用封装编辑器创建自修改封装

要使用封装编辑器创建自修改封装:

1.解锁库。请参阅 锁定和解锁库

2.选择库中的模块。

3.模块选项卡的封装组中,点击编辑封装。封装编辑器随即打开。

4.在封装编辑器代码窗格中,选择允许封装初始化代码以修改子系统的内容选项。

5.在封装的初始化窗格中输入用于修改封装子系统的代码。

不要在对话框参数回调中输入会修改封装子系统结构的代码,请参阅。在您编辑该参数时,执行此操作会触发错误。

6.点击应用以应用更改或点击确定以应用更改并关闭封装编辑器。

7.锁定库。

从命令行创建自修改封装

要从命令行创建自修改封装:

1.使用以下命令解锁库:

set_param(gcs,'Lock','off')

2.使用以下命令指定模块是自修改模块:

set_param(block_name,'MaskSelfModifiable','on')

其中 block_name 是库中模块的完整路径。

创建自修改封装

在此示例中,如果您在封装对话框中更改Time domain,子系统中的模块会相应地替换。例如,如果您选择 Time domain 作为 Discrete,则 Integrator 模块将替换为 Discrete-Time Integrator 模块,反之亦然。

1.在“库”窗口中,在选项卡上,点击锁定的库以解锁库。

2.Subsystem 模块选项卡上的封装组中,点击编辑封装。封装编辑器随即打开。

3.封装编辑器的参数和对话框窗格中定义了一个参数 Time domain,用于存储输时间选项的值。此封装对话框回调用 Discrete-Time Integrator 模块替换 Integrator 模块,反之亦然。

4.为使对话框回调正常运行,封装编辑器代码窗格中的允许封装初始化代码以修改子系统的内容选项处于选中状态。如果不选择此选项,库模块副本将无法修改其结构性内容。此外,更改 Time Domain 列表中的选择也会生成错误。

相关主题