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

1元 10元 50元





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



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
   
 
     
   
 
 订阅
一文了解CAN DBC文件
 
作者:YiXingCourse
   次浏览      
 2024-8-23
 
编辑推荐:
本文主要介绍了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基础使用过程中需要关注的一些点。

 
   
次浏览       
相关文章

中央计算的软件定义汽车架构设计
汽车电子控制系统中的软件开发过程
一文读懂汽车芯片-有线通信芯片
OTA在汽车上有哪些难点痛点?
相关文档

汽车设计-汽车的整体结构及动力系统
自动驾驶汽车软件计算框架
SysML在汽车领域的应用实践
电子电气架构-大陆汽车系统架构平台
相关课程

AutoSAR原理与实践
功能安全管理体系(基于ISO26262)
MBSE(基于模型的系统工程)
基于SOA的汽车电子架构设计与开发

最新活动计划
QT应用开发 11-21[线上]
C++高级编程 11-27[北京]
LLM大模型应用与项目构建 12-26[特惠]
UML和EA进行系统分析设计 12-20[线上]
数据建模方法与工具 12-3[北京]
SysML建模专家 1-16[北京]
 
 
最新文章
中央计算的软件定义汽车架构设计方案解析
汽车电子控制系统中的软件开发过程
一文读懂汽车芯片-有线通信芯片
OTA在汽车上有哪些难点痛点?
智能汽车车用基础软件的内核和中间件
最新课程
Auto SAR原理与实践
MBSE(基于模型的系统工程)
基于SOA的汽车电子架构设计与开发(域控模式)
人工智能助力汽车行业升级
基于UML和EA进行系统分析设计
SysML和EA进行系统设计建模
更多...   
成功案例
奇瑞商用车 购买建模工具EA完全版
航空发动机研究院 购买建模工具EA完全版
联创汽车 购买建模工具EA完全版
江淮汽车 购买建模工具EA
更多...