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.
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
Š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
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
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.
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.
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.
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.
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.
Š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:
- otvaranje J2534 uređaja
- izbor odgovarajućeg komunikacionog protokola
- uspostavljanje veze sa ECU-om
- provera identiteta i verzije modula
- prebacivanje ECU-a u potreban programski režim
- prenos blokova novog softvera
- provera upisanih podataka
- 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.
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.
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.
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.
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