KWP诊断通讯协议总结.docx

上传人:b****6 文档编号:6304523 上传时间:2023-01-05 格式:DOCX 页数:19 大小:236.06KB
下载 相关 举报
KWP诊断通讯协议总结.docx_第1页
第1页 / 共19页
KWP诊断通讯协议总结.docx_第2页
第2页 / 共19页
KWP诊断通讯协议总结.docx_第3页
第3页 / 共19页
KWP诊断通讯协议总结.docx_第4页
第4页 / 共19页
KWP诊断通讯协议总结.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

KWP诊断通讯协议总结.docx

《KWP诊断通讯协议总结.docx》由会员分享,可在线阅读,更多相关《KWP诊断通讯协议总结.docx(19页珍藏版)》请在冰豆网上搜索。

KWP诊断通讯协议总结.docx

KWP诊断通讯协议总结

基于K线的KWP2000协议标准主要包括ISO/WD14230-1~14230-4,各部分协议与OSI模型的对应关系如表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,ISO9141-2用户选择

ISO14230-1规定了KWP2000协议的物理层规X(K线、L线),它在ISO9141-2的基础上把数据交换系统扩展到了24V电压系统。

ISO14230-2规定了KWP2000的数据链路层协议,包括报文结构、初始化过程、通讯连接管理、定时参数和错误处理等内容。

K线的报文包括报文头、数据域和校验和三部分,其中报文头包含格式字节、目标地址(可选)、源地址(可选)和附加长度信息(可选),如表2所示。

表2基于K线的KWP2000报文结构[3]

报文头数据域校验和

FmtTgt1)Src1)Len1)SId2)..Data2)..CS

最长4字节最长255字节1字节

1)可选字节,取决于格式字节Fmt的A1A0位

2)服务标识符(ServiceID),数据域的第1个字节

KWP2000(KeywordProtocol2000)是欧洲汽车领域广泛使用的一种车载诊断协议标准,该协议实现了一套完整的车载诊断服务,并且满足E-OBD(EuropeanOnBoardDiagnose)标准。

KWP2000协议仅对其中三个子层进行了定义说明,即:

应用层(第七层)、数据链路层(第二层)和物理层(第一层)。

物理层:

这部分描述了基于IS09141用以实现诊断服务的物理层,用于配置硬件系统,指导接口电路的设计,同时将在IS09141-2中描述的物理层扩展成可以满足提供12V或24V电压的车辆的条款。

数据链路层:

这部分定义了数据的传送格式,描述了诊断服务的通用要求,允许1个诊断仪控制在1个随车ECU(例如电子燃油喷射、自动变速箱及防抱死系统等)中的诊断功能。

这些随车ECU嵌于车辆中,通过串行数据链路相连接。

应用层:

这部分包含如下规X:

服务标识符的字节编码及其十六进制数值;诊断服务请求与响应参数的字节编码;标准参数的十六进制数值。

根据IS014230的规定,KWP2000通信消息基本格式如图1所示。

一条消息结构包括头部(header)、数据字节(data-byte)、校验和(checksum)等三部分。

图1KWP2000的报文格式

Fmt——格式字节(Formatbyte)

Tgt——目标地址字节(Targetaddressbyte)

Src——源地址字节(Sourceaddressbyte)

Len——长度字节(Lengthbyte)

Sid——服务标志符字节(SeviceIdentificationbyte),分请求服务和响应服务两类

CS——校验和字节(Checksumbyte)

上标1——表示可选,由格式字节(Fmt)决定

上标2——表明服务标识(Sid)是数据段的一部分(Data)

在开始诊断服务之前,诊断设备必须对ECU(发动机enginecontrolunit)进行初始化,通过ECU的响应获取ECU的源地址、通讯波特率、支持的报文格式、定时参数等信息。

ECU所支持的报文和定时参数信息包含在ECU返回的“关键字(KeyWord)”中(这也是协议命名的由来)。

关键字由两个字节构成,如图2所示,关键字的低字节中各位的含义如表1所示。

图2关键字格式

表1关键字低字节中各位的含义

测试器(诊断设备)可以采用两种方式对ECU进行初始化,即5Baud初始化和快速初始化。

对于这两种初始化的时序在数据链路层协议中均有明确规定。

完成初始化过程后,测试器和ECU方可进行应用层的诊断服务和响应。

IS014230-3规定了应用层的服务规X,包括诊断管理功能组、数据传输功能组、诊断信息传输功能组、输人/输出控制功能组、远程启动ECU例程功能组、数据上载/下载功能组和扩展功能组。

KWP2000最初是基于K线的诊断协议。

由于K线物理层和数据链路层在网络管理和通讯速率上的局限性,使得K线无法满足日趋复杂的车载诊断网络的需求。

而CAN(ControllerAreaNetwork)网络由于其非破坏性的网络仲裁机制、较高的通讯速率(可达1Mbps)和灵活可靠的通讯方式,在车载网络领域广受青睐。

因此,近年来欧洲汽车领域广泛采用了基于CAN总线的KWP2000,即ISO15765协议,而基于K线的KWP2000物理层和数据链路层协议将逐步被淘汰。

 

KWP2000协议分析和基于CANoe的开发测试

摘要:

本文介绍了欧洲汽车领域广泛采用的车载诊断协议KWP2000,针对KWP2000诊断服务在K线(ISO14230)和CAN总线(ISO15765)上的两种实现方式,对协议的核心内容和发展历史进行了较为深入的剖析和对比。

本文还介绍了采用Matlab/Simulink/StateFlow进行协议开发的一般流程,以及该协议在Vector公司的CANoe软硬件平台上的应用实现和开过程。

关键词:

KWP2000,K线,CAN总线,开发,CANoe

1前言

在汽车故障诊断领域,针对诊断设备和汽车ECU之间的数据交换,各大汽车公司几乎都制订了相关的标准和协议。

其中,欧洲汽车领域广泛使用的一种车载诊断协议标准是KWP2000(KeywordProtocol2000),该协议实现了一套完整的车载诊断服务,并且满足E-OBD(EuropeanOnBoardDiagnose)标准。

KWP2000最初是基于K线的诊断协议,由于K线物理层和数据链路层在网络管理和通讯速率上的局限性,使得K线无法满足日趋复杂的车载诊断网络的需求。

而CAN网络(ControllerAreaNetwork)由于其非破坏性的网络仲裁机制、较高的通讯速率(可达1Mbps)和灵活可靠的通讯方式,在车载网络领域广受青睐,越来越多的汽车制造商把CAN总线应用于汽车控制、诊断和通讯。

近年来欧洲汽车领域广泛采用了基于CAN总线的KWP2000,即ISO15765协议,而基于K线的KWP2000物理层和数据链路层协议将逐步被淘汰。

在网络协议开发和测试应用方面,美国MathWorks公司和德国Vector公司提供了功能强大的开发和测试工具,可分别用于协议栈源码的开发和ECU测试。

2基于K线的KWP2000协议

基于K线的KWP2000协议标准主要包括ISO/WD14230-1~14230-4,各部分协议与OSI模型的对应关系如表1所示。

表1KWP2000协议与OIS模型的对应关系

OSI模型

基于K线的KWP2000

基于CAN总线的KWP2000

应用层

ISO14230-3

ISO15765-3

表述层

N/A

N/A

会话层

N/A

N/A

传输层

N/A

N/A

网络层

N/A

ISO15765-2

数据链路层

ISO14230-2

ISO11898-1

物理层

ISO14230-1,ISO9141-2

用户选择

ISO14230-1规定了KWP2000协议的物理层规X(K线、L线),它在ISO9141-2的基础上把数据交换系统扩展到了24V电压系统。

ISO14230-2规定了KWP2000的数据链路层协议,包括报文结构、初始化过程、通讯连接管理、定时参数和错误处理等内容。

K线的报文包括报文头、数据域和校验和三部分,其中报文头包含格式字节、目标地址(可选)、源地址(可选)和附加长度信息(可选),如表2所示。

表2基于K线的KWP2000报文结构[3]

报文头

数据域

校验和

Fmt

Tgt1)

Src1)

Len1)

SId2)

..

Data2)

..

CS

最长4字节

最长255字节

1字节

1)可选字节,取决于格式字节Fmt的A1A0位

2)服务标识符(ServiceID),数据域的第1个字节

在开始诊断服务之前,诊断设备必须对ECU进行初始化,通过ECU的响应获取ECU的源地址、通讯波特率、支持的报文头格式、定时参数等信息。

ECU所支持的报文头和定时参数信息包含在ECU返回的“关键字(KeyWord)”中(这也是协议命名的由来)。

关键字由两个字节构成,如图1所示,关键字的低字节中各位的含义如表3所示。

图1关键字格式[3]

表3关键字低字节中各位的含义[3]

Bit

=0

=1

AL0

不支持格式字节中的数据长度信息

支持格式字节中的数据长度信息

AL1

不支持附加长度字节

支持附加长度字节

HB0

不支持一个字节的报文头

支持一个字节的报文头

HB1

不支持在报文头中包含目标地址/源地址

支持在报文头中包含目标地址/源地址

TP0*)

采用正常定时参数设置

采用扩展定时参数设置

TP1*)

采用扩展定时参数设置

采用正常定时参数设置

*)只允许TP0,TP1=0,1或者1,0

诊断设备可以采用两种方式对ECU进行初始化——5Baud初始化和快速初始化,对于这两种初始化的时序在数据链路层协议[3]中均有明确规定。

完成初始化过程后,诊断设备和ECU方可进行应用层的诊断服务和响应。

ISO14230-3规定了应用层的服务规X,包括诊断管理功能组、数据传输功能组、诊断信息传输功能组、输入/输出控制功能组、远程启动ECU例程功能组、数据上载/下载功能组和扩展功能组。

在诊断服务请求/响应过程中,诊断设备和ECU必须遵循图2所示的时序和相关定时参数。

对于初始化和诊断服务过程中出现的各种定时错误,在数据链路层和应用层协议里面都有相应的处理规X,诊断设备及ECU的应用程序都必须严格遵守。

图2K线诊断服务时序图[3]

3基于CAN总线的KWP2000协议

基于CAN总线的KWP2000协议实际上指的就是ISO/WD15765-1~15765-4,该协议把KWP2000应用层的诊断服务移植到CAN总线上。

数据链路层采用了ISO11898-1协议,该协议是对CAN2.0B协议的进一步标准化和规X化;应用层采用了ISO15765-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)、目标地址格式(TA_Type)和远程地址(RA)

2)协议控制信息:

包含四种帧格式,见表5

3)数据域:

KWP2000服务标识符(ServiceID)+服务参数

应用层协议规定了四种服务数据结构,.Request、.Indication、.Response和.Confirm,分别用于诊断设备(Tester)的服务请求、ECU的服务指示、ECU的服务响应和Tester的服务确认。

这些数据结构中包含了地址信息、服务请求ID和服务请求参数等内容。

基于CAN总线的KWP2000诊断服务流程如图3所示。

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

从上面的服务流程可以看出,基于CAN总线的KWP2000协议支持多包数据传输,并且多包数据的管理和组织是在网络层完成的,应用层不必关心数据的打包和解包过程。

为实现这一功能,网络层定义了四种PDU(以PCI类型进行区分,如表5所示):

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

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

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

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

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

N_PDU名称

Byte#1

Byte#2

Byte#3

Bit#7-4

Bit#3-0

N/A

N/A

单帧(SF)

N_PCItype=0

SF_DL1)

N/A

N/A

第一帧(FF)

N_PCItype=1

FF_DL2)

N/A

连续帧(CF)

N_PCItype=2

SN3)

N/A

N/A

流控制帧(FC)

N_PCItype=3

FS4)

BS5)

STmin6)

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

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

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

4)流控制状态信息。

5)数据块大小。

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

多包数据的传输流程如图4所示。

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

图4多包数据传输流程图

在数据传送过程中,一个网络层PDU被编排成一个CAN数据帧,它们之间的对应关系由寻址模式(Addressingmode)决定。

基于ISO15765协议规定了四种寻址模式:

正常寻址模式(Normal)、正常固定寻址模式(Normalfixed)、扩展寻址模式(Extended)和用于远程诊断的混合寻址模式(Mixed)。

其中,正常固定寻址模式必须采用CAN扩展帧,并且SAEJ1939为该寻址模式下的KWP2000诊断服务保留了两个专用参数组编号(PGN):

其中PF=218(PF的具体定义请参考SAEJ1939数据链路层协议)的参数组用于物理寻址(phy),PF=219的参数组用于功能寻址(f)。

正常固定寻址模式的PDU与CAN数据帧之间的对应关系如表6所示。

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

N_PDU类型

CAN29位标识符

CAN数据域

28~26

25

24

23~16

15~8

7~0

1

2

3

4

5

6

7

8

单帧(SF)

011(bin)

0

0

218(dec)-phy

219(dec)-f

N_TA

N_SA

N_PCI

N_Data

第一帧(FF)

011(bin)

0

0

218(dec)-phy

219(dec)-f

N_TA

N_SA

N_PCI

N_Data

连续帧(CF)

011(bin)

0

0

218(dec)-phy

219(dec)-f

N_TA

N_SA

N_PCI

N_Data

流控制(FC)

011(bin)

0

0

218(dec)-phy

219(dec)-f

N_TA

N_SA

N_PCI

N/A

混合寻址模式与正常固定寻址模式类似,唯一的区别是CAN数据域的第一个字节用于填充远程地址(RA),N_PCI和诊断服务数据的填充位置向后移动一个字节。

混合寻址模式用于跨越网段进行远程诊断,远程诊断的机制如图5所示。

图中CAN1和CAN2两个不同的子网通过网桥相连,网桥在子网1中的源地址为200,在子网2中的源地址为10,位于子网1中的诊断设备(源地址为241)可通过网桥对子网2中的ECU(源地址为62)进行诊断。

图5跨越网段的远程诊断

4两种协议的简单比较

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

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

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

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

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

∙K线网络结构单一,网络管理功能很弱;而利用CAN总线可构建复杂的网络结构,可跨越网段进行远程诊断。

∙K线网络采用破坏性的仲裁机制,当诊断设备采用功能寻址与多个ECU进行通讯时,为避免总线冲突,ECU开发者必须采取措施保证多个ECU顺序访问总线;而CAN网络采用非破坏性的仲裁机制,并且仲裁过程由数据链路层完成,当诊断设备采用功能寻址与多个ECU进行通讯时,ECU开发者不必考虑总线访问冲突问题。

∙K线服务报文最大字节长度仅为255,无法满足更长报文的传输要求,并且在长报文的传输过程中用户必须自己采取措施进行连接管理,可靠性和兼容性较差;而CAN总线诊断服务报文最大字节长度可达4096(12位),对于长报文的传输,网络层协议还具备标准化和规X化的同步控制、顺序控制、流控制和错误恢复等功能,具备很高的可靠性、兼容性。

5KWP2000协议栈的开发及测试

从前面的协议分析可以看出,无论是基于K线还是CAN总线的KWP2000协议,都是逻辑非常复杂的系统,并且具有严格的定时和错误处理规X。

如果采用纯手工的方式来进行KWP2000协议栈的开发,不仅要耗费大量的时间和人力,其通用性、完备性、可靠性和可维护性都很难保证。

而MATLAB/Simulink/StateFlow不仅具备方便快捷的上层实时仿真环境,还集成了高效的嵌入式代码自动生成工具,为协议栈的开发和维护提供了强大的支持平台。

此外,由德国Vector公司的CANoe软件和相关硬件板卡组成的应用开发平台,可用于汽车网络(CAN,Lin等)的上层协议开发和系统测试,该平台同时支持基于K线和CAN总线的KWP2000诊断协议,可作为ECU和诊断设备的测试标准。

图6是协议源码开发过程示意图。

首先在MATLAB/Simulink/StateFlow中遵照协议标准进行KWP2000协议栈开发,在仿真调试环境下实现通讯逻辑、定时控制和错误处理,待系统完善后利用StateFlow嵌入式代码生成工具自动生成协议栈C代码,并与目标系统的底层驱动进行集成,然后植入目标系统形成应用程序,最后再利用CANoe作为标准进行系统集成测试。

图6KWP2000协议栈开发及测试流程

在MATLAB/Simulink/StateFlow中进行协议栈仿真开发是协议栈开发过程中的关键环节,在这一过程中必须严格遵照协议标准来实现通讯逻辑,往往需要经过多次“设计-仿真-修改”循环才能使系统最终趋于完善。

MATLAB的图形界面提供了方便快捷的仿真输入/输出接口,可大幅度加快开发进度。

协议栈开发完成后可利用CANoe作为标准进行系统集成测试,CANoe的KWP2000协议测试环境如图7所示。

图7CANoe的KWP2000测试环境示意图

CANoe中的KWP2000实际指的是基于CAN总线的KWP2000,即15765协议。

由于CANoe默认的硬件板卡是CAN卡,因此在建立仿真程序时,只需将ECU的网络模块设置为kwp2000.dll即可进行CAN总线的KWP2000服务测试。

kwp2000.dll中包含15765应用层协议中规定的服务请求、服务指示、服务响应和服务确认接口函数,用户调用这些函数即可完成Tester端和ECU端的KWP2000诊断服务。

此外,该模块中的功能函数还可对ECU的源地址、目标地址、寻址模式等参数进行动态设置。

需要注意的是,kwp2000.dll目前只提供了部分KWP2000服务的接口函数,如果用户需要进行其它的KWP2000服务测试,必须根据KWP2000应用层协议构造服务报文数据,然后调用该模块中的KWP_DataReq()和KWP_GetRxData()函数进行报文的发送和接收。

进行基于K线的KWP2000服务测试时,需要将KLineCPL.dll模块加入CANoe仿真环境,并使用一个代理节点来实现CAN网络和K线之间的报文转发。

此时CANoe使用计算机的串口,并通过一个串口/K线转换器与实际的ECU相连,如图8所示。

图8CANoe中基于K线的KWP2000测试连接示意图

6结束语

KWP2000是一套非常完善的车载故障诊断协议标准,协议的分层结构使得KWP2000诊断服务并不依赖于某种特定的网络介质,其应用层可以移植到任何一种物理层和数据链路层协议之上。

基于CAN总线的KWP2000顺应了目前车载网络发展的大趋势,将逐步取代K线诊断协议,成为下一代车载诊断协议的主流之一。

MATLAB/Simulink/Stateflow为协议栈开发提供了方便直观的图形用户接口和功能强大的仿真调试环境及代码生成工具,为嵌入式开发开辟了一条高效快捷之路。

Vector公司的CANoe和相关硬件板卡是一个功能强大的应用开发平台,可针对基于K线和CAN总线的KWP2000进行ECU和诊断设备的上层协议开发、测试及仿真。

 

摘要:

结合国外汽车厂商广泛采用的车载诊断协议KWP2000,对LIN总线下的ECU在线编程进行研究和方法设计,并对具体的硬件设计与软件实现进行了分析与阐述。

关键词:

KWP2000;ECU在线编程;LIN总线;MC9S08AW60../企业管理文件夹1-添加页码去内容白字/.51kaifa./

1.引言

在汽车故障诊断领域,针对诊断设备和汽车ECU之间的数据交换,各大汽车公司几乎都制订了相关的标准和协议。

其中,国外汽车厂商,包括大众、通用、奔驰、戴姆勒-克莱斯勒、JEEP、三菱、道奇等广泛使用的一种车载诊断

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1