Расширение протокола ELM327 для поддержки ISO 13400 (DoIP — Diagnostics over Internet Protocol). Протокол D позволяет выполнять UDS-диагностику через Ethernet/IP с использованием стандартного ELM327 AT-интерфейса.
Тестер (ScanDoc) Автомобиль ┌──────────┐ TCP/IP ┌─────────────┐ CAN/LIN ┌─────┐ │ SA=0E80 │───────────────│ DoIP entity │───────────────│ ECU │ │ (тестер) │ Ethernet │ (gateway) │ внутр. шина │(TA) │ └──────────┘ └─────────────┘ └─────┘
DoIP entity — узел автомобильной сети с поддержкой ISO 13400. Это может быть DoIP gateway (шлюз между Ethernet и внутренними шинами CAN/LIN) или DoIP edge node (ECU с собственным Ethernet-интерфейсом). Каждый 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 ← IP-адрес DoIP entity (например 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 # запрос VIN к gateway (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 # тот же запрос — теперь пойдёт к ECU 0010 через gateway 62 F1 90 ...
Устанавливает IPv4-адрес ECU (DoIP entity) в hex-формате (4 байта, big-endian).
>AT DI C0A80C04 OK
Пример: C0A80C04 = 192.168.12.4
Значение по умолчанию: 00000000 (не задан). Если IP не задан при AT SP D, выполняется автоматический Vehicle Discovery (UDP broadcast).
Устанавливает логический адрес тестера (Source Address, SA) в hex-формате (2 байта).
>AT DS 0E00 OK
Диапазон тестерных адресов по ISO 13400: 0x0E00–0x0FFF. Значение по умолчанию: 0E80.
Устанавливает логический адрес ECU (Target Address, TA) в hex-формате (2 байта).
>AT DT 3828 OK
Диапазон адресов ECU по ISO 13400: 0x0001–0x0DFF. Значение по умолчанию: 0001.
Устанавливает тип активации маршрутизации (Routing Activation Type). Задаётся до AT SP D — передаётся DoIP entity в Routing Activation Request при подключении. Определяет, какой уровень доступа к диагностике запрашивается. Менять нужно только если gateway отклоняет подключение с типом 00 (Default).
>AT DA 00 OK
| Значение | Описание |
|---|---|
00 | Default — стандартная диагностика (по умолчанию) |
01 | WWH-OBD — доступ только к данным, требуемым регламентом (emissions) |
E0 | Central Security — расширенный доступ через центральный шлюз безопасности |
Устанавливает TCP-порт DoIP entity в hex-формате. Задаётся до AT SP D. По умолчанию 3458 (13400 decimal) — стандартный порт по ISO 13400. Менять нужно только если DoIP entity использует нестандартный порт.
>AT DC 3458 OK
Выполняет UDP broadcast Vehicle Discovery (ISO 13400 Vehicle Identification Request). Выводит список найденных DoIP entities с их VIN, логическим адресом и IP.
Автоматически заполняет DI (IP) и DT (Target Address) из первого найденного DoIP entity.
AT SP D при DI=0 сам выполняет discovery — отдельный AT DD не обязателен. AT DD полезен когда нужно увидеть какие DoIP entities есть в сети (VIN, адреса, IP) до подключения.
>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 |
| ECU за gateway (IP через discovery) | ATZ → AT DD → AT DT xxxx → AT SP D |
| ECU за gateway (IP известен) | ATZ → AT DI hhhhhhhh → AT DT xxxx → AT SP D |
При ошибке на любом шаге возвращается UNABLE TO CONNECT.
Hex-данные отправляются как UDS payload. ELM327 автоматически оборачивает их в DoIP Diagnostic Message с заголовком SA+TA.
>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)