
KWP协议分析及基于CANoe的开发测试.doc
11页KWP合同分析及基于CANoe的开发测试摘 要:本文简介了欧洲汽车领域广泛采用的车载诊断合同KWP,针对KWP诊断服务在K线(ISO 14230)和CAN总线(ISO 15765)上的两种实现方式,对合同的核心内容和发展历史进行了较为进一步的剖析和对比本文还简介了采用Matlab/Simulink/StateFlow进行合同开发的一般流程,以及该合同在Vector公司的CANoe软硬件平台上的应用实现和开过程核心词:KWP,K线,CAN总线,开发,CANoe1 前言 在汽车故障诊断领域,针对诊断设备和汽车ECU之间的数据互换,各大汽车公司几乎都制定了有关的原则和合同其中,欧洲汽车领域广泛使用的一种车载诊断合同原则是KWP(Keyword Protocol ),该合同实现了一套完整的车载诊断服务,并且满足E-OBD(European On Board Diagnose)原则KWP最初是基于K线的诊断合同,由于K线物理层和数据链路层在网络管理和通讯速率上的局限性,使得K线无法满足日趋复杂的车载诊断网络的需求而CAN网络(Controller Area Network)由于其非破坏性的网络仲裁机制、较高的通讯速率(可达1M bps)和灵活可靠的通讯方式,在车载网络领域广受青睐,越来越多的汽车制造商把CAN总线应用于汽车控制、诊断和通讯。
近年来欧洲汽车领域广泛采用了基于CAN总线的KWP,即ISO 15765合同,而基于K线的KWP物理层和数据链路层合同将逐渐被裁减在网络合同开发和测试应用方面,美国MathWorks公司和德国Vector公司提供了功能强大的开发和测试工具,可分别用于合同栈源码的开发和ECU测试2 基于K线的KWP合同 基于K线的KWP合同原则重要涉及ISO/WD 14230-1~14230-4,各部分合同与OSI模型的相应关系如表1所示表1 KWP合同与OIS模型的相应关系OSI模型 基于K线的KWP基于CAN总线的KWP应用层ISO 14230-3ISO 15765-3表述层N/AN/A会话层N/AN/A传播层N/AN/A网络层N/AISO 15765-2数据链路层ISO 14230-2ISO 11898-1物理层ISO 14230-1,ISO9141-2顾客选择ISO 14230-1规定了KWP合同的物理层规范(K线、L线),它在ISO 9141-2的基本上把数据互换系统扩展到了24V电压系统ISO 14230-2规定了KWP的数据链路层合同,涉及报文构造、初始化过程、通讯连接管理、定期参数和错误解决等内容。
K线的报文涉及报文头、数据域和校验和三部分,其中报文头涉及格式字节、目的地址(可选)、源地址(可选)和附加长度信息(可选),如表2所示表2 基于K线的KWP报文构造[3]报文头数据域校验和FmtTgt1)Src1)Len1)SId2). .Data2). .CS最长4 字节最长255 字节1字节1)可选字节,取决于格式字节Fmt的A1A0位2)服务标记符(Service ID),数据域的第1个字节 在开始诊断服务之前,诊断设备必须对ECU进行初始化,通过ECU的响应获取ECU的源地址、通讯波特率、支持的报文头格式、定期参数等信息ECU所支持的报文头和定期参数信息涉及在ECU返回的“核心字(Key Word)”中(这也是合同命名的由来)核心字由两个字节构成,如图1所示,核心字的低字节中各位的含义如表3所示图1 核心字格式[3]表3 核心字低字节中各位的含义[3]Bit= 0 = 1AL0不支持格式字节中的数据长度信息 支持格式字节中的数据长度信息AL1 不支持附加长度字节 支持附加长度字节HB0不支持一种字节的报文头支持一种字节的报文头HB1不支持在报文头中涉及目的地址/源地址支持在报文头中涉及目的地址/源地址TP0*)采用正常定期参数设立采用扩展定期参数设立TP1*)采用扩展定期参数设立采用正常定期参数设立*) 只容许TP0,TP1 = 0,1 或者1,0 诊断设备可以采用两种方式对ECU进行初始化——5Baud初始化和迅速初始化,对于这两种初始化的时序在数据链路层合同[3]中均有明确规定。
完毕初始化过程后,诊断设备和ECU方可进行应用层的诊断服务和响应ISO 14230-3规定了应用层的服务规范,涉及诊断管理功能组、数据传播功能组、诊断信息传播功能组、输入/输出控制功能组、远程启动ECU例程功能组、数据上载/下载功能组和扩展功能组在诊断服务祈求/响应过程中,诊断设备和ECU必须遵循图2所示的时序和有关定期参数对于初始化和诊断服务过程中浮现的多种定期错误,在数据链路层和应用层合同里面均有相应的解决规范,诊断设备及ECU的应用程序都必须严格遵守图2 K线诊断服务时序图[3]3 基于CAN总线的KWP合同 基于CAN总线的KWP合同事实上指的就是ISO/WD 15765-1~15765-4,该合同把KWP应用层的诊断服务移植到CAN总线上数据链路层采用了ISO 11898-1合同,该合同是对CAN2.0B合同的进一步原则化和规范化;应用层采用了ISO 15765-3合同,该合同完全兼容基于K线的应用层合同14230-3,并加入了CAN总线诊断功能组;网络层则采用ISO 15765-2合同,规定了网络层合同数据单元(N_PDU,如表4所示)与底层CAN数据帧、以及上层KWP服务之间的映射关系,并且为长报文的多包数据传播过程提供了同步控制、顺序控制、流控制和错误恢复功能。
表4 网络层合同数据单元(N_PDU)格式[7]地址信息合同控制信息数据域N_AI1)N_PCI2)N_Data3)1) 地址信息:涉及源地址(SA)、目的地址(TA)、目的地址格式(TA_Type)和远程地址(RA)2) 合同控制信息:涉及四种帧格式,见表53) 数据域:KWP服务标记符(Service ID) + 服务参数 应用层合同规定了四种服务数据构造,
第一帧(First Frame,FF) - 数据域及PCI不能在一种CAN数据帧中容纳时,服务报文以多帧CAN报文进行发送,其中第一帧(FF)除传送数据外,还涉及了多包数据的长度信息持续帧(Consecutive Frame,CF) - 多包数据中除第一帧外的持续数据帧,除传送数据外,还涉及了多包数据的包序号流控制帧(Flow Control,FC) - 用于多包数据传播过程中的流控制,不涉及数据,只涉及流控制状态、数据块大小和最小间隔时间等流控制信息表5 15765合同网络层四种PDU相应的PCI格式[7]N_PDU 名称Byte #1Byte #2Byte #3Bit # 7-4Bit # 3-0 N/A N/A 单帧(SF)N_PCItype=0 SF_DL1)N/A N/A 第一帧(FF)N_PCItype=1FF_DL2)N/A 持续帧(CF)N_PCItype=2SN3) N/A N/A 流控制帧(FC)N_PCItype=3FS4)BS5)STmin6)1) 单帧数据中数据域的字节长度,PCI的长度不涉及在内2) 多包数据的数据域字节总长度3) 多包数据的数据包编号。
4) 流控制状态信息5) 数据块大小6) 多包数据传播的最小时间间隔 多包数据的传播流程如图4所示发送节点一方面发送“第一帧”,告知接受节点将要发送的数据的总长度;接受节点分派好资源、准备接受数据,然后以一帧“流控制帧”告知发送节点一次可以发送的数据包数目和时间间隔;发送节点接下来就根据接受节点的接受能力将编好序号的数据包依次发送过去图4 多包数据传播流程图在数据传送过程中,一种网络层PDU被编排成一种CAN数据帧,它们之间的相应关系由寻址模式(Addressing mode)决定基于ISO 15765合同规定了四种寻址模式:正常寻址模式(Normal)、正常固定寻址模式(Normal fixed)、扩展寻址模式(Extended)和用于远程诊断的混合寻址模式(Mixed)其中,正常固定寻址模式必须采用CAN扩展帧,并且SAE J1939为该寻址模式下的KWP诊断服务保存了两个专用参数组编号(PGN):其中PF=218(PF的具体定义请参照SAE J1939数据链路层合同)的参数组用于物理寻址(phy),PF=219的参数组用于功能寻址(fcn)正常固定寻址模式的PDU与CAN数据帧之间的相应关系如表6所示。
表6 正常固定寻址模式下N_PDU与CAN数据帧之间的相应关系[7]N_PDU类型CAN 29位标记符CAN数据域28~26 252423~16 15~87~012345678单帧(SF)011(bin) 0 0218(dec)-phy219(dec)-fcnN_TAN_SAN_PCIN_Data第一帧(FF)011(bin) 0 0218(dec)-phy219(dec)-fcnN_TAN_SAN_PCIN_Data持续帧(CF)011(bin) 0 0218(dec)-phy219(dec)-fcnN_TAN_SAN_PCIN_Data流控制(FC)011(bin) 0 0218(dec)-phy219(dec)-fcnN_TAN_SAN_PCIN/A混合寻址模式与正常固定寻址模式类似,唯一的区别是CAN数据域的第一种字节用于填充远程地址(RA),N_PCI和诊断服务数据的填充位置向后移动一种字节混合寻址模式用于跨越网段进行远程诊断,远程诊断的机制如图5所示图中CAN1和CAN2两个不同的子网通过网桥相连,网桥在子网1中的源地址为200,在子网2中的源地址为10,位于子网1中的诊断设备(源地址为241)可通过网桥对子网2中的ECU(源地址为62)进行诊断。
图5 跨越网段的远程诊断4 两种合同的简朴比较 从前面基于K线和基于CAN总线的KWP合同可以看出,两种合同在物理层、数据链路层及网络层(15765)上存在如下重要差别,这也是K线被CAN总线取而代之的重要因素所在。
