Simulink Tutorial 3:结构体变量
Vehicle攻城狮

The people who are crazy enough to think they can change the world are the …

结构体是由不同数据类型的数据组成的集合体,声明形式如下:
Struct 结构体名
{
数据类型说明符1 成员名1;数据类型说明符2 成员名2;
.
.
数据类型说明符n 成员名n;};仅仅声明结构体类型是不够的,要使用结构体数据,还要声明结构体变量,结构体类型变量的语法形式如下:结构体名 结构体变量名;

结构体类型变量
如何使用Simulink实现如下代码?
typedef struct {
real_T x;real_T y;real_T m;real_T n;} Signals;Signals z;首先使用Bus Creator创建如下图所示的模型:

创建模型后需要在数据字典创建一名为Signals的Simulink Bus对象,以及与代码生成有关的参数和信号变量配置:



数据字典创建完所需的信号变量、参数等变量后,需要对Bus Creator属性进行一定的配置:

对相关变量关联Reslove后,即可生成所要的代码:



除了利用Bus Creator构造结构体变量,其实在数据字典中创建变量时,可通过设置变量的Storage Class类型也可实现结构体变量的创建,具体的小伙伴们可自己摸索下:


结构体类型变量的嵌套
如何利用Simulink实现如下结构体类型变量的嵌套?
typedef struct {
real_T x;real_T y;real_T m;real_T n;} Signal1;
typedef struct {
real_T h;real_T f;} Signal2;
typedef struct {
Signal1 S1;Signal2 S2;} Signal3;通过Bus Creator的嵌套可将结构体嵌套实现,首先使用Bus Creator创建如下模型:

同样按照实例一在数据字典创建代码生成所必须的信号变量、参数等,此处主要着重说明三个Simulink Bus变量的设置:



然后在模型中对模型中的信号名与数据字典中的变量Reslove,其中三个Bus Creator的属性设置如下:



按照如上配置完成后将得到如下所示的代码:



