Main Content

Simulink.Bus

指定总线的属性

说明

当与 Simulink.BusElement 对象结合使用时,Simulink.Bus 对象指定并验证总线及其元素的属性。在仿真或更新模型时,软件检查连接到模块的总线是否与模块指定的 Simulink.Bus 对象匹配。

总线对象仅指定总线的架构属性。例如,总线对象可以指定元素名称、层次结构、顺序和数据类型。总线对象类似于 C 代码中的结构体,因为它定义总线的成员,但不创建总线。总线对象也类似于电缆连接器。连接器定义所有的引脚及其配置,并控制它们可以连接哪些类型的电线。类似地,总线对象定义关联的总线必须具有的信号配置和属性。

Simulink.Bus 对象包含 Simulink.BusElement 对象。每个总线元素对象指定总线中一个信号的属性,如信号的名称、数据类型和维度。总线对象中的总线元素对象的顺序决定总线中信号的顺序。

总线对象可以指定未由组成信号定义但会被继承的属性。

要在基础工作区或数据字典中创建和修改总线对象,您可以使用类型编辑器模型资源管理器或 MATLAB® 命令。您无法在模型工作区中存储 Simulink.Bus 对象。

要在模型中使用 Simulink.Bus 对象,请参阅使用总线对象指定总线属性

创建对象

您可以通过多种方式创建 Simulink.Bus 对象。

描述

name = Simulink.Bus 返回具有默认属性值的 Simulink.Bus 对象。对象的名称是您向其赋予对象的 MATLAB 变量的名称。

示例

属性

全部展开

总线描述,指定为字符向量或字符串标量。使用该描述来记录有关对象的信息,例如它应用到的信号种类或使用对象的位置。此信息不会影响 Simulink® 处理。

数据类型: char | string

总线的元素,指定为由 Simulink.BusElement 对象组成的数组。每个总线元素对象定义总线内信号的名称、数据类型、维度和其他属性。有关详细信息,请参阅 Simulink.BusElement

生成的代码中的数据类型定义模式,指定为 'Auto''Exported''Imported'。此属性指定在代码生成期间是从 HeaderFile 属性指定的头文件中导入数据类型定义,还是将其导出到该头文件。

操作
'Auto'(默认值)

从指定的头文件中导入数据类型定义。如果您未指定头文件,则将数据类型定义导出到默认头文件。

'Exported'将数据类型定义导出到指定的头文件或默认头文件。
'Imported'从指定的头文件或默认的头文件中导入数据类型定义。

为了防止生成的代码中包含格式不正确的头文件,当 Simulink.Bus 对象有至少一个嵌套的 Simulink.Bus 对象将 DataScope 指定为 '导出' 并将 HeaderFile 指定为 C 头文件时,Simulink.Bus 对象必须将 DataScope 指定为 '导出' 并将 HeaderFile 指定为 C 头文件。

注意

要导入未用 typedef 语句声明的 enumstruct 类型,请执行以下操作:

  • 仿真目标配置参数中包含 (#include) 包含声明的头文件。

  • 确保仿真目标配置参数中的导入自定义代码处于选中状态。默认情况下,此参数处于选中状态。

以避免潜在的 MISRA C:2012 违规,请将数据作用域设置为已导入已导出

数据类型: char | string

用于数据类型定义的 C 头文件,指定为字符向量或字符串标量。基于 DataScope 属性的值,在头文件中导入或导出数据类型定义。Simulink Coder™ 软件使用此属性进行代码生成。Simulink 软件将忽略此属性。

默认情况下,生成的 #include 指令使用预处理器分隔符 ",而不是 <>。要生成指令 #include <myTypes.h>,请将 HeaderFile 指定为 <myTypes.h>

数据类型: char | string

数据对齐边界,指定为整数(以字节为单位)。-1 指定不进行数据对齐。Simulink Coder 软件使用此属性进行代码生成。Simulink 软件将忽略此属性。有关详细信息,请参阅Optimize Performance of Memory Access by Using Data Alignment (Embedded Coder)

为总线分配的数据的起始内存地址是 Alignment 设置的倍数。如果对象出现在需要对齐的上下文中,则必须指定一个是 2 的幂的正整数作为 Alignment 的值。

在 R2024a 之前: 请指定不超出 128 的值。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

该设定指示代码生成器在生成的代码中是否保留多维总线元素的维度,指定为 'false''true'。有关详细信息,请参阅 Preserve Dimensions of Bus Elements in Generated Code (Embedded Coder)

数据类型: logical

对象函数

getNumLeafBusElementsNumber of leaf elements in Simulink.Bus object
getLeafBusElementsLeaf elements in Simulink.Bus object

示例

全部折叠

使用 Simulink.BusElement 对象的数组创建 Simulink.Bus 对象的层次结构。

在基础工作区中创建一个数组,其中包含两个 BusElement 对象,分别名为 ChirpSine

elems(1) = Simulink.BusElement;
elems(1).Name = 'Chirp';

elems(2) = Simulink.BusElement;
elems(2).Name = 'Sine';

数组索引允许您创建和访问数组的元素。圆点表示法允许您访问元素的属性值。

创建一个名为 SinusoidalBus 对象,该对象包含 elems 数组中定义的元素。

Sinusoidal = Simulink.Bus;
Sinusoidal.Elements = elems;

要创建 Bus 对象的层次结构,请创建另一个 Bus 对象来引用名为 SinusoidalBus 对象。

创建一个数组,其中包含两个 BusElement 对象,分别命名为 NestedBusStep。将名为 SinusoidalBus 对象指定为 NestedBus 元素的数据类型。

clear elems

elems(1) = Simulink.BusElement;
elems(1).Name = 'NestedBus';
elems(1).DataType = 'Bus: Sinusoidal';

elems(2) = Simulink.BusElement;
elems(2).Name = 'Step';

创建一个名为 TopBusBus 对象,该对象包含 elems 数组中定义的元素。

TopBus = Simulink.Bus;
TopBus.Elements = elems;

您可以在类型编辑器中查看创建的对象的层次结构。

typeeditor

尽管 Type Editor 允许您以交互方式检查 Simulink.Bus 对象的层次结构,但您也可以通过编程方式检查对象。

打开示例。然后,通过运行名为 busObjectDefinition 的函数来加载总线对象。

busObjectDefinition

两个总线对象出现在基础工作区中。

检查顶层总线对象

检查名为 TopBus 的顶层总线对象。

TopBus
TopBus = 
  Bus with properties:

                  Description: ''
                    DataScope: 'Auto'
                   HeaderFile: ''
                    Alignment: -1
    PreserveElementDimensions: 0
                     Elements: [2x1 Simulink.BusElement]

根据 Elements 属性的值,TopBus 包含两个 Simulink.BusElement 对象。

检查 TopBus 的元素。

TopBus.Elements(1)
ans = 
  BusElement with properties:

              Name: 'NestedBus'
        Complexity: 'real'
        Dimensions: 1
          DataType: 'Bus: Sinusoidal'
               Min: []
               Max: []
    DimensionsMode: 'Fixed'
              Unit: ''
       Description: ''

根据 DataType 属性的值,第一个元素表示名为 Sinusoidal 的嵌套总线对象。

TopBus.Elements(2)
ans = 
  BusElement with properties:

              Name: 'Step'
        Complexity: 'real'
        Dimensions: 1
          DataType: 'double'
               Min: []
               Max: []
    DimensionsMode: 'Fixed'
              Unit: ''
       Description: ''

根据 NameDataType 属性的值,第二个元素表示名为 Step 的信号。

检查嵌套总线对象

检查名为 Sinusoidal 的嵌套 Simulink.Bus 对象的元素。

Sinusoidal
Sinusoidal = 
  Bus with properties:

                  Description: ''
                    DataScope: 'Auto'
                   HeaderFile: ''
                    Alignment: -1
    PreserveElementDimensions: 0
                     Elements: [2x1 Simulink.BusElement]

根据 Elements 属性的值,Sinusoidal 包含两个 Simulink.BusElement 对象。

检查 Sinusoidal 的元素。

Sinusoidal.Elements(1)
ans = 
  BusElement with properties:

              Name: 'Chirp'
        Complexity: 'real'
        Dimensions: 1
          DataType: 'double'
               Min: []
               Max: []
    DimensionsMode: 'Fixed'
              Unit: ''
       Description: ''

Sinusoidal.Elements(2)
ans = 
  BusElement with properties:

              Name: 'Sine'
        Complexity: 'real'
        Dimensions: 1
          DataType: 'double'
               Min: []
               Max: []
    DimensionsMode: 'Fixed'
              Unit: ''
       Description: ''

根据 NameDataType 属性的值,这些元素表示两个信号:ChirpSine

检查总线对象的叶元素

要直接检查总线对象的叶元素,请使用 getNumLeafBusElementsgetLeafBusElements 对象函数。

要获取 TopBus 中叶元素的数量,请使用 getNumLeafBusElements 对象函数。

num = getNumLeafBusElements(TopBus)
num = 
3

要获取有关 TopBus 中叶元素的信息,请使用 getLeafBusElements 对象函数。例如,检查 TopBus 的第一个元素。

leaf = getLeafBusElements(TopBus);
leaf(1)
ans = 
  BusElement with properties:

              Name: 'Chirp'
        Complexity: 'real'
        Dimensions: 1
          DataType: 'double'
               Min: []
               Max: []
    DimensionsMode: 'Fixed'
              Unit: ''
       Description: ''

版本历史记录

在 R2006a 之前推出

全部展开