【DBC文件解析】

这篇具有很好参考价值的文章主要介绍了【DBC文件解析】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录结构如下

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文件解析】
如上图所示,一般dbc文件中包含了如下的8种信息:
1、版本与新符号
2、波特率定义
3、网络节点的定义
4、报文帧的定义
5、信号的定义
6、注解部分
7、特征部分
8、数值表部分
下面一个一个详细解释。

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

【DBC文件解析】

2.2、波特率定义

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

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这五个网络节点
【DBC文件解析】
【DBC文件解析】

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的报文)
【DBC文件解析】

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这两个节点。
【DBC文件解析】
【DBC文件解析】
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 "。

注释以 “” 包围,注释内部不允许出现“号。
【DBC文件解析】

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 数值类型这里出现范围,枚举类型这里是枚举值,字符类型,这里是空。
【DBC文件解析】
2)BA_DEF_DEF_ 特征默认值定义。格式如下:
BA_DEF_DEF_ AttributeName DefaultValue;
解释:
BA_DEF_DEF_ 标签
AttributeName 特征名称(C语言变量格式)
DefaultValue 该特征的默认设置值
【DBC文件解析】
3)BA_ 特征项目设置值定义,格式如下:
BA_ AttributeName projectValue;
【DBC文件解析】
举例:
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
【DBC文件解析】
在DBCView4.3里面是把BA_DEF_ 和 BA_DEF_DEF_合并在一起了,用了特征视图来管理,如下图。【DBC文件解析】
然后把 特征项目设置值定义 BA_ AttributeName projectValue; 和元素合并在一起了。
【DBC文件解析】

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。只有自然数类型的信号才可以使用数值表表示。
【DBC文件解析】
信号的值的表示方法有两种:
1) 物理值=原始值*因子+偏移量;(常规表示,前面有提到)
2) 数字表,用来表示逻辑值;

【DBC文件解析】
DBCView这里可以下载:
链接:https://pan.baidu.com/s/1obK62q7gt4G595tuiOmgHw?pwd=fred
提取码:fred文章来源地址https://www.toymoban.com/news/detail-406713.html

到了这里,关于【DBC文件解析】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Linux:概述 、安装 、文件与目录结构 、vim编辑器 、网络配置 、远程登录 、系统管理 、基础命令 、软件包管理 、克隆虚拟机 、shell编程

    Linux:概述 、安装 、文件与目录结构 、vim编辑器 、网络配置 、远程登录 、系统管理 、基础命令 、软件包管理 、克隆虚拟机 、shell编程

    2.1.1、Linux是什么? Linux是一个操作系统(OS) 所谓的操作系统就是直接用来操作计算机底层硬件的软件。 2.1.2、Linux的出现 官网: https://www.centos.org/ 进入官网进行下载 有很多的镜像,以阿里云的为例: 3.3.1、下载 官网: https://www.vmware.com/ 这是下载的企业版,30天试用期,可

    2024年02月05日
    浏览(29)
  • UNIX基础知识:UNIX体系结构、登录、文件和目录、输入和输出、程序和进程、出错处理、用户标识、信号、时间值、系统调用和库函数

    UNIX基础知识:UNIX体系结构、登录、文件和目录、输入和输出、程序和进程、出错处理、用户标识、信号、时间值、系统调用和库函数

            所有的操作系统都为运行在其上的程序提供服务,比如:执行新程序、打开文件、读写文件、分配存储区、获得系统当前时间等等         从严格意义上来说,操作系统可被定义为一种软件,它控制计算机硬件资源,提供程序运行的环境。我们通常将这种软件称为

    2024年02月13日
    浏览(13)
  • 【openFrameworks】跨平台的 C++ 开源框架 | oF 文件结构 | 图形基础介绍

    【openFrameworks】跨平台的 C++ 开源框架 | oF 文件结构 | 图形基础介绍

      💭 写在前面: 本章我们将介绍一个非常好用的跨平台的 C++ 开源框架 —— openFrameworks。它是一个开源的跨平台的 C++工具包,方便开发者创建出一个更简单和直观的框架,擅长开发图像和动画。     本篇博客全站热榜排名: 8 📜 本章目录: 0x00 openFrameworks 介绍 0x01 开启

    2024年02月02日
    浏览(40)
  • vue项目结构目录介绍

    vue项目结构目录介绍

    build 文件夹 及 子目录 这里面是一些webpack的配置,主要用于项目打包时的一些设置。这里不去更详细的深入,相关的文件及配置会在后面用到时在详细的介绍。 config 文件 及 子目录 这个文件夹里装的是整个项目 开发运行时的一些配置,比如npm run dev 时 项目的启动端口 之类

    2024年02月05日
    浏览(8)
  • 【C++要笑着学】OpenFrameworks 框架介绍 | oF 文件结构 | 图形基础 | 使用 ProjectGenerator 创建项目

    【C++要笑着学】OpenFrameworks 框架介绍 | oF 文件结构 | 图形基础 | 使用 ProjectGenerator 创建项目

      💭 写在前面: 本章我们将介绍一个非常好用的跨平台的 C++ 开源框架 —— openFrameworks。它是一个开源的跨平台的 C++工具包,方便开发者创建出一个更简单和直观的框架,擅长开发图像和动画。     本篇博客全站热榜排名: 8 📜 本章目录: 0x00 openFrameworks 介绍 0x01 开启

    2024年02月04日
    浏览(7)
  • 利用Linux目录结构特性引发的解析漏洞分析

    利用Linux目录结构特性引发的解析漏洞分析

    本文通过对Linux目录结构的特性和解析漏洞的分析,结合源码审计的过程,探讨了SESSION值的设置,正则表达式的匹配以及文件写入等技术,帮助读者深入理解此类漏洞的产生、原理和防范方法。

    2024年02月06日
    浏览(9)
  • 文件目录:FCB、索引节点、目录结构

    FCB(文件控制块): 存放控制文件需要的各种信息的数据结构,以实现按名存取。FCB的有序集合称为文件目录,一个FCB就是一个文件目录项。 FCB包含了文件的基本信息、存取控制信息、使用信息。最重要还是文件名信息和物理存放外存地址的信息,实现了文件名和文件之间

    2024年02月10日
    浏览(13)
  • 文件管理---索引文件结构、位示图、树形目录结构

    文件管理---索引文件结构、位示图、树形目录结构

    操作系统中对软件的管理就是对文件的管理(基本单位) 逻辑结构:主要是概念当中的一些结构层次,主要有流式文件和记录式文件; 物理结构: 顺序文件结构:按照文件的逻辑顺序存储到物理结构当中,相当于给文件分配一个连续的存储空间,逻辑上是什么形式,物理上

    2024年01月19日
    浏览(8)
  • 文件管理大师:深入解析Linux的文件与目录操控

    文件管理大师:深入解析Linux的文件与目录操控

    目录 一、文件命名规则 1、可以使用哪些字符? 2、文件名的长度 3、Linux文件名大小写 4、Linux文件扩展名 二、文件管理命令 1、目录创建/删除 mkdir创建目录 直接创建文件夹 创建多个文件夹 递归创建写法 总结mkdir 删除空目录 2、文件创建、删除 touch创建文件 touch 一次性创建多

    2024年02月19日
    浏览(8)
  • Linux—基础篇:目录结构

    Linux—基础篇:目录结构

    1、linux的文件系统是采用级层式的树状目录结构,在此结构的最上层是根目录“/”,然后在此目录下创建其他目录 2、 在Linux的世界里,一切皆文件!!! 不用背,知道即可 2.1、/bin(常用) (/usr/bin、/usr/local/bin) 是 binary 的缩写,这个目录存放着最经常使用的 命令 2.2、/sbin (/u

    2024年02月06日
    浏览(11)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包