【MBD开发】Simulink重定义数据类型

01
typedef
在编写C语言代码的时候,会对数据类型重新进行定义,例如:
typedef signed char SINT8;typedef unsigned char UINT8;typedef signed int SINT16;typedef unsigned int UINT16;typedef signed long SINT32;typedef unsigned  long    UINT32;

以【SINT8】为例,对【signed char】重新进行定义。申明变量的时候直接使用【SINT8】关键字就可以。同样的在Simulink下也有这个问题!

02
例子

介绍一个简单的Simulink模型

创建数据字典,设置输入输出的数据类型

In_1:int16In_2:uint32Out_1:uint32Out_2:single

模型逻辑很简单,将数据类型匹配到Simulink中的信号。打开模型数据类型,可以看到变量的数据类型。

在生成代码的时候,C语言数据类型为SimulinkEmbeeded Code 默认的格式如:int16_T。

但通常在嵌入式工程中,MCU工程师会自己定义一个数据类型,这个数据类型大概率与Simulink生成的不符合,那该怎么办呢?

03
AliasType

在【Model Explorer】->【Add】->【SimulinkAliasType】

左边配置新的AliasType名称,右边配置对应的数据类型

然后将in_1\in_2\out_1\out_2的数据类型切换为刚刚创建的AliasType

点击仿真,可以看到原型中的数据类型已经更新成为刚刚创建的AliasType

int16_t->s16

uint32_t->u32

single->float32

生成代码后,在Model.c文件,可以看到已经使用创建的AliasType定义数据类型

而在Model.h中则可以看到s16\u32\float32的原型

typedef int16_T s16;typedef uint32_T u32;typedef real32_T float32;
04
替换所有数据类型

在模型设置中->【Data Type Relacement】->输入需要替换的数据类型

在不更改输入输出数据类型的情况下,生成代码的的数据类型将会被自动替换。但是要注意的是创建Simulink AliasType这个步骤不能省!

(0)

相关推荐