主要内容

Simulink 总线功能

总线表示一组元素,类似于捆绑在一起的一束电线。总线可减少模块图中线条的复杂度和杂乱无章,并使进一步更改组件接口变得更容易。例如,如果您必须在组件接口中添加或删除元素,修改总线可能比添加或删除端口更简单。

此示例向您介绍 Simulink® 总线功能,这些功能可帮助您:

  • 使用总线组织模块图。

  • 使用总线元素端口简化组件接口。

  • 通过智能编辑简化常见总线工作流。

打开并编译 BusCapabilities 模型。要编译模型,请在 Simulink 工具条的建模选项卡上,点击更新模型

mdl = "BusCapabilities";
open_system(mdl);
set_param(mdl, SimulationCommand="Update");

BusCapabilities model with three areas that each contain one or more Subsystem blocks

编译模型会更新线型。打开模型时,总线与标量信号具有相同的线型。在模型编译后,每条总线都有一个包含三条平行线的线型。

使用总线组织模块图

BusRouting 子系统说明如何:

  • 使用 Bus Creator 模块创建总线。

  • 使用 Bus Assignment 模块替换总线中的元素。

  • 使用 Bus Selector 模块从总线中提取元素。

BusRouting subsystem

每个 Bus Creator 模块将其输入组合到一条总线中。

  • BusCreator1 创建一条包含名为 sinechirp 的信号的总线。输出总线命名为 sinusoidal

  • BusCreator2 创建一条包含名为 pulsesaw 的信号的总线。输出总线命名为 nonsinusoidal

  • BusCreator3 创建一条总线,其中包含名为 sinusoidalnonsinusoidal 的总线。在新总线的上下文中,这些总线称为嵌套总线

  • BusCreator4 创建一条包含名为 pulsesaw 的不同信号的总线。

要查看总线的层次结构,请点击该总线。然后,在信号选项卡上,选择信号层次结构。例如,检查由 BusCreator3 创建的顶层总线的层次结构。

Bus hierarchy in which the top bus contains a nested bus named sinusoidal, a signal named constant, and a nested bus named nonsinusoidal

Bus Assignment 模块替换连接到其总线输入端口的总线中的一个或多个元素。在此示例中,顶层总线连接到总线输入端口。Bus Assignment 模块将名为 constant 的信号替换为不同信号,并将名为 nonsinusoidal 的总线替换为不同总线。

Bus Selector 模块从连接到其输入端口的总线中提取一个或多个元素。在此示例中,Bus Selector 模块选择标识为 nonsinusoidal.pulsesinusoidal.sineconstant 的信号。

每个选定信号连接到一个显示信号值的信宿。仿真开始后,示波器窗口显示 nonsinusoidal.pulsesinusoidal.sine 的值,Display 模块显示 constant 的值。要查看此行为,请对模型进行仿真。

sim(mdl);

A Display block shows the value of constant at the end of the simulation. A Scope block receives simulation data from nonsinusoidal.pulse and sinusoidal.sine.

使用总线元素端口简化组件接口

为了在输出端口上创建总线层次结构,BusOutput 子系统使用 Out Bus Element 模块。

Subsystem with five Out Bus Element blocks

Out Bus Element 模块的行为类似于连接到 Outport 模块的 Bus Creator 模块。每个 Out Bus Element 模块都有一个标识输出的标签。例如,标签为 Out1.sinusoidal.sine 的 Out Bus Element 模块在名为 Out1 的输出端口上名为 sine 的嵌套总线中创建一个名为 sinusoidal 的元素信号。

为了从输入端口提取总线元素,BusInput 子系统使用 In Bus Element 模块。

Subsystem with three In Bus Element blocks

In Bus Element 模块类似于连接到 Bus Selector 模块的 Inport 模块。每个 In Bus Element 模块都有一个标识输入的标签。例如,标签为 In1.sinusoidal.sine 的 In Bus Element 模块从名为 In1 的输入端口中选择位于名为 sinusoidal 的嵌套总线中的名为 sine 的元素。

总线元素端口支持部分选择。子系统的输入端口接收一条包含五个元素的总线,但子系统仅使用三个元素。这种灵活性允许您创建使用同一输入端口的不同元素的变体。

要更改与 In Bus Element 或 Out Bus Element 模块对应的输入或输出,请编辑模块标签。标签的第一部分是端口名称。标签的第二部分是元素路径,其中每个点表示层次结构的另一个级别。

GIF that demonstrates label editing

对于接收总线的子系统输入端口,请从可用元素列表中进行选择。

GIF that demonstrates selecting a different element from a subsystem input port

要创建一个端口或为现有端口添加一个模块,请右键点击并拖动 In Bus Element 或 Out Bus Element 模块。然后,选择新建端口新建元素复制。为防止对输出元素的重叠写入,复制功能对 Out Bus Element 模块禁用。

GIF that shows the menu that opens when you right-click and drag an Out Bus Element block

要创建一个端口,您也可以复制并粘贴 In Bus Element 或 Out Bus Element 模块。

要显示由一组 In Bus Element 模块访问的总线或由一组 Out Bus Element 模块创建的总线,请打开属性检查器。然后选择其中一个模块。或者双击其中一个模块。

从属性检查器或对话框中,您可以执行多种操作。例如,您可以:

  • 重命名端口和元素。

  • 在添加或不添加模块的情况下添加元素。

  • 指定总线及其元素的属性。

  • 单独、按总线或按所选内容更改模块颜色。

  • 对输出端口的元素重新排序。

GIF that demonstrates Property Inspector actions for an output bus element port

要更改当前模块图显示 In Bus Element 和 Out Bus Element 模块标签的方式,请点击 In Bus Element 或 Out Bus Element 模块,将鼠标悬停在省略号上,然后选择以下选项之一:

  • 扩展表示法 - 标签显示端口名称和元素路径,例如,Out1.sinusoidal.sine

  • 紧凑表示法 - 标签仅显示叶元素名称。例如,Out1.sinusoidal.sine 变为 sine。当您点击标签时,标签的两个部分都会显示以供编辑。

GIF that toggles between expanded and compact notation

虽然此示例在子系统接口处演示 In Bus Element 和 Out Bus Element 模块,但这些模块在模型接口处的行为类似。

通过智能编辑简化常见总线工作流

智能编辑使您能够快速:

  • 将输入端口和输出端口转换为总线元素端口。

  • 在输入和输出接口处创建总线。

  • 从模块输出创建总线。

  • 向总线模块添加端口。

  • 向子系统和引用模型添加总线元素端口。

快速转换端口

PortConversion 子系统包含两个通过总线连接的子系统。第一个子系统包含要转换为 Out Bus Element 模块的 Bus Creator 和 Outport 模块。第二个子系统包含要转换为 In Bus Element 模块的 Inport 和 Bus Selector 模块。

在第一个子系统中,点击连接到 Outport 模块的 Bus Creator 模块。将鼠标暂停在出现的省略号上。然后,从操作栏中选择总线端口

GIF that demonstrates Bus Ports action for Bus Creator and Outport blocks

在第二个子系统中,点击连接到 Inport 模块的 Bus Selector 模块。将鼠标暂停在出现的省略号上。然后,从操作栏中选择总线端口

GIF that demonstrates Bus Ports action for Bus Selector and Inport blocks

快速创建总线

BusCreation 子系统已设置好,可以在子系统接口和模块输出处创建总线。

要在子系统接口处创建一条总线,请在对应的信号线周围拖动以绘制一个选择框。将鼠标暂停在出现的省略号上。然后,从操作栏中选择创建总线

GIF that demonstrates Create Bus action for subsystem inputs and outputs

此操作将选定元素捆绑到一条总线中,将 Inport 和 Outport 模块替换为子系统中的 In Bus Element 和 Out Bus Element 模块,并添加 Bus Creator 和 Bus Selector 模块以保持子系统外部的连接性。

要在模块输出处创建一条总线,请在对应的模块周围拖动以绘制一个选择框。将鼠标暂停在出现的省略号上。然后,从操作栏中选择创建总线

GIF that demonstrates Create Bus action for three source blocks

此操作会插入一个 Bus Creator 模块,该模块接收来自选定模块的输入。

快速创建端口

PortCreation 子系统已设置好,可以在 Bus Creator 模块上创建输入端口,在 Bus Selector 模块上创建输出端口,以及在 Subsystem 模块上创建总线元素端口。

要向总线添加元素,请将一条信号线拖到 Bus Creator 模块。要从总线中选择元素,请将一条信号线拖到 Bus Selector 模块,然后从可用元素列表中选择所需的元素。

GIF that demonstrates port sprouting for Bus Creator and Bus Selector blocks

要向一个子系统或模型添加总线元素端口,请点击 Subsystem 模块或 Model 模块的边缘。然后,选择创建输入总线端口创建输出总线端口

GIF that demonstrates bus element port sprouting for a Subsystem block

另请参阅

| | | |

主题