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内的两个值描述以“空格”分隔。