主要内容

本页采用了机器翻译。点击此处可查看英文原文。

通过使用克隆检测启用组件重用

克隆是将具有相同模块类型和连接的模型模式。克隆件检测器 应用程序可识别模型中或子系统边界内的克隆。您可以使用 Clone Detector 应用程序或 MATLAB® 命令以编程方式重用组件,方法是从克隆模式创建库块,并将克隆替换为指向这些库块的链接。您还可以将克隆内容替换为现有库中的链接。请参阅使用模型库识别和替换克隆

完全克隆体和相似克隆体

克隆体可以分为两类:完全克隆体和相似克隆体。完全克隆体具有相同的模块类型、连接和参数值。相似的克隆体具有相同的模块类型和连接方式,但模块参数值可以不同。例如,在相似的克隆中,Gain 模块的值可以不同,具有不同操作的 Sum 块也被视为相似的克隆,但在完全相同的克隆中,它们必须相同。

完全相同的克隆体和相似的克隆体都可能存在以下差异:

  • 两个克隆体可以有不同的排序顺序。

  • 如果模块连接相同,则信号线的长度以及区段的位置和大小可以不同。

  • 模块和信号可以有不同的名称。

识别出克隆后,您可以将它们替换为指向库块的链接。类似的克隆链接到屏蔽库子系统。

指定检测克隆的位置

克隆检测器应用程序提供了两种方法来识别模型中的克隆体。您可以使用克隆检测设置,在子系统边界内或模型中的任何位置搜索克隆。

  • 子系统克隆:仅在子系统内识别克隆。

  • 跨模型克隆:识别整个模型中的克隆体。

识别完全相同和相似的克隆体

本示例展示了如何使用克隆检测器应用程序来识别完全相同和相似的子系统克隆,然后将其替换为指向库块的链接。

  1. 打开模型 ex_detect_clones

    openExample("ex_detect_clones")

    Simulink canvas for ex_detect_clones model

  2. 将模型保存到您的工作文件夹中。必须打开模型才能访问该应用程序。

  3. App 选项卡上,点击克隆检测器。或者,在 MATLAB 命令行中输入:

    clonedetection("ex_detect_clones")
  4. 该 App 会打开克隆检测器选项卡。本示例将带您了解每个部分。

    Clone Detector toolstrip with sections for View, Prepare, Detect, Refactor, and Verify

用于克隆检测的设置窗格

该应用程序在多个窗格中显示信息。您可以在视图菜单下选择三个窗格。这些窗格分别是:

  • 帮助 - 选择此项可访问包含克隆检测工作流程概述的帮助窗格。

  • 结果 - 选择以查看克隆检测结果和操作窗格。

  • 属性 - 选择以查看“检测到的克隆属性”窗格。

设置克隆检测参数

您可以使用设置下拉菜单设置克隆检测的参数。

  • 选择 忽略以下内容的差异 > 信号名称以识别和分类信号名称不同的克隆。

  • 选择忽略以下内容的差异 > 模块属性以识别和分类模块属性不同的克隆。有关模块属性的更多信息,请参阅 指定模块属性

  • 点击用子系统引用替换精确克隆查找并替换为子系统参考块的精确克隆。请参阅将“精确克隆”替换为“子系统引用”

  • 点击排除组件可访问排除模型引用排除库链接排除非活动和注释掉的区域选项。启用排除非活动和注释掉的区域选项可以识别模型中由于 Variant Source 模块产生的可变数量克隆。有关详细信息,请参阅从克隆检测中排除组件。启用排除模型引用排除库链接选项将导致识别出的克隆数量减少,具体取决于模型。

  • 点击与库模式匹配并选择外部库以查找克隆。请参阅利用外部库识别克隆

  • 不匹配的模块参数的最大数量默认是 50。这表示子系统之间可以变化的参数数量,但仍能被归类为相似的克隆。您可以减少这个数量,以便识别和分类更少的相似克隆体。将值设置为零,则只会识别完全相同的克隆体。

  • 点击检测整个模型内的克隆以启用检测模型中任意位置的克隆。您可以选择最小区域大小最小克隆组大小的值来检测具有这些匹配块的克隆。最小区域大小是每个克隆的块数,最小克隆组大小是该克隆组中存在的克隆数。每个的默认大小为 2。请参阅在模型中寻找克隆

注意

为了更快地检测跨模型的克隆,请考虑使用更大的最小克隆组大小最小区域大小值。

在模型中识别子系统克隆

  1. 要查找模型中的克隆,点击要分析的子系统。在检测部分,如果引脚已解锁,则所选子系统名称将显示在在系统中查找克隆选项卡下。使用密码记住选择结果。

    Find Clone in System tab in Detect section of toolstrip

  2. 点击查找克隆以标识克隆。

    Simulink canvas for ex_detect_clones model with blocks highlighted in red and blue

  3. 子系统的颜色会发生变化,以反映已识别出的相似和完全相同的克隆体。红色高亮部分代表完全相同的克隆体,不同深浅的蓝色高亮部分代表相似的克隆体。

克隆检测器应用程序会在工作目录中创建一个备份文件夹。备份文件夹名称以 m2m_<model name> 为前缀。它将克隆数据保存在 MAT 文件中。在重构模型以将克隆替换为指向库块的链接之后,您还可以在此文件夹中找到原始模型的备份。

分析克隆检测结果

识别出克隆体后,您可以分析克隆体检测结果,并根据需要对模型进行更改。分析结果:

  1. 克隆检测结果和操作面板的克隆结果选项卡中,显示了克隆组列表。

  2. 点击 Exact Clone Group 1 旁边的 > 符号,即可查看所有完全相同的子系统、块的数量以及模块的差异。对 Similar Clone Group 1Similar Clone Group 2 重复相同的操作。

  3. 克隆检测结果和操作窗格中,点击日志选项卡。点击日志窗格上的超链接。

    克隆检测报告以 HTML 格式生成,并保存在 MATLAB 当前文件夹中。该报告在新 Web 浏览器窗口中打开,显示克隆摘要、单个检测结果以及有关克隆组、克隆类型、检测参数和应用于模型的排除配置的详细信息。

    Clone detection report

  4. 点击模型层次结构标签。点击超链接以突出显示模型中的特定子系统。要返回突出显示所有克隆,请在克隆结果选项卡上点击突出显示所有克隆

  5. 克隆结果选项卡上,展开 Similar Clone Group 1 并点击查看参数差异超链接。

  6. 检测到的克隆属性面板上,点击 ex_detect_clones/SS5/G9 超链接,这将在子系统 SS5 中打开增益模块 G9,您可以在其中访问与基线子系统不同的参数。

  7. 将增益参数的值从 A 更改为 B,然后点击查找克隆。这将把 Similar Clone Group 1 重新分类为 Exact Clone Group 2,因为您解决了子系统中的差异,并将其转换为一个精确的克隆。

  8. 重构好处面板下,您可以评估各种类型克隆的百分比。

    克隆检测结果和操作窗格的克隆结果选项卡中,选择要重构的克隆。选择所有克隆组进行重构,以减少模型重用的 22.5806%

    Detected Clone properties with Refactor Benefits for Overall, Exact, and Similar types of clones

替换克隆

  1. 您可以使用默认库名称,也可以在替换克隆之前在克隆结果选项卡上更改库文件的名称及其位置。

  2. 点击替换克隆

    模型已重构,克隆部分已替换为指向工作目录中 newLibraryFile 库文件的链接。

  3. 您可以通过点击克隆检测结果和操作窗格的克隆结果选项卡中的还原按钮,将模型恢复到其原始状态。

检查模型的等效性

如果您拥有 Simulink® Test™ 许可证,您可以使用检查等效性下拉按钮并点击它。窗口打开并显示当前模型已成功重构为等效模型。

Equivalency Check window with button to View Results

限制

不支持识别可配置子系统中的克隆。

另请参阅

主题