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