DBC文件数据解析

NS_ : 定义DBC文件中包含的关键字,顶格,后有空格,关键字另起一行table
BS
: 一般为空,顶格
BU_: 定义Node,不同Node之间以空格分开,如:

BU_: ECU1  ECU2 ECU3

BO_ 定义Message,关键字分别后为ID 消息名: 消息长度(字节数)发送节点,如:

BO_ 111 MSG1: 8 ECU1

当有Signal为匹配Message时,系统会自动生成一个id为3221225472的message来统一管理为匹配signal,如

BO_ 3221225472 VECTOR__INDEPENDENT_SIG_MSG: 0 Vector__XXX

SG_: 定义Signal,关键字后分别为信号名: 起始位|信号长度@排序方式有无符号(精度,偏移量)[最小值|最大值] “单位” 接收节点,如:

 SG_ Sig1 : 3|4@0+ (1,0) [0|15] "" Vector__XXX

注意SG前有空格,3表示起始位为3(起始位的定义与Motorola还是Intel格式有关)4表示长度为4bit,@0表示Motorola,@1表示Intel格式,+表示无符号数,-表示有符号数,精度为1,偏移量为0,物理最小值为0,物理最大值为15,无单位,无接收节点用Vector__XXX表示
上面提到起始位与信号格式有关,当为Motorola格式时,起始位为msb,当为Intel格式时,起始位为lsb,举个例子,对于一个长度为4,占据0-3位的信号,如为Motorola格式,则应写成3|4@0,如为Intel格式,则应写成0|4@1,以上两种方式解析出来的信号为同一信号。
(这里的起始位与dbc中的startbit概念有所不同,在用文本打开时,不论dbc中按Motorola MSB还是MotorolaLSB显示,其文本中的起始位始终为3(msb),因此当通信矩阵中定义为Motorola MSB方式时,起始位无需修改,当定义为MotorolaLSB方式时,需要将起始位修改为msb位,公式如下msb=lsb-16+l-1)
总体原则为Intel按起始位和长度从低位往高位数(右→左),字节长度不够按字节数从低字节像高字节数(上→下),MotorolaLSB按起始位和长度从低位向高位数(右→左),字节长度不够按高字节到低字节(下→上)的顺序补充,MotorolaMSB按起始位和长度从高位向低位数(左→右),字节长度不够按低字节到高字节(上→下)的顺序补充,更多关于Motorola与Intel的介绍请参考:
Intel格式与Motorola格式的区别
CM_ 用于对整个DBC文件注释,对应Networks中的Comment,可填写版本号,修改日志,作者等信息,如:

CM_ "Version:V0.1"

CM_ BO_ 用于对Message进行注释,如

CM_ BO_ 111 "ID为十进制111的message中的comment"

CM_ SG_ 用于对Signal进行注释,需要加上附属Message的ID,信号名,如

CM_ SG_ 111  Sig1 "注释内容"

BA_DEF_ BO_ 用于定义Message的属性,具体属性可通过vector公司提供的DBC模板查看,主要属性如图所示:
Message属性列表
属性值通过枚举ENUM关键字定义,起始位为0,枚举变量在模板中也有,其余属性类似,如

BA_DEF_ BO_  "NmMessage" ENUM  "No","Yes";

BA_DEF_ SG_ 用来定义Signal属性和属性值,Signal包含的属性如图所以
在这里插入图片描述
BA_DEF_ BU_ 用来定义节点的属性,其属性列表如图所示:
在这里插入图片描述
BA_DEF_ 用于定义网关Networks的属性,属性列表如下图所示,此外还有一个属性"DBName"不在其中
在这里插入图片描述
对部分属性进行赋值通过BA_DEF_DEF_ 命令,如

BA_DEF_DEF_  "NmMessage" "No";
BA_DEF_DEF_  "DiagState" "No";
BA_DEF_DEF_  "DiagRequest" "No";

定义Networks名用如下命令

BA_ "DBName" "VBUS";

定义各Message发送周期,BA_关键字后为属性,属性后为Message ID,最后为周期时间,实例如下:

BA_ "GenMsgCycleTime" BO_ 111 10;

其余与Message有关的属性类似,如为枚举量,只需取在枚举量中所在编号数字即可。
与Signal有关属性通过SG_来定义,一个名为Sig1的附属id=111的信号发送类型为cycle,示例如下:

BA_ "GenSigSendType" SG_ 111 Sig1 1;

对初始值Inital Value的定义

BA_ "GenSigStartValue" SG_ 111 RR_MTorqueDem 512;

该信号精度Factor为1,偏移量Offset为-512,上述含义为当无外部值传输时,can总线上名为RR_MTorqueDem的信号发送512(Raw Value),真实值为0 (Physical Value = Raw Value * Factor + Offset)
VAL_ 用来定义信号值的描述Value Descriptions,实际上时新建了一个value Table,这样通过canoe回放数据时可现实描述,而非数字值,便于快速锁定问题,示例如下

VAL_ 111 Sig1 1 "Value unreliable" 0 "Value OK" ;

以上为DBC文件所有包含的内容。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值