1 创建DBC文件的意义
1.1 什么是DBC
1.2 为什么要创建DBC
2 如何创建DBC
2.1 安装DBC工具
2.2 新建DBC文件
2.3 协议转换为DBC
DBC全称Database CAN,是描述网络上所有电子节点(ECU)之间CAN通信信息的数据库文件。 其内容与HTML语言相似,是标签语言的一种,DBC文件部分内容如图1-1所示。
图 1-1 DBC文件部分内容图
例如在调试汽车发动机时,需要一个仪表和油门来控制发动机转速和查看发动机转速,为能快速实现控制转速和查看时实转速,可以使用计算机来接收发动机转速数据和控制发动机转速。
此时计算机收到的数据需要按照协议进行解析,如“2B C1 3C 00 00 00 00 00”里面包含了转速、状态、温度等信息,无法直观看到,需要解析:前12位代表发动机转速,转换为十进制为750,乘以精度信息,实际转速为7500,第13位到第16位代表了状态信息,转换为十进制为1,代表启动状态。17到24位代表了温度信息,转换为十进制为60,减去偏移量为实际温度20度。
以上解析过程为手动解析,在实际使用过程中,需要计算机根据协议自动解析。此时就需要将协议写入DBC文件,让计算机根据DBC文件中的协议,自动将数据中的信息解析出来。
获取到CANdb++ 3.1安装包后,双击进行安装。持续点击下一步,即可安装完成。
图 2-1 CANdb++ 3.1 安装包属性图
安装完成后,打开CANdb++3.1,界面如图2-2所示。
图 2-2 CANdb++ 3.1工作界面图
在工作界面左上角,依次点击“File”、“Create Database”,选择“CANTemplate.dbc”后,点击“OK”。此时需要选择文件保存路径,选择合适的路径保存即可。保存完成后,DBC文件将自动打开,进入编辑界面,如图2-3所示。
图 2-3 DBC文件打开图
本文将使用图2-4所示的协议内容,作为示例,转换为DBC文件。
图 2-4 某控制器部分协议内容
首先创建的内容是报文信息,如图2-4所示,包含两帧报文信息,分别是“FCSHCPCmd”和“FCSHCPStatus1”。其中每帧报文又包含若干个信号,如“FCSHCPCmd”报文包含了“FCSHSpdSet”“FCSHCPMode”“TempAmb”“RollingCounter_0x331”“Checksum_0x331”五条信号。
如图2-5所示,右击“Massages”标签,点击“New...”标签,创建报文信息,填入相应的信息:
Name:信息帧名;
Type:为帧类型,可选内容为“CAN Standard”和“CAN Extended”。分别表示该帧为标准帧和拓展帧;
ID:表示该帧的ID号;
DLC:表示该帧的长度。
如图2-6所示。以同样的方式,创建第二帧报文。
图 2-5 新建报文信息图
图 2-6 报文信息编辑图
报文信息创建完成后,创建信号信息。右击“Signals”标签,然后点击“New...”标签,创建信号信息,填入相应的信息:
Name:信号名称;
Length[bit]:该信号位长度;
Byte Order:信息储存类型,可选内容为“Intel”和“Motorola”类型;
Value Type:数据类型;
Factor:精度;
Offset:偏移量;
Unit:信号单位;
Calculate minimun and maximum:计算信号的最大值和最小值;
Commit:添加注释;
图 2-7 新建信号信息图
图 2-8 信号信息编辑图
如图2-8所示,填入相关参数。依次点击“Messages”标签,“Add...”标签,点击所属报文,点击“OK”添加。如图2-9所示。其他信号添加方式与此相同。
图 2-9 信号信息添加所属帧信息图
图2-3中,部分信号为枚举型,此时需要添加枚举表赋予该信号。如图2-10所示,依次点击“View”标签,“Value Tables”标签,进入编辑界面。
图 2-10 添加枚举信号图
进入枚举编辑界面后,右击空白处,点击“New”标签,添加枚举变量,进入变量设置界面,如图2-11所示。输入名称后,依次点击左上角标签“Value Descriptions”,右下角标签“Add”,编辑新建的枚举,以“FCSHCPMode”信号为例,编辑好的枚举变量,如图2-12所示。
图 2-11 枚举信号添加界面图
图 2-12 枚举信号编辑界面图
点击确定后,双击枚举对应的信号,将枚举匹配至该信号。如图2-13所示,依次点击“Value Table”标签,点击枚举变量名称,点击确定。
图 2-13 枚举添加界面图
信号编辑完成后,需要创建发送方和接收方节点。如图2-14,依次右击“Network nodes”,点击“New..”标签,进入节点编辑界面。
图 2-14 节点添加界面图
编辑节点名称后,点击“Mapped Rx Sig”标签,点击“Add:all form one message”标签,选择该节点接收类型的数据帧,如图2-15所示。点击“ok”标签后,再点击“Tx Massage”,再点击“Add...”标签,选择该节点要发送的数据帧,再点击“OK”标签、“确定”标签,如图2-16所示。
图 2-15 接收节点编辑界面图
图 2-16 发送节点编辑界面图
一个完整的CAN通讯需要至少两个节点才能实现,一帧报文需要一个接收节点和一个发送节点,故至少需要创建两个以上的节点。
以上功能设置完成后,进行一致性检查,如图2-17所示,点击左上角“File”标签,
点击“Consistency check”标签,若无内容,则表示一致性检查通过。