DBC文件格式解析
一、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_: %%波特率定义
格式:BS_:
四、BU_: %%网络节点定义,节点定义了具有各自CAN地址的不同控制器之间的通信。
格式:BU_: Nodename1 Nodename2 Nodename3 ……
五、BO_:%%报文帧定义
格式:BO_ MessageId MessageName: MessageSize Transmitter
BO_ | MessageId | MessageName | MessageSize | Transmitter |
报文关键字 | 报文ID(十进制表示) | 报文名称 | 报文长度 | 发送节点:Nodename1... (无就用Vector_XXX代替) |
六、SG_:%%信号定义
格式:SG_ SignalName : StartBit|SignalSize@ByteOrder ValueType (Factor,Offset) [Min|Max] "Unit" Receiver
SG_ | 关键字,表示信号 |
SignalName | 信号名称 |
StartBit | 信号的起始位置,如果排列方式为Motrola格式,StartBit为msb,Intel格式为lsb |
SignalSize | 信号长度(Bit) |
@ByteOrder | 1 表示Intel类型,0 表示Motrola类型 |
ValueType | + 表示无符号数,- 表示用符号数 |
(Factor,Offset) | 精度与偏移量,用于将原始值转化为真实物理值 物理值 = 原始值*Factor+Offset |
[Min|Max] | 最大,最小值,double类型 |
"Unit" | 单位,string类型,例:"m/s",无单位为 "" |
Receiver | 信号的接收节点,没有就写Vector__XXX |
七、CM_:%%对报文或者信号的注释
格式:CM_ Object MessageId/NodeName “Comment”
CM_ | 关键字,表示注释 |
Object | 表示进行注解的对象类型,可以是节点“BU_”、报文“BO_”、信号”SG_”; |
MessageId/NodeName +(SignalName) | 表示进行注解的对象,若前面的对象类型是报文“BO_”,则这里的值应为报文的ID(10进制数表示);若前面的对象类型是信号”SG_”,则这里的值应为报文的ID(10进制数表示)+信号名称;若前面的对象类型为节点“BU_”,则这里的值应为节点的名字; |
“Comment” | 注释信息 |
例:
(1) CM_ SG_ 996 HUD_HeightLv “Control hud height level”;
表示对ID为996(0x3E4)这条报文下的名为”HUD_HeightLv ”的信号进行注解说明,说明的内容为"Control hud height level"。
(2) CM_ BO_ 996 “The message of control hud status”;
表示对ID为996(0x3E4)这条报文进行注解说明,说明的内容为" Head Up Display ";
(3) CM_ BU_ HUD "Head Up Display";
表示对HUD这个节点进行注解说明,说明的内容为" Head Up Display ";
八、节点/报文/信号的属性定义
(1) BA_:%%属性设置值定义
格式:BA_ "AttributeName" Object MessageId/NodeName AttributeValue;
BA_ | 关键字,属性值设置 |
AttributeName | 属性名称 |
Object | 对象类型,可以是节点“BU_”、报文“BO_”、信号”SG_”; |
MessageId/NodeName | 若前面的对象类型是报文“BO_”,则这里的值应为报文的ID(10进制数表示);若前面的对象类型是信号”SG_”,则这里的值应为报文的ID(10进制数表示)+信号名称;若前面的对象类型为节点“BU_”,则这里的值应为节点的名字; |
AttributeValue | 属性值 |
(2) BA_DEF_:%%属性定义
格式:BA_DEF_ Object "AttributeName" ValueType Min Max;
BA_DEF_ | 关键字,属性定义 |
Object | 对象类型,可以是节点BU_,报文BO_,信号SG_,空格(项目属性定义) |
AttributeName | 属性名称 |
ValueType | 属性类型:INT(10进制),STRING(字符串),ENUM(枚举),FLOAT(浮点),HEX(16进制) |
Min Max | 属性类型的范围,如果是枚举类型则为枚举值,字符串类型则为空不填,其他类型则为 最小值 最大值 |
例:
1) BA_DEF_ SG_ "NWM-WakeupAllowed" ENUM
表示对信号(SG_)进行属性定义,属性名称为"NWM-WakeupAllowed",类型为枚举,枚举值为"No","Yes"。
2) BA_DEF_ BU_ "NodeLayerModules" STRING ;
表示对节点(BU_)进行属性定义,属性名称为"NodeLayerModules",类型为字符串。
3) BA_DEF_ SG_ "GenSigInactiveValue" INT
表示对信号(SG_)进行属性定义,属性名称为"GenSigInactiveValue",类型为10进制,MIN=0,MAX=100000。
4) BA_DEF_ SG_ "GenSigStartValue" FLOAT
表示对信号(SG_)进行属性定义,属性名称为"GenSigStartValue",类型为浮点数,MIN=0,MAX=100000000000。
5) BA_DEF_ BU_ "NmStationAddress" HEX
表示对节点(BU_)进行属性定义,属性名称为"NmStationAddress",类型为16进制数,MIN=0,MAX=0。
6) BA_DEF_ "BusType" STRING
表示对项目进行属性定义,属性名称为 "BusType" ,,类型为字符串。
(3) BA_DEF_DEF_%%属性初始值定义
格式:BA_DEF_DEF_ "AttributeName" DefaultValue;
BA_DEF_DEF_ | 关键字,属性初始值 |
AttributeName | 属性名称 |
DefaultValue | 属性的初始值 |
例:
BA_DEF_DEF_ "NmStationAddress" 0;
九、VAL_:%%对信号数值表的定义
格式:VAL_ MessageId SignalName N “DefineN” …… 0 “Define0”;
VAL_ | 关键字,表示数值表 |
MessageId | 信号所属报文ID |
SignalName | 信号名称 |
N “DefineN” …… 0 “Define0” | 信号的数值表 |
例:
VAL_ 640 ADCU_BeamReq 3 "Reserved" 2 "High beam request" 1 "Low beam request" 0 "No request" ;
表示对ID为640(0x280)报文中名称为ADCU_BeamReq的信号定义数值表:
3 "Reserved"
2 "High beam request"
1 "Low beam request"
0 "No request"
十、VAL_TABLE_:%%全局信号值表
格式:VAL_TABLE_ value_table_name value_table_value “value_description” … 0 “value_description”;
VAL_TABLE_ | 关键字,全局信号值表 |
value_table_name | 表名称 |
value_table_value | 值 |
value_description | 值的描述 |
例:
VAL_TABLE_ ESC_QDCFRS 1 "ERROR" 0 "NO_ERROR" ;
当一个value table存在多个值描述时,以(value_table_value “value_description”)的形式接着追加,value table内的两个值描述以“空格”分隔。