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