主要内容

子系统的参考

子系统引用允许您将子系统的内容保存在单独的文件中,并使用子系统的参考块。您可以创建引用同一个子系统文件的多个实例。当您编辑所引用子系统的任何实例时,更改将保存在存储子系统的单独文件中,并且同步该文件的所有引用实例。

请注意

子系统引用兼容SLX和MDL文件格式。

当您将一个子系统保存到一个单独的文件中时,您可以通过使用子系统的参考块引用相同的子系统文件。

你可以识别子系统的参考通过方块图标对角的三角形进行方块。

被引用的子系统支持常规子系统的所有语义。金宝app与未引用的子系统相比,被引用的子系统使自己适应父模型的上下文,并且具有相同的执行行为。

创建一个子系统框图

子系统文件将子系统框图的内容存储在一个文件中。

子系统文件:

  • 无法模拟。

  • 没有完整的配置集。

  • 没有模型工作区。

  • 没有代码生成功能。

要创建一个子系统框图:

  1. 开放模型金宝app®

  2. 在“开始页面”中,在“Simulink产品”组中,单金宝app击空白的子系统

    或者,在Simulink工具条中金宝app模拟选项卡上,选择并点击空白的子系统.打开“子系统”窗口。

  3. 添加内容并单击保存

  4. 方法中指定文件名另存为对话框。文件名必须是有效的MATLAB名称。

    这将在指定的位置创建一个新的子系统文件。

要以编程方式创建子系统文件,使用以下命令:

new_system (subsystemfilename“子系统”
一旦你以编程方式创建了子系统文件,它在MATLAB文件浏览器中显示为:

有关以编程方式控制子系统文件的详细信息,请参见控制引用子系统编程

在模型中引用子系统文件

  1. 打开一个您想在其中引用子系统框图的模型。

  2. 添加一个子系统的参考块使用Simulink库浏览器或金宝app快速块插入菜单。一个空子系统的参考块被添加到Simulink画布中。金宝app

  3. 的工具条上金宝app引用的子系统选项卡中,指定子系统框图文件的名称文件名称字段,或单击浏览导航到它。

    您也可以双击子系统的参考块指定子系统框图文件。

  4. 点击好吧以保存更改。

将现有子系统转换为引用子系统

您可以转换现有的子系统块到子系统的参考块。

考虑一个有两个的模型子系统如图所示。

在这个模型中,你有两个子系统积木- a控制器子系统和植物子系统。要转换控制器子系统块到一个引用的子系统:

  1. 选择控制器子系统块子系统块选项卡上,选择转换并点击转换为子系统引用

  2. 中为子系统组件指定名称子系统文件名字段。名称必须是有效的MATLAB名称。转换将在当前目录中创建一个子系统文件。单击,在指定位置新建文件浏览并导航到保存位置。接下来,将现有的测试利用转移到子系统框图中。要转移测试线束,请选择转移测试线束复选框,然后单击转换

    子系统块更改为子系统的参考块,在块图标的顶部显示子系统文件的名称。

提示

当您将一个链接块转换为一个引用的子系统时,请在该链接块的父库块中进行转换。一旦您将父库块转换为引用的子系统,它的所有链接块实例也将转换为引用的子系统。

不能将子系统转换为引用子系统:

  • 没有读写权限。

  • 有一个试图修改其内容的掩码。

编辑并保存引用的子系统

在包含引用子系统的多个实例的模型中,您可以编辑任何实例,并且在保存更改时,更新将传播到所有引用的实例。当您主动编辑一个被引用子系统的实例时,所有其他被引用的实例都将被锁定,无法进行编辑。

在打开的子系统文件的左下角显示一个标记,以表示该文件可进行编辑。徽章显示了两种状态:

  • 指示子系统文件可供编辑。右键单击徽章以查看该子系统的所有活动实例,并导航到每个实例。

  • 指示子系统文件不可编辑,因为正在积极编辑另一个实例。右键单击徽章以打开正在编辑的实例。

编辑了模型中的实例后,可以从保存选项可在模拟模型窗口的选项卡。的保存所有下拉菜单提供了两个保存更改的选项:

  • 保存所有—保存当前型号下的所有更新。

  • 保存指定引用文件—当修改了多个子系统文件时,只保存一个子系统文件。

添加系统掩码供子系统参考

您可以使用系统掩码来屏蔽子系统文件。为子系统文件创建系统掩码时,所有引用的实例共享相同的系统掩码。

屏蔽一个子系统文件。

  1. 打开要屏蔽的子系统文件。

  2. 的工具条上金宝app子系统选项卡上,单击创建系统掩码.或者,右键单击画布上的任意位置并选择面具并点击创建系统掩码.打开蒙版编辑器对话框。

  3. 添加掩码参数,单击好吧

请注意

  • 不能直接掩码子系统的参考块。掩码子系统的参考块,选择块。在引用的子系统选项卡上,单击创建系统掩码.该操作打开所引用的子系统文件并在其上创建掩码。

  • 不能使用set_param在屏蔽子系统的回调代码中。但是,如果子系统是从库中引用的,则可以这样做。

有关创建和编辑系统掩码的详细信息,请参见系统掩码简介

用一个测试工具模拟一个子系统框图

子系统框图不能像模型或子系统那样被模拟。但是,您可以在子系统框图上创建测试集并模拟测试集。此操作帮助您在编辑子系统框图时检查任何错误或差异。您可以将多个测试工具关联到一个子系统文件,并从一组可用的测试工具中为子系统设置一个默认的测试工具。

用测试装置模拟:

  1. 打开一个子系统框图。

  2. 的工具条上金宝app子系统选项卡上,单击添加测试带

    创建测试工具窗口出现。

    测试线束窗口

  3. 为新的测试工具指定一个名称并单击好吧.这成为默认的测试工具。

  4. 点击使用测试背带运行在不打开测试集的情况下在子系统上运行测试集。单击运行时打开背带复选框,以在子系统上运行测试套件时自动打开测试套件。

    测试装备选项

使用命令行设置测试工具

您可以使用以下命令设置子系统框图的默认测试工具:

set_param (' < subsystemfilename >”“DefaultTestHarness”' < testHarnessName >”);

子系统参考与以前版本的兼容性

当您将包含引用子系统的模型导出到R2019b之前的版本时,所有的子系统的参考块被转换为独立的子系统块。

在R2019b中创建的子系统文件不能导出到以前的版本。有关如何将Simulink模型导出到以前版本的信息,请参见金宝app导出模型到以前的Simulink版本金宝app

控制引用子系统编程

您可以创建一个被引用的子系统,在一个模型中找到可用的被引用的子系统,在一个块中更改被引用的子系统文件,并使用命令行界面检查文件的块图类型。

创建一个引用子系统

方法创建引用的子系统new_system命令:

new_system (subsystemfilename“子系统”

在模型中查找子系统引用

方法可以查找模型是否包含引用的子系统金宝appSimulink.findBlocksOfType功能:

金宝appSimulink.findBlocksOfType (bdroot“子系统”“ReferencedSubsystem”“。”仿金宝app真软件。FindOptions (“正则表达式”1))

你也可以使用find_system命令:

find_system (bdroot“正则表达式”“上”“BlockType”“子系统”“ReferencedSubsystem”“。”

两者都返回的数字子系统的参考模型中的块。默认情况下,find_system列出子系统引用实例内的所有子块。

如果你不想要find_system要查看所引用子系统的内部,请使用find_systemLookInsideSubsystemReference设置为.默认情况下,LookInsideSubsystemReference设置为

更改子系统的引用文件

类中引用的子系统文件可以更改子系统的参考控件通过命令行界面阻塞set_param命令:

set_param (gcb),“ReferencedSubsystem”' < subsystemfilename >”
对象当前引用的文件子系统的参考块,并将其替换为您指定的新子系统文件。

检查SLX或MDL文件是否为子系统框图类型

您可以检查SLX或MDL文件是否是可以放置在中的子系统框图类型子系统的参考使用以下命令阻止:

bdIsSubsystem (bdname)
这个命令返回逻辑1如果bdname。slx是一个子系统框图类型和逻辑0如果不是的话。使用该命令时,请确保“bdname. conf”已被删除。SLX已加载。

get_param (bdname“BlockDiagramType”

这个命令返回子系统如果bdname。slx是一个子系统框图类型。使用该命令时,请确保“bdname. conf”已被删除。SLX已加载。

金宝appSimulink.MDLInfo (bdname)

该命令给出了整个模型信息BlockDiagramType属性显示为子系统如果bdname。slx是一个子系统框图类型。

最佳实践

在模型中使用引用子系统时:

  • 要屏蔽一个被引用的子系统,请使用系统掩码。

  • 不要引用父子系统,因为它会创建一个引用循环。

  • 类只能引用子系统文件类型子系统的参考块。

相关的话题