DBC文件的制作

CANdb++下载

官方下载地址:https://www.vector.com/cn/zh/download/candb-31-sp5/

由于后面官网限制,需要输入邮箱来接收下载链接,这里放一个VectorCANdb-plusplus_Installer_3.1.030_SP6版本的直连下载;

下载链接:https://blog.freedash.hex.us.kg/SoftWare/VectorCANdb-plusplus_Installer_3.1.030_SP6.exe

创建dbc文件

点击左上角File->Creat Datebase,选择CANTemplate.dbc

然后给DBC取一个名字,然后保存:

dbc基本知识

这里主要是制作关于BMS的dbc文件,所以只用到MessagesSignals,这两个有什么含义呢?

Messages:

Messages:中文叫消息,在CAN里面的消息指一帧报文,一帧报文叫做一条消息。比如0x4200的报文,这一条报文叫做一个消息。

Signals:

Signals:中文叫信号,在CAN里面的一个叫做一个信号。比如电压可以叫做一个信号。

除了这两个还有一些CAN的基础知识:

MotorolaIntel

CAN协议的数据帧中,数据字段(Data Field)的字节排列方式有两种标准:

  • 摩托罗拉格式(Motorola):大端模式,高位字节在前(低地址),低位字节在后(高地址),所以Motorola需要将报文反一反来阅读,比如派能协议
  • 英特尔格式(Intel):小端模式,低位字节在前(低地址),高位字节在后(高地址),所以Intel格式不需要反过来,阅读起来更加方便。

了解完这个,下面就可以开始制作dbc文件了。

dbc文件的制作

Pylon CAN bus protocol V2.0.6_220510.pdf协议为例:

添加信号

单击Signals选中右键 –> New

名称填写PL_Charge_Volt_Lim_CVL,字节长度为16,单位V,intel类型,精度0.1,偏移0,最小值0.最大值65535。

那么这些数据怎么来的?

  • Name:名称,名称就是这个信号的名称,比如电压、电流、温度等。
  • Length「bit」:长度,假如CAN报文传过来的电压原始值为FF FF,那么换算到二进制就是1111 1111 1111 1111,16个1,那么每个1代表一个bit,也就是这里的长度。这个是假如需要解析故障的时候可以用上!
  • byte Order:字节顺序,上面讲过MotorolaIntel,这里就不再讲解了。
  • Unit:单位。
  • Value Type:数据类型,这里的数据类型有 Signed(有符号)、Unsigned(无符号)、IEEE Float(IEEE 754 标准、单精度32位)、IEEE Double(IEEE 754 标准、双精度64位)。如何选择:比如电压和SOC全都是大于0的数,就选择Unsigned,比如电流和温度有正负的数就选择Signed,其他的小数位比较多的就选择Float或者Double。
  • Factor:精度,协议里面会有。
  • Offset:偏移,协议里面会有。
  • Min和Max:一般随便填写。
  • Comment:评论,可以写备注。

好,现在就得到一个信号:

按照这个形式,将第一帧报文的四个变量全部写进去:

添加消息

添加一帧0x351的帧ID,Messages右键->New

填好Name、Type、ID和DLC,点击确定。

点击Signals->Add,把刚刚写好的信号按照顺序添加进来,点击确定:

然后恭喜你得到了第一帧报文:

好,到这一步就会解析基本的电压电流了,但是还有其他量,比如告警保护故障位(即bit位)、AA(使能)、55(禁能)。那么怎么解析呢?往下看

bit位的解析

在解析告警保护故障时,需要用到。

在DBC解析中,按照下面来解析的:

byte0 byte1 byte2 byte3 byte4 byte5 byte6 byte7
bit0-bit7 bit8-bit15 bit16-bit23 bit24-bit31 bit32-bit39 bit40-bit47 bit48-bit55 bit56-bit63

按照表格里面就能进行故障位解析,以下是示例:

把所有告警保护位都添加到Signal中,比如过压告警,因为每一个告警占用一个bit,所以Length全部为1:

然后把所有写好的告警保护位都添加到Message中,然后双击即可调整Startbit的位置,根据上面的byte和bit对应的表格和协议调整即可。

最终解析的样子就为:

可能有的小伙伴注意到了,派能协议0x359的最后两个值解析为P和N,那么这个怎么做到的呢?这就是下面要讲的。

Value Tables数值表

Value Tables更像一个对应关系,比如:

  • AA表示使能,55表示禁能;
  • ASCII码的80对应PASCII码的78对应N等等。

其实都是对应关系,创建这种对应关系就会用到Value Tables。

Value Tables的创建

在左上角点击View–>Value Tables即可打开。

打开以后是空白的,什么都没有,这是只要点击右键–>New即可创建一个tables,可以创建很多个:

比如说我创建一个存放ASCII码表来解析厂商名称:

然后在Value Descriptions中,点击Add即可添加ValueDescription

下面这个添加参考ASCII码表:https://tool.hiofd.com/ascii-table/

有些特殊字符比如Ï,可能CANdb++显示不出来而显示问号。

或者使用AA55

总之对应关系用Value Tables准没错。

Value Tables的使用

创建好了怎么使用呢?

点击总览即可返回。

找到需要解析的ASCII码或者其他需要解析的数字,然后下面点击Value Tables,选择刚刚创建的表即可。