一、DBC文件概述
DBC文件:Data数据库文件 主要用来定义CAN总线通信协议用的
Networks:当前DBC文件的网络,如下图的CAN1
ECUs:代表节点的意思,如上图的A、B、C节点,也指的是下图中的BCM节点和Windows节点
Network nodes:描述节点发送的消息(报文)、接受的消息(报文)
ID号是0x12、有8个字节的数据
Layout表示每个信号在这条报文里面是怎么定义的,上图表示这条报文定义了4个信号,第一个信号占了1个字节,第二个信号也占了1个字节,信号可以按照需求来定义占几个字节
DBC文件描述了一个CAN网络上面所有的节点,每个节点发送和接收的报文,每条报文的信号
我们在实际产品开发中,开发CAN通信的时候,就会通过DBC文件来定义CAN网络的节点、报文、信号
二、诊断寻址方式
CAN总线是广播形式的通信,即一条报文发送后,CAN网络中的所有节点都可以收到该报文,诊断仪在发送诊断请求报文后,具体是想跟网络中的哪个ECU进行诊断会话呢,这个是通过什么方式判断的?这就引出了寻址方式的概念。
寻址方式有两种,物理寻址功能寻址。
物理寻址
是诊断仪和单个ECU之间的诊断,也就是诊断请求报文发出去后,根据报文ID,CAN网络中只会有对应的一个ECU进行诊断响应
功能寻址
是诊断仪和多个ECU之间的诊断,也就是诊断请求报文发出去后,CAN网络中支持该功能寻址报文ID的ECU,一般功能寻址报文ID为0x7DF,这些ECU都会执行诊断服务,并且发出诊断响应。
一个ECU内部一般会定义3条诊断报文:
诊断请求接收报文(物理寻址 报文ID用户自定义 同一网络中的每个ECU不一样)
诊断请求接收报文(功能寻址 一般为0x7DF)
诊断应答发送报文(同一网络的每个ECU的ID不一样)
例:整车同一网络中有ECU A,B,C,D多个节点,假设他们的物理请求消息ID为0x701,0x702,0x703,0x704,响应消息地址分别为0x70A,0x70B,0x70C,0x70D,所有ECU的功能寻址ID为0x7DF。
物理寻址时:
0x701 0x10 0x01(对ECU A进行诊断请求)
0x70A 0x50 0x01 xx xx xx xx(仅ECU A响应)
功能寻址时:
0x7DF 0x10 0x01(对所有ECU进行诊断请求)
0x70A 0x50 0x01 xx xx xx xx(ECU A响应)
0x70B 0x50 0x01 xx xx xx xx(ECU B响应)
0x70C 0x50 0x01 xx xx xx xx(ECU C响应)
0x70D 0x50 0x01 xx xx xx xx(ECU D响应)