主要内容

变体水槽

使用变量在多个输出之间路由

  • 库:
  • Simulink /信号路由

  • 变体沉块

描述

变体水槽Block使你能够在单一层中包含信号的目的地(接收器)上的一个组件的多个实现。

例如,假设你想模拟这个模型,通过使用不同的雨水传感器来控制汽车雨刷器的速度。的变异来源Block在不同的雨水传感器之间切换。控制逻辑使用此信息将结果输出到变体水槽块。的变体水槽然后在仿真过程中的雨刷电机模型和代码生成过程中对传感器的命令之间切换。变体块在基于的选择之间切换不同块中不同控制方式的类型你选择。更多信息,请参见变量控件简介

请注意

最多,一个变量选择连接到输出端口变体水槽Block在模拟过程中是活动的。

多个实现来控制汽车挡风玻璃的速度使用一个变体接收器块

变体水槽块只有一个输入端口和一个或多个输出端口。您可以将变化的选择连接到块的输出端口,这样,在模型执行期间,最多只有一个选择是活动的。

变体水槽Block与a相关联变量控制方式和一个变体激活时间。变量控制方式决定了如何指定变量控制。。变量激活时间决定了激活选择的时间,并决定是否只包括主动选择,还是在生成的代码中同时包括主动和非主动的选择。在仿真中,仿真软件®的输入端口直接连接主动选择变体水槽阻塞并忽略非激活的选项。

使用一个变体水槽Block允许你:

  • 在整个模型中传播不同的条件。

  • 在模型的单一层中可视化所有可能的变量选择实现,这将提高模型的可读性。

  • Simulink在整个模型中消除了不活动的块,这提高了运行时性能。如果所有的变量选择都是不活动的,Simulink将从模型中完全删除变量区域。

  • 变量源和接收器提供了变量组件接口,您可以使用该接口快速建模变量选择。

块图标上的变体徽章的颜色和图标取决于变体激活时间,变量控制方式,允许零主动变量控制块上设置的参数。更多信息,请参见变体徽章

限制

变体水槽Block与基于时间的、函数调用和动作信号一起工作。你不能使用SimEvents®,Simscape™多体™,或具有这些块的其他非基于时间的信号。

港口

输入

全部展开

输入信号被连接到有源输出端口。

你可以自动插入导入变体水槽通过将鼠标悬停在块一侧或通过在块边界附近拖动信号来阻塞。你可以通过点击键盘上的删除或用鼠标点击来删除端口。

数据类型:||一半|int8|int16|int32|int64|uint8|uint16|uint32|uint64|布尔|不动点|枚举|公共汽车|结构体

输出

全部展开

第一个变量的输出信号。求值到的变量控制真正的确定哪个输出端口是活动的。

你可以自动插入输出端口上变体水槽通过将鼠标悬停在块一侧或通过在块边界附近拖动信号来阻塞。你可以通过点击键盘上的删除或用鼠标点击来删除端口。

数据类型:||一半|int8|int16|int32|int64|uint8|uint16|uint32|uint64|布尔|不动点|枚举|公共汽车

的输出信号N变体。求值到的变量控制真正的确定哪个输出端口是活动的。

数据类型:||一半|int8|int16|int32|int64|uint8|uint16|uint32|uint64|布尔|不动点|枚举|公共汽车

参数

全部展开

决定主动变量选择的变量控制可以是这些类型中的任何一种。

  • 表达式——在表达式模式下,Simulink根据变量条件的评估选择主动变量。当条件表达式求值为真正的,对应的变量选择变为激活状态。当条件表达式求值为,对应的变量选择变为不活动。看到使用变量块中的条件表达式在选择之间切换

  • 标签——在标签模式下,Simulink根据变量的名称选择活动变量。变量控件是一个字符串,不需要您在任何工作区中创建任何变量。看到使用变体块中的标签在选择之间切换

  • sim codegen切换-在不创建任何工作空间变量的情况下自动切换模拟和代码生成工作流的变量,使用sim codegen切换模式。当您模拟一个模型时,Simulink会自动选择sim卡分支作为主动选择。同样,当你做软件在环(SIL)或处理器在环(PIL)模拟,生成代码,或使用外部模式时,Simulink会自动选择codegen分支。对于配置了基于ert的系统目标文件和服务代码接口的模型,不支持此模式。看到在不使用变量块中的控制变量的模拟和代码生成工作流的选择之间切换

关于变式控制模式的更多信息,请参见变量控件简介。不同类型的变式控制方式的比较,见比较不同区块中不同类型的变体控制模式

依赖关系

不同变体激活时间的可用性取决于的类型变量控制方式你指定。的变体激活时间参数决定了Simulink设置主动选择的时间。参数还决定在生成的代码中包含哪些可变性。该表解释了每种变体控制模式支持的变体激活时间。

变体激活时间
变量控制方式 更新图 更新图表分析所有的选择 代码编译 启动
表达式
标签 x x x
sim codegen切换 x x

编程使用

块参数:VariantControlMode
类型:特征向量
价值观:表达式|标签|sim codegen切换|
默认值:表达式

这个参数决定在模拟和代码生成工作流中包含哪些可变性。更多信息,请参见在模拟和代码生成工作流的不同阶段激活变体

你可以设置变体激活时间参数为:

  • 更新图-当你执行模型时,只有主动选择包含在模拟和代码生成工作流中。生成的代码只包含主动选择。

  • 更新图表分析所有的选择-当您执行模型时,为了在整个模型中保持一致性,将分析活动和非活动的选择。然而,只有主动选择被包含在模拟和代码生成工作流中。生成的代码只包含主动选择。

  • 代码编译-当你执行模型时,主动和非主动的选择都会在整个模型中进行一致性分析,所有的选择都包含在模拟和代码生成工作流中。生成的代码包含预处理器条件中所包含的主动和非主动选择#如果# elif。然而,从生成的代码构建的可执行文件只包含主动选择。

  • 启动-当你执行模型时,主动和非主动的选择都会在整个模型中进行一致性分析,所有的选择都包含在模拟和代码生成工作流中。有了这个选项,你可以使用快速重启来提高迭代模拟的速度。更多信息,请参见使用快速重启运行迭代模拟而无需重新编译变量系统模型。由模型生成的代码包含正则中所包含的主动和非主动选择如果条件。从生成的代码构建的可执行文件也包含活动和非活动的选择。

  • 继承模型。VariantControl-当你执行模型时,块从它的类型的变量控制变量继承激活时间仿真软件。变体Control。如果一个变量块有多个类型的变量控制变量仿真软件。变体Control,那么所有这些变量必须具有相同的激活时间。

依赖关系

不同变型激活时间的可用性取决于你指定的变型控制模式的类型。的变体激活时间参数决定了Simulink何时设置主动选择。参数还决定在生成的代码中包含哪些可变性。该表解释了每种变体控制模式支持的变体激活时间。

变体激活时间
变量控制方式 更新图 更新图表分析所有的选择 代码编译 启动
表达式
标签 x x x
sim codegen切换 x x

编程使用

块参数:VariantActivationTime
类型:特征向量
价值观:更新图|更新图表分析所有的选择|代码编译|启动
默认值:更新图

的输出端口连接到的每个变量选择表中都有一行变体水槽块。如果没有变量选择,则表为空。

你可以用左边的按钮端口和相关条件表来修改表中的元素。

…… 点击…

添加一个新的输出端口:创建一个新的输出端口作为变体选择,并在表中为新选择添加一个条目。

添加一个新的输出端口按钮

删除选定的端口:从块中删除选中的变量选择,并从表中删除它的条目。

删除选中端口按钮

创建/编辑选定的变量对象:创建或编辑一个仿真软件。变体对象中选定的变量选择,并使用仿真软件。变体对象参数对话框。

请注意

对于使用基本工作区的模型,此操作将创建仿真软件。变体对象,并且该对象仅对当前的MATLAB会话可用。要永久存储数据,请将对象保存在MAT文件或MATLAB脚本中。

创建或编辑选定的变量对象按钮

的上游连接到一个变体选择的输出端口的编号变体水槽块。该值为只读。

点击添加一个新的输出端口按钮添加port或删除选中端口按钮删除已创建的。

选项的名称,指定为字符串。

依赖关系

要启用该参数,请设置变量控制方式标签

指定条件表达式来确定主动选择。当条件表达式求值为真正的, Simulink激活相应的变体选择。当条件表达式求值为, Simulink停用相应的变体选择。

变量控件可以是:

在这里,一个B操作数被称为不同的控制变量= =,~ =,& &是条件表达式中的操作符。条件表达式可以包含一个或多个这样的变量控制变量和操作符。有关支持的类型和变量控制变量的存储位置的信息,请参见变量块中的变量控制变量(操作数)的类型变量块中变量控制变量(操作数)的存储位置。有关运营商的信息,请参见不同激活时间的变体块中的操作符类型

更多信息,请参见使用变量块中的条件表达式在选择之间切换

编程使用

结构:由只读表示变体。的名字字段变体参数结构
类型:特征向量
值:与变体选择相关联的变体控件
默认值:“变异”

此只读字段显示指定为的条件表达式仿真软件。变体对象。要更改或编辑条件表达式,请使用仿真软件。变体参数对话框,当您双击工作空间中的对象时出现。

请注意

在类型的条件表达式中指定的操作数仿真软件。变体必须在基本工作区或数据字典中定义。不支持指定在掩码或模型工作空间中定义的操作数。

这个列表包含了所有变体选择的标签。要设置一个主动选项,请从列表中选择一个标签。相应的选择变为活动的。或者,你也可以遵循使用变量控制标签设置主动选择更改标签模式下的主动选择。

依赖关系

要启用该参数,请设置变量控制方式参数标签

编程使用

参数:LabelModeActivechoice
类型:特征向量
值:如果没有指定标签模式主动选择,则该值为空。如果指定了标签模式主动选择,则该值为标签模式主动选择的名称。
默认值:
  • -当没有活动的变体选择时,Simulink会产生一个错误。

  • -当您选择此参数时,如果没有活动的变量选择,Simulink模拟模型,而没有任何活动的变量选择连接到变体水槽块。的输入和输出流连接的所有块变体水槽块,从而从模型执行中完全删除变量区域。

考虑汽车雨刷器的例子描述部分。假设你不想把雨刷速度传递给任何一个变量选择,刮水器电机承兑交单。当你用允许零主动变量控制设置为而如果没有主动变体的选择由模式控制的变体Sink块,Simulink断开由模式控制的变体Sink块及其所有连接的块,这将从模型中完全删除变量区域。

这个表显示了使用和不使用允许零主动变量控制参数的代码编译激活时间。在你生成的代码中允许零主动变量控制设置为,只有变量的选择刮水器电机承兑交单是条件的,而获得块是无条件的。的获得Block是无条件的,所以它对任何一个选项都执行。这段代码只支持任意一个选项求值为的情况真正的。如果没有选项的值为真正的,这两个选项都从编译中删除。的输出获得保持未使用,这会导致错误。在你生成的代码中允许零主动变量控制设置为,变体选择刮水器电机,承兑交单,连接的获得块是有条件的。所以,如果没有一个选项的值是真正的,获得Block也被移除,从而使你能够完全从代码编译中移除变量区域。

生成的代码不允许零主动变量控制 生成的代码与允许零主动变量控制
/*如果Mode == 1或Mode == 2的条件都不为true,则Gain的输出仍未使用,这将导致错误。*/ /*增益的逻辑;*/ # if Mode == 1 /*雨刷电机逻辑;*/ # elif Mode == 2 /*数模转换逻辑;* / # endif
# if Mode == 1 /*雨刷电机逻辑;*/ # elif Mode == 2 /*逻辑数模转换;*/ # endif /*只有当其中一个条件求值为true时,才执行for Gain的逻辑。如果没有一个条件求值为真,则从代码编译中删除Gain。*/ # if (Mode == 1)∥(Mode == 2) /* for Gain的逻辑;* / # endif

依赖关系

设置后才会显示变量控制方式表达式

编程使用

块参数:AllowZeroVariantControls
类型:特征向量
价值观:“关闭”|“上”
默认值:“关闭”

当你选择这个选项时,Simulink会在每个端口上注释变量条件表达式变体水槽块。

编程使用

块参数:ShowConditionOnBlock
类型:特征向量
价值观:“关闭”|“上”
默认值:“关闭”

块特征

数据类型

布尔|公共汽车||枚举|不动点|一半|整数||字符串

直接引线

没有

多维信号

没有

适应信号

没有

讨论二阶导数过零检测

没有

扩展功能

C / c++代码生成
使用Simulink®Coder™生成C和c++代码。

定点转换
使用定点设计器设计和模拟定点系统。

版本历史

介绍了R2016a

Baidu
map