码迷,mamicode.com
首页 > 数据库 > 详细

DBC文件小结

时间:2018-10-10 12:11:44      阅读:904      评论:0      收藏:0      [点我收藏+]

标签:str   位置   创建   multiple   double   单元   message   png   off   

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文件小结

标签:str   位置   创建   multiple   double   单元   message   png   off   

原文地址:https://www.cnblogs.com/icooper/p/9765043.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!