KWP2000学习一

简介

  KWP2000(Keyword Protocol2000)是欧洲汽车领域广泛使用的一种车载诊断协议标准,该协议实现了一套完整的车载诊断服务,并且满足E-OBD(EuropeanOn BoardDiagnose)标准。KWP2000最初是基于K线的诊断协议,由于K线物理层和数据链路层在网络管理和通讯速率上的局限性,‍使得K线无法满足日趋复杂的车载诊断网络的需求。而CAN网络(ControllerArea Network‍)由于其非破坏性的网络仲裁机制、较高的通讯速率(可达1Mbps)和灵活可靠的通讯方式,在车载网络领域广受青睐,越来越多的汽车制造商把CAN总线应用于汽车控制、诊断和通讯。

项目特定的kw2000服务的子组件:
      kw2000服务的子组件
  
外部通信软件由两部分组成:
• Communication handler
• Command Interpreter
        structure
  

报文结构:

     
一个报文包含: 报文头、数据域、校验和
每个字节在该报文结构中包含:1 开始位、8 数据位(最低有效位开始)、1 停止位
        message format

(1)字节是可选的,取决于报文格式字节
(2)服务标识是数据域的一部分
     
Format byte - Fmt:包含2 bits地址信息和6 bits长度信息。
    

A1A0L5L4L3L2L1L0

Header format definition

   
Target address byte - Tgt: 目的地址信息
     
Source address byte - Src:源(传输设备)地址信息,是一个物理地址,此字节是可选的(总是与目标地址字节一起使用),并且仅在多节点总线拓扑上是必需的。对于点到点的连接,可以省略它。
    
Target and Source address bytes
    

ByteTester -> ECUECU -> Tester
Target addressECU address (0x10)Tester address (0xXX)
Source addressTester address (0xXX)ECU address (0x10)

    
Length Byte - Len:如果头字节(L0到L5)的长度设置为零,则提供此字节。它允许单元传输数据域超过63字节的报文。低于63的可能被省略。
     
Data Bytes:数据域可能包含63字节或255字节的信息,取决于长度信息。第一个字节是服务标识,根据所选择的服务,后边可能紧跟着参数和数据。
    
Data byte information

SldService Identification byte
DataData bytes max 254

   
Checksum: 校验和。
    

服务概述

    
支持诊断模式
    

DM [Hex]Diagnostic Mode (DM)Security access required?Security access Mode [hex]
81Default ModeNO
82End Of Line Upload ModeYES0x01 / 0x02
83End Of Line Download ModeYES0x03 / 0x04
85ECU Programming ModeYES0x07 / 0x08
86ECU Development ModeYES0x09 / 0x0A
87ECU Adjustment ModeYES0x0B / 0x0C
88EOL VehicleUpload ModeYES0x11 / 0x12
89EOL VehicleDownload ModeYES0x13 / 0x14
90EOL Vehicle Customer Service Upload ModeYES0x15 / 0x16
91EOL Vehicle Customer Service Download ModeYES0x17 / 0x18
92EOL End Customer Service Uoload ModeYES0x19 / 0x1A
93EOLEndCustomerServiceDownloadModeYES0x1B / 0x1C

   
部分服务列表
    

诊断服务名称请求码(十六进制)诊断服务名称请求码(十六进制)诊断服务名称请求码(十六进制)
startCommunication81securityAccess27Read Status Of Diagnostic Trouble Codes17
stopCommunication82readEcuIdentification1ARead Diagnostic Trouble Codes By Status18
accessTimingParamerters83ecuReset11clearDiagnosticInformation14
CommunicationControl28readDataByLocalIdentifier21readFreezeFrameData12
startDiagnosticSession10readMemoryByAddress23requestUpload (read Flash)35
Control Diagnostic Trouble Codes Setting85requestDownload (write Flash)34transferData36
requestTransferExit37writeMemoryByAddress3DwriteDataByLocalIdentifier3B

    
   
KWP 请求报文
   

Data byteParameter nameHex valueMnemonic
#1Diagnostic service name$xxSID
#2Request parameter #1$xxPARAM1(参数1)
#3 to #nOther request parameters$xxPARAMn(参数2)


KWP 积极响应(positive response)

Data byteParameter nameHex valueMnemonic
#1Diagnostic service name OKSID + $40SID OK
#2Response parameter #1$xxRES1
#3 to #nOther response parameters$xxRESn


KWP 消极响应(negative response)

Data byteParameter nameHex valueMnemonic
#4Negative response$7FNR
#5Code of service received by ECU$xxSID
#6Negative response code$xxRC


negative response code table

HexDefinition of Response CodeMnemonic
00reservedByDocument 此值不应用作响应代码。RBD
10generalReject 服务被拒绝,但是ECU没有指定拒绝的原因GR
11serviceNotSupported 不支持请求的服务SNS
12subFunctionNotSupported-invalidFormat 请求报文的参数或格式不匹配,此响应代码不影响通信计时!SFNS-IF
21busy-RepeatRequest 已接收请求,但未在最大响应时间内完成操作BRR
22conditionsNotCorrectOrRequestSequenceError 未满足先决条件,可能序列请求顺序错误。CNCORSE
23routineNotCompleteOrServiceInProcess 正在执行,还未完成RNCOSP
31requestOutOfRange 发现越限的值ROOR
33securityAccessDenied-securityAccessRequested 安全策略不满足,访问被拒绝SADSAR
35invalidKey 密钥不匹配IK
36exceedNumberOfAttempts 客户端试图获取比允许的更多的安全访问次数,失败。ENOF
37requiredTimeDelayNotExpired 在服务器需要的时间超时后,发起请求。RTDNE
40downloadNotAccepted 由于某些故障不能完成下载。DNA
41improperDownloadType ECU不支持请求下载数据的类型IDT
42canNotDownloadToSpecifiedAddress 不能识别可用的下载地址CNDTSA
43canNotDownloadNumberOfBytesRequested 不能识别可用的下载字节数CNDNOBR
50uploadNotAccepted 由于某些故障条件不能完成上传UNA
51improperUploadType不支持上传类型IUT
52canNotUploadFromSpecifiedAddress 不能识别可用的上传地址CNUFSA
53canNotUploadNumberOfBytesRequested 不能识别可用的上传字节数CNUNOBR
77blockTransferDataChecksumError 校验和不一样BTDCE
80serviceNotSupportedInActiveDiagnosticMode 在当前活动的诊断模式中,服务器(ECU)不支持所请求的服务。SNSADM
81-8FreservedByDocument 此值不应用作响应代码。RBD
90-9FvehicleManufacturerSpecific 这一范围的值是预留给汽车制造商的特定用途。VMS
FAchecksumErroran application-RAM or flash-EPROM checksum error.
FBECUErasingFlash ECU当前正在擦除flash-EPROM。RC_ERASE
FCECUProgrammingFlash ECU目前正在为flash-EPROM编程。RC_PROG
FDerasingError 擦除flash-EPROM出错。RC_ERER
FEprogrammingError flash-EPROM编程出错。RC_PRERR
FFreservedByDocument 此值不应用作响应代码。RBD
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值