DBC文件解析

2025-08-21

dbc文件解析

dbc文件整体结构

一个dbc文件包含以下内容:

名称 符号 名称 符号
版本 VERSION "" 注释部分 CM_
使用的符号 NS_ 属性定义 BA_DEF_
波特率 (已弃用,保留符号) BS_ 属性默认值 BA_DEF_DEF_
网络节点定义 BU_ 属性值 BA
报文帧定义 BO_ 值表 VAL_TABLE
信号定义
(每个报文帧定义下包含多个信号定义)
SG_ 值描述 VAL_

dbc文件内容

dbc

网络节点

BU_ : 网络节点1 网络节点2 ...

报文帧定义与信号定义

BO_ 报文ID 报文名 : 报文数据长度 发送节点
 SG_ 信号名1 多路复用标志: 起始位|位长@字节顺序 符号类型 (分辨率,偏置) [物理最小值|物理最大值] "单位" 接收节点
 SG_ 信号名2 多路复用标志: 起始位|位长@字节顺序 符号类型 (分辨率,偏置) [物理最小值|物理最大值] "单位" 接收节点 
  • 报文ID定义CAN仲裁段中的ID

  • 数据报文长度对应CAN控制段中的DLC(数据段的字节数)

  • 多路复用标志表示信号是否是普通信号(此处为空)、多路复用信号(此处标志为M)、多路信号(此处标志为m复用值,复用值表示当多路复用信号的值为该复用值时,该位上的信号为本信号)

  • 起始位决定了信号在数据段中的起始比特位置

  • 位长表示信号所占的比特数

  • 字节顺序分为两种,用于处理当位长覆盖超过一个字节时的填充方式:intel格式(1)按字节顺序从低到高填充,Motorola格式(0)表示按字节顺序从高到低填充

  • 符号类型分为两种: + 表示无符号(Unsigned), - 表示有符号 (Signed, Float, Double)

  • 分辨率以及偏置用于转换网络值与物理值:$\text{物理值}=\text{网络值}\times\text{分辨率}+\text{偏移量}$

  • 物理最小值与最大值定义了信号物理值的有效范围

注释部分

CM_ 对象类型 对象名称 "注释"

如果对象类型是BO_,则对象名称为报文ID 如果对象类型是SG_,则对象名称为报文ID 信号名

属性定义

BA_DEF_ 对象类型 属性名 属性类型 范围
     
对象类型 BU_
BO_
SG_
空格
节点属性
报文属性
信号属性
项目属性
属性名    
属性类型 INT
HEX
FLOAT
ENUM
STRING
十进制
十六进制
浮点数
枚举
字符
范围 INT
HEX
FLOAT
ENUM
STRING
最小值 最大值
最小值 最大值
最小值 最大值
枚举值1 枚举值2 ...

属性默认值

给属性设置默认值

BA_DEF_DEF_ 属性名 默认值

属性值

每个对象具体的属性值

BA_ 属性名 对象类型 对象名称 属性值

值表(可以没有)

VAL_TABLE_ 表名 值1 “值1描述” 值2 “值2描述”  ...

定义了对不同值的描述

值描述

VAL_ 对象名称 值1 “值1描述” 值2 “值2描述”  ...

对具体信号的不同值的描述,其中对象名称为信号报文ID 信号名