首页 最新 热门 推荐

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

Simulink代码生成: Bus信号及其代码

  • 23-09-22 01:02
  • 2557
  • 5455
blog.csdn.net

最近工作中遇到了一些Bus信号相关的问题,研究发现在不同的配置下,生成的代码也会略有区别。

文章目录

  • 1 Bus信号概述
  • 2 虚拟Bus信号及其代码
  • 3 非虚拟Bus信号及其代码
  • 4 总结

1 Bus信号概述

通过Bus Creater模块,可以将不同的信号线构建成Bus信号,就像将许多电线捆绑在一起一样。根据虚拟性,可以将Bus信号分为虚拟Bus信号和非虚拟Bus信号。

虚拟Bus信号只是看起来把很多信号合并成了一个,在生成代码的时候,和不用Bus信号是一样的效果。虚拟Bus信号如图所示,由三根平行直线和箭头组成。
在这里插入图片描述
非虚拟信号线在生成代码的时候会生成出结构体。如图所示,由两根直线和虚线组成。
在这里插入图片描述

2 虚拟Bus信号及其代码

打开Simulink,建立如下的简单模型,验证虚拟Bus信号的代码生成。
在这里插入图片描述
可以注意到,模型中把信号数据类型和维度显示出来。由于图中把Bus直接输出给一个Outport模块,虚拟Bus信号必须使用相同的数据类型,不然会报错,如下图所示。

如果是先用Bus Creater生成一个Bus信号,再用一个Bus Selector把信号提取出来,就没有类型相同的限制了。
在这里插入图片描述
然后,Ctrl+B生成一下代码并分析,可以看到输出的Outport模块被定义为一个数组,这也是为什么必须类型相同的原因。
在这里插入图片描述

3 非虚拟Bus信号及其代码

定义非虚拟Bus对象,需要经过一些配置。
1.打开Model Explorer,选中Base Workspace
在这里插入图片描述
2.点击工具栏中的Add——Simulink Bus,添加一个Bus对象。
在这里插入图片描述
3.将Bus的名称重命名为Bus1,右侧的Data Scope选为Exported,Header File写为Exported.h。这个操作是为了把Bus1的结构体定义保存在Exported.h文件中。
在这里插入图片描述
4.打开Launch Bus Editor,进入Bus编辑窗口。在Bus1中添加两个元素,a和a1。a的Datatype设为double,dimenssions为1;a1的Datatype设为single,dimenssions为2。通过该方式验证Bus元素不同类型和维度的情况下也能生成代码。然后点击Apply保存。
在这里插入图片描述
5.接下来回到模型中,双击打开Bus Creater,此时Output data type的下拉框可以选则刚刚新建的Bus1。
在这里插入图片描述
6.选中Bus:Bus1,再勾选下方的Output as nonvirtual bus,这样就可以将这个Bus定义为非虚拟Bus信号了。
在这里插入图片描述
7.把Inport1输入口的数据类型配置为double,和Bus对象的a元素相对应。然后Ctrl+D更新一下,就可以看到不同的数据类型和维度也可以组合成Bus。
在这里插入图片描述
8.然后再Ctrl+B生成一下代码。首先可以观察到生成的代码中有一个Exported.h文件,这个文件就是步骤3中自定义的头文件。再文件中,用typedef创建了一个名为Bus1的结构体类型,其中的成员有double类型的a和single类型的a1[2]。
在这里插入图片描述
打开demo.h,可以看到用Bus1这个结构体类型定义了一个结构体变量Out1,对应模型中的输出端口。
在这里插入图片描述
最后,到demo.c的step函数中可以看到对Out1的赋值操作。非虚拟Bus信号创建了一个结构体。
在这里插入图片描述

4 总结

非虚拟Bus信号生成结构体的情况,应用场景不算很多,只是暂且知道这么一回事儿就行了。

>>返回个人博客总目录

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

/ 登录

评论记录:

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

分类栏目

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