三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

ZEV OBD(零排放车辆车载诊断)详解及举例

ZEV OBD(零排放车辆车载诊断)详解及举例

一、ZEV OBD 基本概念

1.1 什么是 ZEV OBD?

ZEV OBD(Zero Emission Vehicle On-Board Diagnostics)是专门为零排放车辆(纯电动车BEV、燃料电池车FCEV)及插电式混合动力车(PHEV)设计的车载诊断系统。

传统 OBD-II(SAE J1979)是围绕内燃机尾气排放设计的,而 ZEV OBD 则将诊断重心转向电驱动推进系统(Propulsion System)的安全与性能监测。

项目说明
核心标准SAE J1979-3(ZEVonUDS)
上位标准SAE J1979(OBD-II)/ ISO 15031
底层协议UDS(ISO 14229)+ CAN / DoIP(ISO 13400)
法规驱动美国 CARB(加州空气资源委员会)ZEV 法规
适用车型BEV、FCEV、PHEV(纯电模式)
实施时间2026车型年起逐步实施,2028车型年全面强制

1.2 为什么需要 ZEV OBD?

传统OBD-II的局限: ┌─────────────────────────────────────────────┐ │ ✗ 监测对象:催化器、氧传感器、燃油蒸发... │ │ ✗ 不适用于:无发动机、无排气系统的纯电车 │ │ ✗ 无法覆盖:电池热失控、电机绝缘失效等 │ │ ✗ 缺乏:充电系统、高压安全等诊断定义 │ └─────────────────────────────────────────────┘ ZEV OBD 的必要性: ┌─────────────────────────────────────────────┐ │ ✓ 监测三电系统:电池(BMS)、电机(MCU)、电控 │ │ ✓ 高压安全:绝缘监测、热管理、接触器状态 │ │ ✓ 充电安全:OBC、DC/DC、充电通信 │ │ ✓ 法规强制:年检、召回、环保监管依据 │ │ ✓ 标准化:统一诊断接口,第三方设备可读 │ └─────────────────────────────────────────────┘

二、标准体系与架构

2.1 标准族关系

SAE J1979(OBD-II 总标准) ├── SAE J1979-1 → 传统OBD(ICE车辆,基于CAN/KWP) ├── SAE J1979-2 → OBDonUDS(ICE车辆,基于UDS) └── SAE J1979-3 → ZEVonUDS(零排放车辆,基于UDS)★ ├── 引用 ISO 14229(UDS) ├── 引用 ISO 15765-4(CAN传输) ├── 引用 ISO 13400(DoIP传输) └── 引用 SAE J1979-DA(PID/DTC定义)

2.2 ZEVonUDS vs OBDonUDS vs 传统OBD-II

对比项传统 OBD-IIOBDonUDSZEVonUDS
标准号SAE J1979SAE J1979-2SAE J1979-3
底层协议CAN/KWP2000UDS (ISO 14229)UDS (ISO 14229)
传输层ISO 15765-4ISO 15765-4ISO 15765-4 / ISO 13400(DoIP)
监测对象排放系统排放系统电驱动推进系统
尾气相关函数✅ 有✅ 有❌ 无
安全访问无需无需无需(法规强制公开)
适用车型ICEICEBEV / FCEV / PHEV

2.3 通信架构

┌──────────────┐ ┌──────────────────────────────────┐ │ 诊断仪 │ CAN │ 车辆网关 │ │ (Tester) │◄──────►│ (Central Gateway ECU) │ │ │ DoIP │ │ │ 物理地址: │◄──────►│ 路由到目标ECU: │ │ 0x641 │ │ ┌─────┐ ┌─────┐ ┌─────┐ │ │ 功能地址: │ │ │ BMS │ │ MCU │ │ VCU │ │ │ 0x6DF │ │ └─────┘ └─────┘ └─────┘ │ └──────────────┘ │ ┌─────┐ ┌─────┐ ┌─────┐ │ │ │ OBC │ │DC/DC│ │ PTC │ │ │ └─────┘ └─────┘ └─────┘ │ └──────────────────────────────────┘

关键地址(与传统OBD一致):

  • 功能寻址(广播):0x6DF
  • 物理寻址(点对点):0x641(默认)
  • 响应地址:0x649/0x6F1

三、ZEV OBD 诊断服务(基于 UDS)

ZEVonUDS 使用UDS 服务作为底层,但限定了必须支持的服务子集

3.1 必须支持的 UDS 服务

SID服务名称ZEV OBD 用途
0x10DiagnosticSessionControl切换到 OBD 会话(默认会话即可)
0x14ClearDiagnosticInformation清除 DTC
0x19ReadDTCInformation读取 DTC(含状态、快照、扩展数据)
0x22ReadDataByIdentifier读取 PID 数据流
0x2EWriteDataByIdentifier写入特定标识(如VIN)
0x3ETesterPresent保持会话活跃
0x85ControlDTCSetting控制 DTC 设置(开发阶段用)
0x86ResponseOnEvent事件触发响应

3.2 与传统 OBD Mode 的映射关系

传统 OBD ModeZEVonUDS 对应 UDS 服务说明
Mode 01(实时数据)0x22ReadDataByIdentifier通过 DID 读取 PID
Mode 02(冻结帧)0x19ReadDTCInformation (sub 0x04)读取 DTC 快照
Mode 03(存储DTC)0x19ReadDTCInformation (sub 0x02/0x0A)读取已确认 DTC
Mode 04(清除DTC)0x14ClearDiagnosticInformation清除所有 DTC
Mode 07(Pending DTC)0x19ReadDTCInformation (sub 0x01)读取待确认 DTC
Mode 09(车辆信息)0x22ReadDataByIdentifier通过特定 DID 读取
Mode 0A(永久DTC)0x19ReadDTCInformation (sub 0x09)读取永久 DTC

四、ZEV OBD 监测器(Monitors)

4.1 监测器概念

与传统 OBD 的"就绪状态监测器"类似,ZEV OBD 定义了针对电驱动系统的监测器:

监测器英文名称监测内容
电池系统监测Battery System MonitorSOC/SOH、单体电压、温度、绝缘
电机系统监测Electric Machine Monitor转速、扭矩、温度、绕组绝缘
逆变器监测Inverter MonitorIGBT温度、母线电压、PWM异常
充电系统监测Charging System MonitorOBC、DC快充通信、充电电流
DC/DC转换器监测DC/DC Converter Monitor输出电压、效率、过温
高压互锁监测HV Interlock Monitor高压连接器完整性
绝缘监测Isolation Monitor高压系统对地绝缘电阻
热管理监测Thermal Management Monitor冷却液温度、流量、泵状态
接触器监测Contactor Monitor主正/主负/预充接触器状态
能量回收监测Regenerative Braking Monitor回收扭矩、制动协调

4.2 监测器状态读取

通过 UDS0x22服务读取特定 DID,获取各监测器的完成状态:

请求: 03 22 F1 01 00 00 00 00 ← 读取DID 0xF101(ZEV监测器状态) 响应: 06 62 F1 01 FF 03 00 00 ← 各监测器状态位图 ↑ ↑ | └─ 0x03 = 电池+电机监测已完成 └──── 0xFF = 所有监测器支持

五、ZEV OBD PID(数据标识符)

5.1 PID 定义方式

ZEVonUDS 中,传统 OBD 的 "Mode+PID" 被映射为 UDS 的DID(Data Identifier)

传统OBD: Mode 01 + PID 0x0C → 发动机转速 ZEVonUDS: SID 0x22 + DID 0xF1xx → 电机转速/电池SOC等

5.2 ZEV 专用 PID/DID 列表(典型)

DID名称字节数公式/说明范围
F100ZEV PID 支持列表4位图
F101ZEV 监测器状态4位图(各监测器完成状态)
F102冻结帧 DTC3触发冻结帧的 DTC
F200动力电池 SOC2(A×256+B)/100~100.0%
F201动力电池 SOH2(A×256+B)/100~100.0%
F202电池包总电压2(A×256+B)/100~1000.0 V
F203电池包总电流2(A×256+B)/10 − 500−500~500 A
F204电池最高温度1A − 40−40~215°C
F205电池最低温度1A − 40−40~215°C
F206电池最高单体电压2(A×256+B)/10000~5.000 V
F207电池最低单体电压2(A×256+B)/10000~5.000 V
F208电池绝缘电阻2(A×256+B)×100~655350 kΩ
F300电机转速2(A×256+B) − 20000−20000~45000 rpm
F301电机扭矩2(A×256+B)/4 − 500−500~1500 Nm
F302电机绕组温度1A − 40−40~215°C
F303逆变器 IGBT 温度1A − 40−40~215°C
F304逆变器母线电压2(A×256+B)/100~1000 V
F400充电状态1枚举(0=未充电,1=交流,2=直流)
F401充电电流2(A×256+B)/100~500 A
F402充电电压2(A×256+B)/100~1000 V
F403剩余充电时间2A×256+B0~65535 min
F500高压互锁状态10=正常, 1=断开
F501主接触器状态1位图(主正/主负/预充)
F502DC/DC 输出电压2(A×256+B)/1000~16.00 V
F503冷却液温度1A − 40−40~215°C
F600累计行驶里程4A×2^24+B×2^16+C×256+D0~4294967 km
F601累计耗电量4(A×2^24+...)/100~429496.7 kWh

六、ZEV OBD DTC(故障码)

6.1 DTC 格式

ZEV OBD 沿用ISO 14229 / SAE J2012的 3字节 DTC 格式(6位十六进制),但定义了电动车专用故障码段

DTC 范围系统说明
P0Axx~P0Axx混合动力/电动车SAE 标准通用 EV 故障码
P1Axx~P1Axx混合动力/电动车厂商自定义 EV 故障码
P2Axx~P2Axx混合动力/电动车SAE 预留
U01xx~U01xx网络通信ECU 间通信丢失
U3Axx~U3Axx电池通信BMS 内部通信

6.2 常见 ZEV 故障码

DTC含义常见原因
P0A80混合动力/电动车电池包故障电池模组异常、BMS故障
P0A1F电池能量控制模块BMS 内部故障
P0A78混合动力/电动车逆变器温度过高冷却系统故障、过载
P0A79混合动力/电动车逆变器性能IGBT损坏、驱动异常
P0A0A高压互锁回路断开连接器松动、线束断裂
P0A0B高压互锁回路性能接触电阻过大
P0A1A发电机(电机)控制模块MCU 故障
P0A1B驱动电机A控制模块MCU 内部故障
P0A3A电机温度传感器电路传感器断路/短路
P0A3B电机温度传感器范围/性能传感器漂移
P0A7A逆变器温度传感器电路传感器故障
P0A90混合动力/电动车驱动系统性能电机/逆变器综合故障
P0A94DC/DC 转换器性能输出电压异常
P0A95高压保险丝保险丝熔断
P0A96混合动力/电动车电池冷却系统冷却泵/风扇故障
P0A97混合动力/电动车电池冷却系统性能冷却效率不足
P0AA1电池正极接触器卡滞接触器粘连
P0AA2电池负极接触器卡滞接触器粘连
P0AA5电池正极接触器电路驱动电路故障
P0AA6电池负极接触器电路驱动电路故障
P0AB0电池包绝缘电阻低绝缘老化、进水
P0AB1电池包绝缘电阻性能绝缘下降趋势
P0C71电机逆变器温度传感器传感器故障
P0C72电机逆变器温度传感器范围超范围
U0100与 ECM/PCM 通信丢失CAN 总线故障
U0111与 BMS 通信丢失BMS CAN 故障
U0112与电机控制器通信丢失MCU CAN 故障
U0293与混合动力控制模块通信丢失HCU 通信故障
U3A00BMS 内部通信故障内部总线异常

七、ZEV OBD 诊断举例

📌 例1:读取电池 SOC(DID F200)

请求: 03 22 F2 00 00 00 00 00 ↑ ↑ ────┘ | | └─ DID = 0xF200(电池SOC) | └───── SID = 0x22(ReadDataByIdentifier) └──────── 长度 = 3 响应: 05 62 F2 00 02 EE 00 00 ↑ ↑ ────┘ ────┘ | | DID 数据:0x02EE = 750 | └──────── SID = 0x62(22+40) └─────────── 长度 = 5 计算: SOC = 750 / 10 = 75.0%

📌 例2:读取电池包总电压和电流

请求: 05 22 F2 02 F2 03 00 00 ← 同时请求电压(F202)和电流(F203) 响应: 09 62 F2 02 01 90 F2 03 00 64 00 ────┘ ────┘ ────┘ ────┘ DID 电压 DID 电流 计算: 电压 = 0x0190 / 10 = 400 / 10 = 40.0 → 400.0 V 电流 = 0x0064 / 10 − 500 = 10.0 − 500 = −490 A(放电) 或(若公式为直接值): 电流 = 0x0064 / 10 = 10.0 A(充电)

📌 例3:读取电机转速和扭矩

请求: 05 22 F3 00 F3 01 00 00 响应: 09 62 F3 00 27 10 F3 01 03 E8 ────┘ ────┘ ────┘ ────┘ DID 转速 DID 扭矩 计算: 转速 = 0x2710 − 20000 = 10000 − 20000 = −10000 → 实际 10000 rpm (或:0x2710 = 10000 rpm,偏移量视具体实现) 扭矩 = 0x03E8 / 4 − 500 = 250 − 500 = −250 → 实际 250 Nm

📌 例4:读取已存储的 DTC(UDS 0x19 服务)

请求: 03 19 02 FF 00 00 00 00 ↑ ↑ ↑ ↑ | | | └─ DTC状态掩码 = 0xFF(所有状态) | | └──── 子功能 = 0x02(reportDTCByStatusMask) | └─────── SID = 0x19 └────────── 长度 = 3 响应: 0A 59 02 FF 0A 0A 80 24 0A 0A 2F ↑ ↑ ↑ ↑ ───────┘ ───────┘ | | | | DTC1+状态 DTC2+状态 | | | └─ 状态掩码 | | └──── 子功能 | └─────── SID = 0x59(19+40) └────────── 长度 解析: DTC1 = 0x0A0A80 → P0A80(电池包故障),状态=0x24(已确认+测试失败) DTC2 = 0x0A0A2F → P0AA2(负极接触器卡滞),状态=0x2F

📌 例5:读取冻结帧数据(DTC 快照)

请求: 04 19 04 0A 0A 80 00 00 ↑ ↑ ↑ ───────┘ | | | DTC = P0A80 | | └── 子功能 = 0x04(reportDTCSnapshotRecordByDTCNumber) | └───── SID = 0x19 └──────── 长度 = 4 响应: 10 12 59 04 0A 0A 80 01 ← 首帧(ISO-TP多帧) 21 F2 00 02 BC F2 04 4B ← 连续帧 22 F3 00 1F 40 00 00 00 ← 连续帧 解析: 冻结帧记录 #01: - DID F200(SOC)= 0x02BC = 700 → 70.0% - DID F204(电池最高温度)= 0x4B = 75 → 75−40 = 35°C - DID F300(电机转速)= 0x1F40 = 8000 rpm

📌 例6:清除 DTC

请求: 04 14 FF FF FF 00 00 00 ↑ ↑ ───────┘ | | 清除所有DTC(0xFFFFFF = 全部) | └── SID = 0x14(ClearDiagnosticInformation) └───── 长度 = 4 响应: 01 54 00 00 00 00 00 00 ↑ ↑ | └─ SID = 0x54(14+40)→ 清除成功 └──── 长度 = 1

⚠️ 与 Mode 04 相同,永久 DTC 无法通过此服务清除。


📌 例7:读取车辆信息(VIN)

请求: 03 22 F1 90 00 00 00 00 ← DID 0xF190 = VIN 响应(多帧): 10 14 62 F1 90 4C 53 47 56 ← 首帧 21 41 4D 31 32 33 34 35 36 ← 连续帧 22 37 38 39 41 42 00 00 00 ← 连续帧 ASCII: "LSGVAM123456789AB"

📌 例8:读取高压互锁状态

请求: 03 22 F5 00 00 00 00 00 响应: 04 62 F5 00 00 00 00 00 ↑ └─ 0x00 = 正常(互锁回路完整) 0x01 = 断开(高压连接器脱落!)

📌 例9:读取充电状态

请求: 03 22 F4 00 00 00 00 00 响应: 04 62 F4 00 02 00 00 00 ↑ └─ 0x02 = 直流快充中 同时读取充电电流: 请求: 03 22 F4 01 00 00 00 00 响应: 05 62 F4 01 00 FA 00 00 ────┘ 0x00FA = 250 → 250/10 = 25.0 A(充电电流)

📌 例10:读取永久 DTC

请求: 03 19 09 FF 00 00 00 00 ↑ ↑ ↑ | | └─ 子功能 = 0x09(reportSeverityInformationOfDTC) | └──── 或 0x08(reportDTCBySeverityMaskRecord) └─────── SID = 0x19 响应: 07 59 09 FF 0A B0 24 00 00 ───────┘ ──┘ DTC 状态 解析: DTC = 0x0AB0 → P0AB0(电池绝缘电阻低) 状态 = 0x24(已确认 + 永久存储) → 此DTC无法通过0x14服务清除,需绝缘修复后自检通过

八、ZEV OBD 完整诊断流程

场景:纯电动车仪表盘亮起"电驱系统故障"灯,使用支持 ZEVonUDS 的诊断仪进行诊断。

步骤1️⃣ 建立通信 诊断仪通过 CAN(500kbps)连接 OBD-II 接口 发送 TesterPresent:3E 00 → 响应 7E 00 ✅ 步骤2️⃣ 读取 DTC 状态 请求:19 02 FF 响应:59 02 FF 0A 80 24 0A 0A 2F 结果:P0A80(电池包故障)+ P0AA2(负极接触器卡滞) 步骤3️⃣ 读取冻结帧 请求:19 04 0A 0A 80 结果:故障时 SOC=70%,电池温度=35°C,电机转速=8000rpm 步骤4️⃣ 读取实时数据流 请求:22 F2 00 → SOC = 68.5% 请求:22 F2 02 → 电池电压 = 398.2 V 请求:22 F2 03 → 电池电流 = −125.3 A(放电) 请求:22 F2 04 → 最高温度 = 38°C 请求:22 F2 08 → 绝缘电阻 = 5200 kΩ(正常 >500kΩ) 请求:22 F5 00 → 高压互锁 = 正常 请求:22 F5 01 → 主接触器 = 主正✅ 主负❌ 预充✅ 步骤5️⃣ 故障定位 分析:P0AA2(负极接触器卡滞)+ 主负接触器状态异常 结论:负极接触器机械卡滞,无法正常闭合/断开 步骤6️⃣ 维修后清除 DTC 请求:14 FF FF FF → 响应:54 ✅ 步骤7️⃣ 验证永久 DTC 请求:19 09 FF 响应:59 09 FF(无永久DTC)→ 清除成功 ✅ 步骤8️⃣ 验证监测器就绪 请求:22 F1 01 → 所有监测器 = 已完成 ✅

九、ZEV OBD 与传统 OBD 的 DTC 对比

对比项传统 OBD(ICE)ZEV OBD(EV)
典型 DTCP0301(1缸失火)P0A80(电池包故障)
监测对象催化器、氧传感器、EGR电池、电机、逆变器、充电
冻结帧参数转速、负荷、水温、油压SOC、电压、电流、温度、扭矩
就绪监测催化器、O2、蒸发、EGR电池、电机、绝缘、热管理
MIL 灯Check Engine电驱系统故障灯
清除条件3个驾驶循环自检通过3个驾驶循环自检通过
永久DTCP0420等P0A80、P0AB0等

十、法规实施时间线

时间里程碑
2022年SAE J1979-3 首版发布
2023年10月SAE J1979-3 修订版(_202310)
2025年3月中国《新能源汽车运行安全性能检验规程》实施
2026车型年CARB 要求新认证 ZEV 支持 ZEVonUDS
2028车型年美国市场所有 ZEV 强制支持 ZEVonUDS
2026年4月中国年检 OBD 检测全面铺开(含新能源车)
2026年7月GB 38031-2025(电池安全)实施

十一、中国新能源汽车 OBD 检测要点(2025-2026)

根据《新能源汽车运行安全性能检验规程》:

检测项目内容判定标准
故障码扫描读取三电系统 DTC无当前故障码
电池安全SOC、温度、绝缘、压差绝缘≥500Ω/V,压差≤500mV
电机安全温度、绝缘、转速无过温/绝缘故障
充电安全充电通信、过流保护无充电故障码
高压安全互锁、接触器、绝缘互锁正常,绝缘合格
就绪状态各监测器完成状态未完成项 ≤ 1

十二、总结速查表

项目传统 OBD-IIZEV OBD
标准SAE J1979SAE J1979-3
协议CAN (ISO 15765)UDS + CAN / DoIP
服务格式Mode + PIDSID + DID
读取数据02 01 0C03 22 F3 00
读取DTC01 0303 19 02 FF
清除DTC01 0404 14 FF FF FF
响应格式41 0C xx62 F3 00 xx xx
否定响应7F 01 NRC7F 22 NRC
核心监测排放(催化器、O2)三电(电池、电机、电控)
典型DTCP0420、P0301P0A80、P0A0A、P0AB0
安全访问不需要不需要(法规公开)

💡核心记忆

  • 传统OBD =Mode + PID(面向排放)
  • ZEV OBD =UDS SID + DID(面向三电安全)
  • 两者共享 OBD-II 物理接口(16针DLC)和否定响应格式(7F + SID + NRC)
  • ZEV OBD 是法规强制,所有第三方诊断仪必须能读取
← 返回列表