主要内容

多端口切换

根据控制信号选择输出信号

  • Multiport交换机块

库:
金宝appSimulink /信号路由
HDL编码器/信号路由

描述

多端口切换Block决定块的几个输入中哪一个传递给输出。该块基于第一个输入的值进行判断。第一个输入是控制输入,其余输入是数据输入。控制输入的值决定将哪些数据输入传递给输出。

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

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

整型值

没有一个

从零开始的连续的

从零开始的索引

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

从连续的

从索引

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

指定索引

指定的索引

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

不是整数值

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

从零开始的连续的

从零开始的索引

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

从连续的

从索引

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

指定索引

指定的索引

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

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

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

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

配置多端口切换块工作作为索引向量块,设置数据端口个数1而且数据端口订单从零开始的连续的

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

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

请注意

如果控制输入大于intmax(“int32”),块将输入值包装为整数。

模拟行为

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

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

最后一个数据端口

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

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

报告错误并停止模拟。

附加数据端口

使用附加的数据端口标记并不要报告任何警告或错误。

使用附加的数据端口标记并报告警告。

报告错误并停止模拟。

代码生成行为

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

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

最后一个数据端口

请使用最后一个数据端口。

请使用最后一个数据端口。

请使用最后一个数据端口。

附加数据端口

使用附加的数据端口标签。

使用附加的数据端口标签。

使用附加的数据端口标签。

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

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

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

决定块行为的规则

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

  • 如果你设置数据端口个数到1时,块表现为指数选择器索引向量而不是作为一个多端口交换机。详情请参见配置为索引向量块的多端口交换机

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

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

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

当控制端口上了多端口切换Block为枚举类型,请遵循以下准则:

场景 该怎么做 基本原理

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

  • 数据端口订单指定索引

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

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

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

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

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

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

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

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

  • 默认情况诊断没有一个

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

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

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

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

限制

  • 如果数据输入到多端口切换Block是总线,两个总线的元素名称必须相同。使用相同的元素名可以确保无论块选择哪个输入总线,输出总线都具有相同的元素名。为确保您的模型满足此需求,请使用总线对象定义总线并设置元素名称不匹配诊断为错误.看到型号配置参数:连接诊断获取更多信息。

  • 对于总线数组,数据端口个数必须设置为2或更高版本。

港口

输入

全部展开

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

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

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

限制

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

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

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

数据类型:||一半|int8|int16|int32|int64|uint8|uint16|uint32|uint64|布尔|不动点|枚举|图像

第一个数据输入,指定为标量、向量、矩阵或N-D数组。所有输入数据信号可以是Simulink支持的任何数据类型。金宝app金宝app

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

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

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

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

数据类型:||一半|int8|int16|int32|int64|uint8|uint16|uint32|uint64|布尔|不动点|枚举|字符串|图像

第二个数据输入,指定为标量、向量、矩阵或N-D数组。所有输入数据信号可以是Simulink支持的任何数据类型。金宝app金宝app

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

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

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

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

依赖关系

若要启用此端口,请设置数据端口个数变成大于1的整数。

数据类型:||一半|int8|int16|int32|int64|uint8|uint16|uint32|uint64|布尔|不动点|枚举|字符串|图像

第n个数据输入,指定为标量、向量、矩阵或N-D数组。所有输入数据信号可以是Simulink支持的任何数据类型。金宝app金宝app

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

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

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

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

依赖关系

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

数据类型:||一半|int8|int16|int32|int64|uint8|uint16|uint32|uint64|布尔|不动点|枚举|字符串|图像

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

依赖关系

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

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

输出

全部展开

该块输出根据控制信号值选择的数据输入之一。输出与相应的数据输入具有相同的维数。输出数据类型为需要最大内存空间的输入端口的数据类型。当你选择允许不同的数据输入大小复选框时,该块的输出为可变大小的信号。

数据类型:||一半|int8|int16|int32|int64|uint8|uint16|uint32|uint64|不动点|枚举|字符串|图像

参数

全部展开

主要

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

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

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

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

提示

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

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

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

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

依赖关系

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

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

编程使用

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

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

依赖关系

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

编程使用

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

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

提示

  • 若要指定与枚举类型的所有值对应的索引数组,请输入该类型的名称。

    例如,MyColors如果是有效的条目吗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' | 'on'
默认值:“关闭”

Simulink检查的输出范围的较低值。金宝app

金宝appSimulink使用最小值来执行:

请注意

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

编程使用

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

Simulink检查的输出范围的最大值。金宝app

金宝appSimulink使用最大值执行:

请注意

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

编程使用

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

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

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

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

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

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

    • 要指定自己的继承规则,请使用继承:通过反向传播继承然后使用数据类型传播块。如何使用此块的示例可在Signal Attributes库中找到数据类型传播示例块。

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

  • 继承:与第一次数据输入相同—使用第一个数据输入端口的数据类型。

编程使用

块参数OutDataTypeStr
类型:字符向量
继承:通过内部规则继承|“继承:通过反向传播继承”|继承:与第一次输入相同|“双”|“单一”|“一半”|“int8”|“uint8”|“int16”|“uint16”|“int32”|“uint32”|“int64”|“uint64”|“fixdt(16)”|“fixdt(0) 1, 16日”|“fixdt(1, 16日2 ^ 0,0)”|“字符串”|金宝appSimulink.ImageType (480640 3)|'<数据类型表达式>'
默认的“继承:通过内部规则继承”

选择以锁定此块的输出数据类型设置,防止由定点工具和定点顾问进行更改。有关更多信息,请参见使用锁输出数据类型设置(定点设计师)

编程使用

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

选择其中一种舍入模式。

天花板

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

收敛

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

地板上

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

最近的

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

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

简单的

自动在朝向下限的四舍五入和朝向零的四舍五入之间进行选择,以生成尽可能高效的四舍五入代码。

把数字舍入到零。等价于MATLAB修复函数。

编程使用

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

另请参阅

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

指定溢出是饱和还是包裹。

  • -溢出包装为数据类型可以表示的适当值。

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

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

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

提示

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

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

    清除此复选框还有助于避免过度指定块如何处理超出范围的信号。有关更多信息,请参见排除信号范围错误

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

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

编程使用

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

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

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

  • —要求所有非标量数据输入信号大小一致。

编程使用

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

选择要指定的数据类别。

  • 继承—数据类型的继承规则。选择继承在右侧启用第二个菜单/文本框,您可以在其中选择继承模式。

  • 建在—内置数据类型。选择建在在右侧启用第二个菜单/文本框,您可以在其中选择内置数据类型。

  • 不动点—定点数据类型。选择不动点启用可用于指定定点数据类型的其他参数。

  • 表达式-计算为数据类型的表达式。选择表达式启用右边的第二个菜单/文本框,您可以在其中输入表达式。

有关更多信息,请参见使用数据类型助手指定数据类型

依赖关系

若要启用此参数,请单击显示数据类型助手按钮。

为该信号选择数据类型覆盖模式。

  • 当你选择继承, 金宝appSimulink从它的上下文继承数据类型覆盖设置,即从块,金宝app仿真软件。信号对象或状态流®在Simulink金宝app中使用信号的图表。

  • 当你选择, 金宝appSimulink忽略其上下文的数据类型覆盖设置,并使用为信号指定的定点数据类型。

有关更多信息,请参见使用数据类型助手指定数据类型在Simuli金宝appnk文档中。

依赖关系

若要启用该参数,请设置模式建在不动点

提示

在应用数据类型覆盖时,关闭单个数据类型的数据类型覆盖的功能可以更好地控制模型中的数据类型。例如,您可以使用此选项来确保数据类型满足下游块的要求,而不管数据类型覆盖设置如何。

指定定点数据是有符号的还是无符号的。有符号数据可以表示正数和负数,但无符号数据只能表示正数。

  • 签署,指定带符号的定点数据。

  • 无符号,指定定点数据为unsigned。

有关更多信息,请参见使用数据类型助手指定数据类型

依赖关系

若要启用此参数,请设置模式不动点

指定缩放定点数据的方法,以避免溢出条件和最小化量化误差。有关更多信息,请参见指定定点数据类型

依赖关系

若要启用该参数,请设置模式不动点

指定保存量化整数的字的位大小。有关更多信息,请参见指定定点数据类型

依赖关系

若要启用该参数,请设置模式不动点

将定点数据类型的分数长度指定为正整数或负整数。有关更多信息,请参见指定定点数据类型

依赖关系

若要启用该参数,请设置扩展二点

指定定点数据类型的斜率。有关更多信息,请参见指定定点数据类型

依赖关系

若要启用该参数,请设置扩展斜率和偏置

指定定点数据类型的偏置为任何实数。有关更多信息,请参见指定定点数据类型

依赖关系

若要启用该参数,请设置扩展斜率和偏置

块特征

数据类型

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

直接引线

是的

多维信号

是的

适应信号

是的

讨论二阶导数过零检测

没有

扩展功能

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

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

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

版本历史

R2006a之前介绍