主要内容

子系统参考

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

笔记

子系统参考与SLX和MDL文件格式兼容。

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

您可以识别一个子系统参考按块图标对角中的三角形进行块。

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

创建子系统框图

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

一个子系统文件:

  • 无法模拟的。

  • 没有配置集。

  • 没有模型工作区。

  • 没有代码生成功能。

要创建一个子系统框图:

  1. 开放Sim金宝appulink®

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

    或者,在Simulink toolstrip金宝app中的模拟选项卡,选择刚出现的点击空白子系统。子系统窗口将打开。

  3. 添加内容并单击保存

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

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

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

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

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

在模型中引用子系统文件

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

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

  3. 在Simuli金宝appnk toolstrip中的参考子系统选项卡中指定子系统框图文件的名称文件名称字段,或单击浏览导航到它。

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

  4. 点击好吧保存更改。

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

您可以转换现有文件子系统封锁子系统参考

考虑两个模型子系统块,如图所示。

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

  1. 选择控制器子系统块,然后在子系统块选项卡,选择转换点击转换到子系统参考

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

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

提示

将链接块转换为参照子系统时,请在该链接块的父库块中进行转换。将父库块转换为参照子系统后,其所有链接块实例也将转换为参照子系统。

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

  • 没有读写权限。

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

编辑和保存引用的子系统

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

打开的子系统文件的左下角显示一个标记,表示该文件可供编辑。标记显示两种状态:

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

  • 表示子系统文件不可编辑,因为另一个实例正在进行编辑。右键单击该标记可打开正在编辑的实例。

在模型中编辑了实例之后,可以从保存选项可在模拟“模型”窗口的选项卡拯救一切下拉列表提供了两个保存更改的选项:

  • 拯救一切–保存当前型号中的所有更新。

  • 保存特定的引用文件–在对多个子系统文件进行更改时保存特定子系统文件。

添加子系统引用的系统掩码

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

屏蔽子系统文件:

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

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

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

笔记

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

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

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

使用测试线束模拟子系统框图

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

要使用测试线束进行模拟,请执行以下操作:

  1. 打开子系统框图。

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

    这个创建测试线束窗口出现。

    测试线束窗口

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

  4. 点击使用测试线束运行在toolstrip上运行子系统上的测试线束,而不打开测试线束。单击运行时打开线束复选框,在子系统上运行测试线束时自动打开测试线束。

    测试线束选项

使用命令行设置测试线束

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

设置参数(,“DefaultTestHarness”,);

子系统引用与以前版本的兼容性

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

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

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

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

创建一个被引用的子系统

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

new_system (subsystemfilename“子系统”)

在模型中查找子系统引用

您可以使用金宝appSimulink.findBlocksOfType功能:

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

您也可以使用查找系统命令:

查找系统(bdroot,“RegExp”,“开”,“块类型”,“子系统”,“参考子系统”,'.')

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

如果你不想查找系统要查看引用的子系统内部,请使用查找系统具有LookInsideSubsystemReference着手. 默认情况下,LookInsideSubsystemReference被设置为

更改子系统的引用文件

您可以更改在中引用的子系统文件子系统参考使用设置参数命令:

设置参数(gcb,“参考子系统”,)
此命令将更改当前由用户引用的文件子系统参考块并将其替换为您指定的新子系统文件。

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

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

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

获取参数(bdname,“块图类型”)

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

金宝appSimulink.MDLInfo (bdname)

此命令提供了整个模型信息,其中BlockDiagramType属性显示为子系统如果bdname。slx是一种子系统框图类型。

最佳实践

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

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

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

  • 只有子系统文件类型才能被引用子系统参考

相关的话题