乐于分享
好东西不私藏

汽车软件开发之DBC文件介绍

汽车软件开发之DBC文件介绍

       笔者目前身处于这个行业,深感各大OEM(整车厂),供应商在ADAS(高级驾驶辅助系统)上的竞赛非常激烈。因此这方面的人才也是供不应求,很多公司都是相互挖人,抢人大战还是比较激烈的。所以,小伙伴,大家一起学习,赶紧赶上这个潮流啊。

       下面转入正题,讨论一下DBC文件是什么东西,在汽车开发过程中起什么作用。

        我是在做数据处理的时候接触到这个文件的。车辆,传感器供应商都会提供自己的DBC文件用于汽车驾驶辅助系统开发的。

        首先我所了解的数据采集是通过:

车辆及传感器CAN总线接口——>PCAN——>PC运行程序采集

PCAN-USB Pro

通过上图这个设备,将车辆及传感器CAN总线接口与电脑USB接口连接起来,即可使用配套的PCAN View软件看到传递的数据,也可自行编写程序存储数据。

想要了解这个设备的可以访问下列链接:

PCAN-USB:https://www.peak-system.com/PCAN-USB-Pro.200.0.html?&L=1

下图为我们采集的部分数据截图,是车辆高速CAN数据:

图 1

前四个数字为时间戳,用于与其它数据同步。

第五位:ID(标号), 谁的ID等会儿会说到。

第六位:数据长度

第七位到最后:数据部分

注意!到此,准备引入DBC了。

假如我告诉你,数据部分包含了车辆的速度,加速度,发动机转速等信息后,请问你能看懂数据部分表示的什么意思吗?

答案肯定是不能的。也就是说,车辆上的电子设备之间通信的数据是经过“加密”处理的。如何才能看懂这些数据呢?那就要靠DBC文件了。

一般车辆的DBC文件是不会外泄的,否者会造成很大安全隐患。因此我只能简单向大家展示一下:

图2

如图中所示:

左侧树状图中Messages下有很多message(报文),每个报文下又有一些signal(信号)。报文名称后的括号内就是这个报文的ID。右侧为每个信号的一些具体信息,比如起始位,结束位,字节序,参数类型等。

到此,不知大家是否理解了DBC的作用。

利用对应的DBC文件,我们就可以解读上面的采集来的数据了。首先匹对报文ID,然后将数据转换为二进制0和1,对应到下图的8*8的方格中:

图3

然后按字节序排列每个信号包含的二进制数据。这个字节序包括Motorola(大端序)和Intel(小端序),可自行百度学习。计算出每个信号的十进制值后,再通过对应信号的参数信息计算出最终我们可以看懂的数据。

比如下图发动机转速信号(EnSpdHSC1)的参数:

图4

第一步:匹对报文ID,找到包含EnSpdHSC1信号的报文数据。

例如:图2中显示包含EnSpdHSC1信号的报文ID为0xc9,

在图1中找到第11行为该报文数据:

6408055,0,490,6407351,c9,8,80,1d,7c,0,0,0,10,91

第二步:后八位数据,把每个16进制数字转化为二进制填充到图3的8*8方格中:

1 0 0 0 0 0 0 0

0 0 0 1 1 1 0 1

0 1 1 1 1 1 0 0

0 0 0 0 0 0 0 0 

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

0 0 0 1 0 0 0 0

1 0 0 1 0 0 0 1

第三步:根据图2,找到EnSpdHSC1信号的起始位,结束位,可知该信号包含第二行和第三行数据,并根据Motorola字节序可知该信号的raw值为:0001 1101 0111 1100 = 7548

第四步:根据图4参数:

发动机转速 = raw值 * factor + offset = 7548 * 0.25 + 0 = 1887 (rpm 转每分钟)

并且图4中还规定了这个信号的最大值和最小值。

图2 ~ 图4均来自于对应的DBC文件。

好啦,这次就讨论到这儿了。辛苦码字一晚上,经验还比较浅,仅供大家参考学习,后续还会不定时讨论。

另外,谢谢大家关注。一起学习进步。共勉。


版权归原作者所有。如有侵权,请与我联系。我将会及时处理。

本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » 汽车软件开发之DBC文件介绍

评论 抢沙发

4 + 7 =
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
×
订阅图标按钮