unified diagnostic services 14229
standardized diagnostic communication
UDS只是应用层协议,既可以在CAN线上实现,也可以在Ethernet等上实现。
上层的诊断设备只要发送同样的命令就可以得到电控系统的数据,而不用关心底层的数据链路层、物理层等。
使得软件和硬件可以分开开发。
基于UDS协议的诊断又称为Enhanced diagnostic(增强型诊断)
The TESTER (client) sends arequesttoa specific ECU (e.g. #1) and the ECU(server) answers the request with aresponse.
UDS最重要的作用就是定义了这些request和response的格式和内容,诊断服务格式、诊断时间参数、以及诊断服务的正负响应行为。
UDS功能:
- 故障检测
- 故障数据记录与存储
- 快照信息读取
- 数据流监控与读取
- 程序刷写
- EOL(End Of Line)涉及的例程控制
- 数据写入(如VIN、下线完成标志位等)。
根据功能的不同进行访问--能访问多个ECU节点
UDS交互网络层要求符合ISO 15765-2,数据单元格式(N_PDU)如下
地址信息 协议控制信息 数据域
N_ACI N_PCI N_DATA
当使用普通地址时,地址全由CAN ID组成,N_PDU中不需要N_AI信息,即N_PDU中第一字节为N_PCI.我们目前CAN通讯都是用的普通地址。
N_PCI的第一个字节的高4位表示N_PDU的类型:0:单帧(SF)1:首帧(FF)2:连续帧(CF)3:流控帧(FC)
DL:数据域有效数据长度
SN:连续帧帧编号
- 单帧的情况:SF_DL的值应该在1~7之间,如果SF_DL的长度不在此范围内,应舍弃该帧报文。
- 首帧的情况:有效数据长度扩展为FF_DL,值应该在8~FFF之间,如果FF_DL长度超过接受者的接受缓存,应该丢弃该帧报文,并反馈FC报文,报Overflow。如果FF_DL长度在允许范围内,接希望接收后续报文,则接收方需要应答FC流控帧。
- 连续帧情况:在首帧之后的第一帧SN为1,之后每发送一帧SN+1,当SN的值达到15时,下一帧发送时SN从0开始。如果SN出错,接收方要丢弃已接收到的消息,并调用N_USData.indication服务,反馈N_WRONG_SN
- 流控帧的情况:FS有4个定义:
- 0:发送方可以正常连续帧
- 1:发送方需要等待下一个FC,并重启N_BS timer:
- 2:Overflow,表示接受方缓存溢出,无法接收发送方请求的长度。发送方收到此FS后应终止发送。
- BS:表示发送方在收到下一个FC之前,应发送的CF的数量,如果是最后一块数据,可以小于该值。发0表示发送方不受限制。
- Stmin:表示发送方连续两个CF之间的最小间隔时间。0~0x7F表示0~127ms。0xFA~0xFF 保留值,设置为127ms。
对于整个数据单元,N_PCI结束后的区域即为数据域,才是UDS控制指令数据开始段。
UDS协议为各种功能控制设定了控制指令,称为服务ID(SID)。
每个服务ID根据定义需要可以包含指定参数或者子服务指令。