您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
   
 
     
   
 订阅
  捐助
Simulink代码生成: Bus信号及其代码
 
作者:chhttty
   次浏览      
 2021-4-16  
 
编辑推荐:

文章主要Bus信号进行了概述,虚拟Bus信号及其代码,非虚拟Bus信号及其代码以及其他相关内容。
来自于csdn,由火龙果软件Anna译、推荐。

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

 

   
次浏览       
 
相关文章

UML概览
UML图解:用例图(Use case diagram )
UML图解:活动图(activity diagram )
UML图解:类图(class diagram )
UML图解:对象图(object diagram)
UML图解:顺序图( sequence diagram )
 
相关文档

模型跟踪:跟踪图、矩阵、关系(建模工具EA)
自定义表格(Custom Table)在EA中的使用
元素的详情浏览控制
UAF 1.2规范解读(DMM 和 UAFML )
EA中支持的各种图表
EA中的界面原型建模
 
相关课程

UML与面向对象分析设计
UML + 嵌入式系统分析设计
业务建模与业务分析
基于SysML和EA进行系统设计与建模
基于模型的需求管理
业务建模 & 领域驱动设计
最新活动计划
LLM大模型应用与项目构建 12-26[特惠]
QT应用开发 11-21[线上]
C++高级编程 11-27[北京]
业务建模&领域驱动设计 11-15[北京]
用户研究与用户建模 11-21[北京]
SysML和EA进行系统设计建模 11-28[北京]
 
最新文章
iPerson的过程观:要 过程 or 结果
“以人为本”的工程哲学
企业架构、TOGAF与ArchiMate概览
UML 图解:顺序图( sequence diagram )
UML 图解:对象图( class diagram )
最新课程
基于UML和EA进行系统分析设计
UML+EA+面向对象分析设计
基于SysML和EA进行系统设计与建模
UML + 嵌入式系统分析设计
领域驱动的建模与设计
更多...   
成功案例
某电信运营供应商 应用UML进行面向对象分析
烽火通信 UML进行面向对象的分析设计
西门子 UML与嵌入式软件分析设计
航天科工某子公司 从系统到软件的分析、设计
深圳某汽车企业 模型驱动的分析设计
更多...