【simulink代码生成】CAN Unpack模块


前言

`
Simulink模型中使用CAN Unpack模块并结合DBC文件,进行CAN报文的解析。生成的代码依据DBC进行一些位与和移位的操作,把报文中的信号摘出来。


首先展示一下DBC和搭建好的simulink模型长啥样。
DBC文件layout:
在这里插入图片描述
simulink模型:
在这里插入图片描述

1.建立变量

输入(CAN_MESSAGE_BUS)和输出(TBOX)的数据类型指定为simulink.bus对象。CAN_MESSAGE_BUS 可以直接通过在命令行窗口输入指令“canMessageBusType”自动生成。
在这里插入图片描述
双击右侧的变量,查看生成的BUS对象(CAN_MESSAGE_BUS)和BUS元素(Extended、Length、Remote…)如下,
在这里插入图片描述
定义名为TBOX的simulink.bus的数据对象
如何使用Bus Editor创建Simulink.Bus对象-每天一个MATLAB小技巧
👀注意:添加bus.element时候,顺序一定一定一定要和unpack模块输出的信号的顺序一样,代码就是依据这个赋值的。
在这里插入图片描述
数据作用域选择“已导出”,头文件起名“Tbox.h”,生成代码时会生成一个名为“Tbox”的头文件,里面会有上面定义的simulink.bus:TBOX 结构体。
在这里插入图片描述
如果数据作用域选择“自动”,头文件空白,那么TBOX的结构体定义会出现在“模型名_types.h”文件里。

2.模块配置

input port
在这里插入图片描述
👀注意:这里要勾选“以非虚拟总线输出”,这样总线信号才能以结构体形式出现在生成的代码中。
CAN_Unpack
在这里插入图片描述

👀CAN解包模块参数配置具体看另一篇文章CAN Communication 【Pack/Unpack】)
BUS_Creator
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/1055d382842b4a56bf506e74e01f310f.png
outport
前面的Bus Creator数据类型选择了Bus:TBOX,这个输出端口的数据类型Auto就行。或者Bus Creator数据类型auto,outport数据类型选择Bus:TBOX。
在这里插入图片描述

3.代码生成

以上就是所有操作,不出意外直接ctrl B 生成代码就行,以下是生成的所有代码文件。
在这里插入图片描述
虽然在代码报告里有“can_message.h”,但是生成代码的文件夹里根本没有这个文件,所以编译的时候需要自己粘进去。这是matlab自带的头文件,可以在MATLAB安装路径里找到:
在这里插入图片描述

总结

有看到一个教程说,CAN_MESSAGE_BUS.Simulink Bus数据对象也可以像TBOX.Simulink Bus一样自己创建。但是实际操作起来不知道为啥自己创建的总是报错,所以强烈建议大家还是自动创建。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值