主要内容

在总线数组中对非虚拟总线进行分组

一个数组的公交车数组的元素是非虚拟总线。

使用一个总线数组:

  • 通过集中处理多总线的算法减少维护。

  • 简化相同类型的多个总线的迭代处理,例如,通过使用带有总线阵列的for Each子系统。

  • 更改正在处理的总线数量,而不必重组使用总线数组的模型部分。

  • 使用内置块,例如赋值选择器块来操作总线数组,就像操作任何其他类型的数组一样。使用一组总线避免了创建定制s函数来管理打包和解打包结构信号的需要。

  • 生成具有C结构数组的代码,可以将其与使用结构数组的遗留C代码集成。这种方法简化了Simulink的数组索引金宝app®计算,使用在索引结构上循环。

例如,您可以将多通道系统(如通信系统)建模为总线阵列。所有通道都具有相同的数据类型,并且每个通道可以具有不同的值。

有关演示使用总线数组的多种方法的模型,请参见总线模型阵列

总线阵列的要求

所有组合成一组总线的总线必须:

  • 是nonvirtual

  • 指定相同的金宝app仿真软件。公共汽车对象数据类型(即相同的名称、层次结构和总线元素属性)

  • 没有可变大小的信号或基于帧的信号

有关创建非虚拟总线的信息,请参见创建Nonvirtual公交车

有关哪些块支持总线数组的信息,请参见金宝appBus-Capable块

从非虚拟总线创建总线数组

可以使用Vector Concatenate或Matrix Concatenate块将非虚拟总线分组到总线数组中。金宝appSimulink将非虚拟总线视为标量。因此,无论总线元素数据类型如何,您都可以使用这两个块中的任何一个。

使用下面的代码块创建一个总线数组:

  1. 定义一个金宝app仿真软件。公共汽车要在总线数组中分组的所有非虚拟总线的对象数据类型。

  2. 在“矢量连接块”或“矩阵连接块”的“块参数”对话框中设置输入数量到总线数组中所需的总线数。块图标显示您指定的输入端口的数量。

  3. 将非虚拟总线连接到块输入。

块输出是总线数组。

打开并编译示例模型。要编译模型,在建模选项卡,单击金宝app更新模型运行.编译模型会更新线条样式,您可以使用这些样式直观地识别总线阵列。

为了演示如何从非虚拟总线创建总线数组,该模型使用:

  • 两个总线的创造者块创建具有相同功能的两个非虚拟总线公共汽车对象数据类型(总线:BusObject).

  • 一个矢量连接,矩阵连接块与输入数量设置为2将两个非虚拟总线分组到总线数组中。

为了演示如何从总线数组中选择元素,模型使用:

  • 一个选择器块从总线数组中提取基于指定的总线指数在对话框中。因为总线数组是连接的信号,提供对其元素的基于索引的访问,所以Selector块使用索引向量(对话框)指数的选择

  • 一个总线选择器块以使用基于名称的访问提取非虚拟总线的元素。

信号的维度信息叠加显示总线阵列包含两个总线。要启用信号的维度覆盖,在Simulink工具条中金宝app,在调试选项卡上,选择信息覆盖>信号尺寸

从MATLAB结构创建总线阵列

可以使用Constant块紧凑地表示带有常量值总线元素的总线数组。这种技术可以减少模型中的行数和模型使用的变量数,特别是当模型重复使用不同参数值的算法时。

在Constant块上指定:

  • 恒定值作为MATLAB结构的数组或金宝app仿真软件。参数对象,该对象指定MATLAB结构的数组

  • 输出数据类型作为一个金宝app仿真软件。公共汽车对象

当输出数据类型为a时,常量块仅支持MATL金宝appAB®结构公共汽车对象。

定义一个名为const_struct_array.组成相同元素的每个结构:抵消获得,阈值

const_struct_array(1)。抵消= 197;const_struct_array(1)。获得= 4.32;const_struct_array(1)。阈值= 795.68;const_struct_array(2)。抵消= 158;const_struct_array(2)。获得= 3.83;const_struct_array(2)。阈值= 1039.77;

要为包含许多元素的总线层次结构创建结构数组,请考虑使用金宝appSimulink.Bus.createMATLABStruct函数。

定义相应的公共汽车对象的数据类型。

金宝appSimulink.Bus.createObject (const_struct_array)

公共汽车对象使用默认名称slBus1

打开并模拟示例模型,其中包含一个常量块恒定值设置为const_struct_array输出数据类型设置为总线:slBus1

open_system (“ArrayOfBusesFromStructModel”) sim卡(“ArrayOfBusesFromStructModel”);

Constant块的输出是一个总线数组。

For Each子系统块迭代地处理数组中每个非虚拟总线的常量值。子系统内容显示非虚拟总线,而不是连接到端口的总线数组。

另请参阅

相关的话题