首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

Simulink代码生成:AliasType配置

  • 23-09-22 01:02
  • 3881
  • 9852
blog.csdn.net

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的数据字典配置并不复杂,但是却非常实用,在建模的过程中会大量地使用到。

>>返回个人博客总目录

注:本文转载自blog.csdn.net的chhttty的文章"https://blog.csdn.net/u013288925/article/details/107589875"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top