Main Content

Switch Case

使用类似于 switch 语句的逻辑选择子系统执行

  • Switch Case block

库:
Simulink / Ports & Subsystems
HDL Coder / Ports & Subsystems

描述

Switch Case 模块以及包含 Action Port 模块的 Switch Case Action Subsystem 模块,实现 switch 逻辑来控制子系统的执行。有关使用 Switch Case 模块的示例,请参阅Select Subsystem Execution

Model ex_switch_case_block

Switch Case 模块具有单个输入。要选择一个 case,请使用 Case 条件参数定义输入值。计算顺序为从第一种情况开始由上往下进行。

每个 case 都与一个连接到 Switch Case Action Subsystem 模块的输出端口相关联。当选择一个 case 时,相关联的输出端口发送动作信号来执行子系统。

在所有其他 case 条件的计算结果都为 false 时,会选择 default case。提供 default case 是可选的,即使其他 case 条件没有用完每个可能的输入值也是如此。

Switch Case 模块的 case 在 Switch Case Action Subsystem 模块执行后包含一个隐含的中断。因此,Simulink® Switch Case 模块没有标准 C 语言的 switch 语句中存在的 fall-through(落空)行为。

限制

Switch Case 模块不支持可调参数。在普通模式或加速模式下的仿真过程中,或在运行生成的代码时,不能调整 Case conditions 的值。

端口

输入

全部展开

对于 Switch Case 模块上标签为 u1 的端口,输入可以是:

  • 具有 Simulink 支持的内置数据类型的标量值。然而,Switch Case 模块不支持布尔或定点数据类型,它将数值输入截断为 32 位有符号整数。

  • 任何枚举数据类型的标量值。

数据类型: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | enumerated

输出

全部展开

来自 Case默认端口的输出是连接到 Switch Case Action Subsystem 模块的动作信号。

参数

全部展开

使用 MATLAB® 元胞表示法指定 case 值。

{1}

指定当输入端口值为 1 时标签为 case[1] 的输出端口输出动作信号。

具有 case 分配的端口列表

使用 MATLAB 元胞表示法指定多个 case 和端口。例如,输入 {1,[7,9,4]} 将指定当输入值为 1 时,运行输出端口 case[1];当输入值为 794 时,运行输出端口 case [7 9 4]

可使用冒号表示法指定某一整数范围内的情况条件。例如,输入 {[1:5]} 将指定当输入值为 12345 时,运行输出端口 case[1 2 3 4 5]

根据模块大小,对于较长的 case 条件列表,其中的 case 可能在 Switch Case 模块上以终止省略号 (...) 缩略显示。

可使用一个枚举类型的名称指定一个情况条件,其中包含对应于该枚举类型中每个值的情况。

编程用法

模块参数CaseConditions
类型:字符向量
'{1}' | '<list of cases>'
默认值'{1}'

控制默认输出端口的显示。

on

将默认输出端口显示为 Switch Case 模块的最后一个 case。您可由此指定默认 case,以在输入值与任何其他 case 值都不匹配时执行。

off

隐藏默认输出端口。

编程用法

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

控制过零检测。

on

检测过零点。

off

不检测过零点。

编程用法

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

模块特性

数据类型

double | enumerated | integer | single

直接馈通

多维信号

可变大小信号

过零检测

扩展功能

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

版本历史记录

在 R2006a 之前推出