在基于模型的设计工作流中,为系统组件创建多个设计变体是满足不同需求集的必要条件。这些需求可以满足不同的市场需求、客户偏好或地理特征。在整个开发生命周期中,从需求到部署,您可能需要在这些设计选择之间进行切换。
金宝app®变体功能允许您在单个模型中表示系统的所有设计方案。每个设计选择都作为变体选择合并到模型中。这些模型有一个固定的公共结构和一个有限的可变组件集,这些可变组件取决于变量的选择。这个模型展示了变体源块可帮助您实现输入信号的变体选择。非活动选择出现褪色。
例如,请参见使用变体为多个系统创建一个模型.
在基于模型的设计中使用变体有以下几个好处:
变体允许您为许多系统设计一个模型。
您可以快速地将设计可能性作为变体原型,而不必注释掉模型的部分。
Variants帮助您开发用于重用和定制的模块化设计平台。这种方法通过降低复杂性来提高工作流程速度。
如果模型组件有几个可选配置,您可以在不改变固定组件的情况下探索可选配置。
您可以使用不同的变体配置来模拟或从相同的模型生成代码。
您可以为给定的测试套件模拟每种设计可能性。
如果您正在使用大规模设计,可以在多核计算机集群上分发测试这些设计的过程。或者,您可以将不同的测试套件映射到设计设计特定测试的有效管理的替代方案。
您可以从具有许多变体的模型生成减少模型的variant配置的子集。
以下是您可以使用Variants的三种方案。
表示多个模拟、代码生成或测试工作流的模型。 |
|
在组件级包含多个设计选择的模型。 |
|
这些模型大部分是相似的,但有一些细微的变化,例如在您想要将测试模型与调试模型分离的情况下。左边的测试模型有一个固定的设计。在右侧,相同的测试模型包含一个为调试目的而引入的变体。 |
|
变体块帮助您在单个模型中表示系统组件的多个结构或算法实现,并允许您根据需求在它们之间进行切换。有关Simulink中的变体块类型的概述,请参见金宝appSimulink中的变体块金宝app.
变异参数帮助您实现需要更改块参数值的设计变化。有关更多信息,请参见使用变量参数重用具有不同值的块参数.
变体过渡允许您在同一状态流中转换到多个设计配置®图表。有关更多信息,请参见使用变量转换生成代码(Stateflow).
维变异允许指定根据不同条件而变化的符号维度。看到在生成的代码中实现数组大小的维度变量(嵌入式编码).
AUTOSAR变体使您能够使用变体块实现带有变体点的AUTOSAR软件组件。看到模型AutoSAR Variants.(AUTOSAR Blockset).
根据模型设计使用这些变体块:
分层变体块在模型的独立层次结构中创建组件的多个实现。
内联变体块以表示模型中相同级别的所有变体实现。
基于事件的变体使用变量来建模上下文相关的系统行为。
类型的类型 | 变体块 | 使用 |
---|---|---|
分层变体块 | 不同的子系统 | 的不同的子系统块是预先配置的模板子系统代表变体选择的块。 的不同的子系统块允许的组合子系统块,模型块,或子系统的参考块作为变量选择。 |
变体模型 | 的变体模型块是一个预先配置了两个的模板模型代表变体选择的块。 的变体模型块允许的组合子系统块,模型块,或子系统的参考块作为变量选择。 |
|
内联变体块 | 变体源 | 的变体源块允许您将变体选择定义为连接到其每个Inports的块区域。该块提供信号源的变化。 |
变体水槽 | 的变体水槽块允许您将不同的选择定义为连接到它的每个输出的块区域。块提供信号目的地的变化。 | |
手动变体源 | 的手动变体源块是一个切换开关,允许您在其导入处定义多个变体选择。 | |
手动变体水槽 | 的手动变体水槽块是一个切换开关,允许您在其输出端口定义多个变体选择。 | |
不同的连接器(Simscape) | 的不同的连接器块允许您在物理网络中定义不同的选择。您可以在模拟期间在网络中的组件之间切换,而不必物理地删除组件或将它们从模拟中排除。 | |
基于事件的变体 | 金宝app仿真软件的功能 | 的变体功能金宝app仿真软件的功能块允许块可有条件可用。您可以在函数调用端口块上指定变体条件,或者块可以从其函数来电块继承条件。 |
初始化函数,重置功能,终止函数块 | 中的变体功能初始化,重置,终止块允许块有条件地可用。您可以在事件侦听器块上指定可变条件。 |
此表呈现了层次结构和内联变量块之间的比较。
功能 | 变体源和变体水槽块 |
不同的子系统和变体模型块 |
---|---|---|
变体的选择表示 |
港口数量 |
子系统,模型,或子系统的参考块 |
允许在单独的层次结构中实现变体选择 |
没有 |
是的 |
金宝app支持变体选项中灵活的输入和输出数量(选项没有类似的接口) |
没有 |
是的,如果是在变体子系统之外传播条件参数设置为 |
选项指定默认变体 |
是的 |
是的 |
金宝app支持控制端口 |
没有 |
是的 |
可以保存为独立文件吗 |
没有 |
没有 |
金宝app支持连接端口用于建模物理连接线 |
没有 |
只有当变体激活时间参数设置为 |
注释变量选择(通过添加 |
没有 |
是的 |
此示例在Simulink模型中显示了变体设计。金宝app考虑要求模拟具有多种配置的汽车的系统。这些配置虽然在若干方面类似,但在诸如燃料消耗,电动机类型或排放标准之类的性质中可以不同。
您可以将配置表示为单个模型中的变体选择,而不是为每个配置设计单独的模型。您可以根据您的需求选择激活任何一个变体选项。这种方法保持了公共组件的固定。
该模型包含不同的子系统块,电动机变体子系统
,表示车辆的马达。电机有两种可能的配置,气体
和电
的变体选择不同的子系统块。一个不同的子系统Block根据底层块的状态调整接口。在这里,电
电机没有排气温度
输入。当你激活电
变量时,Simul金宝appink自动禁用相应的端口电动机变体子系统
以及与该输入相关联的任何其他模型组件。
为了排气温度
对于这个型号的传感器,考虑需要在两个供应商提供的五个不同的传感器之间切换。您可以使用变体源块来表示同一模型中的所有选择,并且每次只激活一个选择。
视觉元素 | 使用 |
---|---|
变异条件传奇 | “变体条件传奇”对话框可帮助您可视化模型上应用的变体条件。金宝appSimulink注释了具有变体条件的模型组件,并且变体条件图例显示了每个注释的条件。看到使用变体条件图例可视化传播的变体条件. |
变体徽章 | 每个变体块都显示一个徽标,该徽标随块上设置的不同参数值而变化。看到变体徽章. |
变衰落和信号高亮 | 默认情况下,非活动变体选择的颜色会褪色。您可以通过使用变体衰落选项信息覆盖菜单上的调试选项卡中的。金宝app 突出显示通过变体块的信号突出显示活动变体选择的路径。看到变体系统中的信号突出. |
每个变体块显示一个徽章。变体徽章的颜色和图标会根据块上设置的这些参数值而变化:
变体激活时间
变体控制模式
允许零主动变体控制(变体源和变体水槽块)
在变体子系统之外传播条件(不同的子系统块)
变量徽章还提供快速访问某些变体命令。右键单击Variant Badge以访问这些命令。
您必须将模型中的每个变体选择与版本控制用于确定选择是激活的还是非激活的。属性,可以选择要在其中指定变体控件的模式变体控制模式参数。有关更多信息,请参见变型控制简介.
金宝appSimulink通过过程来确定在仿真过程中活跃的模型组件变异条件下传播.该过程评估变体块上指定的变体控制,并自动将变体条件传播到连接块。变体条件可以通过信号线,总线和函数调用传播。该过程取消激活与非活动选项关联的模型组件,它们不包括在模拟中。您可以停止条件传播以定义模型中的变体区域。看到变条件传播概述.
属性确定活动变体选择时,还可以选择变体激活时间参数。此参数还确定主动和非活动选项如何参与模拟和代码生成工作流程。看到在不同阶段的仿真和代码生成工作流程中激活变体.
请注意
只有在何时选择变体块的变体激活时间变体控制模式被设置为表达式
.
手动变体源和手动变体水槽块不支持变体控制和变体激活时金宝app间。它们根据主动Inports和Outports确定主动变体选择。
不同的连接器块不支持不同的激活时间。金宝app
Variant Manager是一个中央工具,允许您管理模型中的所有变体点。该工具可帮助您可视化模型层次结构和各级的变体使用。看到变体经理概述.
创建和激活变体配置:
一个模型层次结构可能包含多个变体块,每个块都有许多变体选择。这些变体选择的组合对应于系统的特定配置。在这些配置之间切换和手动验证可能很复杂,并可能引入错误。您可以使用Variant Manager为模型创建预定义的配置,并在任何配置下运行模型。您还可以根据一组约束来验证配置。
分析和减少变体配置:
你可以使用变体配置分析工具来比较模型的变体配置,并确定在每个配置中使用哪些块。该工具有助于模型验证和验证工作流程,因为它可以识别模型中未使用的区域。
你可以使用变体减速器工具自动生成一个简化模型的变体配置的子集,并在详细的报告中分析简化模型。还原过程将删除指定变体配置的未激活组件。Variant Reducer减少模型中关联的模型引用、子系统引用和库。该工具还减少了任何依赖的工件,如MAT或.sldd.
文件,并打包指定的输出文件夹中的所有减少的工件。工具的示例用例是供应商供应商工作流。
您可以使用金宝app仿真软件编码器™或者嵌入式编码器®从变量模型生成代码。看到为代码生成准备包含变量的模型.
有关显示Variant代码生成功能的示例,请参阅不同的系统(嵌入式编码).