在汽车电子领域,CAN数据库(DBC)文件是描述CAN网络通信的重要文件格式,这种文件格式由德国VECTOR公司制定,DBC文件可以定义CAN网络的节点(Network Node)、报文(Message)、信号(Signal),以及每个节点收发哪些报文,每个报文包含的信号,信号的位置等等。
1. 问题背景
在CAN通信开发过程中,为了避免手动对DBC中大量的文件内容硬编码,一般都使用脚本来处理DBC文件。不过我发现Vector DBC文件内容和CANdb++工具打开DBC文件时,两者对信号起始位的表示方式不同:
- Vector DBC文本格式:信号起始位是按照"从左到右、从上到下"的顺序编号的
- CANdb++工具:信号起始位则是按照实际CAN帧中位的物理布局编号的,我们可以在CANdb++工具中设定信号是基于intel类型或motorola类型。
这种差异导致同一个信号在两种表示方式下有不同的起始位值。
2. 起始位差异描述
我们以如下名称为New_Message_194,ID为27的报文中的信号为例,文本打开DBC文件显示如下
CANdb++工具显示如下