我是靠谱客的博主 冷静红牛,最近开发中收集的这篇文章主要介绍Simulink代码生成: Bus信号及其代码1 Bus信号概述2 虚拟Bus信号及其代码3 非虚拟Bus信号及其代码4 总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

最近工作中遇到了一些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信号生成结构体的情况,应用场景不算很多,只是暂且知道这么一回事儿就行了。

>>返回个人博客总目录

最后

以上就是冷静红牛为你收集整理的Simulink代码生成: Bus信号及其代码1 Bus信号概述2 虚拟Bus信号及其代码3 非虚拟Bus信号及其代码4 总结的全部内容,希望文章能够帮你解决Simulink代码生成: Bus信号及其代码1 Bus信号概述2 虚拟Bus信号及其代码3 非虚拟Bus信号及其代码4 总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部