首页 最新 热门 推荐

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

Simulink代码生成: Data Type Conversion模块及其代码

  • 23-09-22 01:02
  • 3415
  • 10068
blog.csdn.net

本文研究Data Type Conversion模块的用法和该模块生成的代码。

文章目录

  • 1 Simulink中的Data Type Conversion模块
  • 2 Data Type Conversion模块建模
  • 3 取整方式配置
  • 4 整型转换溢出处理
  • 5 总结

1 Simulink中的Data Type Conversion模块

Data Type Conversion模块可以转换Simulink信号线的数据类型。在建模的过程中,这是一个简单而常用的模块。
在这里插入图片描述
在使用该模块的时候,也有一些地方需要注意。

2 Data Type Conversion模块建模

通过建模可以直观地感受到Data Type Conversion模块的用法。

1)新建一个Simulink模型,拖入一个constant模块,一个Data Type Conversion模块,一个Disp模块;
在这里插入图片描述
2)将constant模块配置为uint16类型,将Data Type Conversion模块的Output配置为uint8类型;
在这里插入图片描述
在这里插入图片描述
3)运行仿真后,可以看到disp模块中的结果,但是类型转换不够直观;可以通过Display -->Signals & Ports --> Port Data Types来显示信号线上的类型;
在这里插入图片描述
这样就完成了信号线的类型转换。

4)将输入输出接口换成Inport和Outport,配置Embedded Coder生成代码;
在这里插入图片描述
从step函数中可以看出,Data Type Conversion对应代码中的(uint8_T)强制类型转换,也是很好理解的。

3 取整方式配置

当Data Type Conversion模块输入的是浮点数,输出的是整数时,就涉及到了转换的过程中采用哪一种取整方式。双击模块后,其中的Integer rounding mode就是用来配置取整方式。

选择不同的取整方式,生成的代码是不同的,有的会非常复杂。通常保持默认的floor即可,也就是向负无穷大舍入。
在这里插入图片描述

4 整型转换溢出处理

1)uint8的范围是0~255,如果将一个260的浮点数转换成uint8会怎么样。可以在Simulink中试着仿真一下。
在这里插入图片描述
如图中所示,会将超出的部分重新从零开始往上计算。生成代码的强制类型转换的效果,会随着使用的编译器不同,而做出不同的溢出处理方式,也就是说不一定和仿真的一样。这一点很重要,要进行充分的验证。

2)另外,可以通过勾选Saturate on integer overflow配置,对溢出的情况做一个饱和处理;
在这里插入图片描述
这样的话,输出的信号就会被限值在uint8类型的边界之处,也就是最大值255;
在这里插入图片描述
代码中也会有不同的实现方式:
在这里插入图片描述

5 总结

Data Type Conversion在Simulink中是一个常用的模块,但是也很容易出错。最好在建模的过程中细致地考虑,并进行充分的测试。

>>返回个人博客总目录

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

/ 登录

评论记录:

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

分类栏目

后端 (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