子系统引用允许您将子系统的内容保存在一个单独的文件中,并使用子系统的参考堵塞。您可以创建引用相同子系统文件的多个实例。当您编辑引用子系统的任何实例时,更改保存在存储子系统的单独文件中,并且该文件的所有引用实例都同步。
笔记
子系统引用兼容SLX和MDL文件格式。
当您将一个子系统保存到一个单独的文件时,您可以通过使用多次重用它子系统的参考块引用相同的子系统文件。
你可以识别一个子系统的参考用方块图标相反角的三角形来方块。
引用的子系统支持常规子系统的所有语义。金宝app引用的子系统适用于父模型的上下文,与非参考子系统相比具有相同的执行行为。
子系统文件将子系统框图的内容存储在一个文件中。
一个子系统文件:
无法模拟的。
没有配置集。
没有模型工作区。
没有代码生成功能。
要创建一个子系统框图:
开放模型金宝app®.
在“开始”页面上,在“Simulink产品”组中,单金宝app击空白子系统.
或者,在Simulink工具条中金宝app模拟选项卡上,选择新并点击空白子系统.将打开子系统窗口。
添加内容并单击保存.
中指定一个文件名另存为对话框。文件名必须是有效的MATLAB名称。
这在指定的位置创建了一个新的子系统文件。
要以编程方式创建子系统文件,请使用命令:
new_system (subsystemfilename“子系统”)
有关以编程方式控制子系统文件的更多信息,请参见以编程方式引用控制子系统.
打开要引用子系统框图的模型。
添加一个子系统的参考块使用Simulink库浏览器或金宝app快速块插入菜单。一个空子系统的参考块被添加到Simulink画布中。金宝app
在Simuli金宝appnk工具条中,在引用的子系统选项卡中的子系统框图文件的名称文件名称场,或点击浏览导航到它。
或者,您可以双击子系统的参考块,以指定子系统框图文件。
点击好吧保存更改。
您可以转换现有的子系统块到A.子系统的参考堵塞。
考虑两个模型子系统块如图所示。
在这个模型中,你有两个子系统块——一个控制器子系统和一个植物子系统。转换控制器子系统块到引用的子系统:
选择Controller子系统块并在子系统块选项卡上,选择转变并点击转换到子系统参考.
指定子系统组件的名称子系统文件名字段。名称必须是有效的MATLAB名称。转换将在当前目录中创建一个子系统文件。单击,在指定位置创建文件浏览并导航到保存位置。接下来,将现有的测试线束转移到子系统框图。要转移测试线束,请选择将测试线束转移到子系统框图上复选框,然后单击转变.
这子系统块更改为子系统的参考块,其子系统文件的名称显示在块图标的顶部。
提示
将链接块转换为引用的子系统时,请在该链接块的父库块中执行此操作。将父库块转换为引用的子系统后,其所有链接的块实例也转换为引用的子系统。
在以下情况下,不能将一个子系统转换为引用的子系统:
没有读写权限。
有一个试图修改其内容的掩码。
在包含引用子系统的多个实例的模型中,您可以编辑任何实例,并在保存更改后,更新传播到所有引用的实例。当您积极编辑引用子系统的实例时,所有其他引用的实例都被锁定,并且不可用以供编辑。
在打开的子系统文件的左下角显示一个徽章,表示文件的可编辑性。徽章显示两种状态:
指示子系统文件可用于编辑。右键单击该面板以查看该子系统的所有活动实例,并导航到每个实例。
表示子系统文件不可用作编辑,因为正在积极地编辑另一个实例。右键单击徽章以打开正在编辑的实例。
在模型中编辑了实例之后,可以从保存选项可用模拟模型窗口的选项卡。这保存全部下拉菜单提供了两个选项来保存更改:
保存全部—保存当前模型中的所有更新。
保存特定的引用文件—当对多个子系统文件进行了修改时,保存指定的子系统文件。
您可以使用系统掩码屏蔽子系统文件。为子系统文件创建系统掩码时,所有引用的实例都共享相同的系统掩码。
屏蔽子系统文件:
打开要屏蔽的子系统文件。
在Simuli金宝appnk工具条中,在子系统选项卡,单击创建系统掩码.或者,右键单击画布上的任何位置并选择面具并点击创建系统掩码.将打开“屏蔽编辑器”对话框。
添加掩码参数,单击好吧.
笔记
你不能直接掩盖一个子系统的参考堵塞。面具A.子系统的参考块,选择块。在引用的子系统选项卡,单击创建系统掩码.此操作将打开被引用的子系统文件,并在其上创建一个掩码。
您无法使用参数使用set_param
在屏蔽子系统的回调代码中。但是,如果子系统是从库引用的,则可以这样做。
有关创建和编辑系统蒙版的详细信息,请参见系统掩码简介.
子系统块图不能像模型或子系统一样模拟。但是,您可以在子系统框图上创建测试线束并模拟测试线束。此操作可帮助您在编辑子系统框图时检查任何错误或差异。您可以将多个测试线束关联到子系统文件,并为来自一组可用的测试线束设置子系统的默认测试线束。
用测试线束模拟:
打开一个子系统框图。
在Simuli金宝appnk工具条中,在子系统选项卡,单击添加测试线束.
这创建测试工具窗口出现。
指定新测试工具的名称并单击好吧.这将成为默认的测试工具。
点击使用测试工具运行在工具栏上运行子系统上的测试工具,而不打开测试工具。单击开式运转挽具复选框,以便在子系统上运行测试工具时自动打开它。
您可以使用该命令设置子系统框图的默认测试线束:
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文件是否是一个子系统框图类型,它可以放在子系统的参考阻止使用以下命令:
bdissubsystem(bdname)
逻辑1
如果bdname。slx是一个子系统框图类型和逻辑0
如果不是的话。使用此命令时,请确保加载bdname.slx。
get_param (bdname“BlockDiagramType”)
此命令返回子系统
如果bdname.slx是子系统块图类型。使用此命令时,请确保加载bdname.slx。
金宝appSimulink.MDLInfo (bdname)
该命令提供了整个模型信息BlockDiagramType
财产显示为子系统
如果bdname.slx是子系统块图类型。
当在模型中使用引用的子系统时:
要屏蔽引用的子系统,请使用系统屏蔽。
不要引用父子系统,因为它会创建一个引用循环。
a只能引用子系统文件类型子系统的参考堵塞。