VSAR UDS 诊断界面「服务单发」读取 DTC 使用说明

VSAR UDS 诊断界面「服务单发」读取 DTC 使用说明

1. 概述

本文档说明如何在 VSAR 软件的 UDS(Unified Diagnostic Services,统一诊断服务)诊断界面中,通过「服务单发」功能手动发送 0x19(ReadDTCInformation,读取 DTC 信息)服务,从 ECU 读取故障码(DTC,Diagnostic Trouble Code,诊断故障码)。

VSAR 提供两种读取 DTC 的方式:

  • 服务单发:手动编辑并发送 UDS 报文,适合调试、验证通信或尝试特定子功能;需自行在报文接收窗查看并解读响应。
  • 读/清故障码:专用读码界面,一键读取并以表格形式展示故障码名称、状态与描述,适合日常读码。

本文以「服务单发」为主线;第 6 章说明与「读/清故障码」的差异及选用建议。

2. 前置条件与环境准备

进行服务单发读 DTC 之前,须按以下顺序完成环境与 ECU 准备。顺序不可颠倒:先完成工程与硬件通道,再进入诊断界面配置 ECU。

步骤 1:加载(新建)项目:在 VSAR 中打开已有诊断工程,或新建项目并保存。

步骤 2:设备连接与测量: ① 准备好待测 ECU 及线束连接; ② 连接诊断硬件——可使用 USBCANFD-422A,也可使用 VCI 设备; ③ 打开「通道映射」窗口,将物理设备映射到软件通道(如 CAN 通道 1),并确认后续诊断使用的通道与设备状态正常; ④ 启动测量,确保总线通信可用。

步骤 3:打开诊断窗口:主菜单选择「诊断 → UDS诊断」,进入 UDS 诊断工作台。

步骤 4:选择(新建)目标 ECU:在诊断窗口左侧「ECU」页签的车辆信息树中操作——若已有目标 ECU,直接选中即可;若需新建,须通过右键菜单依次操作:先在「车辆信息」节点上右键,选择「添加车辆」新建 CAR;再在该 CAR 节点上右键,选择「添加ECU」新建 ECU 节点。软件也支持从 ODX(PDX)文件直接导入 ECU,可在上述右键菜单中选择「从 ODX 导入 ECU」(见图 2-0-1、图 2-0-2)。

步骤 5:完成 ECU 设置:在「配置」页签 →「通信配置」中,核对并填写与实车/台架一致的通信参数(重点关注项见下表及示意图)。

新建 ECU 第一步——在「车辆信息」节点右键:

图 2-0-1 「车辆信息」右键:添加车辆 / 从 ODX 导入 ECU

新建 ECU 第二步——在 CAR 节点(如 Car0)右键:

图 2-0-2 CAR 节点右键:添加 ECU / 从 ODX 导入 ECU

2.1 ECU 通信配置关注项

以下参数决定诊断报文能否正确收发,是使用服务单发读 DTC 的前提。图中红框标注为必须核对的关键项(以 ECU「LAM」为例,实际值以您的 ECU 规范为准):

配置项

示例值

说明

通道

通道: 1, USBCANFD-422A

当前 ECU 使用的 CAN/以太网通道,须与「通道映射」中已启用的通道一致。

物理地址 (ISO 15765-2)

0x723

请求 ECU 的目标地址(N_TA),单点寻址时作为请求帧 CAN ID。

功能地址 (ISO 15765-2)

0x7DF

广播请求 CAN ID,功能寻址时多个 ECU 可同时响应。

响应地址 (ISO 15765-2)

0x72B

诊断仪源地址(N_SA),ECU 将响应报文发往此 CAN ID。

ECU 通信配置界面示意:

图 2-1 UDS 诊断 → 配置 → 通信配置(红框为关注项)

说明:左侧 ECU 树节点会同步显示当前寻址摘要(如 LAM SA:0x72B Phy:0x723 Fun:0x7DF),可与上表交叉核对。其余参数(总线类型、数据帧类型、超时参数等)按 ECU 规范填写。

2.2 DTC 配置与快照(可选但建议)

若需将读回的 DTC 编号与名称、描述对照,或后续读取故障快照,可在「配置 → DTC配置」中维护 DTC 列表及快照关联的 DID。示例如下(ECU「LAM」):

  • DTC 列表:维护 SAE 显示码(如 U190287)、十六进制编号(如 d90287)及中文描述。
  • 设置快照:为 DTC 关联快照 DID(如 f011 电压、f012 里程、f013 车速等),便于后续用 19 04 读快照时解析数据。

图 2-2 UDS 诊断 → 配置 → DTC配置(DTC 列表与快照 DID)

2.3 读 DTC 前的其他说明

  • 确认 ECU 服务配置中包含 0x19(读取 DTC 信息)服务;可在「配置 → 服务配置」中查看。
  • 部分 ECU 读 DTC 前需先进入扩展诊断会话(10 03)或完成安全访问(27),可在服务单发中手动发送,或使用组合服务「($27)-安全访问」。

3. UDS 读 DTC 原理

3.1 0x19 服务与子功能

0x19 是 ISO 14229 标准定义的 ReadDTCInformation 服务,用于向 ECU 查询故障码相关信息。请求服务号为 0x19,ECU 正常应答时服务号为 0x59(即在请求服务号基础上加 0x40)。

子功能

请求示例

说明

0x01

19 01 [状态掩码]

按状态掩码报告 DTC 数量

0x02

19 02 [状态掩码]

按状态掩码报告 DTC 列表(最常用)

0x0A

19 0A

报告 ECU 支持的全部 DTC

0x04

19 04 [DTC 3字节][快照组]

读取指定 DTC 的快照数据

3.2 0x19 0x02 响应数据格式

使用最常见的子功能 0x02 读当前故障码时,ECU 正响应数据格式如下:

  • 前 3 字节为响应头:59 02 + 1 字节「DTC 状态可用性掩码」。
  • 之后每条故障码占 4 字节:前 3 字节为 DTC 编号(大端),第 4 字节为状态字节。
  • DTC 三字节可按 SAE J2012 规则转换为显示码(如 P0420、C1234、B0012 等)。
  • 状态字节常用含义:bit2 表示当前故障,bit3 表示已确认故障(具体以 ECU 规范为准)。

示例正响应(含 1 条 DTC P0420,状态 0x08):

59 02 FF 00 04 20 08

解读:FF 为可用性掩码;00 04 20 对应 P0420;08 为状态字节。

3.3 状态掩码说明

子功能 0x01、0x02 需要在请求中附带 1 字节状态掩码,用于过滤要报告的 DTC 类型。常用值为 FF,表示不过滤、报告所有符合 ECU 规则的故障码。若掩码设置过严,可能返回空列表,属正常现象。

4. 服务单发读取 DTC — 操作步骤

4.1 主流程:读取当前故障码(19 02)

完成第 2 章前置准备后,按以下步骤操作。注意:服务单发读 DTC 的第一步须先启动诊断,否则无法与 ECU 正常通信。

步骤 1:点击 VSAR 主界面左上角「启动」按钮(蓝色播放图标),启动诊断/测量。

步骤 2:确认「UDS诊断」窗口已打开,左侧 ECU 树中已选中目标 ECU(如 LAM,显示 SA/Phy/Fun 寻址信息)。

步骤 3:切换到「服务单发」页签。

步骤 4:在左侧服务树展开:诊断服务 → ($19)-读取DTC信息,选中 ($02)-按状态掩码报告DTC。

步骤 5:双击该子项,右侧「请求 PDU」区域自动填入「19 02」;在末尾手动追加 1 字节状态掩码 FF,完整请求为:19 02 FF。

步骤 6:确认「响应 PDU」区域显示「59 02」(表示期望 ECU 以 59 02 开头应答)。

步骤 7:(可选)若 ECU 要求扩展会话,先发送 10 03;可开启下方「会话维持」定时发送 3E 保活。

步骤 8:(可选)设置「单循环次数」「间隔(Ms)」;仅在 ECU 支持抑制响应时勾选「无响应」。

步骤 9:点击「立即发送」,等待发送完成(发送期间按钮暂时不可用)。

步骤 10:在「UDS诊断」窗口底部通信日志中查看本次交互,应出现类似记录: PC请求:地址[0x723] PDU[19 02 ff]; ECU响应:地址[0x72B] PDU[59 02 …]。

步骤 11:也可在报文接收窗中查看原始 CAN 帧并展开 UDS 字段。

步骤 12:在 ECU 响应 PDU 中,从 59 02 之后按每 4 字节一组解读故障码(3 字节编号 + 1 字节状态)。

步骤 13:(可选)对照「配置 → DTC配置」中的 DTC 列表,将编号转换为 SAE 码及中文描述(参见图 2-2)。

服务单发读 DTC 操作示意(红框标注关键区域):

图 4-1 启动诊断 → 服务单发发送 19 02 FF → 底部通信日志查看应答

图 4-1 说明:

  • 左上角「启动」按钮:须先点击以启动诊断会话。
  • 服务单发区:选择 ($19)-($02),请求 PDU 为 19 02 FF,点击「立即发送」。
  • 底部通信日志:显示 PC 发往物理地址 0x723 的请求,以及 ECU 从 0x72B 返回的 59 02 正响应数据。

4.2 其他常用读码操作

操作

说明

读取 ECU 支持的 DTC 列表

双击 ($0A)-报告受支持的DTC,请求为 19 0A,无需附加参数。

读取 DTC 数量

双击 ($01)-按状态掩码报告DTC数量,请求为 19 01 [掩码],掩码常用 FF。

读取 DTC 快照

双击 ($04)-按DTC编号报告DTC快照记录;请求格式为 19 04 [DTC 3字节] [快照组],快照组常用 FF。

清除 DTC

清除故障码使用 0x14 服务(非 0x19),可手动发送 14 FF FF FF;日常清除建议使用「读/清故障码」页签。

4.3 界面区域说明

区域/按钮

功能

左侧服务树

列出当前 ECU 支持的诊断服务,双击可自动填充请求 PDU

请求 PDU

待发送的 UDS 报文,十六进制、空格分隔

响应 PDU

期望的正响应前缀,用于判断 ECU 是否按预期应答

无响应

勾选后抑制 ECU 正响应(仅适用于支持该特性的 ECU)

单循环次数 / 间隔

重复发送次数及两次发送之间的间隔(毫秒)

立即发送

发送当前请求 PDU

会话维持

定时发送 3E 80 或 3E 00,用于保持诊断会话不超时

5. 注意事项

事项

说明

状态掩码须手动填写

双击 0x02 子项后请求仅为 19 02,须在末尾自行追加状态掩码(如 FF)。

响应 PDU 非实时回显

「响应 PDU」框显示的是期望应答格式,ECU 实际返回内容请在报文接收窗查看。

无自动故障码表格

服务单发不会自动生成故障码列表,需自行解读报文中的 59 02 数据。

先会话后读码

若收到否定响应提示会话不支持,应先发送 10 03 进入扩展会话。

安全访问

若收到安全访问相关否定响应,需先完成 27 安全解锁。

DTC 名称对照

仅看十六进制编号时,可到「配置 → DTC配置」查阅名称与描述。

勿混淆 0x19 与 0x14

0x19 用于读取 DTC 信息;0x14 用于清除 DTC。

ECU 切换

建议在当前诊断发送完成后再切换 ECU,避免通信异常。

6. 与「读/清故障码」页签对比

对比项

服务单发

读/清故障码

操作方式

手动编辑 PDU 并发送

点击「读取故障码」等按钮即可

默认请求

需自行补全掩码,如 19 02 FF

内置 19 02 FF,状态掩码可编辑

结果展示

在报文接收窗查看原始数据,自行解读

以表格显示名称、编号、状态、描述

快照与报告

需手动拼装 19 04 等请求

提供「读取故障快照」「查看报告」按钮

适用场景

调试通信、验证 ECU 应答、尝试非常规子功能

日常读码、快速查看、快照分析

建议:日常读 DTC 优先使用「读/清故障码」页签;服务单发适用于需要精确控制报文内容或与诊断会话、安全访问配合调试的场景。

7. 常见问题

  • Q:双击后请求只有 19 02,是否正常?

A:正常。须手动在末尾追加状态掩码,常用 FF,即 19 02 FF。

  • Q:点击发送后「响应 PDU」没有变化?

A:该框仅表示期望应答格式,不会显示 ECU 实际返回内容。请到报文接收窗查看应答帧。

  • Q:收到 7F 19 33 怎么办?

A:表示安全访问未通过,需先完成 27 安全解锁后再读 DTC。

  • Q:收到 7F 19 7F 怎么办?

A:表示当前诊断会话不支持该服务,请先发送 10 03 进入扩展会话,必要时开启 3E 会话维持。

  • Q:59 02 后没有故障码记录?

A:可能 ECU 当前无故障,或状态掩码过滤后无匹配项;可尝试将掩码改为 FF。

  • Q:如何核对读码结果?

A:可在「读/清故障码」页签点击「读取故障码」,将表格结果与报文接收窗中的原始数据对照。

附录:常用 PDU 速查

操作

请求 PDU

期望正响应

进入扩展会话

10 03

50 03

会话维持(无响应)

3E 80

读当前 DTC

19 02 FF

59 02 …

读支持 DTC

19 0A

59 0A …

读 DTC 快照

19 04 [DTC] FF

59 04 …

清除全部 DTC

14 FF FF FF

54