lntellijidea怎么创建文件_DBC文件到底是个啥

74dd754ce25bc5303b457295a050523c.png

本文首发自公众号“汽车技术馆”

在之前的一篇文章中给大家分享了一些CAN的基本知识,比如CAN通讯是个啥,CAN通讯的机制以及CAN通讯的帧结构等等,相信读过这篇文章的朋友应该都有了一个初步的认识,如果还没有看过的朋友可以在读本文之前再看一下

https://zhuanlan.zhihu.com/p/137064965

今天小编打算给大家介绍一下CAN通讯中使用的DBC文件。

01什么是DBC

DBC是Database Can的缩写,其代表的是CAN的数据库文件,在这个文件中把CAN通讯的信息定义的非常完整清楚,而CAN网络的通讯就是依据这个文件的描述进行的,所以DBC文件的作用非常强大,正是因为有了它才可以使得整个CAN网路的节点控制器无差错的协同同步开发。

02如何创建一个DBC文件

若要创建一个DBC文件,那么首先就需要选择合适的工具,这里小编使用的工具是Vector公司的产品,配合CANoe一起使用的CANdb editor,是一款专门用来编辑DBC文件的软件,如果你还没有选到合适的工具小编推荐你使用这个,确实挺好用的,可以直接在Vector的官网进行下载,软件本身是免费的,包括CANoe软件本身也是免费的,只是如有你需要真正仿真使用的话则需要license,如果只是查看的话都是可以使用的。

e787306e0cdb492e60f9be4e5fbccac2.png

比如我已经打开了一个CANoe的软件,但是没有license,只是这种情况下会提示 ”view only“ 而已,有很多编辑功能是禁用的。
好了,这是关于工具层面,小编就不多说了,我们言归正传,如何创建DBC文件。


1打开DBC编辑软件

这里小编是以自己的工具链说明的,实际操作中方法不尽相同,而且不止一种,大家可以多多探索。
在打开的CANoe工程中,选择菜单 Tool, 找到CANbd editor

df0de9ef16be7be0482b224dd4fc0889.png

点击CANdb editor后即可打开DBC编辑软件

99acc9cdcd59e5da2cf106344aff3086.png

2新建一个数据库文件
菜单中选择 ”file“ ,然后创建数据库文件,会出现如下的模板选择对话框

418376aa0cf102412e0fe6a61ef4799a.png

可以根据需要使用的环境选择相应的模板,比如在这里我们选择 ” CANoe template.bdc“,进入如下界面

c1d0de0b965bc2ff46b2276e67a30d5d.png

为创建的数据库文件命名,这个自己定义,只要符合命名的规则即可。
创建好文件名称之后,则进入到了编辑界面

0a799616215029ad6bcdbb510e976327.png

3创建数值表

创建数值表的意义是为了给后续创建的信号提供解释,怎么理解呢?举例来说,在信号的世界里,只有数值一说,信号可以有不同的数值,比如会有0、1、2、3等等,那么这些数值代表什么样的含义,就需要给它解释才能具有真正的物理意义,这就是数值表的意义,随着我们的讲解,大家会逐渐的明白。

创建数值表需要在数值表的视图中操作,通过主菜单的 "view"可以将视图切换到"value table"界面,打开value table界面之后,在空白处右键选择"new"即可新建。

1d25d0b1f880de430fdba01e94b7aa35.png

比如这里我们定义名称为 "running_sts_coding",然后再value description中做一下定义,如下:

3fae2cd6ece0bfb4517f3d68b8dca121.png

点击确定,数值表中就会出现我们刚刚定义的这个数值表

c392467dbdc894e57d74065503f87e6a.png

4创建signal,关联相应的数值表

前面提到的创建数值表只是一个准备,真正有意义的是信号,而数值表就是为信号服务的,因为数值表中对数值含义的解释可以完成对信号含义的解释。
通过菜单 ”view” 将视图切换为 "overview" ,如下图所示

cef18c7eaa61945e1a8f3cf634fc9360.png

然后在signals的位置点击右键,新建,打开如下界面

8a48fda2747079d31bca11ede5464e51.png

例如,我们做如下定义

89bb6c10a03ff874c4375fe8aff77423.png

关键一步,在value table 的位置选择我们在上一步建立的数值表,这样就将信号和数值表链接起来了,同时也完成了信号的创建。到此,点击确定即可。
可以看到,在视图中新增了一个刚刚建立的信号

77fc6d1ad7a43f29c3d8c13ca45e9ff0.png

当然在实际的应用中信号肯定不止一个,我们这里只是为大家举一个例子如何完成信号的创建,其它的信号创建方法都是类似的,需要多少按照需求创建即可。

5创建message

在之前介绍CAN通讯的文章中我们说到,CAN通讯的载体是帧,也就是消息,而不是单纯的一个一个的信号,是把很多的信号封装到消息帧里面以帧的格式进行传输的,所以在建立了signal之后还需要将信号封装到帧中,那么就需要首先创建message,方法很简单,还是在“overview”的视图中,message位置点击右键,新建

cd32423b25b724b31ead288ea53c56c0.png

在message中则需要定义清除帧的ID是多少,帧的类型,帧的长度,由哪个节点发送,发送的周期是多少等等,这些概念我们在之前的关于CAN通讯的文章中有过介绍,如果不太清楚的朋友可以翻阅之前的文章查看。

然后,在第二个子选项卡中关联帧的信号

32817614f192951f3edd26a99021511b.png

我们之前只建立了一个信号,所以只有一个信号可选,那我们就添加这一个信号。
同时把第一页的基本信息定义如下

f92a998aa4b5ba693e19629d389b6e79.png

然后就可以确定了,定义之后在message界面就会出现一帧新的消息

de339302c789de2cc79919b682bf6eb1.png

6创建网络节点

再往上一层,前面提到定义消息的时候需要有发送的节点,那么这个节点就是CAN通讯中的网络节点,这个节点也是需要进行定义的,方法同样很简单,在"overview"界面内的network处,点击右键,选择新建

4a1fd12cc796e705d5503ccec1eaf432.png

这里可以定义节点名称和节点地址,这里的地址有别于前面message中涉及的ID,这是两个不同的概念。比如,我们命名如下

6178763b8ee59d0cf36670ee6a166e5e.png

然后在Tx message选项卡中设置发送的消息,因为这是第一个节点还有可接收的消息,所以只能设置发送的消息,我们只有一帧消息,所以设置如下:

cd12c9af2202ae4df1f11316ed97681d.png

设置完成之后,将左侧的视图展开如下:

074d05ff0b21f868f4c073c7761e1e59.png

这就是一个基本的DBC文件的结构,不管文件有多大,主要的组成元素就是这些,只不过是网络节点多一些,节点对应的消息多一些,然后消息内的信号多一些。
另外一点需要注意,如果是创建DBC文件,再创建完成之后一定要做一致性检查,菜单内file下的consistency check,我这个文件测试的结果如下

e35a38f73bed242a60d861f636664256.png

因为这个消息只有发送节点没有接收节点,作为示例只是为大家展示一下如何使用,所以没有真正的创建出网络,才会出现这样的错误。

03小结

DBC数据库文件是用来描述CAN网络节点间数据通讯的一种文件,包含了CAN总线协议中协议数据及其所代表的具体意义。简单的讲,dbc文件描述了在CAN网络上有哪些报文信息;这些报文上又携带了哪些信号信息;该报文是从哪个节点发出,哪个节点进行接收的等信息。是通讯的核心文件,通过创建一个DBC文件可以使你非常深刻的理解文件所包含的含义,同时有助于你理解已经存在的DBC文件,本质上都是相通的。

希望通过本文可以使你对DBC文件有一个深刻的了解,并且应用于工作中!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/563514.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

at moment的用法 the_值得收藏!初中英语10大词类详解+用法+考点, 这一篇全齐了!...

一、词性的分类词类又叫词性,英语单词根据其在句子中的功用,可以分成十个大类。1.名词 noun n. student 学生2.代词 pronoun pron. you 你3.形容词 adjective adj. happy 高兴的4.副词 adverb adv. quickly 迅速地5.动词 verb v. cut 砍、割6.数词 numer…

属性值动态调整_【VBA】Range对象的常用方法属性(三)

本文继续上一节的Range对象的方法和属性的讲解。上一讲讲到了End属性寻找最后一个已经使用的单元格。这一节继续讲解关于动态找单元格区域方面的属性。Offset 偏移相信学过OFFSET工作表函数的人对这个印象比较深刻,它可是函数中高手必备函数之一。在VBA中&#xff0…

mysql入门到跑路_Mysql入门二十小题(DBA老司机带你删库到跑路)2018.11.26

1、 请介绍数据库管理系统的种类及代表产品RDBMS: mysql oracle mssqlNoSQL: redis mongoab memcache2、 请简述数据库管理系统的作用数据存储,管理数据,备份恢复,安全性,权限管理,3、 请简述RDBMS和NoSQL的特性对比RDBMS:强大的查询功能、强一致性、二级索引、支…

mysql安装包没有安装程序_MySQL5.6的zip包安装教程详解

之前我们都是后缀为.msi的文件,换言之就是傻瓜式安装,但是有些版本不容易控制安装路径,或者数据库编码格式,还有些会安装很多无用的服务,但是都没有后缀为.zip文件简单直接,说是在哪里,就在哪里…

mysql count优化_MySQL count()函数及其优化

很简单,就是为了统计记录数由SELECT返回为了理解这个函数,让我们祭出 employee_tbl 表所有记录统计行的总数计算 Zara 的记录数注意:由于 SQL 查询对大小写不敏感,所以在 WHERE 条件中,无论是写成 ZARA 还是 Zara&…

dz论坛连接mysql数据库_dz论坛搬家后连接数据库等教程

dz搬家后,第一步就是上传源文件到网站根目录和导入数据库然后修改对应的数据库连接配置文件 一共有三个这样修改之后网站就可以访问啦1、config/config_global.php$_config[db][1][dbuser] 数据库用户名;$_config[db][1][dbpw] 数据库密码;$_config[db][1][dbname…

php mysql循环语句怎么写_mysql数据库循环语句该怎么写???

数据库结构num date2 2013-07-245 2013-07-258 2013-08-0310 2013-08-224 2013-09-10最后要在页面中输出为一个行行统计格式7月份 7条记录8月份 18条记录9月份 4条记录要求sql语句只有一句话,有的人会想可以select (count(条件))关键是还要换行的。。有点不会了。回…

ntext在mysql_varchar和text说不清的那些事

数据库定义到char类型的字段时,不知道大家是否会犹豫一下,到底选char、nchar、varchar、nvarchar、text、ntext中哪一种呢?结果很可能是两种,一种是节俭人士的选择:最好是用定长的,感觉比变长能省些空间&am…

字符串转16进制_16、atoi-整数字符串转整数-leetcode8-中等

思路:借助正则表达式。class Solution:def myAtoi(self, s: str) -> int:import repattern re.compile(r^[-]?d) # 生成patterns s.lstrip() #去除左侧空格num_str pattern.findall(s) #找到pattern,返回一个listnum int(*num_str) #用*将list解…

vue移动端通过px动态计算图片宽高_vue图片宽高自适应_移动web图片高度自适应的解决方案...

由于图片的加载是在dom加载完成之后进行的,于是,在手机端浏览网页时,经常会看到页面刚打开时很多内容叠在一起,当图片加载完成后,页面会由于图片加载完成出现明显的抖动针对这个问题,有以下几种解决方案媒体…

mysql日期为00_MySQL 8.0.13 设置日期为0000-00-00 00:00:00时出现的问题

刚开始学习 数据库 操作,今天存数据时发现,保存的时候报错 (Error 1292: Incorrect datetime value: 0000-00-00 for column deleted_at at row 1),之后就搜索了下原因,是因为 MySQL存日期时不允许出现这种格式导致的。下面记录下…

MySQL编程技巧_MySQL学习笔记---MySQL开发技巧

SQL语句分类DDL:数据定义语言 --- CREATE、ALTER、DROP、TRUNCATETPL:事务处理语言 --- COMMIT、ROLLBACK、SAVEPOINT、SET TRANSACTIONDCL:数据控制语言 --- GRANT、REVOKEDML:数据操作语言 --- SELECT、UPDATE、INSERT、DELETEj…

kafka topic 目录存放在哪_Kafka系列文章之安装测试-第2篇

前言上篇文章讲解了 Kafka 的基础概念和架构,了解了基本概念之后,必须得实践一波了,所谓“实践才是检验真理的唯一办法”,后续系列关于 Kafka 的文章都以 kafka_2.11-0.9.0.0 为例;另外为了让大家快速入门,…

mysql的操作语句_Mysql最常用的操作语句收集

Mysql中常用语句简单易学springboot微服务是现在流行的框架,目前大多数做java的人都在使用,java的生态一直很好,各种插件各种第三方jar包推动着java的运行。Mysql是Springboot最常用的数据库,主要原因是Mysql免费而且轻量。考虑性…

stlink 升级固件以后失败_ST-Link不能下载程序的几种解决办法

一直在用J-LINK,最近改用ST-Link,出现了不少无法下载程序的情况,这里列出几种解决的办法(针对STM32F103系列):1#是不是你没有选择Flash算法?什么都没有加的话,会提示“找不到Flash算法”的哦2#是不是你JTAG…

java获取b站动态列表地址_爬虫入门(三)爬取b站搜索页视频分析(动态页面,DBUtils存储)...

这一次终于到了分析b站视频了。开始体会到写博客非常占用学技术的时间,但是还是希望能总结,沉淀下来。工具:使用Webmaigc框架,DBUtils,C3P0连接池。分析过程:b站的搜索页面是这样的。如果浏览器右键查看源代…

python a和b字符串和占位符输出_Python占位符的使用与format函数字符串格式化详解...

Python字符串格式化01字符串的格式化分类字符串的格式化方法共两种:占位符(%)与format方式。占位符方式在Python2比较常见,随着Python3到来,format方式变得广泛起来,format函数常与print()函数结合使用,具备很强的格式…

18135usm_佳能PZ-E1+EF-S 18-135mm f/3.5-5.6 IS USM镜头 小型工作室的利器

EF-S 18-135mm f/3.5-5.6 IS USM 在大神眼里据对是属于狗头系列的 哈哈哈 但是这货如果搭配佳能的 PZ-E1 在配合佳能80D 那绝对是小型视频工作室的首选 !!!mxcpTB2rqUOg80kpuFjSsppXXcGTXXa_!!104284319.jpg (156.5 KB, 下载次数: 1)2017-3-…

java服务器要二次编译,ecology项目二次开发环境搭建

ecology项目二次开发环境搭建Submitted By Weaver文档版本控制文档简要信息:文档主题(Title)ecology项目二次开发环境搭建作者(Author)审批者 (To Be Approved By)说明 (Comments)ecology项目二次开发环境搭建文件名称 (File Name)文档版本历史:序号日期…

列车matlab模型,【国家级精品课程】-中南大学-数学建模-lingo-matlab-优化建模-数模培训-全国赛论文-京沪线列车调度模型(B题)...

【国家级精品课程】-中南大学-数学建模-lingo-matlab-优化建模-数模培训-全国赛论文-京沪线列车调度模型(B题) 答卷编号: 答卷编号: 论文题目: 京沪线列车调度模型(B题) 参赛队员: 1. 唐欢 电话:13100251389 2. 任礼秋…