快速读懂CAN报文 DBC文件 解析文件
CAN DBC 指的是CAN 报文的数据库。简单地说,通过CAN 总线通信的数据类型可以用DBC 文件来读取和理解。DBC 是一种基于ASCII 的翻译,是在20世纪90年代发展起来的标准文件,现在正在被全世界的汽车工业所使用。这些文件可以通过描述CAN 帧内的数据来帮助识别它。作为这些CAN 数据库,文本文件包含了将原始CAN 总线解码为物理值的信息。因此,它也在作为一个信号库发挥作用。
对于DBC 文件来说,信号不是一个电气输入或输出,而是一个物理参数,如温度、发动机转速、电压等。DBC 是处理8字节十六进制CAN 报文和原始CAN 数据的识别和转换的最常用方法。一个CAN 帧中的数据可以分成8个单byte的值、64个单bit值、一个64-bit 值或这些值的任何组合。数据字段最多可以包含8个字节的数据。一个CAN 帧可以包含0到64个单独的信号(对于64个通道,它们都将是二进制的)。
DBC文件包含以下信息:
● 当前信号报文的CAN ID
● 信号在CAN 报文中出现的位置
● 信号的字节顺序
● 信号的转换细节
● 信号的单位
现在让我们借助使用 Influx Dialog 软件的例子来详细了解一下。
DBC 中定义的名为ECU 的报文中的RPM(发动机转速)信号
★ 报文的定义:
该报文定义包含以下信息:
● CAN ID:传输报文时使用的CAN ID
● 报文的名称
● CAN 报文的类型(CAN 标准帧/扩展帧或CAN FD 标准帧/扩展帧)
● 数据长度代码(DLC)--CAN 报文中数据的长度
● 发送器:传输报文的CAN 节点/控制单元
★ 信号的定义:
该信号定义包含以下信息:
● 信号名称:消息中存在的信号的名称
● 单位:信号中存在的物理数据的单位
● 起始位:信号的起始位
● 位计数:信号的位计数
● Byte Order:信号的字节顺序,摩托罗拉(Big Endian)/英特尔(Little Endian)
● 类型:数据类型
● Factor(系数):信号的转换系数
● Offset(偏移):信号的转换偏移
● 最小和最大的信号值
★ 界定信号出现的位置
● bit 的位置是由起始位、位数和字节序定义的。
● 对于案例中的这个信号,起始位是48,位数是16,摩托罗拉的字节顺序是48。
● 因此,从收到的原始CAN 报文中,64位的CAN 数据,在摩托罗拉字节顺序中,从48到63的16位数据是发动机的转速数据。
★ 使用来自DBC的信息在接收到的原始数据中应用转换公式
举例来说:
从DBC中,我们得到的信息是:转换系数是0.25,偏移量是0。
因此,当我们将其应用于转换公式((A*raw)+B)时
因子A=0.25,偏移量B=0。
十六进制的0xFFFF是十进制的65535
(0.25*65535+0) =16383.75
我们知道这个DBC 信号的单位是RPM,所以物理值是16383.75 RPM。
由此可见,DBC 文件有助于了解哪些数据是通过CAN 总线进行通信的。手动完成这些翻译看起来可能是一项不可能完成的任务,但通过软件将使其变得快速而简单。
许多Windows 应用程序可以在PC 上读取DBC 文件,包括 Influx Dialog Plus、Influx Module Analyser、Influx ReXdesk,Mathworks 的MATLAB Vehicle Network Toolbox、Vector 的CAN db++等等。
另外,用Windows Notepad 也可以读取和编辑DBC 文件,但相比之下有些复杂。
Influx Dialog 软件是一个创建/编辑DBC 的有效工具。
快速读懂CAN报文 DBC文件 解析文件相关推荐
- 人人都能读懂的react源码解析(大厂高薪必备)
人人都能读懂的react源码解析(大厂高薪必备) 1.开篇(听说你还在艰难的啃react源码) 本教程目标是打造一门严谨(严格遵循react17核心思想).通俗易懂(提供大量流程图解,结合demo ...
- 如何快速读懂开源代码?
文章目录 **RUN起来** **调试** **把控关键数据结构和函数** **从小的开始** **关注一个模块** **工具** **一.阅读开源代码存在的一些误区** 二.阅读代码的心态 **三. ...
- 快速读懂Http3协议总结
<网络编程懒人入门(十二):快速读懂Http/3协议,一篇就够!> 什么是 http3 当IETF正式标准化HTTP/2时,Google正在独立构建一个新的传输协议,名为gQUIC.它后来 ...
- 快速读懂UML类图,搞懂类之间的6大关系,轻松绘制UML类图
快速读懂UML类图,搞懂类之间的6大关系,轻松绘制UML类图 前言 一.UML类图简介 二.类之间的六大关系及UML类图 1.依赖关系及UML类图表示 2.泛化关系及UML类图表示 3.实现关系及UM ...
- 网络编程之一泡尿的时间,快速读懂QUIC协议
网络编程之一泡尿的时间,快速读懂QUIC协议 TCP协议到底怎么了? QUIC协议登场 QUIC协议的目标 QUIC协议这么好,可以大规模切换为QUIC吗? QUIC协议实践 我想试试QUIC协议,可 ...
- html语言代码大全,菜鸟快速读懂HTML语言_html
html语言是网页制作的基础,是初学者必学的内容.虽然现在有许多所见即所得的网页制作工具,但是说到底,还是有必要了解一些HTML的语法.这样,您可以更精确的控制页面的排版,可以实现更多的功能.HTML ...
- 网络编程懒人入门(十二):快速读懂Http/3协议,一篇就够!
本文中文译文由作者"ably.io"发布于公众号"高可用架构",译文原题:<深入解读HTTP3的原理及应用>.英文原题:<HTTP/3 dee ...
- 如何快速读懂一个后端系统代码
如何快速看懂一个后端系统代码 当一个java开发新手拿到一个系统代码并且没有人给你讲基本的需求与功能时,如何快速读懂代码了解功能是提高工作效率的必备技能.我作为一个参加工作一年的Java小菜是如何做的 ...
- 23、90秒快速“读懂”STP(生成树)工作原理
23.90秒快速"读懂"STP(生成树)工作原理 https://www.toutiao.com/i6794982558787437063/?tt_from=weixin& ...
- 【转载】ddr3参数-内存系列一:快速读懂内存条标签
内存系列一:快速读懂内存条标签 内存是我们平常接触最频繁的计算机硬件之一,内存的大小.多寡和型号和我们计算机.手机等性能密切相关.内存系列计划通过三篇文章由浅入深介绍内存的软硬件特性以及与固件的关系. ...
最新文章
- CentOS下的Memcache安装
- 使用SeaJS实现模块化JavaScript开发
- Shark0.9.1安装
- Halcon_灰度直方图和特征直方图的使用
- leetcode(1)485——最大连续 1 的个数(C++)
- SAP Analytics Cloud exception aggregation type设置成LAST的效果
- 基础的shell编程问题(一)
- Java高并发编程详解系列-Java线程入门
- java visitor_java 的visitor方式
- 服务器迁移虚拟化实施方案,虚拟化实施方案
- 【Linux】修改Linux操作系统字符集与Oracle数据库一致
- vscode编写python不能查看定义_vscode开发ROS1(14)-python实现自定义消息
- [数论] 快速傅里叶变换FFT
- 在fstab中使用UUID挂载
- Kali渗透测试:使用Word宏病毒进行渗透攻击
- 图形化编程Mixly——RFID智能门禁
- Eric,基于多搜索引擎的自动问答机器人
- PostgreSQL eighth class
- 5.1.7—二叉树的遍历—Recover Binary Sear Tree
- 微信小程序使用image组件显示图片的方法