Quantex GmbH
您的地区:欧洲

ELM327 ISO 13400 (DoIP)

概述

ELM327 协议的扩展,用于支持 ISO 13400(DoIP — Diagnostics over Internet Protocol)。协议 D 允许使用标准的 ELM327 AT 接口,通过 Ethernet/IP 执行 UDS 诊断。

DoIP 的工作原理

测试仪 (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 并根据其应答填充参数:

随后执行 TCP 连接 → Routing Activation → 即可进行 UDS。


示例

向 gateway 发起请求

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

向 gateway 之后的特定 ECU 发起请求

例如,发动机模块:

>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 ...

DoIP 的 AT 命令

DI hhhhhhhh — DoIP entity 的 IP 地址

以 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)。

DS hhhh — 源地址(Source Address)

以 hex 格式(2 字节)设置测试仪的逻辑地址(Source Address, SA)。

>AT DS 0E00
OK

按 ISO 13400 的测试仪地址范围:0x0E000x0FFF。默认值:0E80

DT hhhh — 目标地址(Target Address)

以 hex 格式(2 字节)设置 ECU 的逻辑地址(Target Address, TA)。

>AT DT 3828
OK

按 ISO 13400 的 ECU 地址范围:0x00010x0DFF。默认值:0001

DA hh — 路由激活类型

设置路由激活类型(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 — 通过中央安全网关的扩展访问

DC hhhh — DoIP 的 TCP 端口

以 hex 格式设置 DoIP entity 的 TCP 端口。须在 AT SP D 之前设置。默认 3458(十进制 13400)— ISO 13400 的标准端口。仅当 DoIP entity 使用非标准 端口时才需要更改。

>AT DC 3458
OK

DD — 发现 DoIP entities

执行 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) ATZAT SP D
gateway 之后的 ECU(IP 通过 discovery) ATZAT DDAT DT xxxxAT SP D
gateway 之后的 ECU(IP 已知) ATZAT DI hhhhhhhhAT DT xxxxAT SP D

执行 AT SP D 时发生了什么

  1. Disconnect — 断开当前协议
  2. Connect — 创建 ISO 13400 J2534 通道
  3. Discovery(如果未设置 IP)— UDP broadcast 用于查找 DoIP entity
  4. Set Config — 设置 IP、SA、TA、端口和激活类型
  5. TCP Connect — 与 DoIP entity 建立 TCP 连接
  6. Routing Activation — 激活 DoIP 路由

任一步骤出错时返回 UNABLE TO CONNECT


OBD 数据格式

发送

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

应答(H0 — headers off,默认)

仅 UDS payload,不含 SA/TA 头:

62 F1 90 57 42 41 ...

应答(H1 — headers on)

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 时:

  1. 创建一个临时的 ISO 13400 通道
  2. 执行 Vehicle Discovery(UDP broadcast,超时 2 秒)
  3. 如果找到 DoIP entity — 通过 TCP + Routing Activation 建立连接
  4. 如果连接成功 — 发送一个探测性 OBD 请求
  5. 如果未找到 DoIP entity 或没有应答 — 转至下一个协议

参数复位

AT D(defaults)和 AT Z(reset)命令会复位所有 DoIP 参数:


限制