主要内容

子系统的参考

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

笔记

子系统引用兼容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名称。转换将在当前目录中创建一个子系统文件。单击,在指定位置创建文件浏览并导航到保存位置。接下来,将现有的测试线束转移到子系统框图。要转移测试线束,请选择将测试线束转移到子系统框图上复选框,然后单击转变

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

提示

将链接块转换为引用的子系统时,请在该链接块的父库块中执行此操作。将父库块转换为引用的子系统后,其所有链接的块实例也转换为引用的子系统。

在以下情况下,不能将一个子系统转换为引用的子系统:

  • 没有读写权限。

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

编辑和保存引用的子系统

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

在打开的子系统文件的左下角显示一个徽章,表示文件的可编辑性。徽章显示两种状态:

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

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

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

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

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

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

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

屏蔽子系统文件:

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

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

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

笔记

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

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

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

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

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

用测试线束模拟:

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

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

    创建测试工具窗口出现。

    测试工具窗口

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

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

    测试工具的选择

使用命令行设置测试线束

您可以使用该命令设置子系统框图的默认测试线束:

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

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

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

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

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

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

创建引用的子系统

控件可以创建引用的子系统new_system命令:

new_system (subsystemfilename“子系统”

在模型中查找子系统参考

如果模型包含使用引用的子系统,可以找到使用的金宝appsimulink.findblocksoftype.功能:

金宝appsimulink.findblocksoftype(bdroot,'subsystem','引用的subsystem','。',simulink.findoptions('regexp',1))

你也可以使用find_system.命令:

find_system(bdroot,“正则表达式”'在''blocktype'“子系统”'参考系统''。'

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

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

更改子系统的引用文件

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

set_param(gcb,'参考系统'''
该命令更改当前被引用的文件子系统的参考块并将其替换为您指定的新子系统文件。

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

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

bdissubsystem(bdname)
此命令返回逻辑1如果bdname。slx是一个子系统框图类型和逻辑0如果不是的话。使用此命令时,请确保加载bdname.slx。

get_param (bdname“BlockDiagramType”

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

金宝appSimulink.MDLInfo (bdname)

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

最佳实践

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

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

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

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

相关的话题