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

发布者:王大雷最新更新时间:2014-12-09 来源: eccn关键字:KWP2000协议  K线  CAN总线 手机看文章 扫描二维码
随时随地手机看文章

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物理层和数据链路层协议将逐步被淘汰。

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

2 基于K线的KWP2000协议

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



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

ISO 14230-1规定了KWP2000协议的物理层规范(K线、L线),它在ISO 9141-2的基础上把数据交换系统扩展到了24V电压系统。ISO 14230-2规定了KWP2000的数据链路层协议,包括报文结构、初始化过程、通讯连接管理、定时参数和错误处理等内容。K线的报文包括报文头、数据域和校验和三部分,其中报文头包含格式字节、目标地址(可选)、源地址(可选)和附加长度信息(可选),如表2所示。



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

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

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

在开始诊断服务之前,诊断设备必须对ECU进行初始化,通过ECU的响应获取ECU的源地址、通讯波特率、支持的报文头格式、定时参数等信息。ECU所支持的报文头和定时参数信息包含在ECU返回的“关键字(Key Word)”中(这也是协议命名的由来)。关键字由两个字节构成,如图1所示,关键字的低字节中各位的含义如表3所示。



图1 关键字格式[3]



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

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

诊断设备可以采用两种方式对ECU进行初始化——5Baud初始化和快速初始化,对于这两种初始化的时序在数据链路层协议[3]中均有明确规定。完成初始化过程后,诊断设备和ECU方可进行应用层的诊断服务和响应。ISO 14230-3规定了应用层的服务规范,包括诊断管理功能组、数据传输功能组、诊断信息传输功能组、输入/输出控制功能组、远程启动ECU例程功能组、数据上载/下载功能组和扩展功能组。在诊断服务请求/响应过程中,诊断设备和ECU必须遵循图2所示的时序和相关定时参数。对于初始化和诊断服务过程中出现的各种定时错误,在数据链路层和应用层协议里面都有相应的处理规范,诊断设备及ECU的应用程序都必须严格遵守。



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



3 基于CAN总线的KWP2000协议

基于CAN总线的KWP2000协议实际上指的就是ISO/WD 15765-1~15765-4,该协议把KWP2000应用层的诊断服务移植到CAN总线上。数据链路层采用了ISO 11898-1协议,该协议是对CAN2.0B协议的进一步标准化和规范化;应用层采用了ISO 15765-3协议,该协议完全兼容基于K线的应用层协议14230-3,并加入了CAN总线诊断功能组;网络层则采用ISO 15765-2协议,规定了网络层协议数据单元(N_PDU,如表4所示)与底层CAN数据帧、以及上层KWP2000服务之间的映射关系,并且为长报文的多包数据传输过程提供了同步控制、顺序控制、流控制和错误恢复功能。



表4 网络层协议数据单元(N_PDU)格式[7]

1) 地址信息:包含源地址(SA)、目标地址(TA)、目标地址格式(TA_Type)和远程地址(RA)

2) 协议控制信息:包含四种帧格式,见表5

3) 数据域:KWP2000服务标识符(Service ID) + 服务参数

应用层协议规定了四种服务数据结构,.Request、.Indication、.Response和.Confirm,分别用于诊断设备(Tester)的服务请求、ECU的服务指示、ECU的服务响应和Tester的服务确认。这些数据结构中包含了地址信息、服务请求ID和服务请求参数等内容。基于CAN总线的KWP2000诊断服务流程如图3所示。[page]



图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 15765协议网络层四种PDU对应的PCI格式[7]

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

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

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

4) 流控制状态信息。

5) 数据块大小。

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

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



图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 正常固定寻址模式下N_PDU与CAN数据帧之间的对应关系[7]

混合寻址模式与正常固定寻址模式类似,唯一的区别是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位),对于长报文的传输,网络层协议还具备标准化和规范化的同步控制、顺序控制、流控制和错误恢复等功能,具备很高的可靠性、兼容性。[page]

5 KWP2000协议栈的开发及测试

从前面的协议分析可以看出,无论是基于K线还是CAN总线的KWP2000协议,都是逻辑非常复杂的系统,并且具有严格的定时和错误处理规范。如果采用纯手工的方式来进行KWP2000协议栈的开发,不仅要耗费大量的时间和人力,其通用性、完备性、可靠性和可维护性都很难保证。而MATLAB/Simulink/StateFlow不仅具备方便快捷的上层实时仿真环境,还集成了高效的嵌入式代码自动生成工具,为协议栈的开发和维护提供了强大的支持平台。此外,由德国Vector公司的CANoe软件和相关硬件板卡组成的应用开发平台,可用于汽车网络(CAN,Lin等)的上层协议开发和系统测试,该平台同时支持基于K线和CAN总线的KWP2000诊断协议,可作为ECU和诊断设备的测试标准。

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



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

在MATLAB/Simulink/StateFlow中进行协议栈仿真开发是协议栈开发过程中的关键环节,在这一过程中必须严格遵照协议标准来实现通讯逻辑,往往需要经过多次“设计-仿真-修改”循环才能使系统最终趋于完善。MATLAB的图形界面提供了方便快捷的仿真输入/输出接口,可大幅度加快开发进度。

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



图7 CANoe的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所示。



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

6 结束语

KWP2000是一套非常完善的车载故障诊断协议标准,协议的分层结构使得KWP2000诊断服务并不依赖于某种特定的网络介质,其应用层可以移植到任何一种物理层和数据链路层协议之上。基于CAN总线的KWP2000顺应了目前车载网络发展的大趋势,将逐步取代K线诊断协议,成为下一代车载诊断协议的主流之一。
MATLAB/Simulink/Stateflow为协议栈开发提供了方便直观的图形用户接口和功能强大的仿真调试环境及代码生成工具,为嵌入式开发开辟了一条高效快捷之路。Vector公司的CANoe和相关硬件板卡是一个功能强大的应用开发平台,可针对基于K线和CAN总线的KWP2000进行ECU和诊断设备的上层协议开发、测试及仿真。
关键字:KWP2000协议  K线  CAN总线 引用地址:基于K线/CAN总线的KWP2000协议分析及协议栈的开发测试

上一篇:基于ATE推动WiMAX射频测试与特征描述
下一篇:无线测量网络之WSN技术详谈

推荐阅读最新更新时间:2024-03-30 22:51

基于CAN总线的电梯外呼系统设计
随着现代社会的发展,科学技术的进步,出现了众多高层建筑和智能建筑。电梯,作为高层建筑内部一种重要的交通工具,其应用规模日益扩大。而作为电梯系统中必不可少的一部分,电梯召唤显示板(简称电梯外呼板)的应用也随之剧增。   电梯外呼板应用于每层楼的电梯门外,供乘客及电梯维保人员使用。电梯外呼板将乘客及维保人员的需求信息通过 CAN总线 传达给电梯主板,电梯主板接收信息并执行相应的操作。同时,电梯主板将电梯的实时运行信息通过CAN总线传递给电梯外呼板,通过外呼板LED显示出来,供乘客参阅。   AVR单片机具有高可靠性、功能强、高速度、低功耗和低价位的特点,本系统选用了高档ATmega列AVR单片机ATmegal6。它具有先进的RI-
[模拟电子]
基于<font color='red'>CAN总线</font>的电梯外呼系统设计
基于CAN总线的分布式控制器设计和实现
近年来大学生的科技创新设计活动越来越丰富,而为每个机电系统设计专门的控制器不仅耗时,而且难以满足系统的稳定性要求,这样就有必要提供一种开放式的控制系统平台,让学生可以在这个平台上进行二次开发。参考文献 中等提出了一种基于TCP/IP和CORBA的机电控制器,其构架复杂,功能完全,十分适合工业使用,而对于在校生的设计需求,需要提供一种原理清晰,构架明朗的开放式开发系统,本文所述系统就是基于这个原则。学生可以根据不同的设计要求选择相应的硬件和软件模块,自由组合,经过一些程序编写就可以完成高可靠性控制系统构架。 机电系统执行部件包括电机、舵机、液压缸、液压马达等,传感部分有接触和非接触的接近传感器(光电传感器)、图像传感器(CCD、
[工业控制]
基于<font color='red'>CAN总线</font>的分布式控制器设计和实现
如何解决CAN总线超强干扰?
摘要:CAN总线系统由一系列的网络节点通过总线相互连接组成,在实际应用中网络节点既是干扰源又是被干扰对象,尤其在超强干扰的情况下,如何使系统可靠运行成为一大难题。 前段时间有个用户反馈说自己的设备启动后多个节点处于失控状态,用CANScope测试全是错误帧如图1所示。 图1 强干扰下的报文 随后让客户把测试的波形发来一看,是环境干扰惹的祸,如图2所示。 图2 强干扰下的波形 这种强干扰导致了帧错误增加,重发频繁,正确数据无法及时到达。所以如何解决CAN总线超强干扰呢,下面给您介绍一种方案。 将CAN转为光纤传输 怎么能彻底解决强干扰带来的隐患呢?只要数据的传输不依赖电信号就能完全隔离掉干扰。
[汽车电子]
如何解决<font color='red'>CAN总线</font>超强干扰?
stm32之CAN总线基础
can总线协议概述:   CAN是Controller Area Network的缩写,由德国博世公司开发;CAN通过ISO11891以及ISO11519进行了标准化;     CAN总线的特点:     1、多主控制       在总线空闲时,所有单元都可以开始发送消息(多主控制);       最先访问总线的单元获得发送权(辨别方式: CSMA/CA方式 );       多个单元同时开始发送时,发送高优先级ID消息的单元可获得发送权;     2、消息的发送       在can协议中,所有消息都是以固定格式发送。总线空闲时,所有与总线相连的单元都可以开始发送新消息。两个以上的单元同时开始发送消息时,根据
[单片机]
stm32之<font color='red'>CAN总线</font>基础
宝来车的CAN总线特点分析
CAN总线是一种串行数据通信协议,由于在数据通讯上具有突出的可靠性、实时性和灵活性,并可以非常有效地构成分布式控制/实时检测系统而得到了广泛应用。 随着人们对汽车动力性、操纵稳定性、安全性和舒适性的不断追求,现代汽车上安装了很多电子控制设备、电子部件、专用传感器和功能各异的执行装置。为了解决汽车电子系统控制中,许多动态信息资源共享、信息处理的实时性等问题,大多数中、高档汽车上都采用了CAN总线技术作为控制器联网手段。宝来车的CAN总线具有高可靠性全面提高了宝来车的动力性、经济性和安全性。 一、宝来车CAN总线的组成与结构 宝来车采用两条CAN总线,即驱动系统CAN总线和车身系统CAN总线,这两总线完全能够满足ISO的定义。驱动
[嵌入式]
基于DTMF和CAN总线的家居安防系统设计方案
摘要: 介绍了一种以AT89S52单片机为控制核心, 通过DTMF公用电话网和CAN 总线传递的多节点家居安防系统设计方案。本智能家居安防系统集防火、防盗、防燃气为一体, 可实现自动检测与自动语音拨号报警。详细介绍了DTMF收发电路、通话电路和CAN 总线传输等电路。实验结果表明, 本系统功能实用, 信息传递实时可靠,适用于家居安防或其他场所的安防系统。   1 引言   现在,人们对工作和生活环境不仅要求舒适健康、可靠便利, 而且更加看重安全性,并利用安防系统来提高家庭抵御各种意外情况的能力。现在的安防系统可借助计算机技术、IC 卡技术、通信技术等来实现,CAN总线应用于安防系统对家居智能化发展起到了良好的促进作用。
[工业控制]
基于DTMF和<font color='red'>CAN总线</font>的家居安防系统设计方案
汽车网线与CAN总线的标准
汽车作为一种交通工具,目前承担起了越来越多的功能。现代科技已经将网际网络、无线连接、个人通讯电子装置、娱乐设备等整合到汽车内部,与动力系统相结合,为乘客提供了前所未有的便利。而这一切都有赖于汽车网络技术,它是汽车电子发展的重要方向之一。 过去,汽车通常采用点对点的通信方式,将电子控制单元及负载设备连接起来。随着电子设备的不断增加,势必造成导线数量的不断增多,从而使得在有限的汽车空间内布线越来越困难,限制了功能的扩展。同时导线质量每增加50 kg,油耗会增加0.2 L/100 km。此外,电控单元并不是仅仅与负载设备简单地连接,更多的是与外围设备及其他电控单元进行信息交流,并经过复杂的控制运算,发出控制指令,这些是不能通过简单地连接所
[嵌入式]
蓄电池组充放电集散控制系统的设计
  随着高科技及其产业的迅速发展,大存储容量的蓄电池组能源系统已经越来越被人们所重视,在诸如电动汽车、大功率UPS、电厂及变电站直流系统、通信系统等很多领域中都得到广泛应用。   蓄电池组是由一定数量的单体电池串联组成的,在使用过程中可能会有百次直至千次的充、放电。各单体蓄电池过充电、过放电或者放电不足均易引起电池的故障,某个单体蓄电池的故障也会导致整个蓄电池组的故障和损坏。因此,在线实时检测蓄电池组充放电各单体蓄电池的充放电电压、充放电时的温升以及整个蓄电池组的充放电电流、电压等参数,及时找出损坏或性能显著降低的蓄电池,对于延长电池的使用寿命、降低成本特别是提高直流供电系统的可靠性至关重要。鉴于上述情况,我们研制了蓄电池组充、
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
最新测试测量文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved