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…

scaling之旅_机器学习算法之旅 - lwaif的个人空间 - OSCHINA - 中文开源技术交流社区...

机器学习领域有很多算法,然后每种算法又有很多延伸,所以对于一个特定问题,如何确定一个正确的算法是很困难的。本文中我想给你们两种方法来归纳在现实中会遇到的算法。学习方式根据如何处理经验、环境或者任何我们称之为输入的数据&#xff0…

maven工程打包老是报错_maven工程pom文件老是报错

本人mac端,从svn上下载了一个maven工程在eclipse上使用maven install 时候老是失败本地仓库已经指定好,但是还是显示无法获取指定的jar包信息如下[INFO] Scanning for projects...[INFO][INFO] ------------------------------------------------------------------------[INFO…

python 整数逆位运算_Python 进制转换、位运算

一、进制转换编程用十进制,十进制转换为二进制、八进制、十六进制In [135]: bin(23)Out[135]: 0b10111In [136]: oct(23)Out[136]: 0o27In [137]: hex(23)Out[137]: 0x17也可以直接反向获取十进制In [146]: 0b10111Out[146]: 23In [147]: 0o27Out[147]: 23In [148]:…

python高频词_python几万条微博高频词分析

python几万条微博高频词分析看到别人有做影视热评的分析统计,觉得挺好玩的,就来试试看看效果Screenshot_2018-05-21-11-00-42-879_com.master.wei.png思路抓取想要的微博数据写入数据库分词统计出词汇出现次数过滤无意义的干扰词存入数据库写接口&#x…

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

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

git 新建分支并切换到该分支_git切换到指定分支,git新建分支与合并

一,git切换到指定分支使用git进行开发的时候经常会遇到需要切换远程分支并且提交到远程指定分支的情况,操作如下1,查看远程所有分支git branch -agit branch不带参数,列出本地已经存在的分支,并且在当前分支的前面用*标记&#xf…

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

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

mysql用户如何迁移_迁移MySQL用户及权限

导出[rootdb01 tmp]# mysql -B -N -uroot -p -e "SELECT CONCAT(\, user,\\, host, \) FROM user WHERE user ! debian-sys-maint AND user ! root AND user ! " mysql > /tmp/mysql_all_users.txt[rootdb01 tmp]# cat /tmp/mysql_all_users.txt[rootdb01 tmp]# c…

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

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

mysql not in 多列,MySQL中的多列外键?

I have a table that has a primary key consisting of two columns (product_id, attribute_id). I have another table that needs to reference this table. How can I make a foreign key in the other table to link it to a row in the table with two primary keys?解决…

导入mysql source_mysql导入source数据库

首先要确保数据库存在,如果不存在则创建方法1 source很智能,很方便,很快捷。# mysql -uroot -pEnter password:Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 54467Server version: 5.6.36-log Sour…

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…

mysql创建表时默认默认_mysql创建数据表时指定默认值教程

指定默认值如果在插入行时没有给出值,MySQL允许指定此时使用的默认值。默认值用 CREATE TABLE 语句的列定义中的 DEFAULT 关键字指定。请看下面的例子:输入:create table orderitems(order_num int NOT NULL,order_item int NOT NULL,prod_id…

csv mysql 导入 mac_将sqlserver导出的csv数据导入到ubuntu和mac上的mysql

最近在捣鼓一些数据相关的东西。将sql server里的数据导入到ubuntu和mac上的mysql,方法有很多。不过我选择了最简单的一种:将sql server的数据导成csv,然后将csv导入到mysql。想法挺好,坑挺多。sql server是windows的,…

2012 安装mysql 5.6_如何安装mysql server 5.6

匿名用户1级2016-02-22 回答有两种方法,一种方法使用mysql的check table和repair table 的sql语句,另一种方法是使用MySQL提供的多个myisamchk, isamchk数据检测恢复工具。前者使用起来比较简便。推荐使用。1. check table 和 repair table登陆mysql 终端…

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(条件))关键是还要换行的。。有点不会了。回…

mac mysql 安装 简书_在Mac系统上配置MySQL以及Squel Pro

为了响应nodejs的大红大紫,最近应用其实现了一些server端的功能。数据库方面选择了老少咸宜的MySQL。今后肯定还会有相关应用需求。特此记录Mac系统下如何安装、配置MySQL及其管理工具Squel Pro。为什么选择MYSQL:数据库有很多,为什么么我选择…

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

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