Quantex GmbH
DE RU EN EL
Η περιοχή σας: Ευρώπη

ELM327 BMW HSFZ

Обзор

Расширение протокола ELM327 для поддержки BMW HSFZ (High Speed Fahrzeug Zugang — высокоскоростной доступ к автомобилю). Протокол E позволяет выполнять UDS-диагностику через Ethernet/TCP с использованием стандартного ELM327 AT-интерфейса.

Как работает HSFZ

Тестер (ScanDoc)                    Автомобиль (BMW)
┌──────────┐    TCP/IP     ┌─────────────┐    CAN/LIN    ┌─────┐
│ SA=F4    │───────────────│  BMW ZGW    │───────────────│ ECU │
│ (тестер) │   Ethernet    │  (gateway)  │  внутр. шина  │(TA) │
└──────────┘   port 6801   └─────────────┘               └─────┘

HSFZ — проприетарный протокол BMW для диагностики через Ethernet. В отличие от стандартного DoIP (ISO 13400), использует собственный формат кадров с 6-байтовым заголовком (4 байта длина + 2 байта код управления) и 1-байтовую адресацию (вместо 2-байтовой у DoIP).

Для работы необходимо настроить три параметра:

ПараметрКомандаЧто задаётКак узнать
IP ECU/GatewayAT HIКуда подключаться по TCPAT HD (discovery) или задать вручную
Source AddressAT HSАдрес тестера (1 байт)По умолчанию F4, обычно менять не нужно
Target AddressAT HTАдрес целевого ECU (1 байт)Из документации на автомобиль

Если HI не задан (IP = 00000000), AT SP E автоматически выполняет discovery (UDP broadcast на порт 6811), находит первый ECU и заполняет параметры из его ответа:

После этого выполняется TCP-подключение на порт 6801 → готов к UDS (Routing Activation не требуется, в отличие от DoIP).

Отличия от DoIP (протокол 'D')

HSFZ (протокол 'E')DoIP (протокол 'D')
СтандартПроприетарный BMWISO 13400
Адресация1 байт (00–FF)2 байта (0000–FFFF)
TCP-порт680113400
UDP-порт (discovery)681113400
Routing ActivationНе нужнаОбязательна
Заголовок кадра6 байт (len[4] + ctrl[2])8 байт (ver[1] + inv[1] + type[2] + len[4])
Тестерный адресF4 (1 байт)0E80 (2 байта)

Примеры

Запрос к gateway

AT SP E сам находит ECU и подключается:

>ATZ
ELM327 v2.3

>ATE0
OK

>AT SP E                 # discovery → HI=A9FE0114, HT=10, HS=F4
OK                       # TCP-подключение выполнено

>22 F1 90                # UDS Read VIN — запрос пойдёт к gateway (HT=10)
62 F1 90 57 42 41 50 48 35 43 35 35 42 41 31 32 33 34 35 36

Запрос к конкретному ECU за gateway

Например, блок двигателя:

>ATZ
ELM327 v2.3

>ATE0
OK

>AT SP E                 # discovery + подключение к gateway
OK

>22 F1 90                # запрос VIN к gateway (HT=10)
62 F1 90 57 42 41 50 48 35 43 35 35 42 41 31 32 33 34 35 36

>AT HT 12                # переключить Target Address на блок двигателя
OK

>22 F1 90                # тот же запрос — теперь пойдёт к ECU 12 через gateway
62 F1 90 ...

AT-команды HSFZ

HI hhhhhhhh — адрес IP ECU

Устанавливает IPv4-адрес ECU (gateway) в hex-формате (4 байта, big-endian).

>AT HI A9FE0114
OK

Пример: A9FE0114 = 169.254.1.20

Значение по умолчанию: 00000000 (не задан). Если IP не задан при AT SP E, выполняется автоматический Vehicle Discovery (UDP broadcast на порт 6811).

HS hh — адрес источника (Source Address)

Устанавливает адрес тестера (Source Address, SA) в hex-формате (1 байт).

>AT HS F4
OK

Значение по умолчанию: F4. Обычно менять не требуется.

HT hh — адрес назначения (Target Address)

Устанавливает адрес ECU (Target Address, TA) в hex-формате (1 байт).

>AT HT 10
OK

Значение по умолчанию: 00.

HC hhhh — TCP-порт HSFZ

Устанавливает TCP-порт ECU в hex-формате. Задаётся до AT SP E. По умолчанию 1A91 (6801 decimal) — стандартный порт BMW HSFZ. Менять нужно только если ECU использует нестандартный порт.

>AT HC 1A91
OK

HD — обнаружение ECU (Vehicle Discovery)

Выполняет UDP broadcast Vehicle Discovery на порт 6811. Выводит список найденных ECU с их VIN, логическим адресом, IP и MAC-адресом.

Автоматически заполняет HI (IP) и HT (Target Address) из первого найденного ECU.

AT SP E при HI=0 сам выполняет discovery — отдельный AT HD не обязателен. AT HD полезен когда нужно увидеть какие ECU есть в сети до подключения.

>AT HD
VIN:WBAPH5C55BA123456
ADDR:10
IP:A9FE0114
MAC:001A37B44210
OK

Несколько ECU в сети:

>AT HD
VIN:WBAPH5C55BA123456
ADDR:10
IP:A9FE0114
MAC:001A37B44210
VIN:WBAKF0C58CE123456
ADDR:20
IP:A9FE0115
MAC:001A37B44211
OK

Если ECU не найдены:

>AT HD
NO DATA

Последовательность инициализации

СценарийПоследовательность
Автоматический (gateway)ATZAT SP E
ECU за gateway (IP через discovery)ATZAT HDAT HT xxAT SP E
ECU за gateway (IP известен)ATZAT HI hhhhhhhhAT HT xxAT SP E

Что происходит при AT SP E

  1. Disconnect — отключение текущего протокола
  2. Connect — создание HSFZ J2534 канала (HSFZ_PS = 0x8FFC)
  3. Discovery (если IP не задан) — UDP broadcast на порт 6811 для поиска ECU
  4. Set Config — установка IP, SA, TA, TCP-порта
  5. TCP Connect — установка TCP-соединения с ECU на порт 6801

Routing Activation не требуется (в отличие от DoIP).

При ошибке на любом шаге возвращается UNABLE TO CONNECT.


Формат OBD-данных

Отправка

Hex-данные отправляются как UDS payload. ELM327 автоматически оборачивает их в HSFZ Diagnostic Message с заголовком SA+TA (1-байтовая адресация).

>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 байта в J2534-формате) + UDS payload:

10 00 F4 00 62 F1 90 57 42 41 ...

Формат заголовка: [TA_hi=0] [TA_lo] [SA_hi=0] [SA_lo] — адрес отправителя ответа (ECU → Tester). Старшие байты всегда 00, т.к. HSFZ использует 1-байтовую адресацию.


Автоматический поиск протокола

HSFZ включён в порядок автоматического поиска протоколов (AT SP 0). При попытке HSFZ:

  1. Создаётся временный HSFZ канал
  2. Выполняется Vehicle Discovery (UDP broadcast на порт 6811, таймаут 2 сек)
  3. Если ECU найден — подключение через TCP
  4. Если подключение успешно — отправляется пробный OBD-запрос
  5. Если ECU не найден или нет ответа — переход к следующему протоколу

Сброс параметров

Команды AT D (defaults) и AT Z (reset) сбрасывают все HSFZ параметры:


Ограничения