UDS诊断学习总结

Contents
UDS诊断是什么?
UDS(Unified diagnostic services)统一的诊断服务,它是一个应用层的协议,由ISO14229标准定义。 在OSI模型中,ISO14229处于应用层:
通过诊断能做什么?
功能监控、错误检测、记录或存储故障信息、读取数据、EOL、再编程、节点验证等。
诊断的运行机制?
应用层协议数据格式?
应用层协议数据单元(A_PDU)由应用层协议控制信息(A_PCI)和应用层服务数据单元(A_SDU)组成。 协议控制信息也称服务标识,如下表:
服务标识分为三类:请求服务服务标识(1byte)、肯定响应服务标识符(1byte,等于请求服务标识+0x40)、否定响应服务标识符(1byte,固定为0x7F)。
如果请求的服务带子功能的话,参数1作为子功能标识符。
子功能参数定义:
注:多数厂商的诊断服务子功能都不会禁止肯定响应。
网络层协议数据格式?
基于ISO15765的数据传输规则,传输方式分为两种:单帧传输和多帧传输。
单帧传输
N_PCI格式如下:
多帧传输:
多帧传输中,发送方会发送首帧(FF)来发送数据,接收方会发送流控帧(FC)来控制接下来的数据的发送,接着发送方再发送后续帧(CF)。
首帧的N_PCI格式如下:
流控帧的N_PCI格式如下:
注:若后两字节都为0表示后续帧可任意每次以最大量帧发送。
后续帧的N_PCI格式如下:
地址格式分为四种:常规寻址,常规固定寻址,扩展寻址,混合寻址。在车厂中最常用的是常规寻址。
- 常规寻址:仅用于11位CANID,网络层地址信息N_AI映射到CANID,具体的映射规则由车厂自定义,对于同一个ECU的物理寻址和功能寻址采用不同的两对固定预先分配好的ID。
- 常规固定寻址:仅用于29位CANID,完整定义了N_AI如何映射到29位CANID。数据域的第一字节为远程地址,29位CANID中前三位为110b表示诊断帧,第25和24位为0,第16到23位表示此种寻址方式下是物理寻址还是功能寻址,后16位分别标志目标地址和源地址。
- 扩展寻址:仅用于11位CANID,其第一个数据字节需放置目标地址信息,第二个数据字节为网络层的协议控制信息(N_PCI)。
- 混合寻址:有11位CANID与29位CANID,用于远程寻址即被诊断网络处于不同网段,第一个数据字节为扩展地址信息。29位ID的混合寻址方式格式如下: