大家好,我是嵌入式老林,从事嵌入式软件开发多年,今天分享的内容是一文搞懂如何制作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++软件:

点击ok,命名,保存即可

2.2 创建数值表Value Tables
数值表的创建,主要是用来表示信号值的,避免信号值意义不明确,一般固定的枚举值才需要创建,如:ON/OFF;如果信号的值是不确定的,则不需要创建,也没法创建,比如计数器点击工具栏“View”下的“Value Tables”,然后右键点击空白部分,选择“New”新建value table




2.3 创建信号Signals
创建信号有2种方式:1,直接在Singals上面右键,New即可。2,在Singals对应界面的空白处,右键,New



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是哪个节点发,哪个节点收就行。注意作为节点接收报文不能通过直接拖拽进行关联看一个例子:两个节点,一个发,一个收

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界面,直接拖动对信号到对应的位置

2.8 一致性检查
经过前面的几个步骤其实已经完成数据库文件的创建了。但我们还需要通过一致性检查来确保数据库文件中的对象及内部关系的一致性。操作方法如下:在”File”中选择”Consistency Check”,此时会在一致性检查窗口中输出检查结果。如下:会有状态信息及对应的说明,以供我们检查出错/警告报警的原因。下面出现一条警告信息,说是这个message没有接收的节点


最后,如果觉得有帮助,希望你能一键三连(分享,点赞,在看),你们的认可是我持续输出的动力,感激不尽
欢迎大家骚扰,请备注“公众号”