广告
返回顶部
首页 > 资讯 > 服务器 >【DBC文件解析】
  • 883
分享到

【DBC文件解析】

网络服务器网络协议 2023-09-12 17:09:46 883人浏览 泡泡鱼
摘要

目录结构如下 1、基础介绍 2、DBC文件 2.0、先来一篇全貌 2.1、开头是Version 和 new_symbols两个Tag。 2.2、波特率定义 2.3、网络节点的定义 2.4、报文帧的定义

目录结构如下

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时,代表后面的选择的通路。

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_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这里可以下载:
链接:https://pan.baidu.com/s/1obK62q7gt4G595tuiOmgHw?pwd=fred
提取码:fred

来源地址:https://blog.csdn.net/u010808702/article/details/127433636

--结束END--

本文标题: 【DBC文件解析】

本文链接: https://www.lsjlt.com/news/404824.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 【DBC文件解析】
    目录结构如下 1、基础介绍 2、DBC文件 2.0、先来一篇全貌 2.1、开头是Version 和 new_symbols两个Tag。 2.2、波特率定义 2.3、网络节点的定义 2.4、报文帧的定义...
    99+
    2023-09-12
    网络 服务器 网络协议
  • IIS7.5文件解析漏洞&&Apache解析漏洞&&Nginx文件解析漏洞&&
    实验原理 文件上传使用白名单做限制,只能上传图片文件,导致脚本文件无法上传,上传图片马绕过白名单文件上传的验证,但是图片马又无法解析,利用IIS7.5文件解析漏洞的特点:任意文件名/任意文件名.php,从而解析脚本文件。 实验步骤 登录操作...
    99+
    2023-09-16
    php 开发语言
  • Python解析INI文件
    本文实例讲述了Python读写ini文件的方法。分享给大家供大家参考。具体如下: 比如有一个文件update.ini,里面有这些内容: 1 2 3 ...
    99+
    2023-01-31
    文件 Python INI
  • Java解析Excel文件
    Java解析Excel ​ Java解析Excel可以说在日常工作中必不可少的一个需求。解析Excel有很多方式,主流有poi,easyexcel等技术,本文使用springboot+poi技术来实现解析excel文件。其中包含解析本地文件...
    99+
    2023-08-18
    excel java 开发语言
  • python解析elf文件
    #!/usr/bin/python import struct import sys elfhdr = {} def verify_elf(filename): f = open(filename,'rb') elfident = ...
    99+
    2023-01-31
    文件 python elf
  • python 解析 eml文件
    #-*- encoding: gb2312 -*- import email fp = open('xxxx.eml', "r") msg = em...
    99+
    2023-01-31
    文件 python eml
  • Java中解析XML文件
    1.初识XML 1.1 定义         XML(EXtensible Markup Language),可扩展标记语言,相比于HTML可以自定义标签,不遵循W3C标准         XML特点:跨平台、跨语言、跨系统。XML与操作系...
    99+
    2023-09-23
    xml
  • Mysql 文件配置解析
    目录client 端配置mysqld 端配置其他设置sql_mode总结前言: mysql数据库在日常工作开发中经常用到的存储设备, 之前已经分享了面试过程中经常被问到的mysql优...
    99+
    2022-11-13
  • Redis配置文件解析
    Redis概述:    是一个基于Key-Value的持久化数据库存储,支持丰富的数据类型,用C语言编写,可基于内存又可持久化的日志型、Key-Value数据库,并提...
    99+
    2022-10-18
  • Android.mk 文件使用解析
    和你一起终身学习,这里是程序员Android 经典好文推荐,通过阅读本文,您将收获以下知识点: 一、Android.mk 简介二、Android.mk 的基本格式三、Android.mk 深入学习一四、 Android.mk ...
    99+
    2023-09-18
    android
  • 如何解析memory.dmp文件
    要解析memory.dmp文件,您可以使用以下方法:1. 使用Windows调试工具:您可以使用Windows调试工具来解析memo...
    99+
    2023-09-26
    解析
  • C++BoostPropertyTree解析INI文件详解
    目录前言什么是property_tree?实现代码前言 PropertyTree是一个非常牛叉的东西!虽然很小,但是,相当需要,相当重要!因为,很多的东西,我们不需要去开发,只需要去...
    99+
    2022-11-12
  • Apache文件解析漏洞详解
    今天继续给大家介绍渗透测试相关知识,本文主要内容是Apache文件解析漏洞详解。 免责声明: 本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负! 再次强调:...
    99+
    2023-09-04
    apache 文件上传 文件解析漏洞 Wen安全 渗透测试
  • 文件上传靶场-Nginx文件解析漏洞
    目录 1.靶场漏洞说明 2.漏洞利用过程 1.靶场漏洞说明 靶场地址:http://106.15.50.112:8020/ 一个简单的Nginx文件上传靶场,php配置中将cgi.fix_pathinfo设置为1,如果我们设置一个文件路径...
    99+
    2023-09-25
    php web安全 nginx 网络安全 学习
  • python解析torrent文件库:p
    pytorrent是一个非常小巧的用来解析解析torrent文件python库。核心代码不足150行,却能够完备地解析torrent文件,并支持导出修改后的torrent文件。 使用演示: import pytorrent t=pyto...
    99+
    2023-01-31
    文件 python torrent
  • python怎么解析pcap文件
    使用python解析pcap文件的方法:1.新建python项目;2.导入scapy模块;3.使用rdpcap()函数打开pcap文件;4.使用repr()方法解析文件;具体步骤如下:首先,打开python,并新建一个python项目;py...
    99+
    2022-10-17
  • python怎么解析json文件
    使用python解析json文件的方法:1.新建python项目;2.导入json模块;3.使用open()函数打开json文件,并创建文件对象;4.使用json.loads()方法解析json文件;具体步骤如下:首先,打开python,并...
    99+
    2022-10-24
  • Python解析pcap文件示例
    引言 近期做一些基于TCP协议的项目,跟其他接口方调试时经常出现不一致的问题,而程序日志又不能完成保证公正,就只能通过tcpdump抓包的方式来排查问题了。由于是自定义的协议,用wi...
    99+
    2022-11-11
  • QT .pro文件使用解析
    目录1.pro文件的作用2.一个简单的示例3.指定链接的三方库4.编译为库5.指定debug,release,win32平台还是别的平台6.判断编译环境是x86架构还是arm架构7....
    99+
    2022-11-13
  • React全面解析excel文件
    目录React解析excel文件React上传excel预览React解析excel文件 首先安装安装xlsx插件 yarn add xlsx 使用xlsx解析         c...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作