这个例子展示了如何使用MATLAB和statflow®结构在MATLAB®函数中读取和写入Simu金宝applink®总线信号。MATLAB结构使您能够将不同大小和类型的数据捆绑到单个变量中。你可以创建一个MATLAB结构:
将相关数据存储在MATLAB函数的局部或持久变量中
从本地状态流结构中读取或写入
在输入或输出端口带有Simulin金宝appk总线信号的接口
MATLAB函数只支持非虚拟总线。金宝app有关更多信息,请参见复合信号的类型(金宝app模型).
在本例中,状态流图处理来自一个Simulink总线信号的数据,并将结果输出到另一个Simulink总线信号。金宝app总线的输入和输出信号都是由金宝app仿真软件。公共汽车
(金宝app模型)对象BusObject
.这些总线有四个字段:某人
,一个
,b
,c
.这个领域某人
总线信号也是由金宝app仿真软件。公共汽车
对象subbu
.它有一个字段叫做避署
.
在图中,Simulink总线信号与s金宝apptatflow结构接口在
和出
.这个函数sb2abc
从输入结构中提取信息并将其存储在本地的statflow结构中localbus
.然后图表通过结合局部结构的值和结构数组中的一个元素写入输出结构subBusArray
.有关访问和修改statflow结构或statflow结构数组的内容的更多信息,请参见为状态流结构建立索引和赋值.
MATLAB®函数sb2abc
接受类型为statflow的结构subbu
并返回类型为statflow的结构BusObject
.函数分解字段的值避署
从它的输入变成三个分量:一个向量,一个3 × 2矩阵和一个标量。函数将这些组件存储在本地的MATLAB中
它的字段和结构体
金宝app仿真软件。公共汽车
对象BusObject
.然后函数赋值给MATLAB结构体
输出结构y
.
函数y = sb2abc (u)
从输入结构中提取数据
=双(u.ele (1:2, 1));B = uint8 (u.ele (: 2:3));C =双(u.ele (3,1));
创建本地结构
X =结构(“避署”int8 (0 (3)));Y =结构(“某人”, X,“一个”一个,“b”B“c”C);
给输出结构赋值
y = y;
结束
在一个MATLAB函数中,你可以通过定义函数的输入和输出结构来访问一个带有Simulink总线信号的本地statflow结构或接口:金宝app
在基本工作区中,创建金宝app仿真软件。公共汽车
对象,该对象定义结构数据类型。
在“符号”窗格中,选择函数输入或输出。
在属性检查器中,设置类型财产总线:<对象名称>
.对象的名称替换<对象名称>金宝app仿真软件。公共汽车
对象,该对象定义statflow结构。
例如,在函数中sb2abc
:
的类型属性的输入结构u
被指定为总线:subbu
.
的类型属性的输出结构y
被指定为总线:BusObject
.
有关更多信息,请参见定义Stateflow结构.
要将相关数据存储在MATLAB函数中的单个变量中,可以创建一个MATLAB结构体
作为局部或持久变量。例如,函数sb2abc
定义两个MATLAB局部结构来临时存储从输入结构中提取的数据u
在写入输出结构之前y
:
X
是一个标量结构体
调用一个字段避署
.该字段包含类型为3 × 3的矩阵int8
的结构金宝app仿真软件。公共汽车
对象subbu
.
Y
是一个标量结构体
有四个方面:某人
是子结构类型吗subbu
,一个
是二维向量的类型吗双
,b
是3 × 2矩阵类型吗uint8
,c
是类型标量吗双
.这些字段匹配的结构金宝app仿真软件。公共汽车
对象BusObject
.
有关更多信息,请参见定义代码生成的标量结构(金宝app模型).
结构体
|金宝app仿真软件。公共汽车
(金宝app模型)