【车联网】解析.DBC文件, 读懂CAN通信矩阵

时间:2024-05-22 18:42:57

目的

通常我们拿到某个ECU的通信矩阵数据库文件,.dbc后缀名的文件。 直接使用CANdb++ Editor打开,可以很直观的读懂信号矩阵的信息,例如下图:

【车联网】解析.DBC文件, 读懂CAN通信矩阵

现在要把上图呈现的信号从.dbc文件中解析出来,供实现自动化仿真总线信号使用,比如使用python+支持can收发的硬件即可替代canoe实现信号仿真(性能上不够用,可满足功能测试所需)。

一个标准CAN帧中包含的信息有,消息ID、报文发送周期、 报文长度、信号信息等。

摩托罗拉字节

开始解析前,先了解一下报文帧。下表体现了摩托罗拉字节位序的报文发送时的字节序和bit序,一会儿可以帮助我们理解dbc中的定义

【车联网】解析.DBC文件, 读懂CAN通信矩阵

1)Motorola格式与Intel格式

这个决定了信号起始bit, 生成报文计算信号值时的大小端算法。

Motorola格式:

 信号以高字节低位起始,此处占了12bit, 以第二字节的低bit 12位算起,计12个bit总长度,信号是连续的(此处连续针对低字节在前的字节发送序,参看LSB与MSB)。

比如我设置续航里程998KM, 它的信号值在整条报文中表现为 3E,60,00,00,00,00,00,00

【车联网】解析.DBC文件, 读懂CAN通信矩阵

Intel格式:

信号以低字节低位起始,此处占了12bit, 以第一字节的低bit 0位算起,计12个bit总长度,信号是非连续的(发送的字节序体现出的信号值非连续,但是bit位是由低到高连续的)。

比如我设置续航里程998KM, 信号值在报文中为 E6,03,00,00,00,00,00,00

【车联网】解析.DBC文件, 读懂CAN通信矩阵