主要内容

子系统的参考

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

请注意

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

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

你可以识别子系统的参考用方块图标相反角的三角形来方块。

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

创建子系统框图

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

子系统文件:

  • 无法模拟。

  • 没有配置集。

  • 没有模型工作区。

  • 没有代码生成功能。

要创建子系统框图:

  1. 开放模型金宝app®

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

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

  3. 添加内容并点击节省

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

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

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

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

有关以编程方式控制子系统文件的更多信息,请参阅以编程方式引用控制子系统

在模型中引用子系统文件

  1. 打开要在其中引用子系统框图的模型。

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

  3. 在Simuli金宝appnk工具条中,在引用的子系统选项卡中的子系统框图文件的名称文档名称场,或点击浏览导航到它。

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

  4. 点击好的保存更改。

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

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

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

在这个模型中,你有两个子系统块 - A.控制器子系统和一个植物子系统。将控制器子系统块到引用子系统:

  1. 选择Controller子系统块并在子系统块选项卡上,选择转换并点击转换为子系统参考

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

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

提示

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

当子系统时,您无法将子系统转换为引用的子系统:

  • 没有读/写权限。

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

编辑和保存引用的子系统

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

徽章显示在打开子系统文件的左下角,以表示文件的可用性。徽章显示了两个国家:

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

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

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

  • 保存所有—保存当前模型中的所有更新。

  • 保存特定引用文件—当对多个子系统文件进行了修改时,保存指定的子系统文件。

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

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

掩盖子系统文件:

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

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

  3. 添加掩码参数并单击好的

请注意

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

  • 不能使用set_param在屏蔽子系统的回拨代码中。但是,如果子系统从库中引用,则可以执行此操作。

有关创建和编辑系统掩码的更多信息,请参阅系统掩码简介

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

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

使用测试工具进行模拟:

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

  2. 在Simuli金宝appnk工具条中,在子系统选项卡上,单击添加测试工具

    创建测试工具窗口出现。

    测试工具窗口

  3. 为新的测试线束指定名称,然后单击好的.这将成为默认的测试工具。

  4. 点击使用测试工具运行在工具栏上运行子系统上的测试工具,而不打开测试工具。单击开式运转挽具复选框,以便在子系统上运行测试工具时自动打开它。

    测试工具的选择

使用命令行设置Test工具

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

set_param (' < subsystemfilename >”'defaulttestharness'' < testHarnessName >”);

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

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

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

以编程方式引用控制子系统

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

创建引用的子系统

您可以使用使用的引用子系统new_system命令:

new_system(subsystemfilename,“子系统”

在模型中查找子系统参考

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

金宝appSimulink.findBlocksOfType(bdroot, 'SubSystem','ReferencedSubsystem','.',Simulink.FindOptions('RegExp',1))

你也可以用thefind_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。基金是加载。

get_param (bdname“BlockDiagramType”

这个命令返回子系统如果bdname.slx是子系统块图类型。当使用此命令时,请确保bdname。基金是加载。

金宝appsimulink.mdlinfo(bdname)

该命令提供了整个模型信息blockdiagramype.属性显示为子系统如果bdname.slx是子系统块图类型。

最佳实践

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

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

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

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

相关话题