基于K线/CAN总线的KWP2000协议分析及协议栈的开发测试

时间:2014-03-19来源:网络


33.jpg

图3 基于CAN总线的KWP2000诊断服务流程图

从上面的服务流程可以看出,基于CAN总线的KWP2000协议支持多包数据传输,并且多包数据的管理和组织是在网络层完成的,应用层不必关心数据的打包和解包过程。为实现这一功能,网络层定义了四种PDU(以PCI类型进行区分,如表5所示):

单帧(Single Frame,SF) - 数据域及PCI可在一个CAN数据帧中容纳时,服务报文以单帧CAN报文进行发送。

第一帧(First Frame,FF) -数据域及PCI不能在一个CAN数据帧中容纳时,服务报文以多帧CAN报文进行发送,其中第一帧(FF)除传送数据外,还包含了多包数据的长度信息。

连续帧(Consecutive Frame,CF) - 多包数据中除第一帧外的连续数据帧,除传送数据外,还包含了多包数据的包序号。

流控制帧(Flow Control,FC) -用于多包数据传输过程中的流控制,不包含数据,只包含流控制状态、数据块大小和最小间隔时间等流控制信息。

5.jpg

表5 15765协议网络层四种PDU对应的PCI格式[7]

1) 单帧数据中数据域的字节长度,PCI的长度不包括在内。

2) 多包数据的数据域字节总长度。

3) 多包数据的数据包编号。

4) 流控制状态信息。

5) 数据块大小。

6) 多包数据传输的最小时间间隔。

多包数据的传输流程如图4所示。发送节点首先发送“第一帧”,告知接收节点将要发送的数据的总长度;接收节点分配好资源、准备接收数据,然后以一帧“流控制帧”告知发送节点一次可以发送的数据包数目和时间间隔;发送节点接下来就根据接收节点的接收能力将编好序号的数据包依次发送过去。

44.jpg

图4 多包数据传输流程图

在数据传送过程中,一个网络层PDU被编排成一个CAN数据帧,它们之间的对应关系由寻址模式(Addressing mode)决定。基于ISO 15765协议规定了四种寻址模式:正常寻址模式(Normal)、正常固定寻址模式(Normal fixed)、扩展寻址模式(Extended)和用于远程诊断的混合寻址模式(Mixed)。其中,正常固定寻址模式必须采用CAN扩展帧,并且SAE J1939为该寻址模式下的KWP2000诊断服务保留了两个专用参数组编号(PGN):其中PF=218(PF的具体定义请参考SAE J1939数据链路层协议)的参数组用于物理寻址(phy),PF=219的参数组用于功能寻址(fcn)。正常固定寻址模式的PDU与CAN数据帧之间的对应关系如表6所示。

6.jpg

表6 正常固定寻址模式下N_PDU与CAN数据帧之间的对应关系[7]

混合寻址模式与正常固定寻址模式类似,唯一的区别是CAN数据域的第一个字节用于填充远程地址(RA),N_PCI和诊断服务数据的填充位置向后移动一个字节。混合寻址模式用于跨越网段进行远程诊断,远程诊断的机制如图5所示。图中CAN1和CAN2两个不同的子网通过网桥相连,网桥在子网1中的源地址为200,在子网2中的源地址为10,位于子网1中的诊断设备(源地址为241)可通过网桥对子网2中的ECU(源地址为62)进行诊断。

55.jpg

图5 跨越网段的远程诊断

4 两种协议的简单比较

从前面基于K线和基于CAN总线的KWP2000协议可以看出,两种协议在物理层、数据链路层及网络层(15765)上存在以下主要差别,这也是K线被CAN总线取而代之的主要原因所在:

K线通讯速率较低,最大波特率仅为10400bps;CAN总线通讯速率较高,最大波特率可达1Mbps。

K线采用单端信号传输,抗干扰能力较弱,可靠性较差;CAN总线采用差分信号传输,抗干扰能力强,信号传输的可靠性高。

K线诊断在启动应用层诊断服务之前必须对ECU进行初始化建立连接,并且初始化过程比较复杂;而基于CAN总线的诊断设备不需要对ECU进行初始化即可进行诊断服务。

K线诊断应用程序开发者必须亲自管理数据传输过程中的字节间定时,并处理底层通讯错误;CAN数据帧以整帧报文的形式进行发送,应用程序开发者不必管理字节间定时,并且CAN总线物理层和数据链路层具备完善的错误检测和错误恢复机制,应用程序不必监视和处理底层通讯错误。

1 2 3

关键词: K线 CAN总线 KWP2000协议

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版