一文搞懂如何制作DBC文件
创始人
2024-05-21 11:08:21
0

原标题:一文搞懂如何制作DBC文件

一、DBC介绍

1.1 什么是DBC

全称:Database CAN,CAN网络的数据库文件,定义了CAN网络的节点、消息、信号的所有细节,包括每个节点会发送哪些消息和接收哪些消息,每个消息里面包含哪些信号,每个信号位于消息的哪个位置,信号值有哪些,每个值代表的含义是什么,等等

1.2 DBC的作用

1,可以将CAN网络中数据解析成具体的报文(Message)和信号(Signal),可直接看到对应信号的值,方便分析。

2,在进行Autosar配置时,有DBC文件的话,可通过导入DBC文件去配置,这样会减少很多手动配置,更高效

举个例子,假设没有加载DBC,那么看到的CAN消息就是一串数据,这一串数据中对应的信号值是多少,需要自己手动解析。但是有了DBC的话,把DBC加载进去,工具就会自动帮你解析好了,可以直接看到这串数据中每个信号的值是多少

二、如何制作DBC

DBC制作的工具有很多,如CANdb++、CANoe、python 脚本、文本编辑工具或其它第三方工具。Python脚本需要自己编写脚本,或者网上找开源的;DBC文件可通过文本编辑工具打开,高手可通过文本编辑工具去制作DBC文件,但需要懂得里面的语法。本文介绍CANdb++如何制作DBC

制作DBC的推荐步骤:

1、新建一个CAN数据库文件

2、创建信号要用到的数值表Value Tables

3、创建信号Signals,关联该信号的数值表

4、创建报文Messages

5、创建网络节点Network nodes

6、将信号、报文及网络节点进行关联链接

7、创建或导入自定义属性,并进行修改

8、一致性检查

接触到的项目,有要支持CAN的,也有要支持CAN FD的,下面以制作CAN FD扩展帧为例

关于CANdb++的安装,此处不再介绍了,下载下来,直接next安装即可,遇到问题网上查一下。实在解决不了也可私信。

2.1 新建一个CAN数据库文件

打开CANdb++软件:

在CANdb++中,选择“File” > “Create Database”,然后选择一个模板并保存,这里选择CAN_FD模板

点击ok,命名,保存即可

创建完数据库的效果

2.2 创建数值表Value Tables

数值表的创建,主要是用来表示信号值的,避免信号值意义不明确,一般固定的枚举值才需要创建,如:ON/OFF;如果信号的值是不确定的,则不需要创建,也没法创建,比如计数器

点击工具栏“View”下的“Value Tables”,然后右键点击空白部分,选择“New”新建value table

对value table进行命名,值描述定义,comment可不加,目前也是灰色的,无法加,暂时不知道啥原因

大部分情况,客户是不会给DBC文件的,会给通信矩阵。客户给的需求,CAN通信矩阵部分截图

按照CAN通信矩阵一个个添加即可

添加完后的效果:

2.3 创建信号Signals

创建信号有2种方式:

1,直接在Singals上面右键,New即可。

2,在Singals对应界面的空白处,右键,New

根据通信矩阵中对于该信号的定义进行设置,并关联对应的数值表,点击确定即完成了信号的创建,依次完成剩余信号的创建工作。可以继续New新建,也可以Copy/Paste前面建好的信号,再双击进行修改完成创建,当其他信号的内容和已创建好的很相似就可以复制/粘贴前面建好的信号,这样会更快。

Name:信号名称

length:信号长度,这里的单位是bit

Byte Order:分为Intel、Motorola两种,一般是Motorola,具体看客户需求

Value Type:值类型,是有符号的,无符号的,还是浮点型等,

Factor:因子,系数,和offset配合使用,用于原始值和物理值的转换,后面介绍。

Offset:偏移量

Minimum,Maximum:最小值,最大值

Value Table:数值表,就是之前创建的,引用对应信号的数值表即可

关于Intel和Motorola

Motorola:一个数值的最高字节(MSB)存储在内存的最低地址处,而最低字节(LSB)存储在内存的最高地址处。这种存储方式类似于人类阅读和书写数字的方式,即从左到右,高位在前

Intel:类似于小端,高字节存放在高地址,低字节存放在低地址

没有跨字节是看不出来这两种有啥区别的,来看个跨字节的例子:

当然这里只是为了解释这两个的区别,才把一个报文中的两个信号设置成不同的格式,实际项目中一般不会出现这种情况

原始值和物理值介绍:

通俗来讲原始值是总线发的没解析的二进制或16进制,物理值是代码中发送出来的值。

换算公式:

‬raw_value = (physical_value - Offset) / Factor

physical_value = raw_value * Factor + Offset

举个例子,在VCU和BMS之间需要传递电量显示信息SOC,BMS软件计算出SOC=96.43,其中规定通讯矩阵Offset=0,Factor=0.01,发送总线后的16进制值(原始值)=(96.43-0)/0.01=9643(十进制)=25AB(16进制),总线数据传输可以通过下图所示:

创建好后的信号

2.4 创建报文Messages

创建message和创建信号类似,方法就不多说了,参考创建信号的描述。下面的按照通信矩阵填就行了

Transttmiter这里不填,等后面节点里关联了对应的message,这里就会自动更新

Tx Method和Cycle Time通过修改属性中的值,这里就会自动更新

2.5 创建网络节点Network Nodes

创建网络节点,这个也是根据项目需求来的,此处的节点仅作参考

创建好的网络节点

2.6 关联信号、报文及网络节点

2.6.1 message关联signal

双击对应的message,然后添加message包含的signal就行,如果有很多个signal,可一起选中,一次性添加完

也可以通过拖拽的方式添加进去,就是鼠标左键先点击一下message,然后把signal拖到message右边的空白区即可,自己试一下就知道了,此处不演示拖拽的方式

添加完点击确定即可

2.6.2 message关联到网络节点

方法也是一样的,就是搞清楚message是哪个节点发,哪个节点收就行。注意作为节点接收报文不能通过直接拖拽进行关联

看一个例子:两个节点,一个发,一个收

有个需要注意的点:这里只能双击节点名称才能添加,双击节点名称下面的Tx Messages,Rx Messages,Mapped Tx Signals,Mapped Rx Signals都无法添加。

而且弹出来的窗口只有Tx Messages,如果要添加此节点接收的报文消息,在Mapped Rx Signals里面添加对应message的signal即可。

2.7 创建或导入属性

2.7.1 自定义属性

在”View”下点击”Attribute Definitions”,右击选择New,按需要可以进行对报文、信号、节点、环境变量等进行属性创建

2.7.2 导入属性

”Attribute Definitions”中的属性也可以通过从其他项目的dbc文件中导入;操作如下:在”File”中选择”Import Attribute Definitions”,选择要导入的dbc文件,即可将该dbc中的属性定义导入到我们现在的dbc文件中来

导入完属性

2.7.3 修改message的属性

最后再根据通信矩阵表,修改一下message的属性,如这个报文是周期发送的,周期为200ms

改完后,就能看到下面的灰色部分自动更新了

2.7.4 修改start bit

修改一下start bit,也是根据通信矩阵表来修改,可双击message中对应的signal去修改起始位数值,也可双击对应message,进入到layout界面,直接拖动对信号到对应的位置

layout界面

2.8 一致性检查

经过前面的几个步骤其实已经完成数据库文件的创建了。但我们还需要通过一致性检查来确保数据库文件中的对象及内部关系的一致性。操作方法如下:

在”File”中选择”Consistency Check”,此时会在一致性检查窗口中输出检查结果。如下:会有状态信息及对应的说明,以供我们检查出错/警告报警的原因。下面出现一条警告信息,说是这个message没有接收的节点

回到网络节点处检查:

添加后:

再验证一致性就ok了

至此一个DBC文件就创建完成了。

dbc文件描述了在CAN网络上有哪些报文信息;这些报文上又携带了哪些信号信息;该报文是从哪个节点发出,哪个节点进行接收的等信息。所以,我们在进行dbc文件的创建时,主要是完成信号、报文、节点的创建;再对其进行关联即可。

相关内容

简单学会!边锋老友棋牌技巧...
您好:边锋老友棋牌技巧;这款游戏可以开挂,确实是有挂,了解请添加《...
2024-09-20 00:48:00
简单学会,天天乐清麻将如何...
您好:天天乐清麻将如何让牌变好;这款游戏可以开挂,确实是有挂,了解...
2024-09-20 00:47:47
简单学会,情怀麻将一直输怎...
您好:情怀麻将一直输怎么回事;这款游戏可以开挂,确实是有挂,了解请...
2024-09-20 00:47:33
玩家必知WePoker透明...
您好:白金岛红拐弯这款游戏是可以开挂,确实是有挂的,需要了解添加客...
2024-09-20 00:42:11
4分钟科普!白金岛麻友圈有...
您好:白金岛麻友圈有外卦吗;这款游戏可以开挂,确实是有挂,了解请添...
2024-09-20 00:36:31
真实教你!吉祥麻将怎么能让...
您好:吉祥麻将怎么能让胜率高;这款游戏可以开挂,确实是有挂,了解请...
2024-09-20 00:29:29

热门资讯

存款利息怎么算?湖南农商行存款... 导读湖南农商行存款利息怎么算?湖南农商行作为湖南最大的股份制银行,它是一家地方性、集约化、国际化、股...
上海发布:紧挨着城区的六个村为... 原标题:上海发布:紧挨着城区的六个村为何一定要保留?来看闵行的城乡融合发展之路 ...
茫崖市有多孤独?方圆百里荒无人... 原标题:茫崖市有多孤独?方圆百里荒无人烟,我国为何要建在戈壁之中? 这是中国最...
使命:林荫不做市公安局局长,为... 原标题:使命:林荫不做市公安局局长,为何副局长牛明也不可能接任 林荫从白山地区...
为何这些户外电源内置双向同步升... 原标题:为何这些户外电源内置双向同步升降压芯片?这篇文章给你答案 前言 目...
杨虎城去世后,他的子女结局如何... 原标题:杨虎城去世后,他的子女结局如何? 1936年12月12日,著名爱国将领...
金三角李国辉,率领三千残部打败... 原标题:金三角李国辉,率领三千残部打败泰国政府军,到台湾后结局如何? 解放战争...
哈以战争为何爆发?美国掌握军权... 原标题:哈以战争为何爆发?美国掌握军权的盎撒集团要收回犹太集团所控制的经济权利 ...
“水中恶霸”田鳖,吃青蛙能捕蛇... 原标题:“水中恶霸”田鳖,吃青蛙能捕蛇,还爱咬人脚趾,为何很少见了? 世界上存...
入伍时间决定军考时间吗?如何进... 原标题:入伍时间决定军考时间吗?如何进行计算? 后台很多战友及兵爸兵妈咨询提到...