诊断协议概述
概述
-
-
- 引子
- 任何故障的解决,通常来说,都离不开三大要素:一本指导说明书、一箱趁手工具、还有一群现实以及云师傅。随着汽车电子化进程的逐步发展,应用到车载端的电气部件出了问题,同样需要这三大要素来解决,这就是我们需要学习的:诊断规范、诊断工具、以及合格的诊断工程师。
- 诊断通常能做什么?
- 通常情况下,诊断用于功能监控、错误检测、记录/存储故障信息、读取数据等...此外还有EOL、再编程、节点验证等...。这一切功能实现的前提条件是完善的诊断规范。
- 诊断规范
- 诊断规范描述了一系列的诊断服务,定义ECU与诊断仪之间的请求响应规则、ECU对于请求报文的处理行为以及请求、响应报文的信息含义的解析。是ECU与诊断仪之间进行诊断通信必不可少的一部分。
- 相关的诊断规范
- ISO 14230、ISO 14229-1、ISO 15765等
- OBD-On Board Diagnostics
- 诊断框架与机制
- 基于CAN网络实现诊断协议、诊断数据的传输,达到非车载诊断设备诊断故障的目的。
- 引子
-
主要诊断协议
-
-
- 基于K线
-
-
-
- 基于CAN线
-
-
-
- ISO 14230与ISO 15765比较
-
-
-
- 现在基本上还在使用的是基于CAN的诊断协议
-
基本概念、术语
-
-
- 客户端(Client):诊断请求的提出者,例如诊断仪发送诊断请求
- 服务器端(Server):诊断响应的提供者
- 诊断通信的流程:
-
-
-
- 物理通信(1:1):采用物理寻址方式通信的场景,即客户端与服务器之间一对一的诊断通信方式
- 功能通信(1:N):采用功能寻址方式通信的场景,即客户端向多个服务器发出同一功能的诊断请求的通信方式
- 源地址SA:发送节点地址
- 目标地址TA:接收节点地址
- 诊断会话模式:默认会话/非默认会话(扩展会话、编程会话)
-
-
-
- 安全状态:锁定模式、解锁模式
-
ISO15765体系结构
整体按照网络分层结构,各层级对应的标准有:
网络层(ISO 15765-2)
-
-
-
-
- 功能
- -将数据从发送方传递给接收方
- -保证数据传输的可靠性
- 多包数据的传输:打包/解包、同步/定时、流控制、错误处理
- -应用层数据与CAN数据帧的转换
- 功能
-
-
-
-
-
-
-
- 数据传输规则
- 单帧数据传输
- 相关概念
- SF(SingleFrame)单帧:只传输一帧的报文,叫做单帧
- 传输格式
- 第一个字节(单帧标志位-传输数据长度)-传输数据
- 相关概念
- 单帧数据传输
- 数据传输规则
-
-
-
-
-
-
-
-
- 多帧数据传输
- 相关概念
- 传输的数据较多,单帧无法传输完成,需要分步传输
- FF(First Frame)首帧:多帧数据传输的第一帧报文。格式包括首帧标识,数据总长度以及部分传输数据
- 相关概念
- 多帧数据传输
-
-
-
-
-
-
-
-
-
-
-
- FC(Flow Control)流控帧:用于表征后续数据传输的状态。格式包括流控帧标识,数据流状态,允许一次连续发送传输帧的数量,传输时间。
-
-
-
-
-
-
-
-
-
-
-
-
-
- CF(Consecutive Frame)连续帧:用于连续传输数据。格式为连续帧标识、帧序号、传输数据。
-
-
-
-
-
-
-
-
-
-
-
-
- 传输格式
- 按照首帧-流控帧-连续帧的方式进行数据的传输,直到所有数据传输完成,首帧只发送一次。
- 传输格式
-
-
-
-
-
-
-
-
-
- 网络层定时
- 相关概念
- 相关概念
- 网络层定时
-
-
-
-
-
-
-
-
-
-
- N_As 发送方CAN报文确认时间
- N_Ar 接收方CAN报文确认超时
- N_Bs FC超时
- N_Br 网络层FC接收端发送等待时间
- N_Cs STmin ,不小于传输CF的时间
- N_Cr CF超时
-
- 定时参数
-
-
-
-
-
-
-
-
-
- 网络层与应用层 服务接口
- 在OSI模型中的对应关系如下
- 网络层与应用层 服务接口
-
-
-
-
-
-
-
-
- 接口信息的对应关系如下,N_PCI用于控制单帧还是多包机制发送
-
-
-
-
-
-
-
-
-
-
- N_PDU(network protocol data unit) N_AI(address information) N_PCI(network protocol control information)
-
- 网络层与数据链路层服务接口
- 在OSI模型中的对应关系如下
-
-
-
-
-
-
-
-
-
- 接口信息的对应关系如下
-
-
-
-
-
-
-
-
- 寻址模式(SF为例)
- 将N_PDU映射到CAN数据帧的不同位置,构成了4种地址格式
- 常规寻址-11位CANID
- N_AI映射到CANID,但没有规定N_AI与CAN ID的具体映射关系
- 常规寻址-11位CANID
- 将N_PDU映射到CAN数据帧的不同位置,构成了4种地址格式
- 寻址模式(SF为例)
-
-
-
-
-
-
-
-
-
- 常规固定寻址-29位CANID
- 完整定义了N_AI如何映射到29位CAN ID
- 物理寻址
- 完整定义了N_AI如何映射到29位CAN ID
- 常规固定寻址-29位CANID
-
-
-
-
-
-
-
-
-
-
-
-
-
- 功能寻址
-
-
-
-
-
-
-
-
-
-
-
-
-
- 扩展寻址-11位CANID
- N_AI中的N_TA映射到CAN数据帧的第一个字节,N_AI的其它域映射到CAN ID
- 扩展寻址-11位CANID
-
-
-
-
-
-
-
-
-
-
-
- 混合寻址-11或29位CANID
- 仅用于远程寻址
- 混合寻址-11或29位CANID
-
-
-
-
-
-
-
-
-
-
-
-
-
- 物理寻址
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 功能寻址
-
-
-
-
-
-
-
应用层
-
-
-
-
- 应用层服务(ISO 14229-1)
- 应用层协议基于CAN的实现(ISO 15765-3)
- 通信/诊断管理功能
-
-
-
-
-
-
-
-
-
- DiagnosticSessionControl (0x10)服务
- 功能:用于使能服务器中不同的诊断会话,包括默认会话模式、编程模式、扩展模式,不同的模式具有不同的功能、不同的定时参数、受到不同的安全访问保护。
- 诊断会话模式状态转移图
- 功能:用于使能服务器中不同的诊断会话,包括默认会话模式、编程模式、扩展模式,不同的模式具有不同的功能、不同的定时参数、受到不同的安全访问保护。
- DiagnosticSessionControl (0x10)服务
-
-
-
-
-
-
-
-
-
-
-
-
-
- 不同会话允许的诊断服务
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 请求报文:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- diagnosticSessionType子功能参数
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 肯定响应:
-
-
-
-
-
-
-
-
-
-
-
-
-
- 否定响应码
- 0x12: 不支持请求服务的子功能
- 0x13: 请求报文的数据长度(或者格式)不符合标准
- 0x22: 条件不满足
- 消息流示例
- 否定响应码
-
-
-
-
-
-
-
-
-
-
-
-
- SecurityAccess (0x27)服务
- 安全访问过程本质
- SecurityAccess (0x27)服务
-
-
-
-
-
-
-
-
-
-
-
-
- 请求报文
- requestSeed
- 请求报文
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- sendkey
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 子功能securityAccessType
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 肯定响应
-
-
-
-
-
-
-
-
-
-
-
-
-
- 支持的否定响应码
-
-
-
-
-
-
-
-
-
-
-
-
-
- 消息流示例
- 请求种子
- 消息流示例
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 发送秘钥
-
-
-
-
-
-
-
-
-
-
-
-
-
- CommunicationControl (0x28)服务
- 功能:用于打开/关闭服务器对非诊断信息的发送/接收
- 请求报文
- CommunicationControl (0x28)服务
-
-
-
-
-
-
-
-
-
-
-
-
-
- 子功能
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 肯定响应
-
-
-
-
-
-
-
-
-
-
-
-
-
- 支持的否定响应码
-
-
-
-
-
-
-
-
-
-
-
-
-
- 消息流示例
-
-
-
-
-
-
-
-
-
-
-
-
- TesterPresent (0x3E)服务
- 功能:用于向服务器指示诊断仪仍然连接在网络上,先前激活的特定诊断服务和/或通信功能仍然保持激活状态。周期性进行发送
- 请求报文
- TesterPresent (0x3E)服务
-
-
-
-
-
-
-
-
-
-
-
-
- 肯定响应
-
-
-
-
-
-
-
-
-
-
-
-
-
- 支持的否定响应码
-
-
-
-
-
-
-
-
-
-
-
-
-
- 消息流示例
-
-
-
-
-
-
-
-
-
-
-
-
- EcuReset (0x11)服务
- 请求ECU执行复位
- AccessTimingParameter (0x83)服务
- 用于读取和修改通信链路的定时参数
- SecuredDataTransmission (0x84)服务
- 用于保护数据传输免遭第三方攻击
- ControlDTCSetting (0x85) 服务
- 用于停止或恢复诊断故障码的设置
- ResponseOnEvent (0x86)服务
- 用于启动或停止服务器中某个特定事件触发的响应
- 客户端指定事件和事件发生时执行的服务,包括:
- EcuReset (0x11)服务
-
-
-
-
-
-
-
-
-
-
- 数据传输功能
- ReadDataByIdentifier (0x22) service
- 数据传输功能
-
-
-
-
-
-
-
-
-
-
-
- ReadDataByIdentifier (0x22)服务
- 数据标识符DID详见14229-1附录C定义,DID所表示参数的格式由制造商自行约定
- 请求报文
- ReadDataByIdentifier (0x22)服务
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 肯定响应
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ReadMemoryByAddress (0x23) 服务
- 功能:客户端读取服务器中指定的内存数据,内存数据由请求报文中的起始内存地址和内存大小指定
- 请求报文
- ReadMemoryByAddress (0x23) 服务
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 肯定响应
-
-
-
-
-
-
-
-
-
-
-
-
- 传输存储的数据功能
- DTC—Diagnostic Trouble Code
- ISO14229-1/ISO15031- 6 DTCFomat
- DTC—Diagnostic Trouble Code
- 传输存储的数据功能
-
-
-
-
-
-
-
-
-
-
-
-
- DTC的状态( DTCStatus)Bit0为1表示DTC当前存在
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- J1939-73 DTCFormat
-
-
-
-
-
-
-
-
-
-
-
-
-
- ISO15031- 6 DTCFomat
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 根据不同的系统故障码区分类别,DTCLowByte通常为失效类型
-
-
-
-
-
-
-
-
-
-
-
-
-
- ClearDiagnosticInformation (0x14) 服务
- groupOfDTC参数-描述所清除诊断信息所属的组
- ClearDiagnosticInformation (0x14) 服务
-
-
-
-
-
-
-
-
-
-
-
- ReadDTCInformation (0x19)服务
- 子功能
- ReadDTCInformation (0x19)服务
-
-
-
-
-
-
-
-
-
-
-
-
-
- 19 01reportNumberOfDTCByStatusMask子功能
- 请求报文
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 肯定响应
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 示例: 3个DTC,分别为P0805-11(statusOfDTC=0x24 )/P0A9B-17 (statusOfDTC=0x02 )/P2522-1F (statusOfDTC=0x2F ),DTCStatusAvailabilityMask=2F
- 消息流:只有故障P2522-1F的statusOfDTC& (DTCStatusMask &DTCStatusAvailabilityMask) 为非零,因此只有一个DTC
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 19 02reportDTCByStatusMask子功能
- 请求报文
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 肯定响应
-
-
-
-
-
-
-
-
-
-
-
-
- 输入输出控制功能单元
- InputOutputControlByIdentifier (0x2F)服务
- 功能:用于替换服务器输入信号的值或内部功能、控制电子系统的某个输出(执行器)
- 请求报文
- InputOutputControlByIdentifier (0x2F)服务
- 输入输出控制功能单元
-
-
-
-
-
-
-
-
-
-
-
- 响应报文
-
-
-
-
-
-
-
-
-
-
-
-
-
- 支持的否定响应码
-
-
-
-
-
-
-
-
-
-
-
- 例程控制功能单元
- RoutineControl (0x31) 服务
- 功能:用于远程请求启动、停止某个例程或请求例程的执行结果
- 请求报文
- RoutineControl (0x31) 服务
- 例程控制功能单元
-
-
-
-
-
-
-
-
-
-
-
-
- 子功能
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 肯定响应
-
-
-
-
-
-
-
-
-
-
-
-
-
- 支持的否定响应码
-
-
-
-
-
-
-
-
-
-
-
- 上传下载功能单元
- 传输过程
- 上传下载功能单元
-
-
-
-
-
-
-
-
-
-
- RequestDownload (0x34)服务
- 功能:初始化数据传输。ECU接收到请求后,完成所有下载前准备工作后,发送肯定响应
- 请求报文
- RequestDownload (0x34)服务
-
-
-
-
-
-
-
-
-
-
-
-
- 肯定响应
-
-
-
-
-
-
排放相关诊断内容
-
-
-
-
- 依据OBD, ISO15765-4对ISO15765-2和ISO11898进行了限定
- 诊断服务: ISO15031-5
-
-
-