主要内容

减少包含变体块的模型

笔记

您需要一个金宝app®设计验证器™减少模型的许可。

变体配置的概述

模型层次结构可能包含几个变体块,每个块都有许多变体选择。您必须将模型中的每个变体选择与变体控制这用于确定选择是活动性还是无效。这些变体选择的组合代表了要建模的系统的特定实现。它也对应于模型中的特定变体路径。

一个变体配置用于代表这种变体选择的组合。它包含一组变体控制变量及其值,您可以使用它们激活模型中的特定变体路径。模型的变体配置数量可能很高,具体取决于模型中使用的变体控制变量的数量。您可以使用变体管理器来创建和管理此类变体配置。

变体还原器

您可以使用变体还原工具在Variant Manager中,可以自动生成一个简化的独立模型,该模型仅包含输入模型中选定的变体路径 - 生成的模型被称为一个还原模型

还原模型保留了您从父型变体模型中选择的变体配置。该工具有一个还原模式这提供了多种指定要保留的配置的方法。您可以根据以下方式选择配置

  • 全局工作空间中变体控制变量的当前值。

  • 为模型创建的命名变体配置。

  • 变体控制变量的指定值。

您可以选择使用模拟或代码生成模式以使用该模型的一部分来编译输入模型编译模式选项。

该工具执行以下操作:

  • 为您选择保留在还原模型中的变体配置中的非活动变体路径中的模型组件。

  • 删除或修改模型组件,例如块,掩码,模型参考,子系统参考,库,依赖性文件,例如MAT或.sldd文件和输入模型中的变量以创建还原模型。有关更多信息,请参阅考虑和局限性

  • 将简化的伪像包装到用户指定的输出文件夹中。

  • 生成简化过程的详细摘要,有助于分析这些变化。

该工具的一个示例用例是用于供应商的工作流。

考虑一个模型变体源变体子系统具有两个有条件的变体选择的块,V == 1V == 2, 分别。该图显示了与与对应的变体配置的简化模型v = 1

减少具有变体源和变体子系统模型的示例

使用变体管理器减少变体模型

考虑模型变体还原器。该模型包含一个变体源块,a变体水槽街区和一个变体子系统通过这些变体选择的障碍:

  • 变体源V == 1V == 2

  • 变体水槽W == 1,,,,W == 2, 和W == 3

  • 变体子系统V == 1V == 2

该模型具有两个预定义的变体配置,命名为config1((v == 1 && w == 2) 和config2((v == 2 && w == 2)。这些配置保存在变体配置数据对象中,slexvariantreducer_config

具有变体源,变体水槽和变体子系统的模型。

为了减少模型,请执行以下步骤:

  1. 开放式变体管理器。在造型选项卡,打开设计单击部分变体经理。或者,右键单击任何变体块上的变体徽章,然后选择在变体经理中打开

    变体块上的变体徽章

    变体管理器打开并显示预定义的配置。

    变体管理器窗口。

  2. 点击减少模型。打开“变体还原”对话框。

    变体还原对话框。

  3. 在里面还原模式部分,选择:

    • 当前变体控制值:基于全局工作空间中的变体控制变量值减少模型。

      具有还原模式的变体还原对话框作为当前变体控制值。

    • 指定变体配置:减少模型命名配置在与模型关联的变体配置数据对象中定义。

      选择带还原模式的变体还原对话框作为指定变体配置。

      笔记

      在减少过程中,最后选定配置中的控制变量值存储在全局工作区中。

    • 指定变体控制值:通过指定变体控制变量的值来减少模型。您可以创建与要保留在还原模型中的不同变体配置相对应的多个变量组。在每个变量组中,您必须指定每个变量的变体控制变量和要考虑的值。

      点击新变量组。您可以指定变体控制值或选择全系列或者被忽略来自列表。

      指定变体控制值作为向量,您可以减少该变量的所有组合的模型。例如,如果指定值v = 1w = [1,2],然后为配置减少模型{v == 1,w == 1}{v == 1,w == 2}

      如果您选择全系列作为变体控制值,参考值激活列以输入成功模型汇编所需的参考值。对于指定变体控制变量的所有有效值,模型将减小。如果您选择被忽略作为变体控制值,那么在减少模型时不考虑该变体控制变量。

      笔记

      要使用全范围变体控制变量,变体激活时间在使用该变体控制变量的块的块参数对话框中代码编译

      如果通过指定变量组调用变体减少,则还原模型将具有与与之关联的变量组相对应的变体配置。这覆盖了原始模型中存在的任何现有变体配置。

      选择的变体还原对话框具有还原模式,以指定变体控件值。

  4. 编译模式, 选择SIM编译模型以进行仿真或代码根作为减少模型的一部分,在代码生成模式下编译模型。如果该模型包含具有的变体块变体控制模式参数设置为SIM Codegen切换,您可以选择代码根在还原模型中保留块的代码生成分支。对于默认值SIM,变体还原器编译并保留了顶级模型中的仿真分支。

  5. 选择保存信号属性保留原始模型和还原模型之间的编译信号属性。选择此选项后,变体还原器试图通过在简化模型中的适当块端口上添加信号规范块来保留原始模型和还原模型之间的编译信号属性。编译的信号属性包括信号数据类型,信号尺寸,编译样品时间等。

  6. 选择生成详细的摘要为了在输出文件夹中生成变体摘要。变体简化摘要包含变体还原选项,,,,原模型差异,,,,依赖的工件,,,,回调警告。有关更多信息,请参阅生成变体简化摘要

    笔记

    要生成详细的摘要,您必须有金宝appSimulink报告生成器执照。

  7. 将值指定为后缀模型后缀场地。模型后缀值附加到还原的模型,数据字典和相关的伪像。默认情况下,后缀为_r

  8. 指定输出文件夹以存储还原模型。

    笔记

    选择开放还原模型复选框将当前的工作文件夹更改为输出文件夹。

  9. 点击减少。现在创建了所需配置的简化模型。如果该模型包含已解决的库链接或引用模型,则为指定的配置减少相应的父,并在模型中引用。简化的模型,简化的参考模型和简化的库从相应的模型,参考模型或带有带有的库。_r((模型后缀)附加。

    还原模型

生成变体简化摘要

变体还原器提供了一个选项,将减少过程作为HTML文件生成详细报告。该报告保存在输出文件夹中,其中保存了减少的伪像。

笔记

一个金宝appSimulink报告Generator™生成变体摘要需要许可证。

变体简化摘要可用于:

  • 验证用于减少的输入和输出选项,例如,输入变体配置和输出文件夹位置。

  • 分析原始模型和还原模型之间的差异,例如:

    • 已插入,删除或修改的块。

    • 已修改的面具。

    • 已修改的依赖数据文件或Simulink缓存文件。金宝app

  • 确定任何警告。

  • 确定是否减少了代码生成分支的模型。

  • 确定未减少的组件并确定可能需要的手动更新,例如回调代码和状态流®变体过渡。

  • 导航原始模型和简化模型的交互视图。

要从“变体还原对话框”生成报告,请选择生成详细的摘要减少期间的复选框。要在以编程方式降低模型时生成报告,请设置'生成''名称值参数真的。例如,此命令生成摘要并将其保存到路径l:\型号\ variantreducerrpt

addpath(fullfile(matlabroot,'例子',,,,'金宝appsimulink_variants',,,,'主要的');open_system(“ slexvariantreducer”);金宝appsimulink.variantmanager.ReduceModel...((“ slexvariantreducer”,,,,“名称configurations”,{'config1'},,'生成'',真的,'导出目录',,,,'L:\模型');

变体摘要

变体条件上金宝appSimulink函数还原后块

如果一个包含一个的模型金宝appSimulink函数对于块上可用变体条件的任何或组合,块被减少金宝appSimulink函数还原模型中的阻塞变得无条件。

考虑一个包含一个的变体模型金宝appSimulink函数变体控制参数值设置为V == 1 ||V == 2 ||V == 3 ||V == 4。如果为变体控制值减少模型v = 1,v = 2,v = 3, 这金宝appSimulink函数还原模型中的块是无条件的。如果为变体控制值减少模型v = 1,v = 2,v = 5, 这金宝appSimulink函数还原模型中的块保持有条件V == 1 ||V == 2作为变体控制价值。

编程减少模型

要以编程方式降低模型,请使用语法:

金宝appsimulink.variantmanager.ReduceModel(型号,<名称>,

例如,

  • 根据全局工作空间中的变体控制变量值减少模型:

    金宝appsimulink.variantmanager.reducemodel('sldemo_variant_subsystems'
  • 基于全局工作空间中其变体控制变量值的模型减少到指定文件夹:

    金宝appsimulink.variantmanager.reducemodel('sldemo_variant_subsystems',,,,'导出目录',,,,'Outdir'
  • 基于命名的变体配置减少模型:

    金宝appsimulink.variantmanager.reducemodel('sldemo_variant_subsystems'...,,,,“名称configurations”,{'linInterstd',,,,“ nonlinexterhighfid”})
  • 通过以变异控制变量结构的形式指定配置来减少模型:

    金宝appsimulink.variantmanager.reducemodel('iv_model',,,,“ variableconfigurations”,{'v',1,'W',[1 2]})

    在这里,指定了两个配置与{v = 1,w = 1}{v = 1,w = 2}, 分别。

  • 通过指定变体控制值来减少模型w'是一个全范围的变体控制值:

    金宝appsimulink.variantmanager.reducemodel(“ slexvariantreducer”,,,,...“ variableconfigurations”,{'v',1},“ fullrangeVariobles”,{'W',1});

    在这里,计算四个配置对应于{v == 1,w == 1},{v == 1,w == 2},{v == 1,w == 3}{v == 1,w == 0}, 分别。

有关以编程方式降低模型的更多信息,请参见还原模型

考虑和局限性

  • 减少包含的模型变体连接器不支持块。金宝app

  • 减少包含具有变体块的模型变体激活时间参数设置为启动不支持。金宝app

  • 存储还原模型的输出文件夹不得不在Matlabroot

  • 如果输出文件夹包含variant_reducer.log从上一个模型减少的文件中,还原器覆盖该输出中可用的所有可用文件,以进行任何后续减少。

  • 将其他块自动添加到还原模型中,以确保一致的仿真语义。其他块可以包括信号规范一致的信号属性(数据类型,尺寸,复杂性)或地面终结者无连接信号的块。

  • 在降低模型期间,保留了活动路径上存在的注释块,而在不活动路径上存在的注释块被删除。

  • 信号属性,例如来自状态流图中非活动元素的数据类型,复杂性或尺寸,可能不会保留在还原模型中。

未减少的模型组件

这些模型组件不会自动减少,可能需要手动干预。要识别此类文物,请选择通过选择生成详细的摘要复选框中的“变体还原”对话框中的复选框。

  • 回调代码:

    • 诸如initfcn,,,,预付,,,,后载,必须手动修改蒙版初始化代码和蒙版参数回调代码。

    • 删除了非活动变体组件中的回调代码。这可能会导致减少模型中的意外行为。

  • 在降低模型期间,状态流画布中的元素(包括变体过渡)未经修改。

  • 如果模型对位于下面的文件有依赖性Matlabroot(金宝appSimulink库,.m文件,。垫文件,或.sldd文件),在降低模型期间,它们未经修改或复制到输出文件夹。

  • 变体参数对象(金宝appsimulink.variantvariable班级没有减少。

也可以看看

相关示例

更多关于