Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

Bus Creator

将输入信号或消息组合到总线中

  • Bus Creator block

库:
Simulink / Commonly Used Blocks
Simulink / Signal Routing
HDL Coder / Signal Routing

描述

Bus Creator 模块将输入信号或消息合并总线中,该总线保留信号和消息的各自的身份。默认情况下,Bus Creator 模块创建一个虚拟总线,它类似于用束线带绑在一起的一捆电线。或者,该模块可以创建非虚拟总线,这类似于 C 代码中的结构体。

总线元素必须具有唯一名称。默认情况下,总线的每个元素都继承连接到 Bus Creator 模块的元素的名称。如果存在重复名称,Bus Creator 模块会将端口号追加到所有输入元素名称。对于没有名称的元素,Bus Creator 模块会生成 signaln 形式的名称,其中 n 是连接到元素的端口号。当您搜索元素源或选择元素以连接到其他模块时,您可以按名称引用元素。有关元素命名规范,请参阅信号名称和标签

要按名称从总线中提取元素,请使用 Bus Selector 模块。

要创建包含其他总线的总线,请将其他总线连接到 Bus Creator 模块输入端口。

提示

对于位于子系统和模型接口上的总线,使用 Out Bus Element 模块,而不是 Bus Creator 模块和 Outport 模块。Out Bus Element 模块能够:

  • 减少模块图中线的复杂度和杂乱无章。

  • 允许您更轻松地逐步更改接口。

示例

全部展开

您可以使用 Bus Creator 模块将信号组合到一个组件内的一个虚拟总线中。

打开包含三个模块的示例模型。

要创建一个包含来自多个模块的输出的总线,请点击并拖动以选择这些模块。对于此示例,请选择 Chirp Signal 和 Sine Wave 模块。在出现的操作栏中,点击创建总线

软件会添加 Bus Creator 模块,并将输入连接到该模块。Bus Creator 模块的输出是虚拟总线。

为了更容易识别总线的元素,请对 Bus Creator 模块的输入加标签。双击 Chirp Signal 模块和 Bus Creator 模块之间的信号线。然后,输入 Chirp。双击 Sine Wave 模块和 Bus Creator 模块之间的信号线。然后,输入 Sine

要创建包含第一条总线和 Step 模块输出的第二条总线,请点击并拖动以选择 Bus Creator 和 Step 模块。在出现的操作栏中,点击创建总线。由于 SineChirp 信号是输入总线的元素,因此无论您的选择是否包括 Sine Wave 和 Chirp Signal 模块,软件都会创建相同的总线。

软件会添加另一个 Bus Creator 模块,并将输入连接到该模块。Bus Creator 模块的输出是包含嵌套总线的虚拟总线。

您可以将总线嵌套至任意深度。如果 Bus Creator 模块的输入之一是总线,则其输出是包含至少一个嵌套总线的总线层次结构。

标记新 Bus Creator 模块的输入。双击 Step 模块和 Bus Creator 模块之间的信号线。然后,输入 Step。双击 Bus Creator 模块之间的信号线。然后,输入 NestedBus。或者,排列模块以提高模型的可读性。

将第二个 Bus Creator 模块的输出连接到 Scope 模块,并对输出加标签 TopBus。要直观地识别总线,请通过点击 Simulink 工具条的建模选项卡上的更新模型运行来编译模型。编译模型会更新线型。

您可以使用 Bus Creator 模块在组件中创建非虚拟总线。

打开并编译示例模型,该模型使用 Bus Creator 模块来创建虚拟总线的层次结构。要编译模型,请在 Simulink 工具条的建模选项卡上,点击更新模型运行。编译模型会更新线型,您可以使用线型来直观地标识总线。

要创建此模型,请参阅将组件内的信号线组合起来

此模型中的虚拟总线不是由 Simulink.Bus 对象定义的。要将 Bus Creator 模块的输出更改为非虚拟总线,必须有与总线层次结构匹配的总线对象。

要创建对应于 TopBusNestedBus 的总线对象,请使用 Simulink.Bus.createObject 函数。在 MATLAB 命令行窗口中,输入以下命令。

Simulink.Bus.createObject('NonvirtualBusCreationModel',...
'NonvirtualBusCreationModel/Bus Creator1');

该函数创建对应于指定模块输出总线的总线对象。如果输出总线包含嵌套总线,该函数还创建对应于嵌套总线的总线对象。在此示例中,该函数创建两个总线对象,它们以对应的总线 TopBusNestedBus 命名。

要查看总线对象,请打开类型编辑器。在 Simulink® 工具条的建模选项卡上,在设计库中,点击类型编辑器

现在,您已有对应于要创建的非虚拟总线的总线对象,接下来创建非虚拟总线。在 Simulink 编辑器中,双击名为 Bus Creator1 的 Bus Creator 模块。在“模块参数”对话框中,将输出数据类型设置为 Bus: TopBus,选中输出为非虚拟总线复选框,然后点击确定TopBus 现在是非虚拟总线,而 NestedBus 仍是虚拟总线。要通过线型识别非虚拟总线,请编译模型。

双击名为 Bus Creator 的模块。在“模块参数”对话框中,将输出数据类型设置为 Bus: NestedBus,选中输出为非虚拟总线复选框,然后点击确定NestedBus 现在是非虚拟总线。要更新其线型,请编译模型。

如果不保存总线对象,则必须在重新打开模型时重新创建总线对象。有关如何保存总线对象的信息,请参阅使用总线对象指定总线属性

端口

输入

全部展开

输入端口接受要包含在总线中的元素。输入端口的数量由输入的数目参数决定。

每个 Bus Creator 模块都支持这些输入元素的组合:

  • 仅信号

  • 信号和信号总线

  • 仅消息

  • 消息和总线

  • 仅限总线

您可以指定可变大小输入信号,其上界小于对应的 Bus Creator 模块输入端口可以接受的可变大小信号的上界。要配置 Bus Creator 模块输入端口可接受的可变大小信号的上界,请使用 Simulink.BusElement 对象。有关详细信息,请参阅 Simulink.BusElement。可变大小输入信号的维度必须与对应的 Bus Creator 模块输入端口配置的可接受信号维度相同。

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

输出

全部展开

输出总线由输入元素组成。以非虚拟总线输出参数指定输出总线是虚拟总线还是非虚拟总线。有关总线类型的信息,请参阅合成接口规范

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

参数

全部展开

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

输入元素的数量必须为大于或等于 2 的整数。增加输入的数目会向模块添加空的输入端口。在对模型进行仿真之前,请确保为每个输入端口连接了输入元素。

在修改输入的数目参数后,点击刷新以更新元素列表。

如果所有输入端口都已连接,您可以通过将另一条线连接到 Bus Creator 模块来添加一个输入端口。

A line is dragged near a Bus Creator block with two connected ports and a third port appears.

以交互方式添加端口会更新输入的数目参数,并将新元素添加到总线中的元素列表。

编程用法

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

将输入的数目指定为大于或等于 2 的整数,或以逗号分隔的元素名称列表。当您指定总线中元素的名称时,输入的数目与您指定的元素名称的数目相匹配。

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

示例: set_param(gcb,'Inputs','3')

示例: set_param(gcb,'Inputs','element1,element2,element3')

输入元素列表包括进入模块的所有元素,包括嵌套总线的元素。元素旁边的箭头表示输入元素是总线。要显示该总线的内容,请点击箭头。

要突出显示进入模块的元素的来源,请在列表中选择该元素,然后点击查找

如果在对话框打开时更改了元素名称,请点击刷新以更新列表中的名称。

要重新排列输出总线中的元素,请使用向上向下按钮。您可以在总线中的元素列表中选择多个要进行重新排序或删除的顶层相邻元素。

要添加或删除输入元素,请分别点击添加删除。然后,点击应用确定来更新模块图标。在对模型进行仿真之前,请确保为每个输入端口连接了输入元素。

编程用法

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

将总线中的元素指定为以逗号分隔的元素名称列表。当您指定总线中元素的名称时,输入的数目与您指定的元素名称的数目相匹配。

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

示例: set_param(gcb,'Inputs','element1,element2,element3')

要过滤显示的输入元素,请输入搜索词。过滤器可执行部分字符串搜索。请勿将搜索词括在引号内。

要访问过滤选项,请点击按名称过滤框右侧的显示过滤选项 按钮。

选择此参数以使用正则表达式或部分搜索字符串过滤显示的输入元素。默认情况下,您可以仅使用部分搜索字符串过滤显示的输入元素。

正则表达式允许您根据输入元素是否匹配某个模式进行过滤。例如,在按名称过滤框中输入 t$,以显示名称以小写字母 t 结尾的所有元素(及其直接父级)。有关详细信息,请参阅正则表达式

依存关系

要访问此参数,请点击按名称过滤框右侧的显示过滤选项 按钮。

选择此参数以扁平列表形式显示过滤结果,该列表使用圆点表示法来反映总线层次结构。默认情况下,过滤结果显示在层次结构树中。

依存关系

要访问此参数,请点击按名称过滤框右侧的显示过滤选项 按钮。

指定输出总线的数据类型。

如果选择 Bus: <object name>,请用 Simulink.Bus 对象的名称替换 <object name>。编辑模型时,必须可以访问总线对象。

要使用类型编辑器定义 Simulink.Bus 对象,请点击显示数据类型助手按钮 ,将模式设置为总线对象,然后点击编辑按钮。

如果选择 <data type expression>,请指定一个计算结果为 Simulink.Bus 对象的表达式。

编程用法

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

参数: OutDataTypeStr
值: 'Inherit: auto' (默认) | 'Bus: <object name>'

示例: set_param(gcb,'OutDataTypeStr','Bus: control')

在以后的版本中可能会删除此参数。要强制实施强数据定型,请使用使用来自输入的名称,而不是来自总线对象的名称参数。

当选中时,此参数检查输入元素名称是否与“模块参数”对话框中列出的名称相匹配。如果元素名称不匹配,软件将返回错误。

依存关系

  • 如果您选中使用来自输入的名称,而不是来自总线对象的名称,此参数将被忽略。

  • 如果您以编程方式更改输入数目,此参数将还原为 off

指定所选输入元素的新名称。有关名称规范,请参阅信号名称和标签

依存关系

要启用此参数,请选中要求输入的名称与以上的名称匹配

默认情况下,Bus Creator 模块使用输入元素名称作为输出总线元素名称,即使您将 Simulink.Bus 对象指定为数据类型也是如此。

要从总线对象继承总线元素名称,请清除此参数。清除此参数将:

  • 强制应用强数据定型。

  • 避免在总线对象和模型中多次输入一个元素名称。多次输入名称可能导致意外的元素名称不匹配。

  • 支持在数组元素之间必须具有一致的元素名称这一总线数组要求。

要在选中此参数的情况下强制实施强数据类型,请将元素名称不匹配配置参数设置为错误。此配置参数检查输入元素名称是否与总线对象中的对应名称匹配。

依存关系

要启用此参数,请将输出数据类型设置为 Simulink.Bus 对象。

编程用法

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

参数: InheritFromInputs
值: 'on' (默认) | 'off'

示例: set_param(gcb,'InheritFromInputs','off')

选择此参数以输出非虚拟总线而不是虚拟总线。

非虚拟总线中的所有元素都必须具有相同的采样时间,即使关联的 Simulink.Bus 对象的元素为某些元素指定了继承采样时间也是如此。任何导致包含不同采样率元素的非虚拟总线的操作都会生成错误。要更改采样时间不同于其他非虚拟总线输入元素的元素或总线的采样时间,请使用 Rate Transition 模块。有关详细信息,请参阅Modify Sample Times for Nonvirtual Buses

要生成使用 C 结构体定义此模块创建的总线结构的代码,请选择此参数。

依存关系

要启用此参数,请将输出数据类型设置为 Simulink.Bus 对象。

编程用法

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

参数: NonVirtualBus
值: 'off' (默认) | 'on'

示例: set_param(gcb,'NonVirtualBus','on')

模块特性

数据类型

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

直接馈通

多维信号

可变大小信号

过零检测

扩展功能

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

版本历史记录

在 R2006a 之前推出

全部展开