UDS诊断初步入门

名词解释

名词 解释 交互方式
MDA Master Download Agent 主节点 OTA服务器
HMI Human Machine interface 人机交互接口 用户
VHI vehicle Host interface 车辆宿主接口 车辆
SDA Slave Download Agent 从节点 更新宿主ECU
UDS Unified Diagnostic Services 同意诊断服务
N_PDU Network_Protocol Data Unit 网络层协议数据单元,包含N_AI,N_PCI,N_Data。即地址信息,协议控制信息和数据
N_PCI Protocol Control Information 协议控制信息

ECU 电子单元名词解释

名词 解释中文
VCU—— Vehicle Control Unit 整车控制器
MCU—— Motor Control Unit 电机控制器
BMS —— Battery Manage System 电池管理系统
DCDC —— DC-to-DC converter 直流转换器
OBC —— On-board Charger 车载充电机
CDU —— Conversion & Distribution Unit DC/DC变换器、车载充电机、⾼压接线盒等功能集成的⾼压“电控”集成系统
ATC —— Automatic Temperature Control 空调控制器
EAC —— Electrical Air Condition 电动压缩机控制模块
ABS —— Anti-locked Braking System 防抱死刹车系统
EPS —— Electriaca Power Steering 电子转向助力
BCM —— Body Control Module 车身控制模块
IC —— Intrument Cluster 仪表
T-BOX —— Telematics BOX 远程通讯模块
ISC —— Imitation Sound controller 拟声装置
EMS —— Engine Management System 发动机管理系统
4WD —— 4 Wheel Driver 四驱系统
PEPS —— Passive Entry Passive Start 无钥匙进入/启动系统
ESCL —— Electronic Steering Column Lock 电子转向柱锁
TCU —— Transmission Control Unit 变速器控制单元
EPB —— Electrical Parking Brake 电子驻车系统

</br></br>

5.png

OSI协议

1.png

26个UDS服务

2.png

NRC

3.png
SID服务 描述
11服务 ECU重启,如1101
28服务 通讯控制服务,开启/关闭一个或多个控制器特定报文的发送和/或接收,可针对网络管理信息和正常通讯信息
85服务 诊断故障代码设置控制服务,用于停止或恢复控制器中诊断故障码的设置功能。如8502
14服务 清除诊断信息DTC服务,用于诊断设备清除一个或者多个控制器中的诊断信息DTC,如14FFFFFF
22服务 通过标识符读数据,该服务通过一个或多个数据标识符请求获得ECU定义的数据记录值,主机厂会针对每个需要读取的信息,如软件版本号,硬件版本号,供应商代码,零件号之类的都设置一个独立的DID,比如F180,F188,F1C0
2E服务 通过标识符写数据,OTA一般在刷写前或者后,使用该服务,写入一个自己的刷写指纹
34服务 (RequestDownload),请求下载数据,诊断仪向ECU请求下载数据
35服务 (RequestUpload),请求上传数据,诊断仪向ECU请求上传数据
36服务 (TransferData),数据传输,诊断仪向ECU传数据(下载),或者ECU向诊断仪传数据(上传)
37服务 (RequestTransferExit),数据传输完成,请求退出
38服务 (RequestFileTransfer),请求文件传输,可以用于替代上传下载的服务

刷写一个bin文件,可以简单地认为34->36->36->36->....->36->37|

UDS

  1. UDS本质上是一种交互协议(Request/Response),即诊断方(Tester)给ECU发送指定的请求数据(Request),ECU返回诊断方这个请求的响应数据(Response)
  2. 请求数据中最主要的就是SID,SID处于该应用层数据的第一个字节
  3. UDS的请求命令有4种构成方式,即SID,SID+SF(Sub-function),SID+DID(DataIdentifier),SID+SF+DID。每种服务都有自己不同的构成方式,查看诊断规范即可,不用死记硬背。如22服务,则发送数据为“22F1C0”,F1C0就是DID
  4. 响应数据就一定会有正常响应和错误响应,我们叫做正响应和负响应
  5. 如果ECU是肯定的响应(PositiveResponse),首字节回复[SID+0x40],举例子就是请求0x10,响应0x50,即为“50xx”;请求0x22,响应0x62,即为“62xxxxxxxxxx”
  6. 如果是否定的响应(NegativeResponse),首字节回复0x7F,第二字节回复刚才询问的SID。比如Tester请求0x10服务,我想进入编程模式,ECU给出否定响应,首字节0x7F,第二字节回复0x10,代表我否定你的0x10服务请求,第三字节是NRC(否定响应码),代表我否定你的理由,即为“7F10xx”
  7. 这里提一下一个特殊的NRC——0x78,requestCorrectlyReceived-ResponsePending(RCRRP,请求已被正确接收-回复待定)。这个NRC表明请求消息被正确地接收,请求消息中的所有参数都是有效的,但是要执行的操作还没有完成,Server端还没有准备好接收另一个请求。一旦请求的服务已经完成,服务器应该发送一个最终响应,响应代码应与此不同。78负响应需要被Server端重复,直到被请求的服务完成并且最终的响应消息被发送。
  8. 如31擦除指令,ECU需要时间执行,无法在超时时间内给出最终响应,那么ecu需要主动返回7F3178,让Tester等待,并持续发送直到动作完成,给出最终响应为止。
  9. 既然是交互,那么每一方需要有地址(寻址信息)
    10.所谓的寻址信息包含了源地址(SourceAddress)和目标地址(TargetAddress),就是这条信息是由谁发给谁的,类似于收件人和发件人。当ECU回信给Tester时,ECU就变成源地址了
  10. UDS的寻址模式分两种,一种是物理寻址(点对点、一对一),根据物理地址的不同进行访问,但只能访问单个ECU节点。对应的,另一种是功能寻址(广播、一对多),根据功能的不同进行访问,它能访问多个ECU节点,对于CAN来说,通常是0x7DF,对于Ethernet,通常是0XE400
  11. 对于CAN,每一个ECU都有2个CAN的诊断帧ID,分别对应物理寻址的收与发。通常由主机厂来确定不同ECU的这两个特定的诊断ID。比如0x701对应接收Tester的消息,0x709对应发给Tester的消息
  12. 对于Ethernet,每个ECU一般用一个地址来进行收发。这个地址叫做逻辑地址。

Diagnostic Session

0x00 :ISOSAEReserved(保留)
0x01 :defaultSession(默认会话)
0x02 :ProgrammingSession(编程会话)
0x03 :extendedDiagnosticSession(扩展会话)
0x04 :safetySystemDiagnosticSession
0x05 – 0x3F : ISOSAEReserved(保留)
0x40 – 0x5F :vehicleManufacturerSpecific(由整车厂自定义使用)
0x60 – 0x7E :systemSupplierSpecific(由ECU供应商自定义使用)
0x7F :ISOSAEReserved(保留)
4.png

ECU在刚上电或者复位之后处于默认会话模式(0x01),默认会话模式下发送10 03可以切换至拓展会话模式(0x03),拓展会话模式发送10 02可以切换至编程会话模式(0x02),而在默认会话模式不可以直接切换至编程会话模式

诊断会话控制,CAN报文样例
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16
02 10 03 00 00 00 00 00
06 50 03 00 32 13 88 00

  1. 请求报文中,02表示单帧2个字节,10为服务ID 0x10 诊断会话控制,03为切换为extendedDiagnosticSession
  2. 响应报文中,06表示单帧6个字节,50为服务ID 0x10+0x40,03为子功能extendedDiagnosticSession,00 32 13 88为应用层超时参数P2
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容