CAN通信——.DBC文件
CAN通信
.dbc
文件
参考
汽车电子 – DBC详解
文件构成
-
VERSION \"\"
版本 version 或为空,或由用户自行定义。 -
NS_
为new symbol的缩写,后面紧跟着一堆ns,一般为创建dbc时自动生成 -
波特率定义
BS_
定义CAN网络的波特率。必须部分,但通常为空。
-
网络节点的定义
BU_
网络节点//用户自定义nodeName,保证唯一 BU_: Nodename1 Nodename2 Nodename3 ……
-
报文帧定义
BO_
- 报文
- 格式
//MessageId:报文ID,是以10进制数表示的;//MessageName:报文的名字,命名规则和C语言变量相同;//MessageSize:报文数据域字节数,为无符号整型数据,CAN 2.0为最大8字节,CAN FD 最大64字节;//Transmitter:该报文的发送节点;如果该报文没有指定发送节点,则该值需设置为” Vector__XXX”。BO_: message_id message_name : message_size transmitter {signal}
BO_ 529 B_CDCU_RDCU_VGACtrl: 8 CDCUSG_ B_CDCU_RDCU_EAVDriverWindModeBtn : 2|3@0+ (1,0) [0|7] \"\" Vector__XXXSG_ B_CDCU_RDCU_EAVPsnWindModeBtn : 5|3@0+ (1,0) [0|7] \"\" Vector__XXXSG_ B_CDCU_RDCU_EAVSweepWindBtn : 6|1@0+ (1,0) [0|1] \"\" Vector__XXXSG_ B_CDCU_RDCU_EAVDrvLeftHorzPos : 11|4@0+ (1,0) [0|15] \"\" Vector__XXXSG_ B_CDCU_RDCU_EAVDrvLeftVertPos : 15|4@0+ (1,0) [0|15] \"\" Vector__XXXSG_ B_CDCU_RDCU_EAVDrvRightHorzPos : 19|4@0+ (1,0) [0|15] \"\" Vector__XXXSG_ B_CDCU_RDCU_EAVDrvRightVertlPos : 23|4@0+ (1,0) [0|15] \"\" Vector__XXXSG_ B_CDCU_RDCU_EAVPsnLeftHorzPos : 27|4@0+ (1,0) [0|15] \"\" Vector__XXXSG_ B_CDCU_RDCU_EAVPsnLeftVertPos : 31|4@0+ (1,0) [0|15] \"\" Vector__XXXSG_ B_CDCU_RDCU_EAVPsnRightHorzPos : 35|4@0+ (1,0) [0|15] \"\" Vector__XXXSG_ B_CDCU_RDCU_EAVPsnRightVertPos : 39|4@0+ (1,0) [0|15] \"\" Vector__XXX
-
信号的定义
SG_
- 格式
SG_: signal_name [multiplexer_indicator] : start_bit | signal_size @ byte_order value_type ( factor , offset ) [ minimum | maximum ] unit receiver {, receiver}
字段名 描述 signal_name 信号名 multiplexer_indicator 定义了该信号是否为一个正常信号,或一个复用信号,此项可以被省略。 start_bit 起始位置 signal_size 信号长度 byte_order 字节顺序。
0: Intel格式
1: Motorola格式value_type 数值类型。
Unsigned: 无符号数
Signed: 有符号数factor 因子。用于将原始值转换为物理值。 offset 偏移。用于将原始值转换为物理值。
物理值 = 原始值 * 因子 + 偏移量minimum 最小值。 minimum
和maximum
为double
类型,表示信号的最值范围。maximum 最大值。 minimum
和maximum
为double
类型,表示信号的最值范围。unit 单位 receiver 接收者。如果一个信号没有指定接收者,则必须设置为 Vector__XXX
。
-
注解部分
CM_
- 格式:Object MessageId/NodeName “Comment”
- Object:表示进行注解的对象类型,可以是节点“BU_”、报文“BO_”、消息”SG_”;
- MessageId/NodeName:表示进行注解的对象,若前面的对象类型是信号或者报文,则这里的值应为报文的ID(10进制数表示);若前面的对象类型为节点,则这里的值应为节点的名字;
- Comment :表示进行注解的文本信息;
- 例子
//信号CM_ SG_ 384 B_SRS_DrvSeatBeltWarning \"Driver seat belt status\";
- 属性定义部分
BA_DEF_
- 对报文/信号/节点等的属性初始值定义
- 格式
BA_DEF_DEF_: AttributeName DefaultValue; //其中: //AttributeName:特征名称(C语言变量格式)。 //DefaultValue:该特征的默认设置值
- 示例
BA_DEF_ BO_ \"AliveTimeout\" INT 0 100000; BA_DEF_ BO_ \"XcpResp\" ENUM \"Yes\",\"No\"; BA_DEF_ \"Date\" STRING ; BA_DEF_ BU_ \"CANoeJitterMin\" INT 0 0; BA_DEF_DEF_ \"Manufacturer\" \"XXX\"; BA_DEF_DEF_ \"Project\" \"E38\"; BA_DEF_DEF_ \"Version\" \"N\"; BA_DEF_DEF_ \"Date\" \"N\";
BA_
- 对报文/信号/节点等的属性设置值定义
- 格式
BA_: AttributeName projectValue //其中: //AttributeName:特征名称(C语言变量格式) //projectValue:该特征的设置值
- 示例
BA_ \"NmStationAddress\" BU_ AMP 47; BA_ \"NmStationAddress\" BU_ TTM 0; BA_ \"BusType\" \"CAN\"; BA_ \"DBName\" \"CAN\";
- 数值表部分
VAL_
- 数值表定义
- 格式
VAL_: MessageId SignalName N “DefineN” …… 0 “Define0” //其中: //MessageId 表示该信号所属的报文ID(10进制数表示); //SignalName 表示信号名;
- 示例
VAL_ 384 B_SRS_CrashOutputSt 0 \"Not Active\" 1 \"Active\" ; //id384报文下,B_SRS_CrashOutputSt信号的数值定义