主要内容

Bus Assignment

为指定的总线元素赋予新值

  • Bus Assignment block

库:
Simulink / Signal Routing
HDL Coder / Signal Routing

描述

Bus Assignment 模块为选定总线元素赋予新值。使用 Bus Assignment 模块更改元素值,而无需提取元素并用所需元素重新组合为总线。Bus Assignment 模块简化了总线的更新,以反映在一个单独的组件(如子系统或引用模型)中发生的处理。

Bus Assignment 模块将连接到赋值端口的元素赋给连接到总线输入端口的总线的指定元素。该模块将替换先前分配给这些元素的元素。此更改不影响总线的构成。此更改仅影响元素的值。未替换的元素不受其他元素替换的影响。

被赋值的元素可以是非总线信号或总线(包括总线数组),只要它们是输入总线的元素即可。新值必须与原始总线中元素的属性匹配。

默认情况下,软件会修复 Bus Assignment 模块中由于上游总线层次结构发生变化而失效的选择。如果修复修改了模型,系统会向您发送警告通知。为防止软件自动进行这些修复,请将修复总线选择配置参数设置为报错但不修复

示例

全部展开

要替换总线元素的值,请使用 Bus Assignment 模块。您不需要使用 Bus Selector 和 Bus Creator 模块来更改总线元素的值。

打开并编译名为 BusAssignment 的示例模型。要编译模型,请在 Simulink® 工具条的建模选项卡上,点击更新模型。编译模型会更新线型,您可以使用线型来直观地标识总线。

BusAssignment model

Bus Assignment 模块有两个输入端口。

  • 第一个输入端口接收名为 constants 的总线。

  • 第二个输入端口接收名为 c 的信号。

双击 Bus Assignment 模块,打开具有赋值选项的对话框。

“模块参数”对话框在总线中的元素列表中可用于赋值的元素。在此模型中,元素 ab 可用于赋值。

The Elements in the bus list contains a and b.

元素 a 也会出现在要赋值的元素列表中,这表明该元素已选中进行赋值。

The Elements that are being assigned list contains only a.

为了指示与赋值端口对应的元素,模块图标上的端口标签包含元素名称。对于元素 a,端口标签是 :=a

Assignment port label on block icon

信号 c 连接到元素 a 的赋值端口。Bus Assignment 模块将元素 a 的值 1 替换为信号 c 的值 3。

为了显示元素 a 的新值和元素 b 的未更改值,Bus Selector 模块选择元素 ab,并将这些元素连接到 Display 模块。

要填充 Display 模块,请在 Simulink 工具条的建模选项卡上,点击运行

BusAssignment model after simulation

Display 模块显示元素赋值后的值。

  • 元素 a 的值为 3,这是它在 Bus Assignment 模块中的新值。

  • 元素 b 的值为 2,这是其原始值。

您可以通过选择总线中的元素下的元素,然后点击选择,来选择要为其赋值的其他元素。Bus Assignment 模块为您要赋新值的每个附加元素添加输入端口。新输入端口允许您连接要赋值给附加元素的信号。

扩展示例

限制

Bus Assignment 模块不支持消息。

端口

输入

全部展开

输入虚拟或非虚拟总线可以包含该软件支持的任何数据类型的实数值或复数值元素,包括总线对象、定点数据类型和枚举数据类型。总线也可以包含总线数组。

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

要赋值的元素列表中的每个元素都对应一个赋值端口。端口标签指示对应于该端口的总线元素。对于名为 signal1 的元素,端口标签为:= signal1

连接到赋值端口的总线或非总线信号必须具有与对应元素相同的结构体、数据类型和采样时间。要更改一个或多个元素的采样时间,请使用 Rate Transition 模块。有关详细信息,请参阅 Modify Sample Times for Nonvirtual Buses

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

输出

全部展开

输出虚拟或非虚拟总线包含选定元素所赋予的总线元素值和其他元素的未修改的总线元素值。

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

参数

全部展开

要以交互方式编辑 Bus Assignment 模块参数,请双击该模块。

此 参数 为只读。

选择输入总线中要对其进行操作的元素。

元素名称旁边的箭头表示该元素是嵌套总线。要显示嵌套总线中的元素,请点击该箭头。

选择一个或多个元素后,点击:

  • 查找 - 查找选定元素的源。软件将打开并突出显示包含元素源的系统。

  • 选择 - 将选定元素添加到要赋值的元素列表中。有关详细信息,请参阅要赋值的元素

要过滤输入元素长列表,请在按名称过滤框中指定搜索词。请勿将搜索词括在引号内。过滤器执行部分字符串搜索。

要访问过滤选项,请点击按名称过滤框右侧的 Show filtering options

  • 启用正则表达式 - 允许使用 MATLAB® 正则表达式来过滤元素名称。例如,要显示其名称以小写字母 t 结尾的所有元素(及其直接父级),请在按名称过滤框中输入 t$。有关详细信息,请参阅 正则表达式

  • 将过滤结果显示为扁平列表 - 以扁平列表形式显示过滤后的元素,该列表使用圆点表示法来反映总线层次结构。默认情况下,输入元素的列表以层次结构树形式显示元素。

要刷新列表以反映对输入总线的修改,请点击刷新

编程用法

要以编程方式获取模块参数值,请使用 get_param 函数。

参数: InputSignals
值: 只读: list of element names in a cell array or cell array of cell arrays

示例: get_param(gcb,'InputSignals')

对于此列表中的每个元素,模块都有一个对应的赋值端口。端口标签包含对应元素的名称。

要为元素添加赋值端口,请执行以下操作:

  1. 总线中的元素列表中选择一个或多个元素。

    如果您从总线中的元素列表中选择了多个元素,则您选择它们的顺序将确定它们在要赋值的元素列表中的顺序。

  2. (可选)指定希望元素出现在要赋值的元素列表中的位置。选择希望添加的元素出现在其下方的元素。如果不选择元素,添加的元素会出现在列表的末尾。

  3. 点击选择

要更改赋值端口的顺序,请选择列表中的一个元素或多个连续元素,然后点击上移下移。当您更改元素顺序时,端口会保持连接。

要删除赋值端口,请在列表中选择对应的元素,然后点击删除

如果列表中的某个元素不在输入总线中,则该元素名称以三个问号 (???) 开头。请修改输入总线以包含指定名称的元素,或从列表中删除该元素。

编程用法

要以编程方式设置模块参数值,请使用 set_param 函数。

参数: AssignedSignals
值: 'signal1' (默认) | comma-separated list of element names in quotes
数据类型: char | string

示例: set_param(gcb,'AssignedSignals','sine,chirp')

模块特性

数据类型

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

直接馈通

多维信号

可变大小信号

过零检测

提示

  • 要替换总线数组中的一条总线,请改用 Assignment 模块。有关示例,请参阅 总线数组建模

  • 要替换总线数组中的总线元素,请使用 Selector 模块选择要修改的总线索引。然后,将所选总线用作 Bus Assignment 模块的输入。

扩展功能

全部展开

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

版本历史记录

在 R2006a 之前推出