ISO14229ISO14229目录目录•概述•应用层接口服务•应用层协议•各功能单元诊断服务–诊断和通信管理功能单元 –数据传输功能单元 –传输储存的数据功能单元 14 19–输入输出控制功能单元 –远程激活例程功能单元 –上传下载功能单元目录目录•概述•应用层接口服务•应用层协议•各功能单元诊断服务概述概述•定义诊断系统的通用需求– 与物理介质、数据链路无关OSI各层各层增强的诊断服务(与排放无关)增强的诊断服务(与排放无关)应用层应用层ISO 14229/ ISO 15765-3ISO 14229/其它标准其它标准表示层表示层------会话层会话层ISO 15765-3---传输层传输层ISO 15765-2---网络层网络层ISO 15765-2---数据链路层数据链路层ISO 11898---物理层物理层ISO 11898---概述概述•ISO 14229 基于不同数据链路的可能应用ISO 14229ISO 15765-3未来:无线诊断未来:FlexRay诊断未来:WWH-OBD… …概述概述•应用层服务与应用层协议A_SDUA_SDU发送方的应用Service.requestService.req_confirmService.confirmA_PDUA_PDU发送方应用层应用层服务应用层协议传输到对等实体A_SDUA_SDU接收方的应用Service.indication Service.responseA_PDUA_PDU接收方应用层传输到对等实体Service.rsp_confirm目录目录•概述•应用层接口服务•应用层协议•各功能单元诊断服务应用层接口服务应用层接口服务•应用层接口服务概述v服务原语 (6个)q请求 requestq请求_确认 req_confirmq指示 indication 对请求进行相关的处理q响应 responseq响应_确认 rsp_confirmq确认 confirmv有确认服务v无确认服务应用层接口服务应用层接口服务•有确认服务service_name.requestservice_name.indicationservice_name.req_confirmservice_name.responseservice_name.rsp_confirmservice_name.confirm客户端应用层Client服务器应用层Server客户端发送请求,请求确认后,服务器显示; 服务器发送响应,响应确认后,客户端得到确认信息。
应用层接口服务应用层接口服务service_name.requestservice_name.indicationservice_name.req_confirm客户端应用层Client服务器应用层Server•无确认服务应用层接口服务应用层接口服务•indicationService_name.ind ( SA, TA, TA_type, RA,(远程地址,可选) [,parameter1,…], )•requestService_name.request ( SA, TA, TA_type, RA,(远程地址,可选) [,parameter1,…], )原语中的数据单元内容一致枚举:用于描述功能还是物理寻址方式•服务原语的格式应用层接口服务应用层接口服务•confirmService_name.con ( SA, TA, TA_type, RA,(远程地址,可选) Result, [,parameter1,…], )•responseService_name.response ( SA, TA, TA_type, RA,(远程地址,可选) Result, [,parameter1,…], )原语中的数据单元内容一致枚举:positivenegative•服务原语的格式•response-confirmService_name.rsp_con ( SA, TA, TA_type, RA,(远程地址,可选) Result, )•request-confirmService_name.req_con ( SA, TA, TA_type, RA,(远程地址,可选) Result, )枚举:Positivenegative•服务原语的格式应用层接口服务应用层接口服务目录目录•概述•应用层接口服务•应用层协议•各功能单元诊断服务应用层协议应用层协议•A_SDU - 应用层服务数据单元–Application Layer Service Data Unit–SA, TA, TA_type [,RA] [,parameter1,…]•A_PDU - 应用层协议数据单元–Application Layer Protocol Data Unit–SA, TA, TA_type [,RA], A_Data–A_Data=A_PCI+[parameter1,…]•A_PCI - 应用层协议控制信息–Application Layer Protocol Control Information应用层协议应用层协议•应用层协议控制信息 - A_PCI–2种不同的格式(由服务原语和Result参数决定)–A_PCI (SI)•SI - Service ID (Request服务和Result =positive的Response)–类型:1字节无符号整数–范围:00~FF–A_PCI (NR_SI, SI)•NR_SI - Negative Service ID–类型:1字节无符号整数–范围:7F保留未应用3F保留未应用FF系统供应商定义服务肯定响应FA – FE汽车制造商定义服务肯定响应E0 – F9为将来需求扩展保留服务肯定响应C8 – DFISO 14229-1ISO 14229-1 服务肯定响应C3 – C7ISO 14230 保留未应用C1 – C2ISO 14229-1 保留未应用C0保留未应用BF系统供应商定义服务请求BA – BE汽车制造商定义服务请求A0 – B9为将来需求扩展保留服务请求88 – 9FISO 14229-1ISO 14229-1 服务请求83 – 87ISO 14230 保留未应用81 – 82ISO 14229-1 保留未应用80ISO 14229-1否定响应标识7FISO 14229-1ISO 14229-1 服务肯定响应50 – 7E ISO 15031-5OBD服务响应40 – 4FISO 14229-1ISO 14229-1 服务请求10 – 3EISO 15031-5OBD服务请求00 – 0F服务类型服务标识应用层协议应用层协议•服务标识符SIISO 15031-5OBD服务请求00 – 0FISO 14229-1ISO 14229-1 服务请求10 – 3EISO 15031-5OBD服务响应40 – 4FISO 14229-1ISO 14229-1 服务肯定响应50 – 7E ISO 14229-1否定响应标识7FISO 14229-1 保留未应用80ISO 14230 保留未应用81 – 82ISO 14229-1ISO 14229-1 服务请求83 – 87为将来需求扩展保留服务请求88 – 9F汽车制造商定义服务请求A0 – B9系统供应商定义服务请求BA – BE保留未应用BFISO 14229-1 保留未应用C0ISO 14230 保留未应用C1 – C2ISO 14229-1ISO 14229-1 服务肯定响应C3 – C7为将来需求扩展保留服务肯定响应C8 – DF汽车制造商定义服务肯定响应E0 – F9系统供应商定义服务肯定响应FA – FE保留未应用FF保留未应用3F定义文档应用层协议应用层协议•请求服务标识符SI–类型:1字节无符号整数–范围:00~FF–请求服务的ID:X0XXXXXX(第6位为0)–示例:ReadDTCInformation(读故障码)服务Request 0x19 B00011001•肯定响应服务标识符SI–类型:1字节无符号整数–范围:00~FF–肯定响应服务的ID:X1XXXXXX (第6位为1)–肯定响应服务的ID=请求服务的ID+0x40–示例: ReadDTCInformation服务Response 0x59 B01011001•否定响应服务标识符NR_SI–类型:1字节无符号整数–范围:7F应用层协议应用层协议A_PDU parameterParameter NameCvtHex ValueSATATA_TypeSource AddressTarget AddressTarget Address TypeMMMXXXXXXA_Data.A_PCI.SIRequest Service IdentifierMXXA_Data. Parameter1 : Parametern=[ : ]M/U/C/SXX=[XX:XX]Cvt:约定M:强制U:用户选择C:是否使用依赖于其它参数S:强制从参数列表中选择(枚举类型)•请求A_PDU应用层协议应用层协议A_PDU parameterParameter NameCvtHex ValueSATATA_TypeSource AddressTarget AddressTarget Address TypeMMMXXXXXXA_Data.A_PCI.SIRequest Service IdentifierMXXA_Data.Parameter1sub-function = [parameter]SXXParameter2:Parametern=[ : ]UXX=[XX:XX]•请求示例(带子功能)•请求示例(不带子功能)应用层协议应用层协议A_PDU parameterParameter NameCvtHex ValueSATATA_TypeSource AddressTarget AddressTarget Address TypeMMMXXXXXXA_Data.A_PCI.SIRequest Service IdentifierMXXA_Data. Parameter1 : Parametern=[ : ]UXX=[XX:XX]应用层协议应用层协议•服务描述约定–子功能参数 $Level (LEV_)的定义•1字节数据•Bit7 - 禁止肯定响应指示位 suppressPosRspMsgIndicationBit–0=FALSE:需要肯定响应–1=TRUE:禁止肯定响应•Bit6~0 - 子功能参数值(0x00-0x7F)–使用子功能参数字节,但仅支持suppressPosRspMsgIndicationBit的服务必须支持0x00子功能应用层协议应用层协议A_PDU parameterParameter NameCvtHex ValueSATATA_TypeSource AddressTarget AddressTarget Address TypeMMMXXXXXXA_Data.A_PCI.SIResponse Service IdentifierMXXA_Data. Parameter1 : Parametern=[ : ]M/U/C/SXX=[XX:XX]•肯定响应A_PDU应用层协议应用层协议•否定响应A_PDUA_PDU parameterParameter NameCvtHex ValueSATATA_TypeSource AddressTarget AddressTarget Address TypeMMMXXXXXXA_Data.A_PCI.SINR_SIM7FA_Data. ParameterResponse CodeM/U/C/SXX应用层协议应用层协议Hex值值响应码响应码助记符助记符11serviceNotSupported服务器不支持客户端请求的诊断服务服务器不支持客户端请求的诊断服务 SNS12subFunctionNotSupported服务器不支持客户端请求服务的子功能服务器不支持客户端请求服务的子功能 SFNS13incorrectMessageLengthOrInvalidFormat请求报文的数据长度(或者格式)不符合标准请求报文的数据长度(或者格式)不符合标准 IMLOIF31requestOutOfRange请求超出范围请求超出范围ROOR78requestCorrectlyReceived-ResponsePending服务器正忙,暂时无法处理客户端发出的请求服务器正忙,暂时无法处理客户端发出的请求 RCRRP•否定响应码NRCv(仅列出了最常见的)应用层协议应用层协议服务器服务器情况情况编号编号# #客户请求消息客户请求消息服务器能力服务器能力服务器的响应服务器的响应服务器的响应的注释服务器的响应的注释寻址方式寻址方式子功能(禁止子功能(禁止肯定响应消息肯定响应消息指示位)指示位)支持该服支持该服务标识符务标识符支持该支持该子功能子功能消息消息否定否定响应码响应码 1 1物理寻址物理寻址FALSE(FALSE(该位=该位=0)0)YESYESYESYESPosRspPosRsp——服务器发送服务器发送肯定响应肯定响应2 2NegRspNegRspNRC=xxNRC=xx服务器发送服务器发送否定响应否定响应3 3NONO——NRC=SNSNRC=SNS带带NRC=0x11NRC=0x11的的否定响应否定响应4 4YESYESNONONRC=SFNSNRC=SFNS带带NRC=0x12NRC=0x12的的否定响应否定响应5 5TRUE(TRUE(该位=该位=1)1)YESYESYESYESNoRspNoRsp——服务器服务器不发送响应不发送响应6 6NegRspNegRspNRC=xxNRC=xx服务器发送服务器发送否定响应否定响应7 7NONO——NRC=SNSNRC=SNS带带NRC=0x11NRC=0x11的的否定响应否定响应8 8YESYESNONONRC=SFNSNRC=SFNS带带NRC=0x12NRC=0x12的的否定响应否定响应•服务响应的执行规则v对带子功能参数请求消息的响应q物理寻址的客户端请求消息应用层协议应用层协议服务器服务器情况情况编号#编号#客户请求消息客户请求消息服务器能力服务器能力服务器的响应服务器的响应服务器的响应的注释服务器的响应的注释寻址方式寻址方式子功能(无肯子功能(无肯定响应消息指定响应消息指示位)示位)支持该服支持该服务标识符务标识符支持该支持该子功能子功能消息消息否定否定: :响应响应码码/ /部分部分 1 1功能寻址功能寻址FALSE(FALSE(该位=该位=0)0)YESYESYESYESPosRspPosRsp——服务器发送服务器发送肯定响应肯定响应2 2NegRspNegRspNRC=xxNRC=xx服务器发送服务器发送否定响应否定响应3 3NONO——NoRspNoRsp——服务器服务器不发送响应不发送响应4 4YESYESNONO——服务器服务器不发送响应不发送响应5 5TRUE(TRUE(该位=该位=1)1)YESYESYESYESNoRspNoRsp——服务器服务器不发送响应不发送响应6 6NegRspNegRspNRC=xxNRC=xx服务器发送服务器发送否定响应否定响应7 7NONO——NoRspNoRsp——服务器服务器不发送响应不发送响应8 8YESYESNONO——服务器服务器不发送响应不发送响应•服务响应的执行规则v对带子功能参数请求消息的响应q功能寻址的客户端请求消息应用层协议应用层协议服务器服务器情况情况编号#编号#客户请求客户请求消息消息服务器能力服务器能力服务器的响应服务器的响应服务器的响应的注释服务器的响应的注释寻址方式寻址方式支持该服支持该服务标识符务标识符支持的参数支持的参数消息消息否定否定: :响应码响应码/ /部分部分 1 1物理寻址物理寻址YESYES所有参数所有参数PosRspPosRsp——服务器发送服务器发送肯定响应肯定响应2 2至少一个至少一个——服务器发送服务器发送肯定响应肯定响应3 3至少一个参数,至少一个参数,多于一个参数,多于一个参数,或所有参数或所有参数NegRspNegRspNRC=xxNRC=xx服务器发送服务器发送否定响应否定响应, ,因因为读请求消息的数据参为读请求消息的数据参数时发生错误数时发生错误4 4NONENONENRC=ROORNRC=ROOR带带NRC=0x31NRC=0x31的的否定响应否定响应5 5NONO——NRC=SNSNRC=SNS带带NRC=0x11NRC=0x11的的否定响应否定响应•服务响应的执行规则v对不带子功能参数请求消息的响应q物理寻址的客户端请求消息服务器服务器情况情况编号#编号#客户请求客户请求消息消息服务器能力服务器能力服务器的响应服务器的响应服务器的响应的注释服务器的响应的注释寻址方式寻址方式支持该服支持该服务标识符务标识符支持的参数支持的参数消息消息否定否定: :响应码响应码/ /部分部分 1 1功能寻址功能寻址YESYES所有参数所有参数PosRspPosRsp——服务器发送服务器发送肯定响应肯定响应2 2至少一个至少一个——服务器发送服务器发送肯定响应肯定响应3 3至少一个参数,至少一个参数,多于一个参数,多于一个参数,或所有参数或所有参数NegRspNegRspNRC=xxNRC=xx服务器发送服务器发送否定响应否定响应, ,因为读请求消息的数因为读请求消息的数据参数时发生错误据参数时发生错误4 4NONENONENoRspNoRsp——服务器服务器不发送响应不发送响应5 5NONO————服务器服务器不发送响应不发送响应应用层协议应用层协议•服务响应的执行规则v对不带子功能参数请求消息的响应q功能寻址的客户端请求消息目录目录•概述•应用层接口服务•应用层协议•各功能单元诊断服务–诊断和通信管理功能单元 –数据传输功能单元 –传输储存的数据功能单元 –输入输出控制功能单元 –远程激活例程功能单元 –上传下载功能单元服务服务是否支持子功能是否支持子功能描述描述DiagnosticSessionControl (0x10)Yes客户端请求控制与某个服务器的诊断会话客户端请求控制与某个服务器的诊断会话ECUReset (0x11)Yes客户端强制服务器执行复位客户端强制服务器执行复位SecurityAccess (0x27)Yes客户端请求解锁某个受安全保护的服务器客户端请求解锁某个受安全保护的服务器CommunicationControl (0x28)Yes客户端请求服务器控制其通信客户端请求服务器控制其通信TesterPresent (0x3E)Yes客户端向服务器指示客户端仍然客户端向服务器指示客户端仍然AccessTimingParameter (0x83)Yes客户端使用该服务读取客户端使用该服务读取/ /修改某个已经激活的修改某个已经激活的通信的定时参数通信的定时参数SecuredDataTransmission (0x84)—客户端使用该服务执行带扩展的数据链接安客户端使用该服务执行带扩展的数据链接安全保护的数据传输全保护的数据传输ControlDTCSetting (0x85)Yes客户端控制服务器设置客户端控制服务器设置DTCDTCResponseOnEvent (0x86)Yes客户端请求服务器启动某个事件机制客户端请求服务器启动某个事件机制LinkControl (0x87)Yes客户端请求控制通信波特率客户端请求控制通信波特率•诊断和通信管理功能单元各功能单元诊断服务各功能单元诊断服务•诊断和通信管理功能单元–DiagnosticSessionControl (0x10)服务•用于使能服务器中不同的诊断会话–诊断会话»默认会话模式»非默认会话模式a.编程模式b.扩展模式–不同的诊断会话具有»不同的功能»不同的定时参数各功能单元诊断服务各功能单元诊断服务服务服务默认默认会话会话非默认非默认会话会话服务服务默认默认会话会话非默认非默认会话会话DiagnosticSessionControl (0x10)√√ReadMemoryByAddress (0x23)√√ECUReset (0x11)√√ReadScalingDataByIdentifier (0x24)√√SecurityAccess (0x27)√ReadDataByPeriodicIdentifier (0x2A)√CommunicationControl (0x28) √DynamicallyDefineDataIdentifier (0x2C)√√TesterPresent (0x3E)√√WriteDataByIdentifier (0x2E)√√AccessTimingParameter (0x83)√WriteMemoryByAddress (0x3D)√√SecuredDataTransmission (0x84)√ClearDiagnosticInformation (0x14)√√ControlDTCSetting (0x85)√ReadDTCInformation (0x19)√√ResponseOnEvent (0x86)√√InputOutputControlByIdentifier (0x2F)√LinkControl (0x87)√RoutineControl (0x31)√√ReadDataByIdentifier (0x22)√√RequestDownload (0x34)√各功能单元诊断服务各功能单元诊断服务•诊断和通信管理功能单元vDiagnosticSessionControl (0x10)服务q不同会话所允许的诊断服务各功能单元诊断服务各功能单元诊断服务•诊断和通信管理功能单元–DiagnosticSessionControl (0x10)服务•请求报文A_Data byteParameter NameCvtHex Value#1DiagnosticSessionControl Request Service IDM10#2sub-function=[ diagnosticSessionType]S00-FF各功能单元诊断服务各功能单元诊断服务•诊断和通信管理功能单元–DiagnosticSessionControl (0x10)服务•肯定响应报文A_Data byteParameter NameCvtHex Value#1DiagnosticSessionControl Response Service IDM50#2sub-function=[ diagnosticSessionType]S00-FFHex值值 bit 6~0描述描述约定约定00ISO/SAE保留保留M01默认模式默认模式M02编程模式编程模式U03扩展诊断模式扩展诊断模式U04-3FISO/SAE保留保留U40-5F汽车制造商定义汽车制造商定义U60-7E系统供应商定义系统供应商定义U7FISO/SAE保留保留M各功能单元诊断服务各功能单元诊断服务•诊断和通信管理功能单元vDiagnosticSessionControl (0x10)服务q子功能参数 - diagnosticSessionType各功能单元诊断服务各功能单元诊断服务•诊断和通信管理功能单元vDiagnosticSessionControl (0x10)服务q诊断会话模式的状态转移图默认会话模式拓展模式编程模式1002进入编程模式1003进入拓展模式•诊断和通信管理功能单元vDiagnosticSessionControl (0x10)服务q支持的否定响应码Ø0x12: 不支持请求服务的子功能Ø0x13: 请求报文的数据长度(或者格式)不符合标准 Ø0x22: 条件不满足Ø… …各功能单元诊断服务各功能单元诊断服务各功能单元诊断服务各功能单元诊断服务•诊断和通信管理功能单元vDiagnosticSessionControl (0x10)服务q消息流示例Ø请求报文Ø肯定响应报文各功能单元诊断服务各功能单元诊断服务•诊断和通信管理功能单元–SecurityAccess (0x27)服务•安全访问的意义•安全访问的应用–WriteDataByIdentifier (0x2E)–WriteMemoryByAddress (0x2D)–InputOutputContorlByIdentifier (0x2F)–RoutineControl (0x31)各功能单元诊断服务各功能单元诊断服务•诊断和通信管理功能单元–SecurityAccess (0x27)服务•安全访问的执行流程TesterECU1: Request (请求种子:seed)2: Response (返回种子:seed)3: Request (发送密钥:key)4: Response (密钥正确,ECU解锁)各功能单元诊断服务各功能单元诊断服务•诊断和通信管理功能单元–SecurityAccess (0x27)服务•请求报文 - requestSeed和sendKey子功能A_Data byteParameter NameCvtHex Value#1SecurityAccess Request Service IDM27#2sub-function=[ securityAccessType=requestSeed]M01,03,05,07-7D#3. .#nsecurityAccessDataRecord=[ parameter#1 .. parameter#m]U..U00-FF..00-FFA_Data byteParameter NameCvtHex Value#1SecurityAccess Request Service IDM27#2sub-function=[ ecurityAccessType=sendKey]M02,04,06,08-7E#3. .#nsecurityKey=[ key#1(high byte) .. Key#m(low byte)]M..U00-FF..00-FFHex值值 bit 6~0描述描述约定约定00ISOSAEReservedM01requestSeedU02sendKeyU03,05,07-5FrequestSeed(不同安全等级)(不同安全等级)U04,06,08-60sendKey (不同安全等级)(不同安全等级)U61-7EsystemSupplierSpecificU7FISOSAEReservedM各功能单元诊断服务各功能单元诊断服务•诊断和通信管理功能单元–SecurityAccess (0x27)服务•子功能参数 - securityAccessType各功能单元诊断服务各功能单元诊断服务•诊断和通信管理功能单元–SecurityAccess (0x27)服务•假设ECU有3种安全级别–Level1 : 0x27 0x01 → 0x27 0x02–Level2 : 0x27 0x03 → 0x27 0x04–Level3 (Flash) : 0x27 0x11 → 0x27 0x12•如何实现锁定与解锁的切换?各功能单元诊断服务各功能单元诊断服务•诊断和通信管理功能单元–SecurityAccess (0x27)服务•锁定与解锁的切换各功能单元诊断服务各功能单元诊断服务•诊断和通信管理功能单元vSecurityAccess (0x27)服务q支持的否定响应码Ø0x12: 不支持请求服务的子功能Ø0x13: 请求报文的数据长度(或者格式)不符合标准 Ø0x22: 条件不满足Ø0x24: 请求顺序错误Ø0x31: 请求超出范围Ø0x35: 无效密钥Ø0x36: 尝试次数超限Ø0x37: 延迟时间未到Ø… …各功能单元诊断服务各功能单元诊断服务•诊断和通信管理功能单元–SecurityAccess (0x27)服务•消息流示例–请求种子,发送种子各功能单元诊断服务各功能单元诊断服务•诊断和通信管理功能单元–SecurityAccess (0x27)服务•消息流示例–发送密匙,密匙正确ECU解锁各功能单元诊断服务各功能单元诊断服务•诊断和通信管理功能单元–ECUReset (0x11)服务•请求报文•肯定响应报文A_Data byteParameter NameCvtHex Value#1ECU Reset Request Service IDM28#2sub-function=[ ResetType]M00-FFA_Data byteParameter NameCvtHex Value#1ECU Reset Response Service IDM68#2sub-function=[ ResetType]M00-FF各功能单元诊断服务各功能单元诊断服务•诊断和通信管理功能单元–ECUReset (0x11)服务•子功能参数 - ResetType 用来复位的Hex值值 bit 6~0描述描述约定约定00ISOSAEReservedM01hardResetU02keyOffOnResetU03softResetU04enableRapidPowerShutDownU05disableRapidPoweeShutDownU06-3FISOSAEReservedU40-7EVehicleManufacture/SystemSupplierSpecificU7FISOSAEReservedM各功能单元诊断服务各功能单元诊断服务•诊断和通信管理功能单元–CommunicationControl (0x28)服务•用于打开/关闭服务器对非诊断消息的发送和/或接收•对ECU的所有通讯通道有效各功能单元诊断服务各功能单元诊断服务•诊断和通信管理功能单元–CommunicationControl (0x28)服务•请求报文•肯定响应报文A_Data byteParameter NameCvtHex Value#1CommunicationControl Request Service IDM28#2sub-function=[ controlType]M00-FF#3CommunicationTypeM00-FFA_Data byteParameter NameCvtHex Value#1CommunicationControl Response Service IDS68#2controlTypeM00-FF各功能单元诊断服务各功能单元诊断服务•诊断和通信管理功能单元–CommunicationControl (0x28)服务•子功能参数 - controlTypeHex值值 bit 6~0描述描述约定约定00enableRxAndTx允许收发允许收发U01enableRxAndDisableTxU02disableRxAndEnableTxU03disableRxAndTx禁止收发禁止收发U04-3FISOSAEReservedM40-7EVehicleManufacture/SystemSupplierSpecificU7FISOSAEReservedM各功能单元诊断服务各功能单元诊断服务•诊断和通信管理功能单元–CommunicationControl (0x28)服务•参数 - CommunicationTypeHex值值描述描述约定约定01NormalCommunicationMessages M02NetworkManagementCommunicationMessagesM03NormalCommunicationMessages and Network-ManagementCommunicationMessagesM各功能单元诊断服务各功能单元诊断服务•诊断和通信管理功能单元–CommunicationControl (0x28)服务•支持的否定响应码–0x12: 不支持请求服务的子功能–0x13: 请求报文的数据长度(或者格式)不符合标准 –0x22: 条件不满足–0x31: 请求超出范围–…各功能单元诊断服务各功能单元诊断服务•诊断和通信管理功能单元–CommunicationControl (0x28)服务•消息流示例只能收不发01使得这里的02 只能收报文不能发报文各功能单元诊断服务各功能单元诊断服务•诊断和通信管理功能单元–ControlDTCSetting (0x85) 服务•用于停止或恢复诊断故障码的设置•清楚故障信息(0x14)与读取故障信息(0x19)功能并不受影响各功能单元诊断服务各功能单元诊断服务•诊断和通信管理功能单元–ControlDTCSetting (0x85) 服务•请求报文•肯定响应报文A_Data byteParameter NameCvtHex Value#1ControlDTCSetting Request Service IDM85#2sub-function= DTCSettingType M00-7FA_Data byteParameter NameCvtHex Value#1ControlDTCSetting Response Service IDMC5#2DTCSettingType M00-7F各功能单元诊断服务各功能单元诊断服务•诊断和通信管理功能单元–ControlDTCSetting (0x85) 服务•子功能参数 - DTCSettingType•恢复DTC设置功能的条件?Hex值值 bit 6~0描述描述约定约定00ISOSAEReservedM01onU02offU03-3FISOSAEReservedM40-7EVehicleManufacture/SystemSupplierSpecificU7FISOSAEReservedM各功能单元诊断服务各功能单元诊断服务•诊断和通信管理功能单元–ControlDTCSetting (0x85) 服务•支持的否定响应码–0x12: 不支持请求服务的子功能–0x13: 请求报文的数据长度(或者格式)不符合标准 –0x22: 条件不满足–0x31: 请求超出范围–… …各功能单元诊断服务各功能单元诊断服务•诊断和通信管理功能单元vTesterPresent (0x3E)服务q用于向服务器指示诊断仪仍然连接在网络上,以维持当前的会话模式q周期性发送 - S3Client•诊断和通信管理功能单元vTesterPresent (0x3E)服务q请求报文q肯定响应报文A_Data byteParameter NameCvtHex Value#1TesterPresent Request Service IDM3E#2sub-function=[ zeroSubFunction]M00/80A_Data byteParameter NameCvtHex Value#1TesterPresent Response Service IDM7E#2zeroSubFunctionM00各功能单元诊断服务各功能单元诊断服务•诊断和通信管理功能单元vTesterPresent (0x3E)服务q支持的否定响应码Ø0x12: 不支持请求服务的子功能Ø0x13: 请求报文的数据长度(或者格式)不符合标准 各功能单元诊断服务各功能单元诊断服务•诊断和通信管理功能单元vTesterPresent (0x3E)服务q消息流示例1 - 有响应各功能单元诊断服务各功能单元诊断服务•诊断和通信管理功能单元vTesterPresent (0x3E)服务q消息流示例2 - 无响应各功能单元诊断服务各功能单元诊断服务各功能单元诊断服务各功能单元诊断服务•诊断和通信管理功能单元–其它服务项•LinkControl (0x87)服务–用于修改传输的波特率•AccessTimingParameter (0x83)服务–用于读取和修改通信链路的定时参数•SecuredDataTransmission (0x84)服务–该服务用于保护数据传输免遭第3方攻击»通过ISO15764安全保护子层来实现•ResponseOnEvent (0x86)服务–用于启动或停止服务器中某个特定事件触发的响应–客户端指定事件和事件发生时执行的服务各功能单元诊断服务各功能单元诊断服务•数据传输功能单元服务服务是否支持是否支持子功能子功能描述描述ReadDataByIdentifier (0x22)—客户端请求读取由数据标识符识别的某个记录的客户端请求读取由数据标识符识别的某个记录的当前值当前值 ReadMemoryByAddress (0x23) —客户端请求读取指定存储器客户端请求读取指定存储器范围数据范围数据的当前值的当前值ReadScalingDataByIdentifier (0x24) —客户端请求读取由数据标识符识别的某个记录的客户端请求读取由数据标识符识别的某个记录的定标信息定标信息ReadDataByPeriodicIdentifier (0x2A)—客户端请求客户端请求周期周期性传输服务器中的数据性传输服务器中的数据DynamicallyDefineDataIdentifier (0x2C) Yes客户端请求动态定义由客户端请求动态定义由ReadDataByIdentifierReadDataByIdentifier服务读取的数据标识符服务读取的数据标识符WriteDataByIdentifier (0x2E)—客户端请求写入由数据标识符指定的某个记录客户端请求写入由数据标识符指定的某个记录WriteMemoryByAddress (x3D) —客户端请求将数据写入到指定存储器范围内客户端请求将数据写入到指定存储器范围内22 通过标识符 来找到要读的数据23 通过地址 来找到要读的数据对应的 2E 和 3D 为 写数据各功能单元诊断服务各功能单元诊断服务•数据传输功能单元–Data Identifier (DID) 的作用•DID可以理解为一个/多个变量、常量或一段内存的名称或代号•通过DID访问相关的信息•DID - 2字节各功能单元诊断服务各功能单元诊断服务•数据传输功能单元–Data Identifier (DID) 的分类•OEM标识信息•ECU 标识信息•实时数据•Vehicle/ECU配置信息•输入输出控制信息•例程控制信息–ISO对DID的取值范围做了划分–具体DID代表什么/多少数据、格式由OEM/Supplier制定–不同的DID需要不同的服务支持各功能单元诊断服务各功能单元诊断服务•数据传输功能单元–Data Identifier (DID) 的实例0xE2003 bytes ParameterCommentSoftware version number1MS nibble: Sequence number1LS nibble: Month0x1: Jan… 0xC: Dec2Day0x1: 1st…0x1F: 313Year$0: 1900 $FF: 2155各功能单元诊断服务各功能单元诊断服务•数据传输功能单元–ReadDataByIdentifier (0x22)服务•客户端读取若干个DID标识的数据信息•请求报文A_Data byteParameter NameCvtHex Value#1ReadDataByIdentifier Request Service IDM22#2#3dataIdentifier[]#1=[ byte#1(MSB) byte#2]MM00-FF00-FF…………#n-1#ndataIdentifier[]#m=[ byte#1(MSB) byte#2]UU0-FF0-FFA_Data byteParameter NameCvtHex Value#1ReadDataByIdentifier Response Service IDM62#2#3dataIdentifier[]#1=[ byte#1(MSB) byte#2]MM00-FF00-FF#4…#(k-1)+4dataRecord[] #1=[ data#1 … data#k]M…U00-FF…00-FF…………#n-(o-1)-2#n-(o-1)-1dataIdentifier[]#m=[ byte#1(MSB) byte#2]UU00-FF00-FF#n-(o-1)…#ndataRecord[] #m=[ data#1 … data#o]U…U00-FF…00-FF•数据传输功能单元vReadDataByIdentifier (0x22)服务q肯定响应报文各功能单元诊断服务各功能单元诊断服务各功能单元诊断服务各功能单元诊断服务•数据传输功能单元–ReadDataByIdentifier (0x22)服务•支持的否定响应码–0x13: 请求报文的数据长度(或者格式)不符合标准 –0x22: 条件不满足–0x31: 请求超出范围–0x33: 安全访问不允许–… …各功能单元诊断服务各功能单元诊断服务•数据传输功能单元–WriteDataByIdentifier (0x2E)服务•客户端请求写入某DID标识的信息–非易失存储器中的数据–可标定的参数–车辆的配置信息各功能单元诊断服务各功能单元诊断服务•数据传输功能单元–WriteDataByIdentifier (0x2E)服务•请求报文A_Data byteParameter NameCvtHex Value#1WriteDataByIdentifier Request Service IDM2E#2#3dataIdentifier[]=[ byte#1(MSB) byte#2]MM00-FF00-FF#4+kdataRecord[]=[ data#1 … data#k]M…U00-FF…00-FF各功能单元诊断服务各功能单元诊断服务•数据传输功能单元–WriteDataByIdentifier (0x2E)服务•肯定响应报文A_Data byteParameter NameCvtHex Value#1WriteDataByIdentifier Response Service IDM6E#2#3dataIdentifier[]=[ byte#1(MSB) byte#2]MM00-FF00-FF各功能单元诊断服务各功能单元诊断服务•数据传输功能单元–WriteDataByIdentifier (0x2E)服务•支持的否定响应码–0x13: 请求报文的数据长度(或者格式)不符合标准 –0x22: 条件不满足–0x31: 请求超出范围–0x33: 安全访问不允许–0x72: 写存储空间失败–…各功能单元诊断服务各功能单元诊断服务•数据传输功能单元–ReadDataByPeriodicIdentifier (0x2A)服务•周期读取DID标识的数据信息•0xF200 - 0xF2FF各功能单元诊断服务各功能单元诊断服务•数据传输功能单元–ReadDataByPeriodicIdentifier (0x2A)服务•请求报文A_Data byteParameter NameCvtHex Value#1PeriodicReadData Request Service IDM2A#2sub-function=[TransmissionMode]M00-FF#3periodicdataIdentifier[]#1C00-FF… … #m+2periodicdataIdentifier[]#mU00-FF各功能单元诊断服务各功能单元诊断服务•数据传输功能单元–ReadDataByPeriodicIdentifier (0x2A)服务•肯定响应报文A_Data byteParameter NameCvtHex Value#1PeriodicReadData Response Service IDM6AA_Data byteParameter NameCvtHex Value#1PeriodicReadData Request Service IDM6A#2periodicdataIdentifierC00-FF#3+KdataRecord[]=[ data#1 … data#k ]M…U00-FF…00-FF各功能单元诊断服务各功能单元诊断服务•数据传输功能单元–ReadDataByPeriodicIdentifier (0x2A)服务•参数 - TransmissionModeHex值值描述描述约定约定00ISOSAE保留保留M01低速发送低速发送U02中速发送中速发送U03高速发送高速发送U04停止发送停止发送C05-FFISOSAE保留保留M•数据传输功能单元–DynamicallyDefineDataIdentifier (0x2C)服务•通过现有的DID或存储器地址等定义新的DID•请求报文各功能单元诊断服务各功能单元诊断服务A_Data byteParameter NameCvtHex Value#1DynamicallyDefineDataIdentifier Request Service IDM2C#2sub-function=[DefineByIdentifier]M01#3#4dynamicallydataIdentifier[]#1=[ byte#1(MSB) byte#2 ]MMF2/F300-FF#5#6sourceDataIdentifier[]#1=[ byte#1(MSB) byte#2 ]MM00-FF00-FF#7positionInSourceDataRecord#1M01-FF#8memorySize#1M00-FF各功能单元诊断服务各功能单元诊断服务•数据传输功能单元–DynamicallyDefineDataIdentifier (0x2C)服务•肯定响应报文A_Data byteParameter NameCvtHex Value#1DynamicallyDefineDataIdentifier Response Service IDM6C#2sub-function=[DefineByIdentifier]M01#3#4dynamicallydataIdentifier[]#1=[ byte#1(MSB) byte#2 ]MMF2/F300-FF各功能单元诊断服务各功能单元诊断服务•数据传输功能单元–DynamicallyDefineDataIdentifier (0x2C)服务•子功能参数 - DefineType•Source DataIdentifier不能为另一个DynamicallyDID•DynamicallyDataIdentifier 可以用于0x22/0x2A来读取相应数据Hex值值 bit 6~0描述描述约定约定00ISOSAE保留保留M01通过标识符定义通过标识符定义U02通过内存地址定义通过内存地址定义U03清除已定义动态标识符清除已定义动态标识符U04-FFISOSAE保留保留M•数据传输功能单元–ReadMemoryByAddress (0x23)服务•另一种访问数据的方式 - 读取指定的内存中数据•内存数据由请求报文中的起始内存地址和内存大小指定各功能单元诊断服务各功能单元诊断服务A_Data byteParameter NameCvtHex Value#1ReadMemoryByAddress Request Service IDM23#2addressAndLengthFormatIdentifierM00-FF#3…#(m-1)+3MemoryAddress[]=[ byte#1(MSB) … byte#m]M…C00-FF…00-FF#n-(k-1)…#nMemorySize[]=[ byte#1(MSB) … byte#k ]M…C00-FF…00-FF各功能单元诊断服务各功能单元诊断服务•数据传输功能单元vReadMemoryByAddress (0x23)服务q请求报文A_Data byteParameter NameCvtHex Value#1ReadMemoryByAddress Response Service IDM63#2…#ndataRecord[]=[ data#1 … data#m]M…U00-FF…00-FF各功能单元诊断服务各功能单元诊断服务•数据传输功能单元vReadMemoryByAddress (0x23)服务q肯定响应报文各功能单元诊断服务各功能单元诊断服务•数据传输功能单元–WriteMemoryByAddress (0x3D)服务•客户端请求向指定的内存地址写数据•内存地址由请求报文中的起始内存地址和内存大小指定各功能单元诊断服务各功能单元诊断服务•传输存储的数据功能单元服务服务是否支持是否支持子功能子功能描述描述ReadDTCInformation (0x19)Yes客户端请求读取故障信息客户端请求读取故障信息ClearDiagnosticInformation (0x14) —客户端请求清除故障信息客户端请求清除故障信息•传输存储的数据功能单元– 前提条件•ECU必须具备自诊断的功能–执行器–传感器–内部电路–通信–… …各功能单元诊断服务各功能单元诊断服务各功能单元诊断服务各功能单元诊断服务•传输存储的数据功能单元–故障码 (DTC)属性•代码值•检测方式•DTC状态•附加信息各功能单元诊断服务各功能单元诊断服务•传输存储的数据功能单元–故障码 (DTC)属性•代码值–J1939-73 DTCFormat–ISO14229-1 DTCFormat–ISO15031-6 DTCFormatSPNFMICMOCBit7-0Bit7-0Bit7-5Bit4-0Bit7Bit6-0字节字节1字节字节2字节字节3字节字节4DTCDTCStatusDTCHIghByteDTCMiddleByteDTCLowByte字节字节1字节字节2字节字节3字节字节4各功能单元诊断服务各功能单元诊断服务•传输存储的数据功能单元–故障码 (DTC)属性 故障码分三个字节 high middle 和 low 字节 三部分•代码值–ISO15031-6 DTCFormat–DTCLowByte通常为失效类型Hex valueDTCHighByteDTCMiddleBytebit7bit6bit5bit4bit3bit2bit1bit0bit7bit6bit5bit4bit3bit2bit1bit0categoriesfirstsecondthirdfourth and fifthHigh Byte Bit7-6 Code categories System Appendix 00P0xxx - P3xxxPowertrain P 01 C0xxx - C3xxxChassis C 10B0xxx - B3xxxBody B 11U0xxx - U3xxxNetwork U 各功能单元诊断服务各功能单元诊断服务•传输存储的数据功能单元–故障码 (DTC)属性•检测方式–Drive Cycle–Ignition Cycle–Warm up Cycle–… …各功能单元诊断服务各功能单元诊断服务•传输存储的数据功能单元–故障码 (DTC)属性•DTC状态Bit#名称名称描述描述0testFailed该该DTC最近的测试结果为失败最近的测试结果为失败1testFailedThisMonitoringCycle当前监视循环报告该当前监视循环报告该DTC处于故障状态处于故障状态2pendingDTCDTC在当前或前一个监视循环处于故障状态在当前或前一个监视循环处于故障状态3confirmedDTCDTC在请求时经过确认在请求时经过确认4testNotCompletedSinceLastClear自从上一次故障码清除后测试尚未完成自从上一次故障码清除后测试尚未完成5testFailedSinceLastClear自从上一次故障码清除后测试至少失败一次自从上一次故障码清除后测试至少失败一次6testNotCompletedThisMonitoringCycle本监视循环测试未完成本监视循环测试未完成7warningIndicatorRequested与该与该DTC相关的报警指示灯的状态相关的报警指示灯的状态各功能单元诊断服务各功能单元诊断服务•传输存储的数据功能单元–故障码 (DTC)属性•DTC状态各功能单元诊断服务各功能单元诊断服务•传输存储的数据功能单元–故障码 (DTC)属性•DTC状态–StatusOfDTC - 描述单个DTC的状态»不具备的状态位置 “0”–DTCStatusAvailabilityMask - ECU支持的DTC状态»不支持的状态位置 “0”–DTCStatusMask - DTC状态掩码»请求具有相应状态的DTC各功能单元诊断服务各功能单元诊断服务•传输存储的数据功能单元–故障码 (DTC)属性•附加信息–Set Condition–Corrective Action–Snapshot Record–Extended Record–Priority–… …各功能单元诊断服务各功能单元诊断服务•传输存储的数据功能单元vReadDTCInformation (0x19)服务q子功能参数Hex 值值 bit 6-0描述描述约定约定00ISOSAEReservedM01reportNumberOfDTCByStatusMaskU02reportDTCByStatusMaskM03reportDTCSnapshotIdentificationU04reportDTCSnapshotRecordByDTCNumberU05reportDTCSnapshotRecordByRecordNumberU06reportDTCExtendedDataRecordByDTCNumberU07reportNumberOfDTCBySeverityMaskRecordU08reportDTCBySeverityMaskRecordU09reportSeverityInformationOfDTCU各功能单元诊断服务各功能单元诊断服务•传输存储的数据功能单元–ReadDTCInformation (0x19)服务•子功能参数Hex 值值 bit 6-0描述描述约定约定0AreportSupportedDTCU0BreportFirstTestFailedDTCU0CreportFirstConfirmedDTCU0DreportMostRecentTestFailedDTCU0EreportMostRecentConfirmedDTCU0FreportMirrorMemoryDTCByStatusMaskU10reportMirrorMemoryDTCExtendedDataRecordByDTCNumberU11reportNumberOfMirrorMemoryDTCByStatusMaskU12reportNumberOfEmissionsRelatedOBDDTCByStatusMaskU13reportEmissionsRelatedOBDDTCByStatusMaskUA_Data byteParameter NameCvtHex Value#1ReadDTCInformation Request Service IDM19#2sub-function=[ reportNumberOfDTCByStatusMask]M01#3DTCStatusMaskM00-FF各功能单元诊断服务各功能单元诊断服务•传输存储的数据功能单元vReadDTCInformation (0x19)服务qreportNumberOfDTCByStatusMask (0x01)子功能Ø请求报文各功能单元诊断服务各功能单元诊断服务•传输存储的数据功能单元–ReadDTCInformation (0x19)服务•reportNumberOfDTCByStatusMask (0x01)子功能–肯定响应报文A_Data byteParameter NameCvtHex Value#1ReadDTCInformation Response Service IDM59#2reportType=[ reportNumberOfDTCByStatusMask]M01#3DTCStatusAvailabilityMaskM00-FF#4DTCFormatIdentifier=[ ISO15031-6DTCFormat ISO14229-1DTCFormat SAEJ1939-73DTCFormat ISO 11992-4 DTCFormat]MMMM00010203#5DTCCounts[]=[ DTCCountHighByte DTCCountLowByte]MM00-FF00-FF各功能单元诊断服务各功能单元诊断服务•传输存储的数据功能单元vReadDTCInformation (0x19)服务qreportNumberOfDTCByStatusMask (0x01)子功能Ø示例•DTC P0805-11 Clutch Position Sensor - circuit short to ground, statusOfDTC=0x24•DTC P0A9B-17 Hybrid Battery Temperature Sensor - circuit voltage above threshold, statusOfDTC=0x02•DTC P2522-1F A/C Request “B” - circuit intermittent, statusOfDTC=0x2F•DTCStatusAvailabilityMask=0x2F•DTCStatusMask=0x08 •传输存储的数据功能单元–ReadDTCInformation (0x19)服务•reportNumberOfDTCByStatusMask (0x01)子功能–示例»statusOfDTC#1=0x24 B00100100»statusOfDTC#2=0x02 B00000010»statusOfDTC#3=0x2F B00101111 »DTCStatusMask=0x08 B00001000»DTCStatusAvailabilityMask=0x2F B00101111–进行“位与”运算»只有statusOfDTC#3 & (DTCStatusMask & DTCStatusAvailabilityMask) 为非零,因此报告1个DTC各功能单元诊断服务各功能单元诊断服务各功能单元诊断服务各功能单元诊断服务•传输存储的数据功能单元vReadDTCInformation (0x19)服务qreportNumberOfDTCByStatusMask (0x01)子功能Ø示例 - 消息流各功能单元诊断服务各功能单元诊断服务•传输存储的数据功能单元vReadDTCInformation (0x19)服务qreportDTCByStatusMask (0x02)子功能Ø请求报文A_Data byteParameter NameCvtHex Value#1ReadDTCInformation Request Service IDM19#2sub-function=[ reportDTCByStatusMask]M02#3DTCStatusMaskM00-FF各功能单元诊断服务各功能单元诊断服务•传输存储的数据功能单元–ReadDTCInformation (0x19)服务•reportDTCByStatusMask (0x02)子功能–肯定响应报文A_Data byteParameter NameCvtHex Value#1ReadDTCInformation Request Service IDM19#2sub-function=[ reportDTCByStatusMask]M02#3DTCStatusAvailabilityMaskM00-FF#4#5#6#7… …#n-3#n-2#n-1#nDTCAndStatusRecord[]=[ DTCHighByte#1 DTCMiddleByte#1 DTCLowByte#1 statusOfDTC#1 … … DTCHighByte#m DTCMiddleByte#m DTCLowByte#m statusOfDTC#m]CCCCCCCC00-FF00-FF00-FF00-FF… …00-FF00-FF00-FF00-FF•传输存储的数据功能单元–ReadDTCInformation (0x19)服务•reportDTCByStatusMask (0x02)子功能–示例»DTC P0805-11 Clutch Position Sensor - circuit short to ground, statusOfDTC=0x2F»DTC P0A9B-17 Hybrid Battery Temperature Sensor - circuit voltage above threshold, statusOfDTC=0x24»DTC P2522-1F A/C Request “B” - circuit intermittent, statusOfDTC=0x00»DTCStatusAvailabilityMask=0x7F»DTCStatusMask=0x84各功能单元诊断服务各功能单元诊断服务•传输存储的数据功能单元–ReadDTCInformation (0x19)服务•reportDTCByStatusMask (0x02)子功能–示例»statusOfDTC#1=0x2F B00101111»statusOfDTC#2=0x24 B00100100»statusOfDTC#3=0x00 B00000000»DTCStatusAvailabilityMask=0x7F B01111111»DTCStatusMask=0x84 B10000100–进行“位与”运算»只有statusOfDTC#1和statusOfDTC#2 & (DTCStatusMask & DTCStatusAvailabilityMask)为非零,因此报告2个DTC各功能单元诊断服务各功能单元诊断服务各功能单元诊断服务各功能单元诊断服务•传输存储的数据功能单元vReadDTCInformation (0x19)服务qreportDTCByStatusMask (0x02)子功能Ø示例-消息流各功能单元诊断服务各功能单元诊断服务•传输存储的数据功能单元vReadDTCInformation (0x19)服务qreportDTCByStatusMask (0x02)子功能Ø示例-消息流各功能单元诊断服务各功能单元诊断服务•传输存储的数据功能单元–ReadDTCInformation (0x19)服务•reportDTCSnapshotRecordByDTCNumber (0x04)子功能–SnapshotRecord - 快照记录»转速»档位»冷却液温度»… …–每个DTC可以有多组快照记录各功能单元诊断服务各功能单元诊断服务•传输存储的数据功能单元–ReadDTCInformation (0x19)服务•reportDTCExtendedDataRecordByDTCNumber (0x06)子功能–ExtendedDataRecord»故障的发生次数»故障发生的持续时间»故障发生后的行驶历程»… …各功能单元诊断服务各功能单元诊断服务•传输存储的数据功能单元–ReadDTCInformation (0x19)服务•reportSupportedDTCs (0x0A)子功能–请求报文A_Data byteParameter NameCvtHex Value#1ReadDTCInformation Request Service IDM19#2sub-function=[ reportSupportedDTCs]M0A各功能单元诊断服务各功能单元诊断服务•传输存储的数据功能单元–ReadDTCInformation (0x19)服务•reportSupportedDTCs (0x0A)子功能–肯定响应报文A_Data byteParameter NameCvtHex Value#1ReadDTCInformation Response Service IDM59#2sub-function=[ reportSupportedDTCs]M0A#3DTCStatusAvailabilityMaskM00-FF#4#5#6#7… …#n-3#n-2#n-1#nDTCAndStatusRecord[]=[ DTCHighByte#1 DTCMiddleByte#1 DTCLowByte#1 statusOfDTC#1 … … DTCHighByte#m DTCMiddleByte#m DTCLowByte#m statusOfDTC#m]MMMMCCCC00-FF00-FF00-FF00-FF… …00-FF00-FF00-FF00-FF各功能单元诊断服务各功能单元诊断服务•传输存储的数据功能单元–ReadDTCInformation (0x19)服务•支持的否定响应码–0x12: 不支持请求服务的子功能–0x13: 请求报文的数据长度(或者格式)不符合标准 –0x31: 请求超出范围–… …各功能单元诊断服务各功能单元诊断服务•传输存储的数据功能单元–ClearDiagnosticInformation (0x14)服务•清除故障信息–DTC–DTCStatusByte–DTCSnapshotRecord–DTCExtendedDataRecord•客户端只有通过 0x14服务才能清楚故障信息•0x14服务独立于其他任何服务各功能单元诊断服务各功能单元诊断服务•传输存储的数据功能单元–ClearDiagnosticInformation (0x14)服务•请求报文•肯定响应报文A_Data byteParameter NameCvtHex Value#1Clear Diagnostic Request Service IDM14GroupOfDTC=[ GroupOfDTCHighByte GroupOfDTCMiddleByte GroupOfDTCLowByte]MMM00-FF00-FF00-FFA_Data byteParameter NameCvtHex Value#1Clear Diagnostic Response Service IDM54各功能单元诊断服务各功能单元诊断服务•传输存储的数据功能单元–ClearDiagnosticInformation (0x14)服务•参数 - GroupofDTC•也可以为某个特定的DTCHex值值描述描述约定约定000000Emission-related systemsMOEM SpecificPowertrain GroupUChassis groupUBody groupUNetwork communication groupUFFFFFFAll GroupsM各功能单元诊断服务各功能单元诊断服务•传输存储的数据功能单元–ClearDiagnosticInformation (0x14)服务•支持的否定响应码–0x13: 请求报文的数据长度(或者格式)不符合标准 –0x21: 条件不满足–0x31: 请求超出范围–… …•输入输出控制功能单元–InputOutputControlByIdentifier (0x2F)服务•用于替换服务器输入信号的值或内部功能•控制电子系统的某个输出(执行器)各功能单元诊断服务各功能单元诊断服务各功能单元诊断服务各功能单元诊断服务•输入输出控制功能单元–InputOutputControlByIdentifier (0x2F)服务•请求报文A_Data byteParameter NameCvtHex Value#1InputOutputControlByIdentifier Request Service IDM31#2#3dataIdentifier=[ byte#1(MSB) byte#2(LSB)]MM00-FF00-FF#4…#4+(m-1)controlOptionRecord[]=[ controlState#1/InputOutputControlParameter … controlState#m]M…C100-FF…00-FF#4+m#4+m+(r-1)controlEnableMaskRecord[]=[ controlMask#1 controlMask#2]C2C200-FF00-FF各功能单元诊断服务各功能单元诊断服务•输入输出控制功能单元–InputOutputControlByIdentifier (0x2F)服务•肯定响应报文A_Data byteParameter NameCvtHex Value#1InputOutputControlByIdentifier Response Service IDM71#2#3dataIdentifier=[ byte#1(MSB) byte#2(LSB)]MM00-FF00-FF#4…#4+(m-1)controlStatusRecord[]=[controlState#1/InputOutputControlParameter … controlState#m]M…C100-FF…00-FF各功能单元诊断服务各功能单元诊断服务•输入输出控制功能单元–InputOutputControlByIdentifier (0x2F)服务•参数 - InputOutputControlParameterHex值值描述描述约定约定00returnControlToECUU01resetToDefaultU02freezeCurrentStateU03shortTermAdjustmentU04-FFISOSAEReservedM•输入输出控制功能单元–InputOutputControlByIdentifier (0x2F)服务•支持的否定响应码–0x13: 请求报文的数据长度(或者格式)不符合标准 –0x22: 条件不满足–0x31: 请求超出范围–0x33: 安全访问被拒绝–… …各功能单元诊断服务各功能单元诊断服务•远程激活例程控制功能单元– RoutineControl (0x31) 服务•用于远程请求启动、停止某个例程或请求例程的执行结果•同步/异步方式各功能单元诊断服务各功能单元诊断服务A_Data byteParameter NameCvtHex Value#1RoutineControl Request Service IDM31#2sub-function=[ routineControlType]M00-FF#3#4routineIdentifier[]=[ byte#1(MSB) byte#2(LSB)]MM00-FF00-FF#5…#nroutineControlOptionRecord[]=[ routineControlOption#1 … routineControlOption#m]C/U…C/U00-FF…00-FF各功能单元诊断服务各功能单元诊断服务•远程激活例程控制功能单元v RoutineControl (0x31) 服务q请求报文各功能单元诊断服务各功能单元诊断服务•远程激活例程控制功能单元–RoutineControl (0x31) 服务•肯定响应报文A_Data byteParameter NameCvtHex Value#1RoutineControl Request Service IDM71#2sub-function=[ routineControlType]M00-FF#3#4routineIdentifier[]=[ byte#1(MSB) byte#2(LSB)]MM00-FF00-FF#5…#nroutineStatusRecord[]=[ routineStatus#1 … routineStatus#m] C/U…C/U00-FF…00-FF各功能单元诊断服务各功能单元诊断服务•远程激活例程控制功能单元–RoutineControl (0x31) 服务•子功能参数 - routineControlTypeHex值值 bit 6-0描述描述约定约定00ISOSAEReservedM01startRoutineU02stopRoutineU03requestRoutineResutsU04-7FISOSAEReservedM各功能单元诊断服务各功能单元诊断服务•远程激活例程控制功能单元–RoutineControl (0x31) 服务•支持的否定响应码–0x12: 不支持请求服务的子功能–0x13: 请求报文的数据长度(或者格式)不符合标准 –0x22: 条件不满足–0x24: 请求顺序错误–0x31: 请求超出范围–0x33: 安全访问被拒绝–0x72: 一般编程错误各功能单元诊断服务各功能单元诊断服务•上传下载功能单元服务服务是否支持是否支持子功能子功能描述描述RequestDownload (0x34)—客户端请求下载一段程序客户端请求下载一段程序/数据数据RequestUpload (0x35)—客户端请求上传一段程序客户端请求上传一段程序/数据数据TransferData (0x36)—客户端客户端/服务器传送实际数据服务器传送实际数据RequestTransferExit (0x37)—客户端请求停止程序客户端请求停止程序/数据的传送数据的传送•上传下载功能单元–执行流程示例TesterECU2: RequestDownload_Rsp (最大的数据块长度)3: TransferData_Req (数据块序号,数据块)4: TransferData_Rsp1: RequestDownload_Req (数据格式,存储器地址,大小)5: TransferData_Req (数据块序号,数据块)6: TransferData_Rsp...n: RequestTransferdExit_Reqn+1: RequestTransferdExit_Rsp各功能单元诊断服务各功能单元诊断服务•上传下载功能单元–RequestDownload (0x34) 服务•初始化数据传输•ECU接收到请求后,完成所有下载前准备工作后,发送肯定响应。
各功能单元诊断服务各功能单元诊断服务A_Data byteParameter NameCvtHex Value#1RequestDownload Request Service IDM34#2dataFormatIdentifierM00-FF#3addressAndLengthFormatIdentifierM00-FF#4…#(m-1)+4MemoryAddress[]=[ byte#1(MSB) … byte#m]M…C100-FF…00-FF#n-(k-1)…#nMemorySize[]=[ byte#1(MSB) … byte#k ]M…C200-FF…00-FF各功能单元诊断服务各功能单元诊断服务•上传下载功能单元vRequestDownload (0x34) 服务q请求报文各功能单元诊断服务各功能单元诊断服务•上传下载功能单元–RequestDownload (0x34) 服务•肯定响应报文A_Data byteParameter NameCvtHex Value#1RequestDownload Response Service IDM74#2lenthFormatIdentifierM#3maxNumberOfBlockLength=[ byte#1(MSB) … byte#m ]M00-FF目录目录•概述•应用层接口服务•应用层协议•各功能单元诊断服务–诊断和通信管理功能单元 –数据传输功能单元 –传输储存的数据功能单元 –输入输出控制功能单元 –远程激活例程功能单元 –上传下载功能单元谢 谢更改历史更改历史版本版本更改描述更改描述更改日期更改日期更改人更改人1.0初始版本初始版本2008-05-07徐小娟徐小娟2010-03-10肖宽肖宽 谢谢!谢谢!。