Autosar BSW层CAN通讯开发------01(DBC)

DBC的配置是CAN通讯开发的第一件事情

关于DBC,本来想自己写的,但是一百度发现人家写的贼详细,因此我也没必要浪费时间写这玩意了,因为这玩意配置起来其实就是傻瓜式操作,没技术含量。

但对于DBC在我目前工作中的作用我需要讲一下。

在讲DBC之前,我想先贴一张公司中的一个项目团队各个模块的分工图

Autosar BSW层CAN通讯开发------01(DBC)_第1张图片悄悄说一句,卑微的我就是那个做CAN通讯模块的弱小同事。

Autosar BSW层CAN通讯开发------01(DBC)_第2张图片

 

DBC虽然配置起来是傻瓜式操作,但是它在CAN通讯开发、整个项目的开发测试及后期问题解决中的都起到非同小可的作用。

了解DBC的作用,需要先了解CAN报文在汽车中的作用:可以把一辆汽车理解成一个小型的没有一点光的人类社会,人们只能听见声音。在这个社会里面,每一个人都负责一个模块的工作,有人负责开灯,有人负责开门,有人负责雨刷,有人负责仪表盘等等,好了,现在一辆汽车组装完每个人各就各位了,汽车想要跑起来了,你不能说每个人都是哑巴吧,然后我开我的后备箱,你开你的门,他疯狂加他的油门,仪表盘啥也不管的直接乱扭一顿,那这车不就乱套了吗?所以,这个黑暗的社会要安全稳定的发展,每个人都必须得开口说话,油门要听见后备箱和门都向外喊话已经关好了,油门才能启动加速,仪表盘要听见大灯说他打开了,仪表盘的大灯指示灯才能亮起来。在汽车中,每个模块向外说的"话"就是报文,报文里面包含了各个模块自己的关键数据,每个模块向外发出报文,告知其它模块自己的情况。这就是CAN报文在汽车中的作用。

在知道了CAN报文的作用之后,理解DBC的作用就只需要一句话了:DBC就是把机器才能看懂的16进制CAN报文解析成我们人能看懂的具体的各个物理参数。

比如DBC把一帧CAN报文解析成 :温度-20度、车门状态-开、后备箱状态-关

DBC具体在开发过程中的作用如下:

1:对于CAN通讯开发的作用:配置好DBC的报文信号后,将DBC导入至Configurator中,然后进行CAN通讯模块的开发。

2:应用层开发人员在开发完成ASW的逻辑后进行测试时,需要用到DBC解析测试过程中发出的报文。

3:解决客户现场问题(对一个做电源的企业来说,客户就是汽车整车厂)时,需要现场采集出问题时的报文,然后使用DBC进行解析最后分析数据解决问题。

至于DBC具体是个啥玩意,别人说的比我的清楚得很多。

DBC的介绍到此完结撒花。

Autosar BSW层CAN通讯开发------01(DBC)_第3张图片

 

以下所有内容都是复制别人的,链接:DBC文件到底是个啥 - 知乎

01什么是DBC

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

02如何创建一个DBC文件

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

Autosar BSW层CAN通讯开发------01(DBC)_第4张图片

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


1打开DBC编辑软件

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

Autosar BSW层CAN通讯开发------01(DBC)_第5张图片

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

Autosar BSW层CAN通讯开发------01(DBC)_第6张图片

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

Autosar BSW层CAN通讯开发------01(DBC)_第7张图片

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

Autosar BSW层CAN通讯开发------01(DBC)_第8张图片

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

Autosar BSW层CAN通讯开发------01(DBC)_第9张图片

3创建数值表

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

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

Autosar BSW层CAN通讯开发------01(DBC)_第10张图片

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

Autosar BSW层CAN通讯开发------01(DBC)_第11张图片

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

Autosar BSW层CAN通讯开发------01(DBC)_第12张图片

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

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

Autosar BSW层CAN通讯开发------01(DBC)_第13张图片

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

Autosar BSW层CAN通讯开发------01(DBC)_第14张图片

例如,我们做如下定义

Autosar BSW层CAN通讯开发------01(DBC)_第15张图片

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

Autosar BSW层CAN通讯开发------01(DBC)_第16张图片

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

5创建message

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

Autosar BSW层CAN通讯开发------01(DBC)_第17张图片

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

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

Autosar BSW层CAN通讯开发------01(DBC)_第18张图片

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

Autosar BSW层CAN通讯开发------01(DBC)_第19张图片

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

Autosar BSW层CAN通讯开发------01(DBC)_第20张图片

6创建网络节点

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

Autosar BSW层CAN通讯开发------01(DBC)_第21张图片

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

Autosar BSW层CAN通讯开发------01(DBC)_第22张图片

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

Autosar BSW层CAN通讯开发------01(DBC)_第23张图片

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

Autosar BSW层CAN通讯开发------01(DBC)_第24张图片

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

Autosar BSW层CAN通讯开发------01(DBC)_第25张图片

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

03小结

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

你可能感兴趣的:(autosar)