文档

多端口切换

在多个块输入之间进行选择

  • 库:
  • 万博1manbetxSimulink /信号路由

描述

多端口切换块决定将块的几个输入中的哪个传递到输出。块根据第一个输入的值做出这个决定。第一个输入是控制输入,其余的输入是数据输入。控制输入的值决定将哪些数据输入传递到输出。

该表总结了块如何解释控制输入并确定传递给输出的数据输入。

控制输入 截断 设置数据端口顺序 仿真过程中的块行为
索引以选择数据输入 超出范围的情况

整型值

没有一个

从零开始的连续的

从零开始的索引

控制输入小于0或者大于输入数据的个数减去1。

从连续的

从索引

控制输入小于1或者大于数据输入的数量。

指定索引

您指定的索引

控制输入不对应任何指定的数据端口索引。

不是整数值

该块通过舍入到零将值截断为整数。

从零开始的连续的

从零开始的索引

截断的控制输入小于0或者大于输入数据的个数减去1。

从连续的

从索引

截断的控制输入小于1或者大于数据输入的数量。

指定索引

您指定的索引

截断的控件输入不对应于任何指定的数据端口索引。

有关块如何处理超出范围条件的信息,请参见块如何处理超出范围的控制输入

多端口交换机配置为索引向量块

一个索引向量是a的特殊构型吗多端口切换块,其中指定一个数据输入,而控件输入是从零开始的。块输出是输入向量中索引与控制输入匹配的元素。例如,如果输入向量是[18 15 17 10]控制输入是3.,则与索引3(从零开始)匹配的元素为10,并将其作为输出值。

要配置多端口切换块作为一个工作索引向量块组数据端口数1数据端口顺序从零开始的连续的

块如何处理超出范围的控制输入

对于输入的整数值小于intmax(“int32”),当该值与任何数据端口索引不匹配时,则输入超出范围。对于非整数值的控件输入,当截断值与任何数据端口索引不匹配。在这两种情况下,块行为取决于您的设置默认情况下为数据端口默认情况的诊断

请注意

如果控制输入大于intmax(“int32”),代码块将输入值包装成一个整数。

模拟行为

以下行为仅适用于您的模型的模拟。

默认情况下为数据端口 默认情况的诊断
没有一个 警告 错误

最后一个数据端口

请使用最后一个数据端口,不要报告任何警告或错误。

使用最后一个数据端口并报告警告。

报告错误并停止模拟。

附加数据端口

使用额外的数据端口贴上标签,不要报告任何警告或错误。

使用额外的数据端口标记并报告警告。

报告错误并停止模拟。

代码生成的行为

以下行为适用于模型的代码生成。

默认情况下为数据端口 默认情况的诊断
没有一个 警告 错误

最后一个数据端口

使用最后一个数据端口。

使用最后一个数据端口。

使用最后一个数据端口。

附加数据端口

使用额外的数据端口标签。

使用额外的数据端口标签。

使用额外的数据端口标签。

使用具有不同维度的数据输入

如果两个信号的维数不同或维长度不同,则可以将这些信号用作a的数据输入多端口切换块。在块对话框中,选择该参数允许不同的数据输入大小.在这种情况下,块的输出是一个可变大小的信号。如果不选择该参数,块将产生错误。

有关该参数的详细信息,请参见允许不同的数据输入大小(导致可变大小的输出信号).有关可变大小信号的详细信息,请参见可变大小信号基础

确定块行为的规则

指定数据输入的数量数据端口数

  • 如果你设置数据端口数对于1,块表现为指数选择器索引向量而不是作为一个多端口交换机。有关详细信息,请参见多端口交换机配置为索引向量块

  • 如果你设置数据端口数对于大于1的整数,块表现为多端口交换机。块输出是与控制输入值相对应的数据输入。如果至少有一个数据输入是矢量,则块输出是矢量。在这种情况下,块将任何标量输入扩展为向量。

  • 如果所有数据输入都是标量,则输出也是标量。

枚举控制端口参数设置指南

当控制端口上多端口切换块是枚举类型,遵循以下准则:

场景 该怎么做 基本原理

枚举类型包含表示无效、超出范围或未初始化值的值。

  • 数据端口顺序指定索引

  • 数据端口索引将此值用于最后一个数据端口。

  • 默认情况下为数据端口最后一个数据端口

此块配置处理枚举类型显式表示的无效值。

枚举类型只包含有效的枚举值。但是,数据输入端口可能会获得枚举类型的无效值。

  • 默认情况下为数据端口附加数据端口

此块配置处理枚举类型未显式表示的无效值。

枚举类型只包含有效的枚举值。数据输入端口永远不能获得枚举类型的无效值。

  • 默认情况下为数据端口最后一个数据端口

  • 默认情况的诊断没有一个

此块配置避免了不必要的诊断操作。

该块没有为枚举类型的每个值提供数据输入端口。

  • 默认情况下为数据端口附加数据端口

此块配置处理没有数据输入端口的枚举值以及无效值。

港口

输入

全部展开

控制信号可以是Simulink支持的任何数据类型万博1manbetx®万博1manbetx支持,包括定点和枚举类型。当控件输入不是整数值时,该块通过舍入到零将该值截断为整数。

有关枚举类型控制信号的信息,请参见枚举控制端口参数设置指南

有关块如何处理超出范围条件的信息,请参见块如何处理超出范围的控制输入

限制

  • 如果控制信号是数字的,则控制信号不能是复杂的。

  • 如果控制信号是枚举信号,则块使用底层整数的值来选择数据端口。

  • 如果基础整数与数据端口不对应,则会发生错误。

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

第一个数据输入,指定为标量、矢量、矩阵或N-D数组。所有输入数据信号都可以是Simulink支持的任何数据类型。万博1manbetx万博1manbetx

  • 如果所有的数据输入都是标量,则输出也是标量

  • 如果至少有一个数据输入是矢量,则块输出是矢量。在这种情况下,块将任何标量输入扩展为向量。

  • 如果任意两个非标量信号具有不同的维数或不同的维长度,则选择允许不同的数据输入大小复选框。有关更多信息,请参见使用具有不同维度的数据输入

  • 如果任何数据信号是枚举类型,则所有其他数据信号必须具有相同的枚举类型。

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

第二个数据输入,指定为标量、矢量、矩阵或N-D数组。所有输入数据信号都可以是Simulink支持的任何数据类型。万博1manbetx万博1manbetx

  • 如果所有的数据输入都是标量,则输出也是标量

  • 如果至少有一个数据输入是矢量,则块输出是矢量。在这种情况下,块将任何标量输入扩展为向量。

  • 如果任意两个非标量信号具有不同的维数或不同的维长度,则选择允许不同的数据输入大小复选框。有关更多信息,请参见使用具有不同维度的数据输入

  • 如果任何数据信号是枚举类型,则所有其他数据信号必须具有相同的枚举类型。

依赖关系

要启用该端口,请设置数据端口数到大于1的整数。

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

第n个数据输入,指定为标量、矢量、矩阵或N-D数组。所有输入数据信号都可以是Simulink支持的任何数据类型。万博1manbetx万博1manbetx

  • 如果所有的数据输入都是标量,则输出也是标量

  • 如果至少有一个数据输入是矢量,则块输出是矢量。在这种情况下,块将任何标量输入扩展为向量。

  • 如果任意两个非标量信号具有不同的维数或不同的维长度,则选择允许不同的数据输入大小复选框。有关更多信息,请参见使用具有不同维度的数据输入

  • 如果任何数据信号是枚举类型,则所有其他数据信号必须具有相同的枚举类型。

依赖关系

要启用N输入端口,设置数据端口数到大于或等于的整数值N

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

输入数据端口,用于超出范围的控制信号输入,指定为标量,矢量,矩阵或N-D数组。所有输入数据信号都可以是Simulink支持的任何数据类型。万博1manbetx万博1manbetx如果任何数据信号是枚举类型,则所有其他数据信号必须具有相同的枚举类型。如果任意两个信号的维度数不同或维度长度不同,则选择允许不同的数据输入大小复选框。有关更多信息,请参见使用具有不同维度的数据输入

依赖关系

要为超出范围的控制信号输入创建一个额外的数据端口,请设置默认情况下为数据端口附加数据端口.当你设定默认情况下为数据端口最后一个数据端口,当控制信号值与任何数据端口索引不匹配时,块使用最后一个数据端口进行输出。

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

输出

全部展开

该模块输出根据控制信号值选择的数据输入之一。输出与相应的数据输入具有相同的维度。当你选择允许不同的数据输入大小复选框,输出的块是大小可变的信号。

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

参数

全部展开

主要

指定数据输入端口的排序类型。

  • 从零开始的连续的—Block使用从零开始的索引对连续数据端口进行排序。的默认值索引向量块。

  • 从连续的—Block使用基于1的索引对连续的数据端口进行排序。的默认值多端口切换

  • 指定索引—Block使用不连续索引对数据端口进行排序。

提示

  • 当控制端口为枚举类型时,请选择指定索引

  • 如果你选择从零开始的连续的从连续的,确认控制端口不是枚举类型。此配置已弃用并产生错误。您可以在您的模型上运行升级顾问来替换它们多端口切换块,该块显式指定数据端口索引。看到模型的升级

  • 避免块包含用于模拟或代码生成的未使用数据端口的情况。当控制端口为定点数据类型或内置数据类型时,请验证所有数据端口索引都可以用该类型表示。否则,将发生以下块行为:

    如果块中有未使用的数据端口,则数据端口顺序为: 该块产生:
    从零开始的连续的从连续的 一个警告
    指定索引 一个错误

依赖关系

选择从零开始的连续的从连续的使数据端口数参数。

选择指定索引使数据端口索引参数。

编程使用

块参数:DataPortOrder
类型:特征向量
价值观:'从零开始连续' | '从零开始连续' | '指定索引'
默认值:从连续的多端口切换“从零开始的连续的”索引向量

指定块的数据输入端口数。输入端口的总数将是您指定的数字,加上一个控制信号输入端口,如果您设置,再加上一个默认情况下为数据端口附加数据端口

依赖关系

若要启用该参数,请设置数据端口顺序从零开始的连续的从连续的

编程使用

块参数:输入
类型:特征向量
价值观:1 ~ 65536之间的整数
默认值:“3”多端口切换' 1 '索引向量

为您的数据端口指定索引数组。块图标将更改以匹配您指定的数据端口索引。

提示

  • 要指定与枚举类型的所有值对应的索引数组,请输入枚举('type_name')对于此参数。不要包含大括号。

    例如,枚举(“MyColors”)是一个有效条目。

  • 方法输入枚举类型的特定值type_name.enumerated_name格式。不要输入基础整数值。

    例如,{MyColors。红色,MyColors。绿色MyColors。蓝}是一个有效条目。

  • 要指示多个值映射到数据端口,请使用括号。

    例如,以下条目都是有效的:

    • {MyColors。红色,MyColors。绿色(MyColors。蓝色,MyColors。黄色]}

    • {(3、5),0,18岁}

  • 如果控制端口是定点数据类型或内置数据类型,则数据端口索引必须用该类型表示。否则,编译时将出现一个错误,提醒您注意未使用的数据端口。

  • 如果控制端口是枚举数据类型,则数据端口索引必须是该类型的枚举值。

  • 如果数据端口索引包含枚举类型的值,则控制端口必须为该数据类型。

依赖关系

若要启用该参数,请设置数据端口顺序指定索引

编程使用

块参数:DataPortIndices
类型:特征向量
价值观:索引数组
默认值:“{1,2,3}”

指定是否对超出范围的输入使用最后一个数据端口,还是使用其他端口。当控制端口值与任何数据端口索引不匹配时,块使用的端口用星号(*)表示。

  • 最后一个数据端口—当控制端口值与任何数据端口索引不匹配时,Block使用最后一个数据端口输出。

  • 附加数据端口—当控制端口值与任何数据端口索引不匹配时,Block使用额外的数据端口输出。

提示

如果将该参数设置为附加数据端口数据端口数3.,块上的输入端口数为5。第一个输入是控制端口,接下来的三个输入是数据端口,第五个输入是超出范围输入的默认端口。

编程使用

块参数:DataPortForDefault
类型:特征向量
价值观:'最后一个数据端口' | '附加数据端口'
默认值:“最后一个数据端口”

指定当控制端口值与任何数据端口索引不匹配时采取的诊断操作。选项包括:

  • 没有一个-不产生响应。

  • 警告—显示警告并继续模拟。

  • 错误—终止模拟并显示错误。在这种情况下,默认情况下为数据端口仅用于代码生成,而不用于模拟。

有关更多信息,请参见块如何处理超出范围的控制输入

编程使用

块参数:DiagnosticForDefault
类型:特征向量
价值观:“无”|“警告”|“错误”
默认值:“错误”

将采样时间指定为-1以外的值。有关更多信息,请参见指定采样时间

依赖关系

这个参数是不可见的,除非它被显式地设置为一个值1.要了解更多信息,请参见不推荐采样时间的块

编程使用

块参数:SampleTime
类型:特征向量
价值观:标量
默认值:' 1 '

信号的属性

选中此复选框可要求所有数据输入端口具有相同的数据类型。清除此复选框后,该块允许数据端口输入具有不同的数据类型。

编程使用

块参数:InputSameDT
类型:特征向量
价值观:'off' b| 'on'
默认值:“关闭”

Simulink检查输出范围的较低值。万博1manbetx

万博1manbetxSimulink使用最小值来执行:

请注意

输出最小不饱和或剪辑实际输出信号。使用饱和块来代替。

编程使用

块参数OutMin
类型:字符向量
“[]”|标量
默认的“[]”

Simulink检测输出范围的最大值。万博1manbetx

万博1manbetxSimulink使用最大值来执行:

请注意

输出最大不饱和或剪辑实际输出信号。使用饱和块来代替。

编程使用

块参数OutMax
类型:字符向量
“[]”|标量
默认的“[]”

选择输出的数据类型。类型可以继承、直接指定或表示为数据类型对象,例如万博1manbetx仿真软件。NumericType

当你选择一个继承的选项时,块的行为如下:

  • 继承:通过内部规则继承s万博1manbetximulink选择一种数据类型来平衡数值精度、性能和生成的代码大小,同时考虑到嵌入式目标硬件的属性。如果更改嵌入式目标设置,则内部规则选择的数据类型可能会更改。软件并不总是能够同时优化代码效率和数值精度。如果内部规则不能满足您对数值精度或性能的特定需求,请使用以下选项之一:

    • 显式指定输出数据类型。

    • 显式指定默认数据类型,例如fixdt(1, 32岁,16)然后使用定点工具为您的模型提出数据类型。有关更多信息,请参见fxptdlg

    • 要指定您自己的继承规则,请使用继承:通过反向传播继承然后使用a数据类型传播块。如何使用此块的示例可在信号属性库中获得数据类型传播示例块。

  • 继承:通过反向传播继承—使用驱动块的数据类型。

编程使用

块参数OutDataTypeStr
类型:字符向量
继承:通过内部规则继承|“继承:通过反向传播继承”|“双”|“单一”|“int8”|“uint8”|“int16”|“uint16”“int32”|“uint32”|“fixdt(16)”|“fixdt(0) 1, 16日”|“fixdt(1, 16日2 ^ 0,0)”|'<数据类型表达式>'
默认的“继承:通过内部规则继承”

选择此选项可锁定此块的输出数据类型设置,使其不受定点工具和定点顾问的更改影响。有关更多信息,请参见使用锁输出数据类型设置(定点设计师)。

编程使用

块参数LockScale
类型:字符向量
“关闭”|“上”
默认的“关闭”

选择这些四舍五入模式之一。

天花板

将正数和负数舍入到正无穷。等效于MATLAB®装天花板函数。

收敛

舍入到最接近的可表示值。如果出现平局,则舍入到最接近的偶数。相当于定点设计器™收敛函数。

地板上

将正数和负数舍入到负无穷。等效于MATLAB地板上函数。

最近的

舍入到最接近的可表示值。如果出现平局,则向正无穷循环。相当于定点设计器最近的函数。

舍入到最接近的可表示值。如果出现平局,将正数舍入到正无穷,将负数舍入到负无穷。相当于定点设计器函数。

简单的

自动选择舍入到0和舍入到0之间,以生成尽可能高效的舍入代码。

将数字四舍五入到零。等效于MATLAB修复函数。

编程使用

块参数RndMeth
类型:字符向量
“天花板”|“收敛”|“地板”|“最近的”|“圆”|“简单”|“零”
默认的“地板”

另请参阅

有关更多信息,请参见舍入(定点设计师)

指定溢出是饱和溢出还是自动溢出。

  • -溢出换行到数据类型可以表示的适当值。

    例如,数字130不适合有符号的8位整数,而是换行为-126。

  • —溢出饱和到数据类型可以表示的最小值或最大值。

    例如,与有符号8位整数相关的溢出可以饱和到-128或127。

提示

  • 当您的模型可能溢出并且您希望在生成的代码中显式地进行饱和保护时,请考虑选择此复选框。

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

    清除此复选框还可以帮助您避免过度指定块处理超出范围信号的方式。有关更多信息,请参见检查信号范围错误

  • 当您选择此复选框时,饱和度适用于块上的每个内部操作,而不仅仅是输出或结果。

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

编程使用

块参数:SaturateOnIntegerOverflow
类型:特征向量
价值观:'off' b| 'on'
默认值:“关闭”

选择此复选框可允许输入不同大小的信号。

  • —允许输入不同大小的信号,并将输入信号的大小传播到输出信号。在这种模式下,块产生可变大小的输出信号。

  • —要求所有非标量数据输入信号的大小相同。

编程使用

参数:AllowDiffInputSizes
类型:特征向量
值:“上”|“关闭”
默认值:“关闭”

块特征

数据类型

||布尔|基整数|不动点|枚举|公共汽车

多维信号

是的

适应信号

是的

扩展功能

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

PLC代码生成
生成结构化文本代码使用Simulink®PLC编码器™。万博1manbetx

定点转换
转换浮点算法到定点使用定点设计器™。

R2006a之前引入

这个话题有帮助吗?