Main Content

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

动态封装子系统

Allow Library Block to Modify Its Contents

仅当封装子系统位于库中时,才会启用此复选框。选中此选项将允许模块初始化代码修改封装子系统的内容(即,它允许代码添加或删除模块以及设置这些模块的参数)。否则,当封装库模块尝试以任何方式修改其内容时,将会生成错误。要在 MATLAB® 提示符下设置此选项,请选择自修改模块并输入以下命令。

set_param(gcb, 'MaskSelfModifiable', 'on');

然后保存模块。

为库模块创建自修改封装

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

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

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

在您加载模块时,Simulink® 对可自修改的库模块运行封装初始化代码。如果封装初始化代码控制模块的输入/输出端口数目,请将该模块标记为可自修改。否则,封装初始化代码将不会执行,也不会设置正确的端口数目数量,这将断开模块连接。

使用 Mask Editor 创建自修改封装

要使用 Mask Editor 创建自修改封装:

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

  2. 选择库中的模块。

  3. Block 选项卡的 Mask 组中,点击 Edit Mask。Mask Editor 随即打开。

  4. 在 Mask Editor 的 Initialization 窗格中,选择 Allow library block to modify its contents 选项。

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

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

  6. 点击 Apply 以应用更改或点击 OK 以应用更改并关闭 Mask Editor。

  7. 锁定库。

从命令行创建自修改封装

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

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

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

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

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

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

创建自修改封装

selfModifying_example 包含一个封装子系统,该子系统基于子系统封装对话框中的所选内容修改其输入端口数目。

  1. 在 Library 窗口中,在 Library 选项卡上,点击 Locked Library 以解锁库。

  2. Subsystem Block 选项卡上的 Mask 组中,点击 Edit Mask。Mask Editor 随即打开。

  3. Mask Editor 的 Parameters & Dialog 窗格中定义了一个参数 numIn,用于存储 Number of inports 选项的值。此封装对话框回调将基于 Number of inports 列表中的所选内容,在封装子系统内添加或删除 Input 端口。

  4. 为了让对话框回调正常工作,选择了 Mask Editor Initialization 窗格上的 Allow library block to modify its contents 选项。如果不选择此选项,库模块副本将无法修改其结构性内容。此外,更改 Number of inports 列表中的所选内容也会出现错误。

将封装参数值从父级子系统传递给子模块

您可以通过三种方式将封装参数值从父级子系统传递给子模块:

  • 使用参数提升。

  • 使用封装初始化代码。这是通过对子模块使用 set_param 命令来完成的。

  • 让子模块参数引用父封装参数名称。这仅适用于编辑参数。

相关主题