《KWP2021诊断通讯协议总结.docx》由会员分享,可在线阅读,更多相关《KWP2021诊断通讯协议总结.docx(15页珍藏版)》请在第一文库网上搜索。
1、KWP2023诊断通讯协议总结KWP2000(KeywordProtoco12000)是欧洲汽车领域广泛使用的种车载诊断协议标准,该协议实现了一套完整的车载诊断服务,同时满足E-OBD(EuropeanOnBoardDiagnose)标准。KWP2000协议仅对其中三个子层进行了定义说明,即:应用层(第七层)、数据链路层(第二层)与物理层(第一层)。物理层:这部分描述了基于IS09141用以实现诊断服务的物理层,用于配置硬件系统,指导接口电路的设计,同时将在IS09141-2中描述的物理层扩展成能够满足提供12V或者24V电压的车辆的条款。数据链路层:这部分定义了数据的传送格式,描述了诊断服务
2、的通用要求,同意1个诊断仪操纵在1个随车ECU(比如电子燃油喷射、自动变速箱及防抱死系统等)中的诊断功能。这些随车ECU嵌于车辆中,通过串行数据链路相连接。应用层:这部分包含如下规范:服务标识符的字节编码及其十六进制数值;诊断服务请求与响应参数的字节编码;标准参数的十六进制数值。根据IS014230的规定,KWP2000通信消息基本格式如图1所示。一条消息结构包含头部(header)、数据字节(data-byte)、校验与(checksum)等三部分。图1KWP2000的报文格式Fmt格式字节(Formatbyte)Tgt目标地址字节(Targetaddressbyte)Src源地址字节(So
3、urceaddressbyte)1en长度字节(1Cngthbyte)Sid服务标志符字节(SeVieeIdentificationbyte),分请求服务与响应服务两类CS校验与字节(Checksumbyte)上标1一一表示可选,由格式字节(Fmt)决定上标2一一说明服务标识(Sid)是数据段的一部分(Data)在开始诊断服务之前,诊断设备务必对ECU(发动机CngineCOntrOIUnit)进行初始化,通过EC1J的响应获取EeU的源地址、通讯波特率、支持的报文格式、定时参数等信息。EC1J所支持的报文与定时参数信息包含在ECU返回的“关键字(KeyWord)”中(这也是协议命名的由来)。
4、关键字由两个字节构成,如图2所示,关键字的低字节中各位的含义如表1所示。图2关键字格式表1关键字低字节中各位的含义测试器(诊断设备)能够使用两种方式对ECU进行初始化,即5Baud初始化与快速初始化。关于这两种初始化的时序在数据链路层协议中均有明确规定。完成初始化过程后,测试器与ECU方可进行应用层的诊断服务与响应,IS014230-3规定了应用层的服务规范,包含诊断管理功能组、数据传输功能组、诊断信息传输功能组、输人/输出操纵功能组、远程启动ECU例程功能组、数据上载/下载功能组与扩展功能组。KWP2000最初是基于K线的诊断协议.由于K线物理层与数据链路层在网络管理与通讯速率上的局限性,使
5、得K线无法满足日趋复杂的车载诊断网络的需求。而CAN(Contro1IerAreaNetwork)网络由于其非破坏性的网络仲裁机制、较高的通讯速率(可达IMbps)与灵活可靠的通讯方式,在车载网络领域广受青睐。因此,近年来欧洲汽车领域广泛使用了基于CAN总线的KWP2000,即IS015765协议,而基于K线的KWP2000物理层与数据链路层协议将逐步被淘汰。KWP2000协议分析与基于CANoe的开发测试摘要:本文介绍了欧洲汽车领域广泛使用的车载诊断协议KWP2000,针对KWP2000诊断服务在K线(ISO14230)与CAN总线(ISO15765)上的两种实现方式,对协议的核心内容与进展
6、历史进行了较为深入的剖析与对比。本文还介绍了使用Mat1abZSimu1ink/StateF1ow进行协议开发的通常流程,与该协议在Vector公司的CANoe软硬件平台上的应用实现与开过程。关键词:KWP2000,K线,CAN总线,开发,CANoe1前言在汽车故障诊断领域,针对诊断设备与汽车ECU之间的数据交换,各大汽车公司几乎都制订了有关的标准与协议。其中,欧洲汽车领域广泛使用的一种车载诊断协议标准是KwP2000(KeywordProtoco12000),该协议实现了一套完整的车载诊断服务,同时满足E-OBD(EuropeanOnBoardDiagnose)标准。KWP2000最初是基于
7、K线的诊断协议,由于K线物理层与数据链路层在网络管理与通讯速率上的局限性,使得K线无法满足日趋复杂的车载诊断网络的需求。而CAN网络(Contro11erAreaNetwork)由于其非破坏性的网络仲裁机制、较高的通讯速率(可达IMbPS)与灵活可靠的通讯方式,在车载网络领域广受青睐,越来越多的汽车制造商把CAN总线应用于汽车操纵、诊断与通讯。近年来欧洲汽车领域广泛使用了基于CAN总线的KWP2000,即ISO15765协议,而基于K线的KWP2000物理层与数据链路层协议将逐步被淘汰。在网络协议开发与测试应用方面,美国MathWorks公司与德国Vector公司提供了功能强大的开发与测试工具
8、,可分别用于协议栈源码的开发与ECU测试。2基于K线的KWP2000协议基于K线的KWP2000协议标准要紧包含ISO/WD14230-1-14230-4,各部分协议与OS1模型的对应关系如表1所示。表1KWP2000协议与OIS模型的对应关系OSI模型基于K线的KWP2000基于CAN总线的KWP2000应用层ISO14230-3ISO15765-3表述层N/AN/A会话层N/AN/A传输层N/AN/A网络层N/AISO15765-2数据链路层ISO14230-2ISO11898-1物理层ISO14230-1,IS09141-2用户选择ISO14230-1规定了KWP2000协议的物理层规范
9、(K线、1线),它在ISo9141-2的基础上把数据交换系统扩展到了24V电压系统。ISO14230-2规定了KWP2000的数据链路层协议,包含报文结构、初始化过程、通讯连接管理、定时参数与错误处理等内容。K线的报文包含报文头、数据域与校验与三部分,其中报文头包含格式字节、目标地址(可选)、源地址(可选)与附加长度信息(可选),如表2所示。表2基于K线的KWP2000报文结构3报文头数据域校验与FmtTgt1)Src1)1en1)SId2).Data2).CS最长4字节最长255字节1字节1)可选字节,取决于格式字节Fmt的AIAO位2)服务标识符(ServiceID),数据域的第1个字节在
10、开始诊断服务之前,诊断设备务必对ECU进行初始化,通过ECU的响应获取ECU的源地址、通讯波特率、支持的报文头格式、定时参数等信息。ECU所支持的报文头与定时参数信息包含在ECU返回的“关键字(KeyWord)”中(这也是协议命名的由来关键字由两个字节构成,如图1所示,关键字的低字节中各位的含义如表3所示。图1关键字格式3表3关键字低字节中各位的含义3Bit=0=1A1O不支持格式字节中的数据长度信息支持格式字节中的数据长度信息A11不支持附加长度字节支持附加长度字节HBO不支持一个字节的报文头支持一个字节的报文头HB1不支持在报文头中包含目标地址/源地址支持在报文头中包含目标地址/源地址TP
11、O*)使用正常定时参数设置使用扩展定时参数设置TP1*)使用扩展定时参数设置使用正常定时参数设置*)只同意TPO,TP1=0,1或者者1,0诊断设备能够使用两种方式对ECU进行初始化一一5Baud初始化与快速初始化,关于这两种初始化的时序在数据链路层协议3中均有明确规定。完成初始化过程后,诊断设备与ECU方可进行应用层的诊断服务与响应。ISO14230-3规定了应用层的服务规范,包含诊断管理功能组、数据传输功能组、诊断信息传输功能组、输入/输出操纵功能组、远程启动ECU例程功能组、数据上载/下载功能组与扩展功能组。在诊断服务请求/响应过程中,诊断设备与ECU务必遵循图2所示的时序与有关定时参数
12、。关于初始化与诊断服务过程中出现的各类定时错误,在数据链路层与应用层协议里面都有相应的处理规范,诊断设备及ECU的应用程序都务必严格遵守。诊断设备服务请求ECU1ECU2诊断设备服务响应服务响应服务请求.叩口口-一口口二:丁口丁:TnTFir二口F:P:p:p:2P:图2K线诊断服务时序图33基于CAN总线的KWP2000协议基于CAN总线的KWP2000协议实际上指的就是ISO/WD15765-1-15765-4,该协议把KWP2000应用层的诊断服务移植到CAN总线上。数据链路层使用了ISO11898-1协议,该协议是对CAN2.OB协议的进一步标准化与规范化;应用层使用了ISo15765
13、-3协议,该协议完全兼容基于K线的应用层协议14230-3,并加入了CAN总线诊断功能组;网络层则使用ISO15765-2协议,规定了网络层协议数据单元(N_PDU,如表4所示)与底层CAN数据帧、与上层KWP2000服务之间的映射关系,同时为长报文的多包数据传输过程提供了同步操纵、顺序操纵、流操纵与错误恢复功能。表4网络层协议数据单元(N_PDU)格式7地址信息协议操纵信息数据域N_AI1)N_PCI2)N_Data3)1)地址信息:包含源地址(SA)、目标地址(TA)、目标地址格式(TAJType)与远程地址(RA)2)协议操纵信息:包含四种帧格式,见表53)数据域:KWP2000服务标识
14、符(ServiceID)+服务参数应用层协议规定了四种服务数据结构,.Request、.Indication.Response.Confirm,分别用于诊断设备(Tester)的服务请求、ECU的服务指示、ECU的服务响应与Tester的服务确认。这些数据结构中包含了地址信息、服务请求ID与服务请求参数等内容。基于CAN总线的KwP2000诊断服务流程如图3所示。T”1应凫程序TUrgJ8TtwRICUFaECVff1EC晦用相序SRtqI.U5DaUIUq一r.V5Dkt.IndXndM.VSDttSrvic.VvfeIUtpM.USOtnCfaM.USDtInd产图3基于CAN总线的KWP
15、2000诊断服务流程图从上面的服务流程能够看出,基于CAN总线的KWP2000协议支持多包数据传输,同时多包数据的管理与组织是在网络层完成的,应用层不必关心数据的打包与解包过程。为实现这一功能,网络层定义了四种PDU(以PC1类型进行区分,如表5所示):单帧(Sing1CFrane,SF)数据域及PCI可在一个CAN数据帧中容纳时,服务报文以单帧CAN报文进行发送。第一帧(FirstFrame,FF)数据域及PC1不能在一个CAN数据帧中容纳时,服务报文以多帧CAN报文进行发送,其中第一帧(FF)除传送数据外,还包含了多包数据的长度信息。连续帧(ConsecutiveFrame,CF)多包数据中除第一帧外的连续数据帧,除传送数据外,还包含了多包数据的包序号。流操纵帧(F1OwContro1FC)用于多包数据传输过程中的流操纵,不包含数据,