当前位置: 首页 > news >正文

DBC文件解析


消息:我的dbc和excel互换的工具DBCExcel上线了
https://blog.csdn.net/u010808702/article/details/117195501
是命令行工具
是命令行工具
是命令行工具

目录结构如下

  • 1、基础介绍
  • 2、DBC文件
    • 2.0、先来一篇全貌
    • 2.1、开头是Version 和 new_symbols两个Tag。
    • 2.2、波特率定义
    • 2.3、网络节点的定义
    • 2.4、报文帧的定义
    • 2.5、信号的定义
    • 2.6、注解部分
    • 2.7、特征(属性)定义部分:
    • 2.8、数值表部分

protuesjzy写过两篇dbc文件的介绍
https://blog.csdn.net/u012923807/article/details/96568412
https://blog.csdn.net/u012923807/article/details/94620323
写的很好,大家可以浏览,本篇是基于对dbc的了解,在protuesjzy的基础上进行细化。

1、基础介绍

DBC是vector公司定义的can网络通信文件格式,vector的规范《DBC File Format Document》从下面链接获得
百度网盘:https://pan.baidu.com/s/1GUvfEHv1NQbJ2bL2e7ZL5w
提取码:d622

2、DBC文件

          DBC文件是以Tag(标签)来标识每一个元素。

2.0、先来一篇全貌

第55号小白鸭写过一篇dbc文件的介绍
他有一张全貌的图,借用来给大家一个overview:
在这里插入图片描述
如上图所示,一般dbc文件中包含了如下的8种信息:
1、版本与新符号
2、波特率定义
3、网络节点的定义
4、报文帧的定义
5、信号的定义
6、注解部分
7、特征部分
8、数值表部分
下面一个一个详细解释。

2.1、开头是Version 和 new_symbols两个Tag。

**版本与新符号**

2.2、波特率定义

格式如下:
BS_:[baudrate:BTR1,BTR2];
其中BS_为关键字,用于定义CAN网络的波特率;[ ]内容表示为可选部分,可以省略(如下图例子中即把该部分省略了);
但关键字”BS_:”必须存在,省略则会出错。《DBC File Format Document》规范中明确提醒,必须保留BS_: 标签。
在这里插入图片描述

2.3、网络节点的定义

格式如下:
BU_:  Nodename1 Nodename2 Nodename3 ……

解释:
BU_                                                  为关键字,表示网络节点
Nodename1、Nodename2              网络节点名字,由用户自己定义;

注意事项:需要保证节点命名的唯一性

如示例中的BU_: VCU_Vehicle_Control_Unit MotorCtrol SCU PC Vector__XXX :
表示定义了:
      VCU_Vehicle_Control_Unit
      MotorCtrol
      SCU
      PC
      Vector__XXX这五个网络节点
在这里插入图片描述
在这里插入图片描述

2.4、报文帧的定义

格式如下:
BO_ MessageId(10进制数表示) MessageName: MessageSize Transmitter
解释:
1)、BO_                                   为关键字,表示报文;

2)、MessageId                         报文ID,是以10进制数表示的;
(如例子中的996,代表报文ID为0x3E4,是longlong类型,也就是CAN ID的值;)

3)、MessageName                    报文的名字,命名规则和C语言变量相同;

4)、MessageSize                      报文数据域字节数,为无符号整型数据,CAN 2.0为最大8字节,CAN FD 最大64字节;

5)、Transmitter                          该报文的网络节点;如果该报文没有指定发送节点,则该值需设置为” Vector__XXX”。

如示例中的BO_ 201959408 MSG1: 8 VCU_Vehicle_Control_Unit
    报文ID:201959408(0xC09A7F0)
    报文名:MSG1
    分隔符 : “:”
    报文长度:8字节
    报文发送者:VCU_Vehicle_Control_Unit
(由VCU_Vehicle_Control_Unit这个节点发出的,数据域长度为8字节,ID为201959408(0xC09A7F0),名字命名为MSG1的报文)
在这里插入图片描述
在这里插入图片描述

2.5、信号的定义

格式如下:

SG_ SignalName (SigTypeDefinition) : StartBit|SignalSize@ByteOrder ValueType (Factor,Offset) [Min|Max] Unit Receiver

解释:

1)、SG_                                                                为关键字,表示信号;

2)、SignalName(SigTypeDefinition) :                    表示该信号的名字 和 多路选择信号的定义;

2.1) SigTypeDefinition是可选项,有3种格式:
            a)空,表示普通信号。
            b)M,表示多路选择器信号。
            c)m50,表示被多路选择器选择的信号,50,表示当M定义的信号的值等于50的时候,该报文使用此通路。

3)、StartBit、 SignalSize                                  表示该信号起始位、信号长度;

4)、ByteOrder                                                   表示信号的字节顺序:0代表Motorola格式,1代表Inter格式;

5)、 ValueType                                                  表示该信号的数值类型:+表示无符号数,-表示有符号数;

6)、Factor,Offset                                             表示因子,偏移量;这两个值用于信号的原始值与物理值之间的转换。

转换如下:物理值=原始值*因子+偏移量;

7)、Min|Max                                                      表示该信号的最小值和最大值,即指定了该信号值的范围;这两个值为double类型;

8)、Unit                                                             表示该信号的物理单位,为字符串类型;

9)、Receiver                                                     表示该信号的接收节点;若该信号没有指定的接收节点,则必须设置为” Vector__XXX”。

如示下面的例中:
第一个信号 :
SG_ S_Check : 45|10@0+ (0.00625,0) [0|160] “M” EL3160_60,ESC
表示定义了一个命名为 S_Check的普通信号,其起始位是第45位,信号长度10 bit;
信号是Motorola格式,数值类型为无符号类型数;因子为0.00625,偏移量为0;信号取值范围为0到160;
信号物理单位为字符串”M”;该信号接收节点为EL3160_60,ESC这两个节点。

第二个信号:
SG_ Send_Mux M : 7|8@0+ (1,0) [0|0] “” EL3160_60,ESC
表示定义了一个命名为 Send_Mux的多路选择器信号,其起始位是第7位,信号长度8 bit;
信号是Motorola格式,数值类型为无符号类型数;因子为1,偏移量为0;信号取值范围为0到0;
信号物理单位为字符串””;该信号接收节点为EL3160_60,ESC这两个节点。
该信号做选择通道使用。

第三个信号:
SG_ S_Level_A_Voltage m50 : 15|16@0+ (0.00625,0) [0|160] “V” EL3160_60,ESC
表示定义了一个命名为S_Level_A_Voltage的被选择信号,其起始位是第15位,信号长度16 bit;
信号是Motorola格式,数值类型为无符号类型数;因子为0.00625,偏移量为0;信号取值范围为0到160;
信号物理单位为字符串”V”;该信号接收节点为EL3160_60,ESC这两个节点。
在这里插入图片描述
在这里插入图片描述
Send_Mux 作为选择通路使用,这个例子中,当Send_Mux 等于50、51、52、54时,代表后面的选择的通路。
DBCView的下载地址:
百度网盘链接:https://pan.baidu.com/s/19GKrd_XDimdC3JQ2lVySjg
提取码:un1z

2.6、注解部分

格式如下:

CM_ Object MessageId/NodeName “Comment”

解释:
1)、 CM_                                                 为关键字,表示注解信息;

2)、 Object                                             表示进行注解的对象类型,可以是节点“BU_”、报文“BO_”、消息”SG_”;

3)、 MessageId/NodeName                   表示进行注解的对象,若前面的对象类型是信号或者报文,则这里的值应为报文的ID(10进制数表示);若前面的对象类型为节点,则这里的值应为节点的名字;

4)、 Comment                                        表示进行注解的文本信息;

如示例中的 CM_ SG_ 996 HUD_HeightLv “Control hud height level”;

表示对ID为996(0x3E4)这条报文下的名为”HUD_HeightLv ”的信号进行注解说明,说明的内容为"Control hud height level"。

又如 CM_ BU_ HUD “Head Up Display";表示对HUD这个节点进行注解说明,说明的内容为" Head Up Display "。

注释以 “” 包围,注释内部不允许出现“号
在这里插入图片描述

2.7、特征(属性)定义部分:

和特征相关的Tag一共有三条:
1)BA_DEF_                                                             特征名称类型定义。格式如下:
       BA_DEF_ Object AttributeName ValueType Min Max;
解释:
        BA_DEF        标签
        Object        特征类型,可以是BU_(节点特征定义)、BO_(报文特征定义)、SG_(信号特征定义)、空格(项目特征定义);
        AttributeName        特征名称(C语言变量格式)
        ValueType        特征值类型(只能是十进制、十六进制、浮点数、枚举、字符5种类型)
        Min Max        数值类型这里出现范围,枚举类型这里是枚举值,字符类型,这里是空。
在这里插入图片描述

2)BA_DEF_DEF_                                                   特征默认值定义。格式如下:
      BA_DEF_DEF_ AttributeName DefaultValue;
解释:
        BA_DEF_DEF_        标签
        AttributeName        特征名称(C语言变量格式)
        DefaultValue        该特征的默认设置值
在这里插入图片描述

3)BA_                                                                       特征项目设置值定义,格式如下:
      BA_ AttributeName projectValue;

解释:
        BA_         标签
        AttributeName        特征名称(C语言变量格式)
        projectValue        该特征的设置值
在这里插入图片描述

举例:
BA_DEF_ BO_ “GenMsgCycleTime” INT 0 65535;

BA_DEF_DEF_ “GenMsgCycleTime” 2200;

BA_ “GenMsgCycleTime” BO_ 400 100;

表示对定义了一个针对消息类型的特征,特征名为”GenMsgCycleTime”,特征值是整型数据,取值范围在0到65535之间;
默认值为2200;
项目设置值 CAN ID ==400的消息的该特征值设置为100
在这里插入图片描述
在DBCView4.3里面是把BA_DEF_ 和 BA_DEF_DEF_合并在一起了,用了特征视图来管理,如下图。
在这里插入图片描述
然后把 特征项目设置值定义 BA_ AttributeName projectValue; 和元素合并在一起了。
在这里插入图片描述

2.8、数值表部分

格式如下:
VAL_ MessageId SignalName N “DefineN” …… 0 “Define0”;
解释:
(1)、VAL_                                                           为关键字,表示数值表定义;

(2)、 MessageId                                                 表示该信号所属的报文ID(10进制数表示);

(3)、 SignalName                                               表示信号名;

(4)、 N “DefineN” …… 0 “Define0”                     表示定义的数值表内容,即该信号的有效值分别用什么符号表示 。

如示例中的 VAL_ 996 HUD_OffSt 1 “Active” 0 “Not Active”;

表示对ID为996(0x3E4)的这条报文下的,一个命名为”HUD_OffSt”的信号,进行其数值表的定义;
用”Active”取代1;用”Not Active”取代0。只有自然数类型的信号才可以使用数值表表示。
在这里插入图片描述

信号的值的表示方法有两种:
1) 物理值=原始值*因子+偏移量;(常规表示,前面有提到)
2) 数字表,用来表示逻辑值;
在这里插入图片描述

DBCView最新版(4.4),这里可以下载:
百度网盘链接:https://pan.baidu.com/s/19GKrd_XDimdC3JQ2lVySjg
提取码:un1z
这个版本没有做安装包,大家可以从www.sunneco.com下载4.3版安装包,然后用百度网盘下载的替换掉。

因为DBCView我们已经建立了国内比较好的汽车电子技术交流群,群1已满,群2也满50了,需要进群的,可以通过下面的微信邀请加入。
在这里插入图片描述

消息:我的dbc和excel互换的工具DBCExcel上线了
https://blog.csdn.net/u010808702/article/details/117195501

相关文章:

  • Sun中国工程研究院院长王星耀:开源策略是为了挤掉微软
  • 使用DBCView编辑DBC文件过程(一)
  • 使用DBCView编辑DBC文件过程(二)
  • DBC和EXCEL相互转换
  • 中小企业需要什么样的软件服务?
  • DBC文件编辑——基于DBCVIew4.3
  • 最近在研究的一个东东-移动证券
  • libcurl随笔
  • 2021-04-21
  • DBCExcel 上线了
  • 网页元素位置(scroll、client、offsetWidth等)获取、设置详解
  • OpenCV-Aruco模块调用 [python版]
  • 鼠标光标样式(cursor style)大全
  • HTML和CSS网页标准指南
  • 使用OpenCV-Python外接摄像头打不开问题
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • 78. Subsets
  • Android系统模拟器绘制实现概述
  • CAP理论的例子讲解
  • Git同步原始仓库到Fork仓库中
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • Node + FFmpeg 实现Canvas动画导出视频
  • PAT A1120
  • RxJS: 简单入门
  • 对超线程几个不同角度的解释
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 双管齐下,VMware的容器新战略
  • linux 淘宝开源监控工具tsar
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • # 达梦数据库知识点
  • #ifdef 的技巧用法
  • $.ajax中的eval及dataType
  • (2020)Java后端开发----(面试题和笔试题)
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (四)TensorRT | 基于 GPU 端的 Python 推理
  • (转)Oracle 9i 数据库设计指引全集(1)
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .NET BackgroundWorker
  • .Net Core webapi RestFul 统一接口数据返回格式
  • .net MySql
  • .NET大文件上传知识整理
  • .NET命名规范和开发约定
  • @WebService和@WebMethod注解的用法
  • []利用定点式具实现:文件读取,完成不同进制之间的
  • [ABP实战开源项目]---ABP实时服务-通知系统.发布模式
  • [acwing周赛复盘] 第 94 场周赛20230311
  • [AndroidStudio]_[初级]_[修改虚拟设备镜像文件的存放位置]
  • [Bugku]密码???[writeup]
  • [BZOJ 4598][Sdoi2016]模式字符串