基于模型的软件开发——信号处理

Simulink 总线信号

在 MATLAB 中尝试

本示例向您介绍以下 Simulink® 总线信号功能:

  • Bus Creator、Bus Selector 和 Bus Assignment 模块

  • 组件接口上的总线元素端口

  • 便于更快执行常见总线工作流任务的智能编辑功能

本示例中使用的 slexBusExample 模型中的三个区域对应于这三个功能。

Bus Creator、Bus Selector 和 Bus Assignment 模块

“Bus Creator、Bus Selector 和 Bus Assignment 模块”区域中的子系统用于说明如何

  • 使用 Bus Creator 模块创建总线信号

  • 使用 Bus Assignment 模块替换总线中的信号

  • 使用 Bus Selector 模块从总线中选择信号

使用 Bus Creator 模块可将连接到其输入的信号捆绑到总线中。总线信号表示一组信号,类似于一束绑在一起的电线。例如,由 Bus Creator 1 创建的总线信号包含连接到其输入的两个信号:sine 和 chirp。您可以通过右键点击信号并从菜单中选择 Signal Hierarchy 来查看信号的层次结构。您也可以创建嵌套总线。例如,sinusoidal 和 non-sinusoidal 是由 Bus Creator 3 创建的总线中的子总线信号。

使用 Bus Assignment 模块可替换连接到其 Bus 输入的信号中的一个或多个信号。例如,Bus Assignment 将由 Bus Creator 3 创建的总线中的信号 constant 和 non-sinusoidal 替换为新信号。您可以使用 Bus Assignment 模块来替换叶信号和子总线信号。

使用 Bus Selector 模块可从连接到其输入的总线中提取一个或多个信号。例如,Bus Selector 选择 non-sinusoidal.pulsesinusoidal.sine 和 constant 信号。您可以运行仿真以在示波器中可视化 non-sinusoidal.pulse 和 sinusoidal.sine,在显示视图中可视化 constant

运行仿真后,查看 slexBusExample 中的线。请注意,有几条信号是用三条线绘制的。这种线格式表示信号是总线信号

有关总线的详细信息,请参阅总线快速入门

组件接口上的总线元素端口

“组件接口上的总线(总线元素端口)”区域中的子系统用于说明如何执行以下任务

  • 使用 Out Bus Element 模块创建总线信号

  • 使用 In Bus Element 模块从总线中选择信号

Out Bus Element 模块

第一个子系统由五个信源模块和五个 Out Bus Element 模块组成。

Out Bus Element 模块与连接到 Outport 模块的 Bus Creator 模块类似。每个 Out Bus Element 模块都有标签。您可以在两种模式下显示此标签。在 Expanded Notation 模式中,标签由相应子系统端口的名称和用于确定总线中元素的点分隔字符串组成。例如,带有标签 Out1.sinusoidal.sine 的 Out Bus Element 模块在名为 Out1 的输出端口上名为 sinusoidal 的子总线中创建名为 sine 的叶信号。在 Compact Notation 模式中,叶信号名称成为标签。您可以在 Expanded Notation 和 Compact Notation 模式之间切换。

在任一模式下,您都可以直接编辑标签文本,以更改在输出总线中创建的元素。

要在总线中创建新元素,请复制并粘贴 Out Bus Element 模块。要在子系统接口上创建新输出端口,请右键点击并拖动 Out Bus Element 模块,然后选择 Create New Port

要查看由一组 Out Bus Element 模块创建的总线,请双击其中一个模块的图标以打开端口属性对话框。您可以突出显示连接到模块的信号,更改端口的名称和编号,更改模块的颜色,以及重新排列总线中的信号。

In Bus Element 模块

第二个子系统由两个 Scope 模块、一个 Display 模块和五个 In Bus Element 模块组成。

In Bus Element 模块类似于连接到 Bus Selector 模块的 Inport 模块。In Bus Element 模块的标签与 Out Bus Element 模块标签的工作方式相同。例如,标签为 In1.sinusoidal.sine 的 In Bus Element 模块在名为 sinusoidal 的子总线中选择名为 sine 的叶信号。

要更改从输入总线中选择的元素,请直接编辑标签文本。如果总线已连接到相应的输入端口,则您可以从可用信号列表中进行选择。

要从总线中选择新元素,请复制并粘贴 In Bus Element 模块。要在子系统接口上创建新输入端口,请右键点击并拖动 In Bus Element 模块,然后选择 Create New Port。要查看由一组 In Bus Element 模块访问的总线,请双击其中一个模块的图标以打开端口属性对话框。您可以更改端口的名称和编号,更改模块的颜色,并观察传入总线中任何缺失或未使用的信号。

有关使用 In Bus Element 和 Out Bus Element 模块的详细信息,请参阅简化子系统总线接口

便于更快执行常见总线工作流任务的智能编辑功能

“Tips & Tricks For Working With Buses”区域中的子系统用于说明如何借助以下功能更快地执行常见总线任务:

  • 使用“总线元素端口”智能编辑提示,将 Bus Selector 和 Bus Creator 模块转换为 In Bus Element 和 Out Bus Element 模块

  • 使用“创建总线”智能编辑提示,在子系统接口上创建总线,并将各个模块的输出捆绑到一个总线中

  • 使用自动端口创建功能,向 Bus Creator 模块添加新信号并从 Bus Selector 模块中选择新信号

将 Bus Creator 和 Bus Selector 模块转换为 In Bus Element 和 Out Bus Element 模块

您可以使用“总线元素端口”智能编辑提示,将在接口上使用 Bus Selector 和 Bus Creator 模块的现有子系统转换为使用 In Bus Element 和 Out Bus Element 模块。

  1. 点击连接到 Inport 模块的 Bus Selector 模块或连接到 Outport 模块的 Bus Creator 模块。

  2. 从操作栏中选择 Bus Element Ports

将各个信号捆绑到一个总线中

您可以使用“创建总线”智能编辑提示将多个信号捆绑到一个总线中。

  1. 拖动一个选择框来框选所需的信号。

  2. 从操作栏中选择 Create Bus

Between Subsystems

当在两个子系统之间执行此操作时,此操作会将源和目标子系统中的 Inport 和 Outport 模块替换为 In Bus Element 和 Out Bus Element 模块。

Subsystem Inputs

对连接到某个其他非子系统模块的子系统的输入执行此操作时,此操作会使用 Bus Creator 模块将所选信号捆绑到一个总线中,并将子系统中的 Inport 模块替换为 In Bus Element 模块。

Subsystem Outputs

对连接到某个其他非子系统模块的子系统的输出执行此操作时,此操作会将子系统中的 Outport 模块替换为 Out Bus Element 模块,并插入 Bus Selector 模块以维护连接性。

Block Outputs

当对各个模块的输出执行此操作时,此操作会插入 Bus Creator 模块、调整其大小并进行连接。

自动端口创建

您可以通过将信号线拖动到 Bus Creator 模块来向总线添加新信号。要从总线中选择新信号,请将信号线拖到 Bus Selector 模块,然后从可用信号列表中选择所需的信号。

在Simulink的BaseWorkspaces中,你可以通过以下步骤添加新的数据类型来表示和使用结构体: 1. **创建结构体**: - 在Model Explorer中,点击"Add" -> "Simscape" -> "Foundation Library" -> "Data Types" -> "Structures"。这将允许你定义一个新的结构体变量。 2. **起名和定义结构体**: - 给新结构体命名(例如,`MyCustomStruct`),然后为每个字段指定名称和类型。例如,如果你想要一个包含`field1`(数值)、`field2`(字符串)的结构体,可以这样定义: ```matlab MyCustomStruct = struct('field1', 'double', 'field2', 'char'); ``` 3. **保存结构体**: - 创建完成后,为了在模型中使用这个结构体,你需要将它存储到`.mat`文件中,通常在模型的` Simscape > Components > Parameters`中找到`Save to Workspace`选项,选择刚刚创建的`.mat`文件并将其关联到结构体变量。 4. **在模型中使用结构体**: - 在Model中添加一个Matlab Function模块,选择"Input & Output"作为其数据类型,选择你之前保存的`.mat`文件中的结构体变量作为输入或输出。 ```matlab % 在Function Body区域,接收或返回结构体 inputStruct = getInPort('input'); % 获取输入结构体 outputStruct = MyCustomStruct; % 或者直接赋值给输出 setOutPort('output', outputStruct); % 发送结构体到输出端口 ``` **方法二:使用Bus Assignment模块** - 如果你想以信号形式传递结构体,可以在模型中使用BusAssignment模块,配置其`Signal Type`为`Structure`,并指定输入和输出结构体的名字和类型。 ```matlab BusAssignment('myStructBus', ... 'InputBusName', 'inBus', ... % 输入信号名称 'OutputBusName', 'outBus', ... % 输出信号名称 'DataType', 'MyCustomStruct'); % 使用自定义的结构体类型 ``` 5. **别名定义** (可选): - 如果想让结构体更易于理解,可以使用Simulink的别名功能[^2]。通过创建一个Simulink AliasType,定义基础数据类型和结构体,以及枚举类型。这将在图形界面中提供更直观的显示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值