文章目录:
1. DBC文件简介
2. CANdb 工具简介
3. DBC文件格式
3.1 符号字符串
3.2 标头
3.3 Bit Timing 波特率
3.4 Node 节点定义
3.5 Value Table 值表定义
3.6 Message 报文定义
3.7 Signal信号定义
3.8 Comment注释定义
3.9 User Defined Attribute
DBC文件
DBC文件
:全称为Data Base CAN
,将CAN网络所需的所有信息都存储在CANdb network file中,CANdb network file的文件扩展名为DBC
CANdb
是一个数据管理程序,可用于创建和修改网络总线系统中的信息以及信息单元之间的相互关系,即建立DBC文件的软件工具CANdb
打开一个DBC
文件,打开示例如下图所示:DBC
文件,呈现的内容格式如下:.txt
文件中,将文件后缀格式转换成.dbc
文件,就制作了一个DBC文件,可以通过CANdb 工具打开编辑,也可以加载到CAN工具数据库中,读取相关数据内容VERSION ''
NS_ :
NS_DESC_
CM_
BA_DEF_
BA_
VAL_
CAT_DEF_
CAT_
FILTER
BA_DEF_DEF_
EV_DATA_
ENVVAR_DATA_
SGTYPE_
SGTYPE_VAL_
BA_DEF_SGTYPE_
BA_SGTYPE_
SIG_TYPE_REF_
VAL_TABLE_
SIG_GROUP_
SIG_VALTYPE_
SIGTYPE_VALTYPE_
BO_TX_BU_
BA_DEF_REL_
BA_REL_
BA_DEF_DEF_REL_
BU_SG_REL_
BU_EV_REL_
BU_BO_REL_
SG_MUL_VAL_
BS_:
BU_: DCDC VCU OBD
VAL_TABLE_ Package_Num_Value 1 'No.2' 0 'N0.1' ;
VAL_TABLE_ OBD_status_description 2 'Shutdown' 1 'Run' 0 'Initialization' ;
VAL_TABLE_ Voltage_state 65535 'Invalid voltage' ;
BO_ 530 Test_ID_212: 8 OBD
SG_ Voltage_6_Value m1 : 55|16@0 (0.1,0) [0|6553.5] 'V' VCU
SG_ Voltage_5_Value m1 : 39|16@0 (0.1,0) [0|6553.5] 'V' VCU
SG_ Voltage_4_Value m1 : 23|16@0 (0.1,0) [0|6553.5] 'V' VCU
SG_ Voltage_3_Value m0 : 55|16@0 (0.1,0) [0|6553.5] 'V' VCU
SG_ Voltage_2_Value m0 : 39|16@0 (0.1,0) [0|6553.5] 'V' VCU
SG_ Voltage_1_Value m0 : 23|16@0 (0.1,0) [0|6553.5] 'V' VCU
SG_ Package_Num M : 7|8@0 (1,0) [0|1] '-' VCU
BO_ 529 Test_ID_211: 8 OBD
SG_ OBD_status : 39|8@0 (1,0) [0|255] '-' DCDC,VCU
SG_ Current_value : 23|16@0- (0.1,0) [-300|300] 'A' DCDC,VCU
SG_ Voltage_value : 7|16@0 (0.1,0) [0|6553.5] 'V' DCDC,VCU
CM_ BU_ DCDC 'DCDC node in CAN network';
CM_ BU_ VCU 'VCU node in can network';
CM_ BU_ OBD 'OBD node in CAN network';
CM_ BO_ 530 'The CAN_ID of the test message is 0x212.';
CM_ SG_ 530 Voltage_6_Value 'Value of Voltage_6.';
CM_ SG_ 530 Voltage_5_Value 'Value of Voltage_5.';
CM_ SG_ 530 Voltage_4_Value 'Value of Voltage_4.';
CM_ SG_ 530 Voltage_3_Value 'Value of Voltage_3.';
CM_ SG_ 530 Voltage_2_Value 'Value of Voltage_2.';
CM_ SG_ 530 Voltage_1_Value 'Value of Voltage_1.';
CM_ SG_ 530 Package_Num 'Number of Voltage.';
CM_ BO_ 529 'The CAN_ID of the test message is 0x211.';
CM_ SG_ 529 OBD_status 'OBD working status signal.';
CM_ SG_ 529 Current_value 'OBD current signal.';
CM_ SG_ 529 Voltage_value 'OBD voltage signal.';
BA_DEF_ SG_ 'ProjectSignalRequirementNb' STRING ;
BA_DEF_ SG_ 'GenSigStartValue' HEX 0 0;
BA_DEF_ SG_ 'GenericSignalRequirementNb' STRING ;
BA_DEF_ 'Manufacturer' STRING ;
BA_DEF_ BO_ 'ProjectFrameRequirementNb' STRING ;
BA_DEF_ BO_ 'GenMsgSendType' ENUM 'Cyclic','OnEvent','Cyclic_And_OnEvent';
BA_DEF_ BO_ 'GenMsgCycleTime' INT 0 65535;
BA_DEF_ BO_ 'GenericFrameRequirementNb' STRING ;
BA_DEF_ 'BusType' STRING ;
BA_DEF_DEF_ 'ProjectSignalRequirementNb' '';
BA_DEF_DEF_ 'GenSigStartValue' 0;
BA_DEF_DEF_ 'GenericSignalRequirementNb' '';
BA_DEF_DEF_ 'Manufacturer' 'BMW';
BA_DEF_DEF_ 'ProjectFrameRequirementNb' '';
BA_DEF_DEF_ 'GenMsgSendType' 'Cyclic';
BA_DEF_DEF_ 'GenMsgCycleTime' 0;
BA_DEF_DEF_ 'GenericFrameRequirementNb' '';
BA_DEF_DEF_ 'BusType' 'CAN';
BA_ 'GenMsgSendType' BO_ 530 2;
BA_ 'GenMsgCycleTime' BO_ 530 1000;
BA_ 'GenMsgSendType' BO_ 529 1;
BA_ 'GenMsgCycleTime' BO_ 529 100;
BA_ 'GenSigStartValue' SG_ 530 Voltage_6_Value 3000;
BA_ 'GenSigStartValue' SG_ 530 Voltage_5_Value 3000;
BA_ 'GenSigStartValue' SG_ 530 Voltage_4_Value 3000;
BA_ 'GenSigStartValue' SG_ 530 Voltage_3_Value 3000;
BA_ 'GenSigStartValue' SG_ 530 Voltage_2_Value 3000;
BA_ 'GenSigStartValue' SG_ 530 Voltage_1_Value 3000;
BA_ 'GenSigStartValue' SG_ 529 OBD_status 2;
BA_ 'GenSigStartValue' SG_ 529 Current_value 0;
BA_ 'GenSigStartValue' SG_ 529 Voltage_value 768;
VAL_ 530 Package_Num 1 'No.2' 0 'N0.1' ;
VAL_ 529 OBD_status 2 'Shutdown' 1 'Run' 0 'Initialization' ;
VAL_ 529 Voltage_value 65535 'Invalid voltage' ;
符号字符串
,像Node,Message,Signal的命名,其要求为:字母字符或下划线开头
,并由字母
,数字
和下划线
组成128个字符
,为了与较旧的工具兼容,长度最好不得超过32个字符VERSION
:版本信息,后面加双引号,双引号中的内容可以为空,也可以是满足要求的字符串命名NS_
,全称:new symbols
,新符号条目,该部分格式基本是固定,具体的含义可以不用了解VERSION ''
NS_ :
NS_DESC_
CM_
BA_DEF_
BA_
VAL_
CAT_DEF_
CAT_
FILTER
BA_DEF_DEF_
EV_DATA_
ENVVAR_DATA_
SGTYPE_
SGTYPE_VAL_
BA_DEF_SGTYPE_
BA_SGTYPE_
SIG_TYPE_REF_
VAL_TABLE_
SIG_GROUP_
SIG_VALTYPE_
SIGTYPE_VALTYPE_
BO_TX_BU_
BA_DEF_REL_
BA_REL_
BA_DEF_DEF_REL_
BU_SG_REL_
BU_EV_REL_
BU_BO_REL_
SG_MUL_VAL_
BS_
:Bit Timing定义了网络的波特率
和BTR寄存器
的设置BS_
必须出现在DBC文件中,不可省略,例如:BS_:
BU_
BU_: node_1_name node_2_name…
空格
分隔符号字符串
要求BU_: VCU OBD
VAL_TABLE_
VAL_TABLE_ value_table_name value_table_value “value_description” …0 “value_description”;
空格
分隔符号字符串
要求十进制
表示空格
分隔;
结尾VAL_TABLE_ OBD_status_description 2 'Shutdown' 1 'Run' 0 'Initialization' ;
VAL_TABLE_ Voltage_state 65535 'Invalid voltage' ;
BO_
BO_ message_id message_name: message_size transmitter
描述:
十进制
表示,在DBC文件中,CAN_ID必须唯一
符号字符串
要求 :
不能少字节
为单位,十进制
表示Vector__XXX
举例
BO_ 530 Test_ID_212: 8 OBD
SG_
SG_ signal_name multiplexer_indicator : start_bit|signal_size@byte_order value_type (factor,offset) [minimum|maximum] “unit” receiver
描述:
M
(大写)将信号定义为 Multiplexor Signal,一个消息中只有一个信号可以是Multiplexor Signalm
(小写)后跟无符号整数,将信号定义为Multiplexed Signalsignal_name 表示 信号的名称
,一个Message消息中的信号名称必须唯一,多个Message消息之间可以存在相同名称信号;命名必须满足 符号字符串
要求
multiplexer_indicator ,信号复用含义:
冒号:
不能少
start_bit 值指定信号在帧的数据域内的位置编号
,具体和Intel格式还是Motorola格式和采用的大小端有关
符号|
不能少
signal_size 表示信号的长度,以位为单位,十进制
表示
符号@
不能少
byte_order 表示 字节顺序,如果信号的字节顺序为Intel(小端),则byte_order 为 1;如果字节顺序为Motorola(大端),则byte_order 为 0
value_type 表示值类型,
表示无符号;-
表示有符号
(factor,offset) 表示增益和偏移量,这两个值于该信号的原始值与物理值之间的转换;转换如下:物理值 = 原始值* factor offset
[minimum | maximum] 表示 最小值和最大值,定义了信号的有效物理值的范围
unit 表示 信号的单位
,为字符串类型,无单位可以任意字符填充,如'_'
receiver 表示 信号的接收方,信号的接收方可以是多个节点,接收方节点名称必须在关键字BU_中定义;如果信号没有定义接收方,则必须在此处输入字符串Vector__XXX
举例:
BO_ 530 Test_ID_212: 8 OBD
SG_ Voltage_6_Value m1 : 55|16@0 (0.1,0) [0|6553.5] 'V' VCU
SG_ Voltage_5_Value m1 : 39|16@0 (0.1,0) [0|6553.5] 'V' VCU
SG_ Voltage_4_Value m1 : 23|16@0 (0.1,0) [0|6553.5] 'V' VCU
SG_ Voltage_3_Value m0 : 55|16@0 (0.1,0) [0|6553.5] 'V' VCU
SG_ Voltage_2_Value m0 : 39|16@0 (0.1,0) [0|6553.5] 'V' VCU
SG_ Voltage_1_Value m0 : 23|16@0 (0.1,0) [0|6553.5] 'V' VCU
SG_ Package_Num M : 7|8@0 (1,0) [0|1] '-' VCU
CM_
1. Node节点的注释举例
CM_ BU_ node_name “Comment”;
CM_ BU_ VCU 'VCU node in can network';
CM_ BU_ OBD 'OBD node in CAN network';
2 . Message消息的注释举例
CM_ BO_ message_id “Comment”;
CM_ BO_ 529 'The CAN_ID of the test message is 0x211';
3. Signal信号的注释举例
CM_ SG_ message_id signal_name “Comment”;
CM_ SG_ 529 OBD_status 'OBD working status signal';
CM_ SG_ 529 Current_value 'OBD current signal';
CM_ SG_ 529 Voltage_value 'OBD voltage signal';
Comment注释定义是非必要信息,可以省略,一般省略节点注释和Message报文注释,添加信号注释可以
User defined attributes
:用户自定义的属性定义,是扩展DBC文件的对象属性的一种方法;这些附加属性必须使用具有属性默认值的属性定义来定义1. Attribute属性定义
关键字:BA_DEF_
关键字:BA_DEF_DEF_
格式:
BA_DEF_ object_type “attribute_name” attribute_value_type ;
BA_DEF_DEF_ attribute_name attribute_value ;
;
结尾BA_DEF_ SG_ 'ProjectSignalRequirementNb' STRING ;
BA_DEF_ SG_ 'GenSigStartValue' HEX 0 0;
BA_DEF_ 'Manufacturer' STRING ;
BA_DEF_ BO_ 'ProjectFrameRequirementNb' STRING ;
BA_DEF_ BO_ 'GenMsgSendType' ENUM 'Cyclic','OnEvent','Cyclic_And_OnEvent';
BA_DEF_ BO_ 'GenMsgCycleTime' INT 0 65535;
BA_DEF_ BO_ 'GenericFrameRequirementNb' STRING ;
BA_DEF_DEF_ 'GenSigStartValue' 0;
BA_DEF_DEF_ 'GenMsgSendType' 'Cyclic';
BA_DEF_DEF_ 'GenMsgCycleTime' 0;
2. Attribute属性值
BA_
BA_ attribute_name BU_ node_name attribute_value;
BA_ attribute_name BO_ message_id attribute_value;
BA_ attribute_name SG_ message_id signal_name attribute_value;
BA_ attribute_name EV_ env_var_name attribute_value;
BA_ 'GenMsgSendType' BO_ 530 2;
BA_ 'GenMsgCycleTime' BO_ 530 1000;
BA_ 'GenSigStartValue' SG_ 529 OBD_status 2;
联系客服