ELM327 协议的扩展,用于支持 ISO 13400(DoIP — Diagnostics over Internet Protocol)。协议 D 允许使用标准的 ELM327 AT 接口,通过 Ethernet/IP 执行 UDS 诊断。
测试仪 (ScanDoc) 汽车 ┌──────────┐ TCP/IP ┌─────────────┐ CAN/LIN ┌─────┐ │ SA=0E80 │───────────────│ DoIP entity │───────────────│ ECU │ │ (测试仪) │ Ethernet │ (gateway) │ 内部总线 │(TA) │ └──────────┘ └─────────────┘ └─────┘
DoIP entity — 支持 ISO 13400 的汽车网络节点。它可以是 DoIP gateway(以太网与内部 CAN/LIN 总线之间的网关),也可以是 DoIP edge node(带有自身以太网接口的 ECU)。每个 DoIP entity 都拥有 一个逻辑地址、一个 IP 地址和一个 VIN。
使用前需配置三个参数:
| 参数 | 命令 | 作用 | 如何获取 |
|---|---|---|---|
| IP DoIP entity | AT DI |
通过 TCP 连接到何处 | AT DD(discovery)或手动设置 |
| Source Address | AT DS |
测试仪的逻辑地址 | 默认 0E80,通常无需更改 |
| Target Address | AT DT |
目标 ECU 的逻辑地址 | 来自汽车的相关文档 |
如果未设置 DI(IP = 00000000),AT SP D 会自动执行 discovery(UDP broadcast),找到第一个 DoIP entity 并根据其应答填充参数:
DI ← DoIP entity 的 IP 地址(例如 C0A80C04 = 192.168.12.4)DT ← DoIP entity 的逻辑地址(例如 3828 — 通常为 gateway)DS ← 保持 0E80(默认值)随后执行 TCP 连接 → Routing Activation → 即可进行 UDS。
AT SP D 会自行找到 DoIP entity 并建立连接:
>ATZ ELM327 v2.3 >ATE0 OK >AT SP D # discovery → DI=C0A80C04, DT=3828, DS=0E80 OK # TCP + Routing Activation 已完成 >22 F1 90 # UDS Read VIN — 请求将发往 gateway (DT=3828) 62 F1 90 54 4D 42 4A 43 37 4E 59 33 50 46 30 32 30 36 30 38
例如,发动机模块:
>ATZ ELM327 v2.3 >ATE0 OK >AT SP D # discovery + 连接到 gateway OK >22 F1 90 # 向 gateway 请求 VIN (DT=3828) 62 F1 90 54 4D 42 4A 43 37 4E 59 33 50 46 30 32 30 36 30 38 >AT DT 0010 # 将 Target Address 切换到发动机模块 OK >22 F1 90 # 同一请求 — 现在将通过 gateway 发往 ECU 0010 62 F1 90 ...
以 hex 格式(4 字节,big-endian)设置 ECU(DoIP entity)的 IPv4 地址。
>AT DI C0A80C04 OK
示例:C0A80C04 = 192.168.12.4
默认值:00000000(未设置)。如果在 AT SP D 时未设置 IP,则自动执行 Vehicle Discovery(UDP broadcast)。
以 hex 格式(2 字节)设置测试仪的逻辑地址(Source Address, SA)。
>AT DS 0E00 OK
按 ISO 13400 的测试仪地址范围:0x0E00–0x0FFF。默认值:0E80。
以 hex 格式(2 字节)设置 ECU 的逻辑地址(Target Address, TA)。
>AT DT 3828 OK
按 ISO 13400 的 ECU 地址范围:0x0001–0x0DFF。默认值:0001。
设置路由激活类型(Routing Activation Type)。须在 AT SP D 之前设置 — 在连接时随 Routing Activation Request 发送给 DoIP entity。它决定请求哪一级别的诊断访问权限。
仅当 gateway 拒绝以类型 00(Default)连接时才需要更改。
>AT DA 00 OK
| 值 | 说明 |
|---|---|
00 |
Default — 标准诊断(默认) |
01 |
WWH-OBD — 仅访问法规所要求的数据(emissions) |
E0 |
Central Security — 通过中央安全网关的扩展访问 |
以 hex 格式设置 DoIP entity 的 TCP 端口。须在 AT SP D 之前设置。默认 3458(十进制 13400)— ISO 13400 的标准端口。仅当 DoIP entity 使用非标准
端口时才需要更改。
>AT DC 3458 OK
执行 UDP broadcast Vehicle Discovery(ISO 13400 Vehicle Identification Request)。输出所发现的 DoIP entities 列表,包含其 VIN、逻辑地址和 IP。
自动根据找到的第一个 DoIP entity 填充 DI(IP)和 DT(Target Address)。
当 DI=0 时,AT SP D 会自行执行 discovery — 单独的 AT DD 并非必需。当需要在连接前查看网络中有哪些 DoIP entities(VIN、地址、IP)时,AT DD 很有用。
>AT DD VIN:WBAPH5C55BA123456 ADDR:3828 IP:C0A80C04 OK
网络中有多个 DoIP entities:
>AT DD VIN:WBAPH5C55BA123456 ADDR:3828 IP:C0A80C04 VIN:WF0XXXGCDX1234567 ADDR:1010 IP:C0A80C05 OK
如果未找到 DoIP entities:
>AT DD NO DATA
| 场景 | 顺序 |
|---|---|
| 自动(gateway) | ATZ → AT SP D |
| gateway 之后的 ECU(IP 通过 discovery) | ATZ → AT DD → AT DT xxxx → AT SP D |
| gateway 之后的 ECU(IP 已知) | ATZ → AT DI hhhhhhhh → AT DT xxxx → AT SP D |
任一步骤出错时返回 UNABLE TO CONNECT。
Hex 数据作为 UDS payload 发送。ELM327 会自动将其封装到带 SA+TA 头的 DoIP Diagnostic Message 中。
>22F190 62 F1 90 57 42 41 50 48 35 43 35 35 42 41 31 32 33 34 35 36
仅 UDS payload,不含 SA/TA 头:
62 F1 90 57 42 41 ...
SA + TA(4 字节)+ UDS payload:
38 28 0E 00 62 F1 90 57 42 41 ...
头部格式:[TA_hi] [TA_lo] [SA_hi] [SA_lo] — 应答发送方的地址(ECU → Tester)。
DoIP 已纳入自动协议搜索顺序(AT SP 0)。在尝试 DoIP 时:
AT D(defaults)和 AT Z(reset)命令会复位所有 DoIP 参数:
DI → 00000000DS → 0E80DT → 0001DA → 00DC → 3458(13400)