UDS诊断服务通常是通过CAN总线实现。对于CAN诊断帧有两种不同的分类方式,按照寻址方式可以分为物理寻址、功能寻址,按照帧类别可以分为单帧、首帧、流控帧、连续帧。
寻址方式
在总线上往往连着众多ECU设备(如图1所示),作为诊断设备既可以单独与某一ECU进行通信,也可以同时与所有总线上的ECU设备通信。图1 总线示意图
1. 物理寻址
物理寻址是指总线上始终只有一个ECU响应诊断设备发出的诊断命令,实现点对点通信,例如图1中总线上仅ECU A响应诊断设备的诊断命令。
2. 功能寻址
功能寻址是指总线上的所有ECU对可以同时响应诊断设备发出的诊断命令,实现一对多的通信方式,例如图1中ECU A、ECU B、ECU C 、ECU D可以同时响应诊断设备的诊断命令。
帧类别
对于帧的类型,通过需要发送的数据长度来确定。在正常寻址模式下,当数据长度小于等于7byte,则用单帧的形式发送,当数据长度大于7byte,数据需要分多帧才能发送完成,则需要使用到首帧、流控帧、连续帧,不同帧的机制如图2所示。图2 不同帧的机制
首帧是指发送的第一帧,目的是把前7byte数据发送给接收方,并告知接收方数据没有发完,然后接收方会回一帧流控帧,告知发送方是否可以接着发送,并且告知接收方一次最多能接收的数据量,以及发送方接下来发送的数据帧(连续帧)之间的时间间隔要求。
对于不同的帧,通过CAN消息的数据场中PCI(Protocol control information)来区分,图3、图4详细说明了不同帧的PCI的定义。图3 不同帧的数据场定义
以下是对PCI段的详细解释。图4 PCI 定义
其中:
DL:有效数据的长度,不包括PCIbyte;
FS:表示是发送方否可以继续传输消息,0表示可以继续发送,1表示等待发送,2表示数据溢出,一次发送的数据大于接收方所能接收的量;
BS:接收方一次能接收的数据最大量;
STmin:表示两个连续帧之间的最小时间间隔,参照图1中的定义;
SN:连续帧的序列号;