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