主要内容

与公共汽车阵列一起使用

建立总线阵列模型

建立一个使用总线阵列的模型通常涉及以下基本任务:

  1. 定义公共汽车数组(参见定义一个总线数组).

  2. 添加一个子系统,用于对总线阵列的每个元素执行迭代处理。例如,使用a对于每个子系统块或一个迭代器块。从中连接公共汽车数组衔接块到迭代处理子系统。看执行迭代处理

  3. 在迭代处理子系统中模拟标量算法(例如,每个子系统的A)。

    1. 在公共汽车阵列上运行(使用选择器任务块)。

    2. 使用总线选择器公交划分阻止从子系统中选择来自或分配元素的标量总线。

    将值赋给总线数组从一系列公共汽车中选择总线元素

  4. 可选地,导入或记录总线数据数组。看导入总线数据数组总线日志阵列

得到的模型包括这些组件。

执行迭代处理

可以使用块对总线数组的总线数据执行迭代处理,例如对于每个子系统块,而迭代器子系统块或一个对迭代器子系统块。您可以使用其中一个块来执行相同类型的处理:

  • 总线阵列中的每一个总线

  • 公共汽车数组中的选定的总线子集

将值赋给总线数组

要给总线数组中的信号赋值,请使用:

  1. 一种公交划分块为总线元素分配值

  2. 一个任务块将总线分配给公共汽车数组

用A.任务块将值分配给总线阵列中的指定元素。

例如,在sldemo_bus_arrays模特,这任务块将值分配给总线数组的第一个元素。

要在总线内分配总线元素,请使用公交划分块。的输入公交划分块必须是标量总线。

分配到公共​​汽车数组

你可以使用一个公交划分块来分配或完全替换作为总线数组的嵌套总线。要为总线数组中的嵌套总线分配数据,或使用总线数组对某些元素进行部分赋值,可以使用MATLAB函数块。

例如,假设你有这样的总线结构:

公共汽车上有孩子们元素,它是一个子总线数组。这个例子展示了如何给元素赋值C和元素一种。这轮廓尺寸外港块使用父母公共汽车目的。要定义分配,此示例使用aMATLAB函数块,因为不能赋值给元素一种用一个公交划分任务块。

MATLAB函数块使用此功能代码进行分配:

函数Y = fcn(u);y.c = false;为了Idx = 1:长度(Y.Children)Y.Children(IDX).a = Int32(零(5,1));结尾

从一系列公共汽车中选择总线元素

要在总线数组中选择信号,请使用:

  1. 选择器块在公共汽车阵列中找到适当的总线。

  2. 总线选择器块来选择信号。

用一个选择器块以选择总线数组的元素。总线的输入数组可以有任何维度。的输出总线选择器块是从输入的总线数组中选择或重新排序的元素集。

例如,sldemo_bus_arrays模型使用Selector块从总线数组中选择元素任务对于每个子系统阻止输出。在此示例中,以下是“块参数”对话框选择器选择第一个元素的块:

要在总线中选择总线元素,请使用总线选择器块。的输入总线选择器块必须是标量总线。

导入总线数据数组

使用一个根轮廓尺寸块导入(加载)MATLAB的结构数组®时间序列对象的数组。您可以将部分数据导入总线数组。

有关详细信息,请参阅导入总线数据数组

你不能用来自工作区从文件块以导入用于一系列总线的数据。

总线日志阵列

若要导出总线数组,请将信号标记为信号记录。有关更多信息,请参见将运行时间数据保存从模拟中

笔记

金宝app®在快速加速器模式下不会在引用的模型内记录信号。

要访问总线数组中特定信号的信号记录数据,请在结构层次结构中导航并指定特定信号的索引。有关详细信息,请参阅访问总线阵列信号日志记录数据

初始化总线数组

要为总线数组中的每个信号指定唯一的初始值,可以使用初始条件结构数组。数组中的每个结构初始化一个总线。

以下是一个示例,其示出了如何初始化一系列总线。假设您定义了总线类型MyData压力空间

假设您设置了信号元素的数据类型温度int16,以及元素的数据类型S1S2

要为总线数组指定初始条件,可以创建一个变量,其值是初始条件结构数组。

initValues(1)。温度= int16(5); initValues(1).pressure.s1 = 9.87; initValues(1).pressure.s2 = 8.71; initValues(2).temperature = int16(20); initValues(2).pressure.s1 = 10.21; initValues(2).pressure.s2 = 9.56; initValues(3).temperature = int16(35); initValues(3).pressure.s1 = 8.98; initValues(3).pressure.s2 = 9.17;

的变量initValues为一个三个总线数组提供信号提供初始条件。您可以使用initValues指定初始条件块的参数,例如单位延迟

或者,您可以使用单个标量结构为数组中的所有总线指定相同的初始条件。

initStruct。温度= int16 (15);initStruct.pressure。s1 = 10.32;initStruct.pressure。s2 = 9.46;

如果您指定初学者初始条件参数,数组中的每个总线使用相同的初始值,15.,表示信号元素温度。类似地,总线使用初始值10.32的元素压力.S1和价值9.46的元素压力.S2

为使用大型信号元素的总线结构创建一系列结构,请考虑使用该功能金宝appsimulink.bus.creatematlabstruct.

此示例显示如何初始化嵌套的总线数组。为复杂的信号层次结构创建一个初始条件结构,包括嵌套的总线数组。

  1. 在总线编辑器中,创建公共汽车对象MyData压力空间

  2. 在“层次结构”窗格中,选择总线元素压力。设定方面财产[1 3]

  3. 使用函数创建一个包含四个初始化结构的数组金宝appsimulink.bus.creatematlabstruct.。将数组存储在变量中初学者。将所有的信号初始化为接地值,0.

    initstruct 金宝app= simulink.bus.creatematlabstruct(“MyData”[], [1 - 4]);

  4. 在基本工作区中,双击该变量初学者在变量编辑器中查看。

    数组中的四个结构都有字段温度压力

  5. 检查一个压力,双击其中一个字段。

    四个中的每一个的价值压力Fields是一个由三个子结构组成的数组。每个子结构都有字段S1S2

  6. 要为总线阵列中的信号提供唯一的初始化值,您可以使用变量编辑器手动指定值。

    或者,您可以编写一个脚本。例如,访问字段S1第二个子结构压力在第三种结构中初学者,使用此代码:

    初始(3)。压痕(2).s1 = 15.35;

代码生成

公共汽车数组的代码生成产生具有特定格式的结构。看总线数组的代码生成

相关的话题