DBC文件小结

Posted cooper的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DBC文件小结相关的知识,希望对你有一定的参考价值。

Vector的DBC文件描述了CAN网络的通信规范,通过定义signal可以表示CAN帧中的各个物理信号的含义。通过CANdb++ Editor软件可以创建和修改DBC文件,一般监控或控制CAN网络内的节点,不需要解析DBC文件里的全部信息,因为有些信息是给CANoe等软件使用的,我们自己编写软件,只利用vector的DBC文件中的部分信息。一个完整的DBC文件结构如下图:

 

 

35行之前的部分可以忽略,36行定义的的网络节点单元,多个节点之间用空格分开。41、43、47是定义消息,消息结构如下:

BO_ message_id message_name : message_size transmitter {signal}

signal是可选项。45、46、48、49行定义的是信号(Signal),信号的结构如下:

SG_ signal_name multiplexer_indicator : start_bit | signal_size @ byte_order value_type ( factor , offset ) [ minimum | maximum ] unit receiver {, receiver}

其中byte_order分为motorola和intel两种格式,motorola对应0,intel对应1。这两种格式是区别如下:

如果在同一个字节内,则没有区别,如果跨越多个字节则有区别,motorola格式是高位(msb)在低字节(说明:CAN消息的字节排列Byte0 Byte1 … Byte7,Byte0是低字节),intel格式是高位(msb)在高字节。

Intel格式

 

第一字节的bit0对应的是lsb(第一行的红色箭头),第二字节的bit14对应的是msb(第二行的红色箭头)。起始bit是lsb对应的bit0。

Motorola格式

 

第二字节的bit9对应的是lsb(第二行的红色箭头),第一字节的bit7对应的是msb(第一行的红色箭头)。起始bit是lsb对应的bit9。当然也可以修改起始位置,例如将起始位置改为bit8,如下图:

 

 

55~58行定义的是信号的选项值,其结构如下:

\'VAL_\' message_id signal_name { value_description } \';\'

注意,行结尾有一个分号。其中value_description的定义如下:

value_description = double char_string ;

 

以上是需要解析的部分,注意字符部分都限制在32字节内,不太方便。

以上是关于DBC文件小结的主要内容,如果未能解决你的问题,请参考以下文章

经典CAN2.0 DBC快速切换为CANFD DBC

Can DBC 文件翻译,不是很标准,凑合看还可以

DBC文件创建环境变量,细节拉满

解析 .dbc 文件并生成 C++ 代码以表示每个消息的类/结构(对于目标 ECU)

DBC文件解析

Vector-AUTOSAR使用中的问题总结