一般的 DBC 文件中包含了如下的8种信息:
1、版本与新符号
2、波特率定义
3、网络节点的定义
4、报文帧的定义
5、信号的定义
6、注解部分
7、特征部分
8、数值表部分
VERSOIN "" //版本信息,为空,也可以自定义
NS_: //NS为 new symbol 的缩写,后面紧跟着一堆ns,一般是创建dbc时自动生成,不用太关心 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_:[baudrate:BTR1,BTR2]; //波特率设置,BS_为关键字,其中[]中为可选部分
BU_:Nodename1 Nodename2 Nodename3 …… //网络节点定义,其中Nodename为网络节点名字,用户自定义,名字需要唯一性
BO_ MessageId MessageName: MessageSize Transmitter //报文帧定义,其中 MessageId 为10进制表示的报文ID,类型为longlogn型,即CAN ID MessageName 报文的名字,与C语言命令规范相同 MessageSize 报文数据段字节数 Transmitter 该报文的网络节点,如果该报文没有指定发送节点,则该值需设置为”Vector__XXX”
SG_ SignalName (SigTypeDefinition) : StartBit|SignalSize@ByteOrder ValueType (Factor,Offset) [Min|Max] Unit Receiver //信号的定义,SG_为关键字,表示信号,其它字段含义如下: SignalName (SigTypeDefinition) 表示该信号的名字 和 多路选择信号的定义 SigTypeDefinition是可选项,有3种格式: a> 空 b> M 表示多路选择器信号 c> m50 表示被多路选择器选择的信号,50表示当‘M’定义的信号的值等于50的时候,该报文使用此通路 StartBit|SignalSize 表示该信号的起始位及信号长度 ByteOrder 表示信号的字节顺序:0代表Motorola格式,1代表Inter格式 ValueType 表示该信号的数值类型:+表示无符号数,-表示有符号数 Factor,Offset 表示因子,偏移量;这两个值用于信号的原始值与物理值之间的转换。 转换公式:物理值=原始值*因子+偏移量 Min|Max 表示该信号的最小值和最大值,即指定了该信号值的范围;这两个值为double类型 Unit 表示该信号的物理单位,为字符串类型 Receiver 表示该信号的接收节点(可以是多个节点);若该信号没有指定的接收节点,则必须设置为” Vector__XXX” 举例:SG_ S_Check : 45|10@0+ (0.00625,0) [0|160] "M" EL3160,ESC
CM_ Object MessageId/NodeName “Comment” //注解信息,其它字段含义: Object 表示注解的对象类型,可以是节点“BU_”、报文“BO_”、消息”SG_” MessageId/NodeName 表示进行注解的对象,若前面的对象类型是信号或者报文,则这里的值应为报文的ID(10进制数表示);若前面的对象类型为节点,则这里的值应为节点的名字 Comment 表示进行注解的文本信息
与特征(属性)的Tag一共有三条,如下: BA_DEF_ Object AttributeName ValueType Min Max; //1. 特征名称类型定义,其它字段含义: Object 特征类型,可以是BU_(节点特征定义)、BO_(报文特征定义)、SG_(信号特征定义)、空格(项目特征定义) AttributeName 特征名称(C语言变量格式) ValueType 特征值类型(只能是十进制、十六进制、浮点数、枚举、字符5种类型) Min Max 数值类型这里出现范围,枚举类型这里是枚举值,字符类型,这里是空 BA_DEF_DEF_ AttributeName DefaultValue; //2. 特征默认值定义,其它字段含义: AttributeName 特征名称 DefaultValue 该特征的默认设置值 BA_ AttributeName projectValue; //3. 特征项目设置值定义,其它字段含义如下: AttributeName 特征名称 projectValue 该特征的设置值
VAL_ MessageId SignalName N “DefineN” …… 0 “Define0”; //数值表部分,其它字段含义如下: MessageId 表示该信号所属的报文ID(10进制数表示) SignalName 表示信号名 N “DefineN” …… 0 “Define0” 表示定义的数值表内容,即该信号的有效值分别用什么符号表示
通信矩阵的填写是根据DBC文件中 SG_ 所定义的信号规则来填充的。
填格子的方式分为Intel和Motorola两种:
Intel格式也即小端,MSB存放在高字节单元,反映到矩阵图中就是以起始位为原点,自上而下填充。
Motorola格式也即大端,MSB存放在低字节单元,反映到矩阵图中就是以起始位为原点,自下而上填充。



