本文主要是介绍Simulink代码生成:AliasType配置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
AliasType也是Simulink数据字典中的一种对象。本文研究在数据字典中配置AliasType以及生成的代码。
文章目录
- 1 问题引入
- 2 AliasType的建立和使用
- 3 代码生成研究
- 4 总结
1 问题引入
在Simulink中的数据类型有single,double,uint和int这些基本础类型,也可以给这些基本类型定义一个别名,这就是AliasType的概念。定义好AliasType以后,在模块中需要填写数据类型的时候,可以直接填我们定义的别名,Simulink就会认识这个别名所对应的基本类型。
那么为什么要引入AliasType的概念呢,这么麻烦还要去配置,直接用single这样的基础类型他不香吗?
原因是在实际项目开发的时候,模型往往非常大非常复杂,不像是上面举的例子这么简单。当后期发现有很多处地方的数据类型都要修改,如果都是以基类型表示的话,就要每一处都点开修改类型。如果建模的时候用了AliasType来表达数据类型,只需要一次修改AliasType背后对应的基础类型就行了。
2 AliasType的建立和使用
本章节用一个简单的例子描述如何建立AliasType以及如何使用。
1)新建一个模型、一个数据字典文件,并将两者关联。如何建立数据字典可以参考博主另一篇博客《Simulink代码生成:数据字典的建立、关联模型》。
2)在Model Explorer界面中,选中Design Data–>点击Add–>点击Simulink AliasType,
3)将新建的AliasType的名字改为Hz,博主习惯把AliasType取名为物理单位。
4)将右侧的Base type改为single,Header file改为Aliasdef.h,Description填上"Define Hz as single.",最后Apply保存。
5)保存sldd文件。
6)打开模型,把所有的Gain模块的输出类型都改成Hz,然后仿真一下。信号线上显示的类型就都变成Hz这个AliasType了。由于Inport的类型是自动的,所以也继承了Hz这个单位。
3 代码生成研究
1)Ctrl + B将模型生成代码。代码中输入输出就是用Hz这个类型定义的。
2)但是,生成的代码中并没有我们预先在AliasType中指定的Aliasdef.h,这又是怎么回事呢?事实上,由于之前的Data Scope保持默认的Auto,Simulink认为这个头文件是用户自己外部提供的,所以就不生成这个头文件了。
3)把Data Scope改成Exported再生成一次代码,就会发现生成了Aliasdef.h头文件,其中用typedef关键字把Hz定义为float。要注意一下,rtwtypes.h先把real32_T定义为float,Aliasdef.h再把Hz定义为real32_T。
4)如果把数据字典里面Hz的Base Type改成其他基本类型,比如uint16,再生成代码,Aliasdef.h头文件里面的typedef就会不同。可以自己试一试,这里不再赘述。
4 总结
AliasType的数据字典配置并不复杂,但是却非常实用,在建模的过程中会大量地使用到。
>>返回个人博客总目录
这篇关于Simulink代码生成:AliasType配置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!