微信公众号“汽车电控杂谈”同步更新
在开发应用层模型时,有时会使用一些结构体、结构体数组等类型的接口变量,方便与其他C代码进行集成。
那么,我们如何在Simulink模型中实现结构体数组的代码生成呢?
应用场景
例如我们有以下一个结构体:
typedef
并定义了两个结构体数组,如下所示:
MyStruct Data_Read[5];
MyStruct Data_Write[5];
现在我们希望Simulink模型实现如下代码的功能:
/* Data_Write功能 */
Data_Write[0].Data_Array[1] = x;
Data_Write[0].Data_Valid = true;
Data_Write[0].Data_Length = 8;
/* Data_Read功能 */
a = Data_Read[1].Data_Array[0];
b = Data_Read[1].Data_Array[0];
c = Data_Read[1].Data_Valid;
d = Data_Read[1].Data_Length;
模型实现
对于上述功能,我们需要使用Selector 和Assignment这两个模块来实现对数组以及数组结构体的操作。在Simulink模型中使用Data_Read和Data_Write作为输入输出接口,并在模型中对部分结构体成员做其他逻辑运算处理。模型如下图所示: