Quantex GmbH
Twój region: Europa

ELM327 BMW HSFZ

Przegląd

Rozszerzenie protokołu ELM327 zapewniające obsługę BMW HSFZ (High Speed Fahrzeug Zugang — szybki dostęp do pojazdu). Protokół E umożliwia wykonywanie diagnostyki UDS przez Ethernet/TCP przy użyciu standardowego interfejsu AT ELM327.

Jak działa HSFZ

Tester (ScanDoc)                    Pojazd (BMW)
┌──────────┐    TCP/IP     ┌─────────────┐    CAN/LIN    ┌─────┐
│ SA=F4    │───────────────│  BMW ZGW    │───────────────│ ECU │
│ (tester) │   Ethernet    │  (gateway)  │ magistr. wewn.│(TA) │
└──────────┘   port 6801   └─────────────┘               └─────┘

HSFZ — własnościowy protokół BMW do diagnostyki przez Ethernet. W odróżnieniu od standardowego DoIP (ISO 13400) używa własnego formatu ramek z 6-bajtowym nagłówkiem (4 bajty długość + 2 bajty kod sterujący) oraz adresowania 1-bajtowego (zamiast 2-bajtowego w DoIP).

Do pracy należy skonfigurować trzy parametry:

Parametr Polecenie Co ustawia Jak ustalić
IP ECU/Gateway AT HI Adres docelowy połączenia TCP AT HD (discovery) lub ustawić ręcznie
Source Address AT HS Adres testera (1 bajt) Domyślnie F4, zwykle nie trzeba zmieniać
Target Address AT HT Adres docelowego ECU (1 bajt) Z dokumentacji pojazdu

Jeśli HI nie jest ustawiony (IP = 00000000), AT SP E automatycznie wykonuje discovery (UDP broadcast na port 6811), znajduje pierwszy ECU i wypełnia parametry z jego odpowiedzi:

Następnie zestawiane jest połączenie TCP na port 6801 → gotowe do UDS (Routing Activation nie jest wymagane, w odróżnieniu od DoIP).

Różnice względem DoIP (protokół 'D')

HSFZ (protokół 'E') DoIP (protokół 'D')
Standard Własnościowy BMW ISO 13400
Adresowanie 1 bajt (00–FF) 2 bajty (0000–FFFF)
Port TCP 6801 13400
Port UDP (discovery) 6811 13400
Routing Activation Niepotrzebne Wymagane
Nagłówek ramki 6 bajtów (len[4] + ctrl[2]) 8 bajtów (ver[1] + inv[1] + type[2] + len[4])
Adres testera F4 (1 bajt) 0E80 (2 bajty)

Przykłady

Zapytanie do gateway

AT SP E sam znajduje ECU i łączy się:

>ATZ
ELM327 v2.3

>ATE0
OK

>AT SP E                 # discovery → HI=A9FE0114, HT=10, HS=F4
OK                       # połączenie TCP zestawione

>22 F1 90                # UDS Read VIN — zapytanie trafi do gateway (HT=10)
62 F1 90 57 42 41 50 48 35 43 35 35 42 41 31 32 33 34 35 36

Zapytanie do konkretnego ECU za gateway

Na przykład sterownik silnika:

>ATZ
ELM327 v2.3

>ATE0
OK

>AT SP E                 # discovery + połączenie z gateway
OK

>22 F1 90                # zapytanie VIN do 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                # przełączenie Target Address na sterownik silnika
OK

>22 F1 90                # to samo zapytanie — teraz trafi do ECU 12 przez gateway
62 F1 90 ...

Polecenia AT HSFZ

HI hhhhhhhh — adres IP ECU

Ustawia adres IPv4 ECU (gateway) w formacie hex (4 bajty, big-endian).

>AT HI A9FE0114
OK

Przykład: A9FE0114 = 169.254.1.20

Wartość domyślna: 00000000 (nieustawiona). Jeśli IP nie jest ustawiony przy AT SP E, wykonywane jest automatyczne Vehicle Discovery (UDP broadcast na port 6811).

HS hh — adres źródłowy (Source Address)

Ustawia adres testera (Source Address, SA) w formacie hex (1 bajt).

>AT HS F4
OK

Wartość domyślna: F4. Zwykle nie trzeba zmieniać.

HT hh — adres docelowy (Target Address)

Ustawia adres ECU (Target Address, TA) w formacie hex (1 bajt).

>AT HT 10
OK

Wartość domyślna: 00.

HC hhhh — port TCP HSFZ

Ustawia port TCP ECU w formacie hex. Zadawany przed AT SP E. Domyślnie 1A91 (6801 decimal) — standardowy port BMW HSFZ. Zmieniać należy tylko wtedy, gdy ECU używa niestandardowego portu.

>AT HC 1A91
OK

HD — wykrywanie ECU (Vehicle Discovery)

Wykonuje UDP broadcast Vehicle Discovery na port 6811. Wyświetla listę znalezionych ECU wraz z ich VIN, adresem logicznym, IP i adresem MAC.

Automatycznie wypełnia HI (IP) i HT (Target Address) z pierwszego znalezionego ECU.

AT SP E przy HI=0 sam wykonuje discovery — osobne AT HD nie jest konieczne. AT HD jest przydatne, gdy trzeba zobaczyć, jakie ECU są w sieci przed połączeniem.

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

Kilka ECU w sieci:

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

Jeśli nie znaleziono ECU:

>AT HD
NO DATA

Sekwencja inicjalizacji

Scenariusz Sekwencja
Automatyczny (gateway) ATZAT SP E
ECU za gateway (IP przez discovery) ATZAT HDAT HT xxAT SP E
ECU za gateway (IP znany) ATZAT HI hhhhhhhhAT HT xxAT SP E

Co dzieje się przy AT SP E

  1. Disconnect — rozłączenie bieżącego protokołu
  2. Connect — utworzenie kanału HSFZ J2534 (HSFZ_PS = 0x8FFC)
  3. Discovery (jeśli IP nieustawiony) — UDP broadcast na port 6811 w celu wyszukania ECU
  4. Set Config — ustawienie IP, SA, TA, portu TCP
  5. TCP Connect — zestawienie połączenia TCP z ECU na port 6801

Routing Activation nie jest wymagane (w odróżnieniu od DoIP).

W razie błędu na dowolnym kroku zwracane jest UNABLE TO CONNECT.


Format danych OBD

Wysyłanie

Dane hex wysyłane są jako UDS payload. ELM327 automatycznie opakowuje je w HSFZ Diagnostic Message z nagłówkiem SA+TA (adresowanie 1-bajtowe).

>22F190
62 F1 90 57 42 41 50 48 35 43 35 35 42 41 31 32 33 34 35 36

Odpowiedź (H0 — headers off, domyślnie)

Tylko UDS payload, bez nagłówka SA/TA:

62 F1 90 57 42 41 ...

Odpowiedź (H1 — headers on)

SA + TA (4 bajty w formacie J2534) + UDS payload:

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

Format nagłówka: [TA_hi=0] [TA_lo] [SA_hi=0] [SA_lo] — adres nadawcy odpowiedzi (ECU → Tester). Starsze bajty zawsze 00, ponieważ HSFZ używa adresowania 1-bajtowego.


Automatyczne wyszukiwanie protokołu

HSFZ jest włączony do kolejności automatycznego wyszukiwania protokołów (AT SP 0). Przy próbie HSFZ:

  1. Tworzony jest tymczasowy kanał HSFZ
  2. Wykonywane jest Vehicle Discovery (UDP broadcast na port 6811, timeout 2 s)
  3. Jeśli ECU znaleziony — połączenie przez TCP
  4. Jeśli połączenie udane — wysyłane jest próbne zapytanie OBD
  5. Jeśli ECU nie znaleziono lub brak odpowiedzi — przejście do następnego protokołu

Resetowanie parametrów

Polecenia AT D (defaults) i AT Z (reset) resetują wszystkie parametry HSFZ:


Ograniczenia