今天写一篇关于CANdb++软件创建用于解析CAN报文DBC文件流程,最近的项目中需要用到DBC文件,由于一直没有使用过,不会搞就来百度百度探索一下,顺便记录一下调试过程。
1.首先了解一下什么是DBC文件?
DBC 全称为Data Base CAN,DBC文件用于描述单个CAN网络的通信中信息。其实就是根据CAN通讯协议制作一份用于解析CAN报文数据的文件,因为我们使用CAN设备抓取到的每一帧报文都是一串8个字节的十六进制数据(共64bit),
想要知道报文数据代表什么需要对着通讯协议去核对数据代表是什么。而DBC文件的作用就是帮助我们直接得到报文数据代表的含义,省去了查通讯协议这步骤,直接得到报文数据表示的是什么数据。
2.使用的软件
Vector公司的CANdb++ editor
软件下载链接:https://pan.baidu.com/s/1xdjvOiY2KTZNDf9rbeFIrA
提取码:3ecg
软件安装之后,若打不开时将Cdbstat.dll文件复制到一下路径中。
C:\Windows\SysWOW64
3.创建过程(创建一个简单解析CAN协议DBC)
3.1打开CANdb++ Editor 软件界面如下所示。
3.2点击File -> Create database ->选择J1939Template.dbc -> OK -> 输入文件名称,保存文件。
3.3创建好模板后显示如下图所示
重点关注两个点即可,Messages,Signals,这两个点即可入门了解DBC文件,若要深入探索DBC文件就需要了解全部Networks组件。
3.4创建Signals,右键Signals 选择NEW 创建信号,如下图所示。
解析一下下图中创建Signals:
创建一个名字(Name):Max_CellVolt
字节长度(Lenght):16bit
字节顺序(Byte Order):Motorola (字节顺序有两种模式:一种为Intel,另外一种为Motorola;区别为Intel 高字节(8bit)在后,低字节(8bit)在前;Motorola高字节(8bit)在前,低字节(8bit)在后。
例如:5330 数值用十六进制表示时,若用Motorola格式:14 D2;若用Intel格式:D2 14)
数值类型(Value Type):Unsigned 无符号 (数值类型有4种格式:Signed ,Unsigned,IEEE Float ,IEEE Double)
Unti,Factor,Int.val,Offset,Value Table这几项可以先不用管。
最小值与最大值可以点击 Calculate minimum and maximum 自行生成(这里的最大最小值是根据你选的字节长度和数值类型决定的)。
3.5什么是Signals?
Signals是一帧CAN报文中的数据代表的含义,例如下图一中国标充电协议中BSD这帧报文(帧ID:0x181C56F4),这帧报文共7个字节,分别用来表示荷电状态SOC,单体最低电压,单体最高电压,最低温度,
最高温度等5个信号;Signals就是指这5个信号。所以要解析这帧报文我们需要创建5个Signals,如下图二所示,创建对应字节长度的信号。
图一
图二
3.6创建Messages ,右键Messages,选择NEW,创建信息。如下图所示。
输入名字:BSD
类型为:扩展帧(CAN Extended)CAN报文帧类型分为两种:CAN Standard(标准帧),CAN Extended(扩展帧),主要区别为帧ID的范围。
ID:0x181C56F4
DLC:7 表示该帧报文字节数为7个字节(一帧报文最大字节数为8个)
3.7 创建好Messages后,需向Messages中添加
Signals?
Signals是一帧CAN报文中的数据代表的含义,例如下图一中国标充电协议中BSD这帧报文(帧ID:0x181C56F4),这帧报文共7个字节,分别用来表示荷电状态SOC,单体最低电压,单体最高电压,最低温度,
最高温度等5个信号;Signals就是指这5个信号。所以要解析这帧报文我们需要创建5个Signals,如下图二所示,创建对应字节长度的信号。
图一
图二
3.6创建Messages ,右键Messages,选择NEW,创建信息。如下图所示。
输入名字:BSD
类型为:扩展帧(CAN Extended)CAN报文帧类型分为两种:CAN Standard(标准帧),CAN Extended(扩展帧),主要区别为帧ID的范围。
ID:0x181C56F4
DLC:7 表示该帧报文字节数为7个字节(一帧报文最大字节数为8个)
3.7 创建好Messages后,需向Messages中添加Signals;在Messages "BSD"中选择Signals,然后点击Add.
3.8点击创建好的5个Signals,逐一添加,或者全选同时添加。
3.9添加好信号后,查看Layout选项中信号对应的字节位置是否与协议一样,此帧协议为国标充电协议中BSD这帧报文(帧ID:0x181C56F4),上面有图提示到,可查看上图。
4.0该帧报文共7个字节(0-6),第1字节:SOC;第2-3字节:Max_CellVolt;第4-5字节:Min_CellVolt;第6字节:Max_Temp;第7字节:Min_Temp;
与上面提示的国标充电协议BSD报文表示信号一致。
4.1保存文件,最后效果如下图所示。
4.2测试
使用CANPro软件,导入DBC文件,接收CAN报文,分析如下。
4.3总结
a.首先要明白DBC文件是有什么作用的,然后知道DBC文件可以由什么软件创建。
b.其次分析你使用的协议中那些报文是需要解析。
c.最后使用软件制作DBC。
d.关于此次使用的CANdb++这个软件网上有许多文章介绍,想要详细了解还得自己亲自去摸索摸索,俗话说“实践是检验真理的唯一标准”。