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

[CAN] 创建解析CAN报文DBC文件教程

👉本教程需要先安装CANdb++软件,[CAN] DBC数据库编辑器的下载与安装

🙋前言

  DBC(全称为Database CAN),是用于描述单个CAN网络中各逻辑节点的信息。 DBC是汽车ECU(Electronic Control Unit,电子控制单元)间进行CAN通讯的报文内容。通过DBC文件,我们可以了解CAN网络中各个节点(Network node)会发送哪些报文(Message)和接收哪些报文,每个报文中包含哪些信号(Signal),以及每个信号位于报文的哪个位置等信息。
  作用:DBC文件的主要作用是“解析”。通过定义好的DBC文件,我们可以将CAN网络中的数据解析成具体的报文和信号,从而方便我们对其进行分析。
  组成:DBC文件是由一系列的Message和Signal组成,文件定义了Message和Signal的属性。
  查看与编辑:DBC是文本文件,可以用记事本打开,但一般使用专门的工具(如CANdb++)来更方便地查看和编辑。
  发布:DBC文件由德国Vector公司发布,用于依据该文件开发出来监视和分析CAN网络中所有逻辑节点的运行状态。

1 需求分析

为了直观的演示整个创建过程,这里以下表 1 报文内容为例,开始教程的演示。
在这里插入图片描述其中,在表中仅有1帧报文,报文由5条信号组成,编码格式为Intel。

2 创建模板

1.打开Vector CANdb++ Editor 软件界面如下所示。
在这里插入图片描述
2点击File,选择 " Create database "。
在这里插入图片描述
3.在弹出界面选择 " CANTemplate.dbc " ,点击 OK 。
在这里插入图片描述
4. 输入文件名称,保存文件。
在这里插入图片描述
5.创建好模板后显示如下图所示。
在这里插入图片描述

3 添加信号

  Signals是一帧CAN报文中的数据代表的含义,例如上表1中的这帧报文,报文共8个字节,共5个信号;Signals就是指这5个信号。所以要解析这帧报文就需要创建5个Signals。

1.点击Signals,右键选择New。
在这里插入图片描述
2.在信号框,填写待建Signal的相关信息,选择完上述属性后,点击Calculate minimum and maximum`计算信号的最大值与最小值,具体如下。
在这里插入图片描述
  其中,1.Name为信号名。2.Length[Bit]为该信号的位长度。3.Byte Order是选择信息的存储类型,分为因特尔和摩托罗拉。4.Unit为信号的物理单位。5.Value Type为数据类型,分为Signed(有符号整型)、Unsigned(无符号整型)、IEEE Float(浮点型)、IEEE Double(双浮点型)。6.Init.Value初始值。7.Factor为比重。8.Offset为偏置量。9.Minimum为最小值, Maximum为最大值, 这两个值可以点击 Calculate minimum and maximum 自行生成(这里的最大最小值是根据你选的字节长度和数值类型决定的)。

3.点击Commit,添加该信号的注释。
在这里插入图片描述
4.点击确定,完成Signal的创建。
在这里插入图片描述
5.继续创建其他四个信号。

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

6.创建完成,结果如下。
在这里插入图片描述

4 新建Message

1.右键Messages,选择NEW来创建报文信息。
在这里插入图片描述
2.设置Messages信息。
在这里插入图片描述
  其中,1.Name为信息帧名。2.Type为选择标准帧或拓展帧。3.ID为帧的ID。4.DLC为帧长度,即字节数。

5 关联

关联:设置好Messages信息后,需向Messages中添加Signals,来实现报文与信号的关联。

1.点击 " Signals ",然后点击 " Add "。
在这里插入图片描述
3.点击创建好的5个Signals,全部选中,然后点击 " OK " 。
在这里插入图片描述
4.点击 " 确定 " 。
在这里插入图片描述
5. 添加好信号后,查看Layout选项中信号对应的字节位置是否与规定协议一样。
在这里插入图片描述
6. 保存文件,最后效果如下图所示。
在这里插入图片描述

相关文章:

  • 大模型算法岗常见面试题100道(含答案)
  • 哲学家进餐问题
  • SSL/TLS和HTTPS
  • mysql的双机热备
  • Linux “ 软件管理 “
  • SHELL脚本学习(七) 脚本控制
  • 免费学习通刷课(免费高分)Pro版
  • American Social Welfware (1600-1940)
  • oracle的bitmap索引是什么
  • 【Python数据魔术】:揭秘类型奥秘,赋能代码创造
  • 2024前端面试准备-HTMLCSS
  • AnythingLLM 的 Docker 使用
  • mysql (事物)
  • java计算年化利率
  • 智能合约漏洞类型
  • [deviceone开发]-do_Webview的基本示例
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • 2017 年终总结 —— 在路上
  • Akka系列(七):Actor持久化之Akka persistence
  • CentOS 7 修改主机名
  • If…else
  • Material Design
  • Mysql数据库的条件查询语句
  • Node 版本管理
  • python大佬养成计划----difflib模块
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • Redis的resp协议
  • 构建工具 - 收藏集 - 掘金
  • 计算机常识 - 收藏集 - 掘金
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 一些css基础学习笔记
  • 与 ConTeXt MkIV 官方文档的接驳
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • ​浅谈 Linux 中的 core dump 分析方法
  • ## 1.3.Git命令
  • #mysql 8.0 踩坑日记
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • $.ajax,axios,fetch三种ajax请求的区别
  • (3) cmake编译多个cpp文件
  • (C语言)fread与fwrite详解
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (TOJ2804)Even? Odd?
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (多级缓存)缓存同步
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (剑指Offer)面试题34:丑数
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • (一)基于IDEA的JAVA基础10
  • (转)jQuery 基础
  • .DFS.
  • .NET+WPF 桌面快速启动工具 GeekDesk
  • .Net多线程总结
  • :O)修改linux硬件时间
  • @require_PUTNameError: name ‘require_PUT‘ is not defined 解决方法