Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

Switch

将多个信号合并为一个信号

  • 库:
  • Simulink / Commonly Used Blocks

    Simulink / Signal Routing

    HDL Coder / Commonly Used Blocks

    HDL Coder / Signal Routing

  • Switch block

说明

Switch 模块根据第二个输入的值,传递第一个输入或第三个输入信号。第一个和第三个输入是数据输入。第二个输入是控制输入。可以使用 Criteria for passing first inputThreshold 参数指定模块传递第一个输入的条件。

总线支持

Switch 模块支持总线。数据输入可以是满足下列限制条件的虚拟或非虚拟总线信号:

  • 所有总线必须相同(所有元素的层次结构相同并具有相同的名称和属性)。

  • Switch 模块的非虚拟总线输入中的所有信号必须具有相同的采样时间。即使关联总线对象的元素指定了继承的采样时间,此要求也同样适用。

您可以使用 Rate Transition 模块更改总线中单个信号或所有信号的采样时间。有关详细信息,请参阅Modify Sample Times for Nonvirtual Buses支持总线的模块

可使用总线数组作为 Switch 模块的输入信号。有关定义和使用总线数组的详细信息,请参阅使用总线数组组合非虚拟总线。使用总线数组时,请将 Threshold 参数设置为标量值。

限制

  • 如果 Switch 模块的数据输入是总线,两个总线的元素名称必须相同。使用相同的元素名称可以确保输出总线具有相同的元素名称,而不管模块选择了哪些输入总线。要确保您的模型满足此要求,请使用总线对象定义总线并将 Element name mismatch 诊断设置为 “error”。有关详细信息,请参阅连接诊断概述

端口

输入

全部展开

两个数据输入中的第一个。模块将第一个或第二个数据输入传播到输出。模块根据控制输入选择要传递的输入。使用 Criteria for passing first inputThreshold 参数指定控制输入传递第一个输入的条件。

数据类型: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus

控制信号,模块用该信号来确定是将第一个还是第二个数据输入传递给输出。如果控制输入满足 Criteria for passing first input 参数中设置的条件,则模块将传递第一个数据输入。否则,模块将传递第二个数据输入。

数据类型: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus

两个数据输入中的第二个。模块将第一个或第二个数据输入传播到输出。模块根据控制输入选择要传递的输入。使用 Criteria for passing first inputThreshold 参数指定控制输入传递第一个或第二个输入的条件。

数据类型: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus

输出

全部展开

根据控制信号值从第一个或第二个输入信号传播而来的输出信号。

数据类型: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus

参数

全部展开

Main

选择模块传递第一个数据输入的条件。如果控制输入满足 Criteria for passing first input 参数中设置的条件,模块将传递第一个输入。否则,模块将从输入 Port_3 传递第二个数据输入信号。

u2 >= Threshold

检查控制输入是否大于或等于阈值。

u2 > Threshold

检查控制输入是否大于阈值。

u2 ~=0

检查控制输入是否非零。

注意

对于枚举数据类型,Switch 模块不支持 “u2 ~=0” 模式。

提示

当控制输入为布尔信号时,可使用条件和阈值的以下组合之一:

  • u2 >= Threshold”,其中阈值等于 1

  • u2 > Threshold”,其中阈值等于 0

  • u2 ~=0

否则,Switch 模块将忽略阈值,并使用布尔值进行信号路由。如果值为 1,模块将传递第一个输入;如果值为 0,模块将传递第三个输入。MATLAB® 命令行窗口中也会显示描述此行为的警告消息。

编程用法

模块参数Criteria
类型:字符向量
'u2 >= Threshold' | 'u2 > Threshold' | 'u2 ~=0'
默认值:'u2 >= Threshold'

指定 Criteria for passing first input 中使用的阈值,该阈值用于确定模块将哪个输入传递给输出的条件。Threshold 必须大于 Output minimum 且小于 Output maximum

要指定非标量阈值,请使用括号。例如,以下输入是有效的:

  • [1 4 8 12]

  • [MyColors.Red, MyColors.Blue]

依存关系

Criteria for passing first input 设置为 “u2 ~=0” 将禁用此参数。

编程用法

模块参数Threshold
类型:字符向量
值:'off' | 'on'
默认值:'off'

选择此项以启用过零检测。有关详细信息,请参阅 中的过零检测

编程用法

模块参数ZeroCross
类型:字符向量、字符串
'off' | 'on'
默认值'on'

Signal Attributes

点击 Show data type assistant 按钮 以显示 Data Type Assistant,帮助您设置数据类型属性。有关详细信息,请参阅使用 Data Type Assistant 指定数据类型

要求所有数据输入具有相同的数据类型。

编程用法

模块参数:InputSameDT
类型:字符向量
值:
默认值:'0'

Simulink® 检查的输出范围的下限值。

Simulink 使用最小值执行下列操作:

注意

Output minimum 不会饱和或剪切实际输出信号。请改用 Saturation 模块。

编程用法

模块参数OutMin
类型:字符向量
'[ ]'| 标量
默认值'[ ]'

Simulink 检查的输出范围的上限值。

Simulink 使用最大值执行下列操作:

注意

Output maximum 不会饱和或剪切实际输出信号。请改用 Saturation 模块。

编程用法

模块参数OutMax
类型:字符向量
'[ ]'| 标量
默认值'[ ]'

指定输出数据类型。

Inherit:Inherit via internal rule

使用以下规则确定输出数据类型。

第一个输入端口的数据类型输出数据类型
大于第三个输入端口的正数范围从第一个输入端口继承
等于第三个输入端口的正数范围从第三个输入端口继承
具有比第三个输入端口更小的正数范围
Inherit:Inherit via back propagation

使用驱动模块的数据类型。

Inherit:Inherit same as first input

使用第一个数据输入端口的数据类型。

double

指定输出数据类型为 double

single

指定输出数据类型为 single

half

指定输出数据类型为 half

int8

指定输出数据类型为 int8

uint8

指定输出数据类型为 uint8

int16

指定输出数据类型为 int16

uint16

指定输出数据类型为 uint16

int32

指定输出数据类型为 int32

uint32

指定输出数据类型为 uint32

int64

指定输出数据类型为 int64

uint64

指定输出数据类型为 uint64

fixdt(1,16,0)

指定输出数据类型为定点 fixdt(1,16,0)

fixdt(1,16,2^0,0)

指定输出数据类型为定点 fixdt(1,16,2^0,0)

Enum: <类名称>

使用枚举数据类型,例如 Enum: BasicColors

string

指定输出数据类型为字符串。

<data type expression>

使用数据类型对象,例如 “Simulink.NumericType”。

提示

如果输出是枚举类型,则两个数据输入必须使用与输出相同的枚举类型。

编程用法

模块参数OutDataTypeStr
类型:字符向量
'Inherit: Inherit via internal rule | 'Inherit: Inherit via back propagation' | 'Inherit: Same as first input' | 'double' | 'single' | 'half' | 'int8' | 'uint8' | 'int16' | 'uint16', 'int32' | 'uint32' | 'int64' | 'uint64' | 'fixdt(1,16)' | 'fixdt(1,16,0)' | 'fixdt(1,16,2^0,0)' | Enum: <class name> | 'string' | '<data type expression>'
默认值'Inherit: Inherit via internal rule'

选择此参数可防止定点工具覆盖您对此模块指定的数据类型。有关详细信息,请参阅Lock the Output Data Type Setting (Fixed-Point Designer)

编程用法

模块参数:LockScale
类型:字符向量
值:'off' | 'on'
默认值:'off'

选择下列舍入模式之一。

Ceiling

将正值和负值朝正无穷方向舍入。等同于 MATLAB ceil 函数。

Convergent

将数值舍入到最接近的可表示值。如果出现对等情况,则舍入到最接近的偶数整数。等同于 Fixed-Point Designer™ convergent 函数。

Floor

将正值和负值朝负无穷方向舍入。等同于 MATLAB floor 函数。

Nearest

将数值舍入到最接近的可表示值。如果出现对等情况,则朝正无穷方向舍入。等同于 Fixed-Point Designer nearest 函数。

Round

将数值舍入到最接近的可表示值。如果出现对等情况,则将正数朝正无穷方向舍入,将负数朝负无穷方向舍入。等同于 Fixed-Point Designer round 函数。

Simplest

自动选择是向负无穷大方向舍入还是向零舍入,以生成尽可能有效的舍入代码。

Zero

将数值向零舍入。等同于 MATLAB fix 函数。

编程用法

模块参数RndMeth
类型:字符向量
'Ceiling' | 'Convergent' | 'Floor' | 'Nearest' | 'Round' | 'Simplest' | 'Zero'
默认值'Floor'

另请参阅

有关详细信息,请参阅Rounding (Fixed-Point Designer)

指定对溢出是进行饱和处理还是绕回处理。

  • off - 溢出将绕回到数据类型可以表示的合适值。

    例如,数字 130 不适合一个有符号的 8 位整数,因此绕回 -126。

  • on - 将溢出饱和处理为数据类型能够表示的最小值或最大值。

    例如,一个有符号的 8 位整数的溢出可以饱和处理为 -128 或 127。

提示

  • 如果您的模型存在可能的溢出,而您希望在生成的代码中进行显式饱和保护,请考虑选中此复选框。

  • 如果您希望优化生成的代码的效率,请考虑清除此复选框。

    清除此复选框还可以帮助您避免过度地指定信号超出范围时的处理方式。有关详细信息,请参阅信号范围错误故障排除

  • 如果选中此复选框,饱和将应用于模块中的每个内部操作,而不仅仅应用于输出或结果。

  • 一般情况下,代码生成进程可以检测到何时不可能发生溢出。在这种情况下,代码生成器不会生成饱和代码。

编程用法

模块参数:SaturateOnIntegerOverflow
类型:字符向量
值:'off' | 'on'
默认值:'off'

选中此复选框将允许输入信号具有不同大小。模块将输入信号大小传播到输出信号。如果两个数据输入都是可变大小信号,信号的最大大小可以相同,也可以不相同。

编程用法

模块参数AllowDiffInputSizes
类型:字符向量
值:'on' | 'off'
默认值:'off'

模块特性

数据类型

Boolean | bus | double | enumerated | fixed point | half | integer | single | string

直接馈通

多维信号

可变大小信号

过零检测

扩展功能

PLC 代码生成
使用 Simulink® PLC Coder™ 生成结构化文本代码。

定点转换
使用 Fixed-Point Designer™ 设计和仿真定点系统。

在 R2006a 之前推出