SAE J2534 PassThru – standardni interfejs između računara i vozila

SAE J2534 PassThru – most između računara i vozila

U prethodnom CAN serijalu pratili smo komunikaciju od električnog signala na CAN-H i CAN-L vodovima, preko CAN frejmova i arbitraže, sve do aplikativnog sloja i CAN-FD-a. Međutim, kada se bavimo dijagnostikom ili programiranjem ECU jedinice, pojavljuje se još jedno pitanje: kako program koji radi na računaru uopšte šalje odgovarajuće poruke na CAN, K-Line ili neku drugu komunikacionu mrežu vozila?

Između računara i vozila nalazi se komunikacioni interfejs, često nazivan VCI – Vehicle Communication Interface. Ako svaki proizvođač vozila koristi svoj softver, a svaki proizvođač interfejsa potpuno drugačiji način komunikacije sa računarom, proizvođački program bi morao posebno da podržava svaki postojeći uređaj. Upravo taj problem rešava SAE J2534, poznatiji pod nazivom PassThru.

Suština J2534: proizvođački ili drugi kompatibilni softver komunicira sa interfejsom preko standardizovanog J2534 API-ja. Proizvođač PassThru uređaja obezbeđuje odgovarajući drajver odnosno softversku biblioteku koja taj standardni zahtev pretvara u komande koje razume njegov konkretan hardver.

Zašto je J2534 uopšte nastao?

Do kraja devedesetih i početkom 2000-ih ECU jedinice više nisu bile uređaji čiji se softver praktično nikada ne menja. Proizvođači vozila sve češće su objavljivali nove verzije softvera kojima su ispravljani problemi, menjane kalibracije ili unapređivan rad sistema. Problem za nezavisne servise bio je pristup tom programiranju: kada bi za svaku marku bio potreban poseban fabrički komunikacioni interfejs, servis koji radi više marki morao bi da poseduje veliki broj različitih uređaja.

SAE je zato razvio standard J2534 – Recommended Practice for Pass-Thru Vehicle Programming. Prva verzija standarda objavljena je 2002. godine, a njegov nastanak bio je povezan i sa američkim EPA i CARB zahtevima da nezavisni servisi dobiju mogućnost reprogramiranja određenih ECU jedinica povezanih sa emisijom izduvnih gasova. Zahtevi su bili usmereni na modele vozila od 2004. godine.

Osnovna ideja bila je jednostavna:

Jedan standardizovani interfejs
        +
OEM softver različitih proizvođača
        =
manja zavisnost od posebnog fabričkog hardvera
Važno: J2534 nije nastao da bi proizvođaču alata otkrio kako se programira konkretan ECU. Proizvođač vozila i dalje definiše postupak programiranja, dok J2534 standardizuje komunikacioni put između softvera i interfejsa.

Šta zapravo znači PassThru?

Naziv PassThru prilično dobro opisuje osnovnu ideju. Softver na računaru želi nešto da pošalje vozilu, a između njega i vozila nalazi se uređaj koji omogućava da ta komunikacija stigne do odgovarajuće automobilske mreže i da se odgovor ECU-a vrati programu.

OEM / dijagnostički softver
             │
             │ J2534 API
             ▼
        PassThru VCI
             │
             │ CAN / K-Line / ...
             ▼
           VOZILO
             │
             ▼
             ECU

PassThru uređaj ipak nije običan komad žice. U njemu se mogu nalaziti mikrokontroler, CAN kontroler, CAN transceiver, K-Line interfejs i drugi komunikacioni sklopovi, uz firmware koji obrađuje zahteve računara. Uređaj aktivno učestvuje u komunikaciji, ali se prema PC aplikaciji ponaša po standardizovanim J2534 pravilima.

J2534 nije novi jezik koji se šalje kroz vozilo

Ovo je možda najvažnija stvar za pravilno razumevanje PassThru sistema: J2534 nije automobilski komunikacioni protokol poput CAN-a, ISO-TP-a, KWP2000 ili UDS-a. Na CAN magistrali ne postoji „J2534 frejm“. Ako se J2534 uređaj poveže sa ECU-om preko CAN-a, na CAN-H i CAN-L vodovima i dalje ćemo videti sasvim obične CAN frejmove.

PROGRAM NA RAČUNARU
        │
        │ J2534 API
        ▼
PASS-THRU INTERFEJS
        │
        │ CAN
        ▼
CAN-H / CAN-L
        │
        ▼
       ECU
Praktično: ako osciloskop priključimo na CAN-H i CAN-L dok OEM program radi preko J2534 interfejsa, nećemo videti nikakav „PassThru signal“. Videćemo običnu CAN komunikaciju.

Gde su sada fizički i logički CAN sloj?

Ako PassThru uređaj komunicira sa vozilom preko CAN-a, koriste se isti fizički i logički principi koje smo već upoznali u CAN serijalu. Na fizičkom nivou i dalje postoje CAN-H, CAN-L, dominantno i recesivno stanje, diferencijalni signal i CAN transceiver. Na logičkom nivou CAN kontroler i dalje obrađuje identifikator, arbitražu, DATA polje, CRC, ACK i greške.

J2534 ništa od toga nije zamenio. On omogućava da program na računaru na standardizovan način kaže interfejsu šta želi da uradi:

Otvori komunikacioni kanal.
Koristi CAN.
Podesi odgovarajuću brzinu.
Pošalji ovu poruku.
Vrati mi primljeni odgovor.

Niži slojevi zatim rade svoj posao.

Jedan sistem – više nivoa

Kod dijagnostike se različiti pojmovi veoma lako pomešaju, pa ih je korisno razdvojiti.

Nivo Primer Šta radi
Softverski interfejs SAE J2534 Omogućava PC aplikaciji pristup PassThru uređaju
Dijagnostički protokol UDS, OBD, KWP2000 Definiše značenje zahteva i odgovora
Transport dijagnostičke poruke ISO 15765-2 / ISO-TP Omogućava prenos poruka preko CAN-a, uključujući poruke koje ne staju u jedan CAN frejm
CAN komunikacija CAN Prenosi CAN frejmove između čvorova
Fizički nivo CAN-H / CAN-L Prenosi električni diferencijalni signal

Zato se kod jednog savremenog dijagnostičkog zahteva može pojaviti čitav lanac:

OEM / dijagnostička aplikacija
        ↓
J2534 API
        ↓
PassThru VCI
        ↓
UDS zahtev
        ↓
ISO 15765-2 / ISO-TP
        ↓
CAN
        ↓
CAN-H / CAN-L
        ↓
ECU

Prikaz je pojednostavljen, ali lepo pokazuje da J2534, UDS, ISO-TP i CAN nisu konkurentski protokoli. Svaki rešava drugi deo problema.

J2534 API – zajednički jezik između programa i interfejsa

Ključ J2534 standarda je API – Application Programming Interface. API možemo posmatrati kao ugovor između aplikacije i proizvođača VCI uređaja: program ne mora da zna kako je konkretan uređaj napravljen iznutra, ali zna koje standardizovane funkcije može da pozove i kakvo ponašanje od njih očekuje.

Među tipičnim J2534 funkcijama nalaze se:

PassThruOpen()
PassThruConnect()
PassThruReadMsgs()
PassThruWriteMsgs()
PassThruDisconnect()
PassThruClose()
  • PassThruOpen() – otvara pristup interfejsu
  • PassThruConnect() – uspostavlja komunikacioni kanal prema mreži vozila
  • PassThruWriteMsgs() – šalje poruke
  • PassThruReadMsgs() – prima poruke
  • PassThruDisconnect() – prekida komunikacioni kanal
  • PassThruClose() – zatvara pristup uređaju

Postoje i druge funkcije za filtere, periodične poruke, konfiguraciju i specifične zadatke, ali za razumevanje osnovnog principa ovaj skup je dovoljan. Suština je u tome da OEM ili druga kompatibilna aplikacija ne mora da poznaje proizvođačke komande svakog VCI-ja posebno.

Zašto to ne bi mogao da radi običan dijagnostički uređaj?

Može. Profesionalni dijagnostički uređaj već može imati CAN transceiver, CAN kontroler, K-Line interfejs i podršku za ISO-TP, UDS i druge protokole. Razlika nije nužno u hardveru, već u tome kakav softverski interfejs taj uređaj nudi programu na računaru.

Proizvođač testera može napraviti sopstveni program koji sa njegovim VCI-jem komunicira preko potpuno proizvođačkih komandi. Takav sistem može odlično da radi, ali OEM aplikacija ne zna te privatne komande. Ako proizvođač istog uređaja obezbedi i odgovarajuću J2534 implementaciju, isti VCI može postati dostupan i aplikacijama koje očekuju standardni J2534 API.

Originalni dijagnostički softver
          │
          │ proizvođački interfejs
          ▼
        isti VCI
          ▲
          │ J2534 DLL / API
          │
       OEM softver
Suština: J2534 ne daje VCI uređaju „novu CAN sposobnost“. On mu daje standardizovana vrata kroz koja kompatibilna PC aplikacija može da koristi njegove komunikacione mogućnosti.

A gde se nalazi drajver?

Pretpostavimo da imamo PassThru uređaj proizvođača A i drugi uređaj proizvođača B. Njihov hardver iznutra može biti potpuno različit: mogu koristiti različite mikrokontrolere, CAN kontrolere, USB kontrolere i firmware. Ipak, oba proizvođača mogu prema aplikaciji da izlože isti standardizovani skup J2534 funkcija.

Na Windows računarima ta funkcionalnost se tradicionalno veoma često pojavljuje kroz DLL biblioteku proizvođača interfejsa:

OEM PROGRAM
      │
      │ standardne J2534 funkcije
      ▼
J2534 DLL / drajver proizvođača interfejsa
      │
      ▼
USB / Ethernet / druga veza
      │
      ▼
PASS-THRU HARDVER

OEM aplikacija zato ne mora da zna kako konkretan uređaj interno upravlja svojim CAN kontrolerom. Ona poziva standardnu J2534 funkciju, a softverski sloj proizvođača uređaja prevodi taj zahtev u ono što njegov hardver razume.

Dakle: nije standardizovan sam hardver iznutra. Standardizovan je način na koji aplikacija od njega traži komunikacione usluge.

USB nije J2534 protokol

Na velikom broju PassThru uređaja računar i interfejs povezani su USB kablom, pa se može steći utisak da J2534 definiše i tu USB komunikaciju. To nije suština standarda. J2534 definiše interfejs koji aplikacija očekuje, dok konkretna veza između računara i VCI uređaja može zavisiti od implementacije proizvođača – USB, Ethernet ili drugo odgovarajuće rešenje.

Šta PassThru može da podržava?

J2534 nije nastao samo za jednu generaciju automobilske komunikacije. U zavisnosti od verzije standarda i konkretnog uređaja mogu se sresti podrške za tehnologije kao što su:

  • SAE J1850 PWM
  • SAE J1850 VPW
  • ISO 9141
  • ISO 14230 – KWP2000
  • CAN
  • ISO 15765-2 – ISO-TP, odnosno transport dijagnostičkih poruka preko CAN-a

Porodica standarda ISO 15765 odnosi se na dijagnostičku komunikaciju preko CAN-a i često se označava nazivom DoCAN – Diagnostic communication over Controller Area Network. Nama je ovde posebno važan ISO 15765-2, poznat kao ISO-TP. Savremeni PassThru uređaji mogu imati i dodatne mogućnosti, ali one zavise od konkretne J2534 implementacije.

„J2534 kompatibilan“ ne znači automatski „podržava sve“. Kod konkretnog uređaja treba proveriti koju verziju standarda, koje komunikacione protokole i koje dodatne funkcije zaista podržava.

CAN ili ISO 15765 – u čemu je praktična razlika?

Ovo je dobar primer koliko PassThru može da sakrije deo nižih slojeva od aplikacije. Ako aplikacija otvori običan CAN kanal, ona može raditi sa CAN porukama na relativno niskom nivou. Ako koristi ISO 15765 odnosno ISO-TP komunikacioni kanal, odgovarajuća J2534 implementacija može preuzeti deo posla vezanog za transport dijagnostičke poruke.

Setimo se prethodnog CAN članka: kada poruka ne može stati u jedan CAN frejm, ISO-TP koristi mehanizme kao što su First Frame, Consecutive Frame i Flow Control. Aplikacija tada ne mora nužno sama da formira svaki pojedinačni CAN frejm.

Praktično: J2534 ne zamenjuje ISO-TP. Kada aplikacija koristi ISO 15765 komunikacioni kanal, odgovarajući J2534 drajver i VCI mogu obavljati deo transportnog posla koji ISO-TP zahteva.

Kako jedna poruka prolazi kroz PassThru sistem?

Pretpostavimo da dijagnostički program želi da od ECU-a zatraži VIN korišćenjem UDS-a. Jedan tipičan UDS zahtev za čitanje VIN-a može sadržati bajtove:

22 F1 90

Aplikacija taj zahtev prosleđuje kroz J2534 API. Ako je otvoren odgovarajući ISO 15765 kanal, J2534 implementacija i VCI vode računa o potrebnom transportu poruke prema CAN mreži, a zatim se CAN frejmovi fizički prenose preko CAN-H i CAN-L vodova.

OEM / dijagnostički program
        ↓
UDS zahtev: 22 F1 90
        ↓
J2534 API
        ↓
J2534 DLL / drajver
        ↓
PassThru VCI
        ↓
ISO-TP / CAN
        ↓
CAN-H / CAN-L
        ↓
ECU

Odgovor ECU-a prolazi put u suprotnom smeru, sve dok ga aplikacija na računaru ne obradi i prikaže korisniku.

Važno: J2534 nije sadržaj poruke. Zahtev 22 F1 90 pripada UDS-u. J2534 omogućava programu da taj zahtev preko odgovarajućeg komunikacionog interfejsa pošalje do vozila.

J2534 PassThru nije isto što i dijagnostički tester

Klasični dijagnostički tester i PassThru interfejs mogu fizički izgledati slično, a isti profesionalni uređaj može čak objediniti obe funkcije. Ipak, njihove uloge nisu iste.

Dijagnostički tester J2534 PassThru
Ima sopstveni dijagnostički softver Omogućava kompatibilnoj aplikaciji pristup vozilu
Prikazuje DTC, live data i servisne funkcije Sam po sebi ne određuje koje dijagnostičke funkcije postoje
Proizvođač testera razvija korisnički interfejs i baze J2534 standardizuje način na koji aplikacija koristi VCI
Može raditi kao samostalan sistem Najčešće se koristi zajedno sa softverom na računaru

Zato nije sasvim pravilno reći da je „J2534 dijagnostika“. Preciznije je reći: J2534 omogućava dijagnostičkom, programerskom ili drugom kompatibilnom programu da preko odgovarajućeg hardvera komunicira sa vozilom.

PassThru uređaj ne zna kako se programira konkretan ECU

Pretpostavimo da proizvođački program treba da ažurira softver ECU-a motora. PassThru uređaj sam po sebi ne zna koji firmware pripada tom ECU-u, da li je nova verzija dozvoljena, koju dijagnostičku sesiju treba otvoriti, kojim redosledom treba brisati i programirati memoriju niti kako se na kraju proverava rezultat. Ta logika pripada proizvođačkoj aplikaciji i proceduri.

PassThru uređaj obezbeđuje komunikacioni put kojim potrebne poruke stižu do ECU-a i kojim se odgovori vraćaju programu.

Drugim rečima: J2534 uređaj je sposoban poštar, ali sadržaj pisma i odluka kome, kada i šta treba poslati dolaze iz aplikacije koja ga koristi.

Šta se dešava kada pritisnemo „Program ECU“?

Sa stanovišta korisnika često postoji samo jedno dugme – Program, Update ili Reprogram ECU. Iza njega se, pojednostavljeno, može odigrati čitav niz operacija:

  1. otvaranje J2534 uređaja
  2. izbor odgovarajućeg komunikacionog protokola
  3. uspostavljanje veze sa ECU-om
  4. provera identiteta i verzije modula
  5. prebacivanje ECU-a u potreban programski režim
  6. prenos blokova novog softvera
  7. provera upisanih podataka
  8. resetovanje ECU-a

Tačan postupak zavisi od proizvođača i ECU-a. J2534 u celoj priči obezbeđuje standardizovanu komunikacionu vezu između aplikacije i interfejsa.

Praktična napomena: programiranje ECU-a je mnogo osetljivije od običnog čitanja grešaka. Prekid komunikacije ili nestabilno napajanje tokom programiranja može ostaviti modul u neispravnom stanju, zbog čega se moraju poštovati zahtevi i procedura proizvođača vozila.

PassThru uređaj nije dovoljan sam za sebe

Kupovina J2534 uređaja ne znači da smo kupili univerzalni program za sve automobile. Za fabričko reprogramiranje u praksi mogu biti potrebni:

  • J2534 kompatibilan interfejs
  • odgovarajući drajver proizvođača interfejsa
  • OEM aplikacija proizvođača vozila
  • odgovarajuća licenca ili pretplata
  • pristup potrebnim programskim i kalibracionim podacima

PassThru uređaj zato treba posmatrati kao standardizovani komunikacioni alat, a ne kao kompletnu bazu znanja o svim vozilima.

Jedan PassThru – više proizvođača

Ovde dolazimo do osnovne prednosti zbog koje je J2534 i razvijen. Ako imamo pravilno implementiran J2534 interfejs i odgovarajuće OEM aplikacije, isti hardverski interfejs može se koristiti sa softverom više proizvođača vozila.

OEM aplikacija A ─┐
OEM aplikacija B ─┼── J2534 API ── PassThru VCI ── Vozilo
OEM aplikacija C ─┘

To je drugačiji koncept od sistema u kojem svaka marka zahteva zaseban komunikacioni hardver. Stvarna kompatibilnost ipak uvek zavisi od podrške konkretnog OEM softvera i mogućnosti konkretnog PassThru uređaja.

J2534-1 i J2534-2

U dokumentaciji i specifikacijama uređaja često ćemo videti oznake J2534-1 i J2534-2. J2534-1 predstavlja osnovu PassThru standarda, prvobitno usmerenu na reprogramiranje modula povezanih sa emisijama. J2534-2 obuhvata proširene mogućnosti izvan osnovnih J2534-1 zahteva.

Važno je da proširene mogućnosti nisu automatski iste kod svakog uređaja. Proizvođač može implementirati određene dodatne funkcije, a druge ne.

Zato u specifikaciji uređaja nije dovoljno pročitati samo „SAE J2534 compatible“. Treba proveriti koje protokole, koju J2534/API verziju i koje dodatne mogućnosti konkretan uređaj zaista podržava.

Zašto se J2534 danas često povezuje sa CAN-om?

Originalni PassThru koncept nije ograničen samo na CAN. J2534 je nastao u vreme kada su na vozilima istovremeno postojali J1850, ISO 9141, KWP2000 preko K-Line-a i CAN. Kako je CAN postao dominantna osnova za dijagnostičku komunikaciju na novijim generacijama vozila, tako se i J2534 u praksi veoma često sreće u kombinaciji sa ISO 15765/ISO-TP i CAN-om.

J2534
  ↓
ISO 15765-2 / ISO-TP
  ↓
CAN
  ↓
CAN-H / CAN-L

Zbog toga je PassThru prirodan nastavak našeg CAN serijala. CAN objašnjava kako poruka putuje kroz mrežu vozila, dok J2534 objašnjava kako program na računaru dobija standardizovan način da zatraži da se ta poruka pošalje.

Šta bi tehničar video u praksi?

Pretpostavimo da smo laptop povezali sa J2534 interfejsom, a interfejs sa OBD priključkom vozila. OEM aplikacija pokrene komunikaciju sa ECU-om preko CAN-a. Na računaru imamo lanac:

OEM program
    ↓
J2534 API
    ↓
J2534 drajver / DLL
    ↓
PassThru VCI

Ako sada osciloskop povežemo na odgovarajući CAN na dijagnostičkom priključku, videćemo normalne CAN-H i CAN-L signale i CAN frejmove. Ako vozilo koristi K-Line komunikaciju, na odgovarajućem vodu videćemo K-Line signal. J2534 se, dakle, ne pojavljuje kao poseban električni signal na vozilu.

Praktična šema J2534 PassThru komunikacije između laptopa, VCI uređaja i vozila
Praktična šema J2534 PassThru sistema – laptop komunicira sa VCI uređajem preko J2534 softverskog interfejsa, dok VCI sa vozilom komunicira preko mreže koju vozilo zaista koristi, kao što su CAN ili K-Line.

Zašto proizvođač vozila podržava J2534?

Zato što ne mora da piše posebnu podršku za svaki mogući komunikacioni uređaj. Proizvođač vozila razvija aplikaciju koja poznaje standardizovani J2534 interfejs, dok proizvođač VCI uređaja obezbeđuje svoju J2534 implementaciju. Na sredini se nalazi zajednički dogovor – standard.

PROIZVOĐAČ VOZILA
        │
        │ poznaje J2534 API
        ▼
========================
       J2534
========================
        ▲
        │ implementira J2534 API
        │
PROIZVOĐAČ INTERFEJSA

U tome je prava vrednost standardizacije.

Zašto PassThru nije „univerzalni ključ“?

Ako svaki J2534 uređaj koristi isti standard, može delovati logično da svaki mora da radi sve na svakom vozilu. Ipak, J2534 standardizuje komunikacioni interfejs, ali ne standardizuje kompletnu elektroniku svih vozila. Razlike i dalje mogu postojati u podržanim fizičkim mrežama, broju CAN kanala, podršci za CAN-FD, proizvođačkim pinovima OBD priključka, dodatnim J2534 mogućnostima, OEM softverskoj kompatibilnosti i drugim specifičnim zahtevima.

Zato ozbiljan proizvođač PassThru uređaja objavljuje listu podržanih protokola i funkcija.

Šta proveriti pre korišćenja J2534 uređaja?

Pre nego što se PassThru uređaj koristi za dijagnostiku ili programiranje, nije dovoljno proveriti samo da na kućištu piše J2534. U praksi treba proveriti:

  • da li uređaj podržava komunikacioni protokol konkretnog vozila
  • da li ga podržava OEM aplikacija koju želimo da koristimo
  • da li je instalirana odgovarajuća J2534 implementacija odnosno drajver/DLL
  • da li su potrebne OEM licence, pretplate ili pristup odgovarajućim podacima
  • da li vozilo zahteva dodatne funkcije koje konkretni uređaj nema
  • da li je tokom programiranja obezbeđeno stabilno napajanje vozila prema zahtevima proizvođača

Od J2534 ka DoIP-u

PassThru je nastao u vremenu kada su K-Line, J1850 i CAN predstavljali glavne puteve dijagnostičke komunikacije. Savremena vozila, međutim, razmenjuju sve veće količine podataka, a velika brzina posebno je važna pri programiranju ECU-a, ažuriranju velikih softverskih paketa i komunikaciji sa centralnim gateway modulima.

Zbog toga se u novijim vozilima sve češće pojavljuje Ethernet kao komunikaciona osnova. Kada dijagnostička komunikacija počne da putuje preko IP mreže, dolazimo do sledećeg važnog pojma: DoIP – Diagnostics over Internet Protocol.

Zaključak

SAE J2534 PassThru nije novi protokol koji ECU jedinice koriste za međusobnu komunikaciju. Ne zamenjuje CAN, K-Line, ISO-TP niti UDS. Njegov posao je drugačiji: J2534 standardizuje način na koji program na računaru pristupa komunikacionom interfejsu vozila.

OEM / dijagnostički softver
    ↓
J2534 API
    ↓
PassThru interfejs
    ↓
CAN / K-Line / druga podržana mreža
    ↓
ECU

Ako se koristi CAN, PassThru uređaj i dalje koristi isti CAN fizički i logički sloj koji smo upoznali u prethodnom serijalu. Na CAN-H i CAN-L vodovima nema „PassThru jezika“ – tamo postoje obični CAN frejmovi. PassThru se nalazi iznad toga, između programa koji želi da komunicira sa vozilom i hardvera koji tu komunikaciju realizuje.

Najkraće:

CAN definiše kako poruka putuje kroz mrežu vozila.
UDS ili drugi dijagnostički protokol definiše šta ta poruka znači.
J2534 omogućava programu na računaru da preko standardizovanog interfejsa tu poruku pošalje.

Reference

Za pripremu teksta korišćeni su standardi i tehnička dokumentacija:

  • SAE International – J2534, Recommended Practice for Pass-Thru Vehicle Programming
  • SAE International – J2534-1, Pass-Thru Vehicle Programming
  • SAE International – J2534-2, Pass-Thru Extended Features
  • U.S. EPA – Service Information Availability / Pass-Thru Reprogramming
  • OPUS IVS / Drew Technologies – J2534 PassThru API technical documentation