星期五, 24 04月 2020 19:05

KWP2000协议(基于CAN和K-Line)分析及开发测试

    在汽车故障诊断领域,针对诊断设备和汽车ECU之间的数据交换,各大汽车公司几乎都制订了相关的标准和协议。其中,欧洲汽车领域广泛使用的一种车载诊断协议标准是KWP2000 (Keyword Pro-tocol 2000),该协议实现了一套完整的车载诊断服务,并且满足E-OBD(European On Board Diagnose)标准。KWP2000最初是基于K线的诊断协议。由于K线物理层和数据链路层在网络管理和通讯速率上的局限性,使得K线无法满足日趋复杂的车载诊断网络的需求。而CAN (Controller Area Network)网络由于其非破坏性的网络仲裁机制、较高的通讯速率(可达1 M bps )和灵活可靠的通讯方式,在车载网络领域广受青睐,因此,近年来欧洲汽车领域广泛采用了基于CAN总线的KWP2000,即ISO 15765协议,而基于K线的KWP2000物理层和数据链路层协议将逐步被淘汰。

在网络协议开发和应用方面,美国MathWorks公司和德国Vector公司提供了功能强大的开发和测试工具,可用于协议栈源码的开发和ECU测试。
1、基于K线的KWP2000协议:
    基于K线的KWP2000协议标准主要包括ISO/WD 14230-114230-4,各部分协议与OSI模型的对应关系如表1。

   ISO 14230-1规定了KWP2000协议的物理层规范(K线、L线),它在ISO 9141-2的基础上,把数据交换系统扩展到了24V电压系统。ISO 14230-2规定了KWP2000的数据链路层协议,包括报文结构、初始化过程、通讯连接管理、定时参数和错误处理等内容。K线的报文包括报文头、数据域及校验和3部分。其中报文头包含格式字节、目标地址(可选)、源地址(可选)和附加长度信息(可选),如表2。
   在开始诊断服务之前,诊断设备必须对ECU进行初始化,通过ECU的响应获取ECU的源地址、通讯波特率、支持的报文头格式、定时参数等信息。ECU所支持的报文头和定时参数信息包含在ECU返回的“关键字(Key Word)”中(这也是协议命名的由来)。关键字由两个字节构成,如图1所示,关键字的低字节中各位的含义如表3所示。
   诊断设备可以采用两种方式对ECU进行初始化,即5Baud初始化和快速初始化。对于这两种初始化的时序在数据链路层协议中均有明确规定。完成初始化过程后,诊断设备和ECU方可进行应用层的诊断服务和响应。IS0 14230-3规定了应用层的服务规范,包括诊断管理功能组、数据传输功能组、诊断信息传输功能组、输人/输出控制功能组、远程启动ECU例程功能组、数据上载/下载功能组和扩展功能组。在诊断服务请求/响应过程中,诊断设备和ECU必须遵循图2的时序和相关定时参数。对于初始化和诊断服务过程中出现的各种定时错误,在数据链路层和应用层协议里面都有相应的处理规范,诊断设备及ECU的应用程序都必须严格遵守。
2、基于CAN总线的KWP2000协议
   应用层协议规定了4种服务数据结构,即Ser-vice Name>.Request、Service_Name>.Indication、<Service-Name>.Response 和Service Name>....

继续阅读完整内容

请查看下方广告以解锁文章剩余内容

广告加载中...
查看 21087
 

瑞驰车友会微信公众号

qrcode for gh 673928177533 258

Please support our site by viewing this advertisement.

Please support our site by viewing this advertisement

Free Content