编辑推荐: |
本文主要介绍了DBC文件的几个关键信息:节点(Node)、报文(Message)、信号(Signal)以及它们之间的联系,以此形成对DBC文件的完整认识。希望对你的学习有帮助。
本文来自于微信公众号ADAS与ECU之吾见,由火龙果软件Linda编辑,推荐。 |
|
为了解析CAN通讯的收发数据,需要DBC文件将二进制/十六进制格式的数据与物理信号互转,所以DBC文件是广大工程师或研发人员能接触到的一个文件,DBC文件看着有点复杂,但实际上并不复杂,关键在于了解整个文件的结构,或者说了解CAN通讯矩阵。
本人之前分享过两篇关于CAN通讯矩阵/DBC的文章,可以参考:
一文了解CAN矩阵与DBC文件 (qq.com)
CAN矩阵和DBC里有哪些隐藏信息?(qq.com)
如果对这篇文章的内容基本掌握了,那么DBC文件就容易看明白。Anyway,本着分享汽车研发基础知识的初心,本文将介绍DBC文件的几个关键信息:节点(Node)、报文(Message)、信号(Signal)以及它们之间的联系,以此形成对DBC文件的完整认识。
1 为什么需要DBC文件
汽车控制器主要采用CAN总线进行通信,当采用高速CAN的数据帧进行数据传输,那么每一帧报文将能传递8个字节,即64个bit的数据,每个bit能传输0/1。当然利用CAN通讯是为了传输物理信号,而不只是没有物理/实际意义的二进制数值,比如将MCU的电机转速传输给VCU,VCU最终希望获得是电机转速多少rpm,而不是一个没有实际意义的二进制/十进制/十六进制数值,此时就希望有这样一份“密码本”,可以将没有物理/实际意义的数据转换为有意义的物理信号,如下所示:
Source: 什么是dbc(汽车CAN总线DBC文件简介)
DBC文件就是这份“密码本”,因此DBC文件是主机厂的绝密文件,其他厂商进行竞品分析时,要耗费很大的人力物力来破解部分内容。
因此不难理解,DBC文件是描述汽车网络拓扑上所有ECU之间CAN通讯信息的数据库文件,其中包含了CAN总线协议中协议数据及其所代表的具体意义,它可以用来监测和分析CAN网络上的报文数据,也可以用来模拟某个ECU的CAN节点。
通常一个DBC文件只能包含一个CAN网络的节点信息,为了描述整车的网络拓扑信息,会需要多个DBC文件。
2 DBC文件详解
接下来就从节点开始,逐个介绍节点(Node)、报文(Message)、信号(Signal)以及它们之间的关系。
2.1 节点Nodes
在介绍节点之前,先回顾下整车网络拓扑,以一个经典的网路拓扑为例,如下所示:
Source: 未来智能网联汽车新一代整车架构-CANFDNET系列
假如这里DBC文件描述的辅助驾驶CAN,那么当你打开DBC文件,看到的Node会有BSD、 PAS和IEC。
同理,假设某路CAN有两个控制器ACU和CCU,那么,DBC文件的ECUs和Network nodes就应该有这两个控制器,如下所示:
source 如何制作DBC文件_dbc制作
因此,对于DBC文件中的ECUs和Network nodes中具有哪些控制器,其来源于整车网络拓扑。当ECU明确了有ACU和CCU之后,那么接下来关注的它俩分别会接收哪些报文(Tx
Messages)以及发送哪些报文(Rx Messages)。
2.2 报文Messages
将视线转到DBC文件中的Messages,这里将包含整个DBC文件的所有接收和发送的报文,如下示意:
source 如何制作DBC文件_dbc制作
对于一条报文,其信息包括:
定义Definition,包括报文的名字、报文类型(标准格式/扩展格式)、ID、长度和报文种类(周期型/事件型)等信息;
信号Signals,此报文包含哪些信号,可见上图;
收发方,如果该报文发送方,那么接收方是哪些ECU;如果该报文是接收方,那么发送方是哪个ECU;
信号排列Layout,报文所包含的信号是怎样排列在这64bit中, 也见上图。
source 如何制作DBC文件_dbc制作
也就是通过对报文进行编辑和配置,那么一方面Message与Network Nodes已经建立了联系,该条报文属于哪个ECU的Tx
messages,哪个ECU的Rx messages,即报文的存在一定有发送方也一定有接收方;另一方面Message与Signals也建立了联系,Messages配置完整的前提一定是明确了包含哪些信号。
2.3 信号Signals
其实在进行报文配置的同时,就要开始进行信号的配置,只有信号配置好了,报文的配置才能完成,那么对于信号的配置,关键点是定义Definition,这决定了CAN数据帧的64bit数据能否被正确地解析为物理信号,Definition的配置根据CAN通讯矩阵的具体定义,另外个人认为对于值的描述Value
Description(枚举量)也非常重要,非常便于相关人员快速获取信号的物理意义,如下所示:
source 如何制作DBC文件_dbc制作
2.4 三者的关系
通过上述的三个小结分别介绍了节点(Nodes)、报文(Messages)和信号(Signals),每一项都需要有哪些配置内容,然后从节点—>报文—>信号,以此形成了一个有层次的结构,如下所示:
这样理清了三者之间的关系,那么再来看DBC的内容,思路就会十分的清晰。即使DBC文件包含的报文或信号数量非常多,当你需要找一个信号时,也不会觉得难找。这时找信号的思路是:
第一个关注点是哪个ECU接收还是发送的;
第二个关注点是在哪条报文(ID);
第三个关注点是信号的具体定义。
3 DBC使用常见问题有感
DBC使用过程中可能会遇到一些问题,个人体会有以下几点:
关于报文采集,DBC文件是用来将CAN报文解析成具有实际意义的信号,没有DBC文件不会影响用设备(周立功,PCAN和CANalyzer等)去采集报文信号,在Trace界面仍然能看到不同报文及其数据在不断刷新。
关于DBC文件版本,DBC文件版本要确认好,不然会出现解析出来的信号异常或有偏差,有时情况很明显,信号一看就不正常,有时情况不明显,信号一点偏差,刚开始没发现,大量数据分析结果之后总觉得数据有点不对。
关于DBC文件加载,DBC文件该加载到设备哪个通道,经常会碰到不同的人用不同配置去采集报文数据,比如A的配置是设备的通道1采CAN1,通道2采CAN2,而B却反之,结果A打开B采的数据,没看不到。其实两个通道还好,如果多几个呢?这里分享一个不要问别人的配置DBC文件的技巧,即试错法,拖着DBC文件依次放在不同通道上,数据出来就配对了。
关于DBC文件创建,最好学习下如何自动生成DBC文件,手写太费时。
以上就是关于DBC基础使用过程中需要关注的一些点。
|