dbc文件:Database CAN,CAN协议的描述文件。文件中关键字含义如下图:
dbc文件结构
1.版本与新符号
version: 版本信息可以为空,也可由用户自定义
new symbol: 随dbc文件自动生成
2.波特率定义 (必须项)
BS_:[baudrate:BTR1, BTR2]
"BS_":CAN网络的波特率,必须存在,[]内容可以省略
3.网络节点定义 (必须项)
BU_:Nodename1 Nodename2 Nodename3...
"BU_":表示网络节点,由用户自定义,需保证节点命名的唯一性
例:
BU_:AVNT ACU HUD ——> 定义了AVNT、ACU、HUD三个网络节点
4.报文帧定义
BO_ MessageId(10进制) MessageName: MessagSize Transmitter
"BO_":关键字,表示报文
"MessageId":报文ID,以十进制表示
"MessageName": 报文名字
"MessagSize":报文数据域字节数,为'无符号整型数据'
"Transmitter": 发送该报文的网络节点,无指定发送节点,则设置为'Vector_XXX'
BO_ 1549 PosLocalD: 4 IFS2000: 表示由IFS2000节点发送,数据域长度为4字节,ID为1549(0x60d),名字为PosLocalD的报文
5.信号定义
SG_SignalName: StartBit|SignalSize@ByteOrder ValueType (Factor, Offset) [Min|Max] Unit Receiver
"SG_":关键字,表示信号
"Signal Name": 信号名称
"StartBit":起始位
"SignalSize":信号长度,单位为:bit
"ByteOrder":字节顺序,0 ——> Motorola格式,1 ——> Inter格式
"valueType": 信号的数值类型,'+' ——> '无符号数', '-' ——> '有符号数'
"Factor":表示因子, "Offset":偏移量
物理值 = 原始值 * Factor + Offset
"Min|Max": 信号的最小值和最大值,为double类型
"Unit": 该信号的单位,为字符串类型
"Receiver": 信号的接收节点,无指定节点,则设置为'Vector_XXX'
例:
SG_ PosLocalDown : 0|32@1- (0.001,0) [-214748.3648|214748.3647] "m" Vector__XXX
表示名为'PosLocalDown'的信号起始位为第0位,信号长度为32位,Inter格式,数值类型为有符号类型数
因子为0.001,偏移量为0,信号取值范围为-214748.3648到214748.3647,信号单位为:'m',无指定接收节点
6.注解部分
CM_Object MessageId/NodeName "Comment"
"cm_": 关键字,表示注解信息
"Object": 注解对象类型,可以是节点"BU_", 报文"BO_", 信号"SG_"
"MessageId/NodeName": 注解对象,若对象类型为信号或者报文,则为报文的ID(10进制);若对象为节点,则为节点的名称
"Comment": 注解的文本
例:
"CM_ SG_ 996 HUD_HeightLv “Control hud height level":
表示对ID为996这条报文下的'HUD_HeightLv'信号进行注解,内容为'Control hud height level'
7.属性定义
BA_DEF_Object AttributeName ValueType Min Max;
BA_DEF_DEF_ AttributeName DefaultValue
"BA_DEF_":关键字,表示属性定义
"Object": 对象,可以是 节点'BU_',报文'BO_',信号'SG_'
"AttributeName":属性名
"ValueType:":数据类型,有'整型'、'字符串'、'浮点型'、'枚举型'
"Min/Max":属性值的取值范围
"BA_DEF_DEF_":关键字,表示定义属性的初始值
"DefaultValue":属性的初始值
例:
BA_DEF_ SG_ “MyTry” INT 0 11、 BA_DEF_DEF_ “MyTry” 0:
表示对信号的'MyTry'属性进行定义,属性的数据类型为整型,取值范围为0到11,初始值为0
8.数值表部分
VAL_ MessageId SignalName N "DefineN" ....0 "Define0"
"VAL_":关键字,数值表定义
"MessageId":报文ID(十进制)
"SignalName":信号名
N "DefineN" ....0 "Define0":表示定义的数值表内容
例:
VAL_ 996 HUD_OffSt 1 “Active” 0 “Not Active”:
表示ID为996的报文下名为"HUD_OffSt"信号进行数值表定义,"Active"取代'1',"Not Active"取代'0'