KWP2000 协议分析 2008-11-19 15:59 1 前言 在汽车故障诊断领域,针对诊断设备和汽车ECU 之间的数据交换,各大汽车公司几乎都制订了相关的标准和协议。其中,欧洲汽车领域广泛使用的一种车载诊断协议标准是KWP2000(Keyword Protocol 2000),该协议实现了一套完整的车载诊断服务,并且满足E-OBD(European On Board Diagnose)标准。KWP2000 最初是基于K 线的诊断协议,由于K线物理层和数据链路层在网络管理和通讯速率上的局限性,使得K 线无法满足日趋复杂的车载诊断网络的需求。而CAN 网络(Controller Area Network)由于其非破坏性的网络仲裁机制、较高的通讯速率(可达 1M bps)和灵活可靠的通讯方式,在车载网络领域广受青睐,越来越多的汽车制造商把 CAN 总线应用于汽车控制、诊断和通讯。近年来欧洲汽车领域广泛采用了基于CAN 总线的KWP2000,即 ISO 15765 协议,而基于K 线的KWP2000 物理层和数据链路层协议将逐步被淘汰。 2 基于K 线的KWP2000 协议 基于K 线的KWP2000 协议标准主要包括 ISO/WD 14230-1~14230-4,各部分协议与 OSI 模型的对应关系如表 1 所示。 表 1 KWP2000 协议与 OIS 模型的对应关系 OSI 模型 基于K 线的KWP2000 基于CAN 总线的KWP2000 应用层 ISO 14230-3 ISO 15765-3 表述层 N/A N/A 会话层 N/A N/A 传输层 N/A N/A 网络层 N/A ISO 15765-2 数据链路层 ISO 14230-2 ISO 11898-1 物理层 ISO 14230-1,ISO9141-2 用户选择 ISO 14230-1 规定了KWP2000 协议的物理层规范(K 线、L 线),它在ISO 9141-2 的基础上把数据交换系统扩展到了24V 电压系统。ISO 14230-2 规定了KWP2000 的数据链路层协议,包括报文结构、初始化过程、通讯连接管理、定时参数和错误处理等内容。K 线的报文包括报文头、数据域和校验和三部分,其中报文头包含格式字节、目标地址(可选)、源地址(可选)和附加长度信息(可选),如表2 所示。 表2 基于 K 线的KWP2000 报文结构[3] 报文头 数据域 校验和 Fmt Tgt1) Src1) Len1) SId2) . . Data2) . . CS 最长 4 字节 最长 255 字节 1 字节 1)可选字节,取决于格式字节Fmt 的A1A0 位 2)服务标识符(Service ID),数据域的第1 个字节 在开始诊断服务之前,诊断设备必须对ECU 进行初始化,通过ECU 的响应获取ECU 的源地址、通讯波特率、支持的报文头格式、...