Uvod
Pre nego što su CAN i „single-wire CAN“ postali standard, proizvođači su morali nekako da povežu motor, menjač, ABS i ostale ECU-ove i da preko istog konektora omoguće dijagnostiku. U OBD-I eri svako je imao svoj konektor, svoj protokol i svoj način komunikacije – i za majstora je to značilo posebnu opremu za svaku marku.
Sa OBD-II specifikacijom (obavezna u SAD za modele od 1996. godine) uvodi se zajednički 16-pinski konektor (J1962) i skup dozvoljenih komunikacionih protokola. Jedan od ključnih pokušaja da se standardizuje „srednja“ brzina komunikacije unutar automobila bio je upravo SAE J1850.
Rođenje SAE J1850 (1994)
Standard SAE J1850 je zvanično usvojen početkom 1994. godine kao protokol za tzv. Class B mreže unutar vozila – mreže srednje brzine namenjene razmeni podataka i dijagnostici između više ECU-ova. Razvijen je u saradnji inženjera iz više američkih proizvođača (GM, Ford, Chrysler) kao zajedničko rešenje koje treba da smanji broj kablova i olakša dijagnostiku.
J1850 je od starta zamišljen u dve varijante:
- J1850 PWM – dvožična, diferencijalna, 41,6 kb/s, tipična za Ford vozila,
- J1850 VPW – jednožična, 10,4 kb/s, tipična za GM vozila.
J1850 u OBD-II eri (1996 – rane 2000-te)
Sa uvođenjem OBD-II, od 1996. godine u SAD, J1850 postaje jedan od zvanično dozvoljenih protokola na OBD-II konektoru. U praksi, to izgleda ovako:
- stariji GM modeli koriste J1850 VPW kao glavnu dijagnostičku magistralu („Class 2“ komunikacija),
- stariji Ford modeli koriste J1850 PWM („SCP“ komunikacija),
- paralelno, evropski i japanski proizvođači i dalje u velikoj meri koriste ISO 9141 i kasnije KWP2000.
To znači da će u američkom automobilu s kraja devedesetih OBD-II konektor i dalje izgledati isto, ali ono što „teče“ kroz žice iza konektora može biti J1850 VPW, J1850 PWM, ISO 9141, KWP2000 ili već CAN – zavisno od proizvođača i godišta.
Postepeno povlačenje u korist CAN-a
Kako broj ECU-ova raste, a količina podataka koju treba razmeniti postaje sve veća (ABS, ESP, automatski menjači nove generacije, kasnije i sistemi pomoći vozaču), J1850 postaje usko grlo. Brži i robusniji CAN (ISO 15765-4) polako preuzima ulogu glavne magistrale.
Regulatorno, prelomni momenat je 2008. godina, kada svi novi automobili prodati na tržištu SAD moraju da koriste CAN kao OBD-II protokol. U praksi to znači da se J1850 tokom ranih i srednjih 2000-ih postepeno povlači sa novih platformi, ali ostaje prisutan u ogromnom broju vozila koja su i dalje na putevima.
Zašto je J1850 i dalje bitan?
Iako je sa stanovišta novih dizajna istorija, J1850 je i dalje živ svuda gde se sreću američki automobili iz druge polovine devedesetih i ranih dvehiljaditih. Razumevanje ovog protokola znači:
- lakše tumačenje ponašanja dijagnostičkog alata na starijim GM i Ford vozilima,
- bolje razumevanje prelaza sa K-line protokola na CAN u OBD-II svetu,
- realističniju sliku kako su izgledale „srednje“ generacije mreža pre današnjih brzih CAN i Ethernet sistema.
U nastavku teksta ćemo J1850 „rastaviti“ na delove: od fizičkog sloja i razlike između VPW i PWM, preko formata poruke, do onoga što zapravo vidite na ekranu osciloskopa.
Svrha protokola i broj čvorova na magistrali
SAE J1850 nije zamišljen samo kao dijagnostički protokol, već kao kompletna interna komunikaciona magistrala za razmenu podataka između elektronskih modula u vozilu. To znači da preko iste žice (VPW) ili istog diferencijalnog para (PWM) komuniciraju:
- moduli međusobno – npr. PCM, BCM, instrument tabla, ABS, HVAC, SRS,
- dijagnostički alat – kada šalje OBD-II zahteve i prima odgovore.
Standard definiše da J1850 magistrala može podržati do 32 čvora (ECU modula) na istoj mreži. Svaki čvor ima svoju adresu i može emitovati poruke na bus, a svi ostali ih mogu slušati ili ignorisati. Zahvaljujući mehanizmu arbitraže, više modula može pokušati da šalje poruku u isto vreme, a protokol obezbeđuje da se poruke ne sudare i da uvek prevlada onaj sa većim prioritetom.
Zbog ovakvog dizajna, J1850 je služio kao radna magistrala vozila i istovremeno kao dijagnostički pristupni sloj.
Kratko podsećanje: šta je PWM signal i kako ga tumačimo?
Pre nego što pređemo na J1850 PWM, važno je razumeti osnovu: PWM (Pulse Width Modulation) je način kodiranja informacije tako što frekvencija signala ostaje konstantna, dok se menja odnos trajanja visokog i niskog nivoa u okviru jednog perioda – takozvani duty cycle. Ovakav signal se veoma često koristi da se simulira analogna vrednost pomoću digitalnog izlaza. Na primer, mikrokontroleri koriste PWM za regulaciju svetline LED diode, brzine DC motora, rad servo mehanizama ili upravljanje ventilatorima, gde promena duty-cycle-a praktično menja snagu koja dolazi na potrošač.
Varijante SAE J1850 protokola: VPW i PWM
SAE J1850 postoji u dve tehnički različite, ali logički slične varijante. Oba protokola služe istoj svrsi – razmeni dijagnostičkih i radnih podataka između ECU-a – ali se razlikuju u fizičkom sloju, načinu kodiranja bitova i brzini prenosa.
| Karakteristika | J1850 VPW | J1850 PWM |
|---|---|---|
| Broj žica | 1 (single-wire) | 2 (differential pair) |
| Brzina prenosa | 10.4 kb/s | 41.6 kb/s (do ~166 kb/s u Fast modu) |
| Metoda kodiranja bita | Širina aktivnog/pasivnog impulsa | PWM (fiksna frekvencija, duty-cycle) |
| Naponski nivoi | Single-wire, recesivno ~0–3.5 V, dominantno ~7 V | Diferencijalni signal, B+ aktivno 5 V / B– 0 V, u pasivnom stanju obrnuto (0–5 V po liniji, ~5 V diferencijalno) |
| Tipični proizvođači | GM (Class 2) | Ford (SCP) |
| Otpornost na šum | manja (single-wire) | visoka (differential) |
| Period korišćenja | ~1996–2004 (pre CAN-a) | ~1996–2003 (pre CAN-a) |
Važno je napomenuti da naponski nivoi kod SAE J1850 zavise od varijante protokola. Kod VPW magistrale (GM Class 2) “dominantno” stanje iznosi oko 7 V, dok je “recesivno” stanje između 0 i 3.5 V. Linija nikada ne radi na punih 12 V.
Kod J1850 PWM varijante (Ford SCP) situacija je potpuno drugačija: signal se prenosi diferencijalno preko dve žice (B+ i B–). U aktivnom stanju B+ je na oko 5 V, a B– na 0 V; u pasivnom stanju se uloge menjaju (B+ ≈ 0 V, B– ≈ 5 V). Prijemnik posmatra samo razliku napona između B+ i B–, koja je oko 5 V. Ni jedna od PWM žica ne koristi 12-voltne logičke nivoe; bit se određuje prema vremenu trajanja pozitivne i negativne faze diferencijalnog signala.
J1850 VPW ukratko
J1850 VPW (Variable Pulse Width) koristi samo jednu žicu i relativno jednostavnu modulaciju zasnovanu na širini impulsa. Brzina je 10.4 kb/s, a informacija se prenosi tako što se „nule“ i „jedinice“ razlikuju po trajanju aktivne i pasivne faze impulsa. Ovo je bio tipičan protokol za starije GM platforme (Class 2).
J1850 PWM ukratko
J1850 PWM koristi dve žice u diferencijalnom paru i radi na 41.6 kb/s. Umesto modulacije širine impulsa, koristi fiksnu frekvenciju i menja duty-cycle: kraći aktivni deo predstavlja „0“, duži aktivni deo predstavlja „1“. Zbog diferencijalnog prenosa daleko je otporniji na šum i bio je standardno rešenje u starijim Ford vozilima (SCP mreža).
U nekim izvorima se spominje da J1850 ima i „četiri puta brži mod“. To se odnosi isključivo na varijantu J1850 PWM, koja pored standardne brzine od 41.6 kb/s može da pređe u tzv. Fast Mode gde se bit period smanjuje četiri puta, pa brzina raste na oko 166 kb/s. Ovaj režim nije deo OBD-II dijagnostike, već je korišćen isključivo, kod nekih Ford modela, za razmenu kritičnih podataka između pojedinih modula koji su međusobno podržavali ubrzanu komunikaciju. Kod dijagnostičkih uređaja se praktično nikada ne koristi.
Kako se kodiraju bitovi u J1850 VPW protokolu
J1850 VPW ne koristi klasičan PWM signal. Umesto toga, svaki bit se sastoji od jednog aktivnog intervala i jednog pasivnog intervala — i upravo njihovo trajanje određuje da li je reč o logičkoj „0“ ili „1“.
- Logička „1“:
aktivni interval ≈ 64 µs,
pasivni interval ≈ 128 µs - Logička „0“:
aktivni interval ≈ 128 µs,
pasivni interval ≈ 64 µs
„Aktivan“ interval znači da je linija prebačena u dominantno stanje (oko 7 V), dok „pasivan“ interval znači da je linija puštena da se vrati u recesivno stanje (oko 0–3.5 V). Kombinacija ova dva intervala čini jedan bit vremena.
Dakle, u VPW protokolu ne posmatramo odnos „dužina aktivnog naprema pasivnom“, niti klasičan duty-cycle, već se bit određuje isključivo time koliko dugo linija ostaje u dominantnom stanju. Ovo čini VPW jednostavnim za dekodiranje, ali relativno sporim u odnosu na novije protokole poput CAN-a.
Kako se kodiraju bitovi u J1850 PWM protokolu
Kod J1850 PWM svaki bit ima fiksno trajanje od oko 24 µs (41,6 kb/s). Unutar tog perioda signal se deli na dve faze: dominantu (B+ ≈ 5 V, B– ≈ 0 V) i recesivnu (B+ ≈ 0 V, B– ≈ 5 V). Upravo odnos trajanja ove dve faze određuje da li je bit „0“ ili „1“.
- Logička „1“: dominantna faza kraća od polovine perioda (tipično ≈ 8 µs)
- Logička „0“: dominantna faza duža od polovine perioda (tipično ≈ 16 µs)
Precizno vreme može blago varirati među implementacijama, ali pravilo je uvek isto: kraća dominantna faza znači „1“, a duža dominantna faza znači „0“. Zahvaljujući fiksnom bit periodu i diferencijalnom prenosu, PWM varijanta je stabilnija i otpornija na šum od VPW-a.
- Logička „1“:
dominantna (aktivna) faza ≈ 8 µs,
recesivna faza ≈ 16 µs - Logička „0“:
dominantna (aktivna) faza ≈ 16 µs,
recesivna faza ≈ 8 µs
Dakle, kao i kod „klasičnog“ PWM-a, frekvencija (period bita) ostaje ista, a duty-cycle se menja: kraća dominantna faza znači „1“, duža dominantna faza znači „0“. Zahvaljujući diferencijalnom prenosu i fiksnom bit periodu, J1850 PWM je robusniji na šum od VPW-a i lakši za pouzdano dekodiranje na strani prijemnika.
Format poruke u SAE J1850 protokolu
Bez obzira na to da li je u pitanju VPW ili PWM varijanta, svaki J1850 frame ima istu logičku strukturu. Razlika je samo u fizičkom obliku signala. Frame se sastoji od sledećih elemenata:
1. SOF – Start of Frame
SOF označava početak poruke. Kod VPW varijante to je dominantni impuls dužine ≈ 200 µs, značajno duži od svih drugih pulseva, pa ga prijemnik lako prepoznaje. Kod PWM varijante SOF je duža sekvenca u unapred definisanom duty-cycle-u koja je izvan normalne bit-dužine, čime se jasno razlikuje od regularnih bitova.
SOF ima dve funkcije:
- sinhronizacija prijemnika,
- signalizacija početka nove poruke i prekid eventualne kolizije.
2. Header (1 ili 3 bajta)
Header sadrži informacije o tipu poruke, adresama učesnika i prioritetu. U J1850 postoje dve vrste headera:
- 1-bytni header – koristi se kada je komunikacija jednostavna (tester ↔ ECU),
- 3-bytni header – koristi se kada više modula učestvuje u mreži.
U 3-bajtnom headeru:
- Bajt 1: prioritet + format poruke
- Bajt 2: adresa izvora (source)
- Bajt 3: adresa odredišta (target)
Niži numerički prioritet znači viši stvarni prioritet. Ako dva ECU-a počnu da šalju poruku istovremeno, pobedi onaj sa nižim brojem u prvom header-bajtu.
3. Data polje (0–12 bajtova)
Data polje sadrži korisne podatke, najčešće:
- dijagnostičke servise (Mode 01, Mode 03, Mode 22...),
- PID-ove i vrednosti senzora,
- komande i odgovore modula.
U J1850 maksimalna veličina korisnih podataka je 12 bajtova, što je više od CAN-ovih 8 bajtova. Ako je potrebno više, poruke se šalju u sekvencama.
4. CRC (1 bajt)
CRC je jednostavan 8-bitni checksum koji obezbeđuje integritet kompletne poruke (uključujući i header). Koristi se specifičan polinom definisan J1850 standardom.
Ako prijemnik izračuna drugačiji CRC od primljenog, frame se odbacuje.
5. EOF – End of Frame
EOF označava kraj poruke. U VPW varijanti EOF je pasivni period dužine oko 280 µs (nema dominacije na busu), dok PWM EOF ima nešto drugačiju, ali i dalje jasno prepoznatljivu šemu duty-cycle-a.
Za razliku od SOF-a, EOF signalizira da je frame završen i priprema bus za sledeći prenos.
6. IFR – In-Frame Response (opciono)
Jedinstvena karakteristika J1850 protokola je opcioni In-Frame Response (IFR). To je mini-odgovor koji ECU može da pošalje odmah nakon CRC-a, pre završnog EOF-a.
IFR se koristi za:
- potvrdu prijema komande,
- signalizaciju statusa,
- slanje kratkih informacija bez slanja cele nove poruke.
IFR može biti:
- Type I – kratki odgovor odmah posle CRC-a,
- Type II – ECU šalje odgovor tek nakon kratke pauze.
Dijagnostički alati IFR uvek prepoznaju, ali ga nisu dužni slati.
Sažetak formata poruke
Kompletan J1850 frame izgleda ovako:
SOF → Header → Data → CRC → [IFR] → EOF
Iako deluje jednostavno, J1850 format pruža sve što je potrebno za dijagnostičke i radne poruke: adresiranje, prioritet, provere integriteta i mogućnost brzog odgovora bez dodatnog frame-a.
Arbitraža i kolizije u SAE J1850 protokolu
Pošto J1850 magistrala (bilo VPW ili PWM) omogućava da do 32 ECU-a bude povezano na istu žicu ili par žica, važno je obezbediti da dva modula ne šalju poruke istovremeno. Ako bi se to desilo, poruke bi se „sudarile“ i prijemnici ne bi mogli da ih razumeju. Zato J1850 ima ugrađen mehanizam arbitraže koji sprečava kolizije i određuje koji ECU dobija pravo da prvi pošalje poruku.
Kako nastaje potencijalna kolizija?
Kolizija se javlja kada dva (ili više) modula istovremeno prepoznaju SOF (Start of Frame) kao priliku da pošalju poruku. Tipična situacija:
- ECU A želi da pošalje podatke za instrument tablu,
- ECU B želi da pošalje informacije upravljačkoj jedinici motora,
- oba vide magistralu kao „slobodnu“ i započinju slanje u istom trenutku.
U ovakvoj situaciji došlo bi do kolizije, ali J1850 ima elegantno rešenje.
Princip: ko ima viši prioritet, pobedi
Prioritet poruke kod J1850 određuje se već u prvom bajtu headera (tačnije, u gornjim bitovima „Message Type / Priority“ polja). Niži binarni broj = viši prioritet.
Zato ECU-ovi počinju da prenose svoju poruku i istovremeno prate magistralu da vide da li se signal na busu poklapa sa onim što oni šalju:
- ako magistrala izgleda baš onako kako ECU šalje → on je i dalje u igri,
- ako vidi da je faza na busu dominantnija od one koju on pokušava da postavi → on gubi arbitražu.
Drugim rečima, ECU koji „pokuša“ da pošalje manje važnu poruku i vidi da je drugi ECU aktivniji na busu → automatski odustaje i čeka sledeću priliku.
Kako je ovo moguće?
- VPW: dominantno stanje (oko 7 V) „nadjačava“ recesivno stanje (0–3.5 V).
- PWM: jedan ECU može forsirati dominantnu fazu (B+ = 5 V / B– = 0 V), što drugi ECU u recesivnoj fazi odmah detektuje kao „jači signal“.
Zbog toga svaki ECU pouzdano može da vidi da li je neko drugi „jači“ na magistrali i odmah povlači svoju transmisiju.
Kako tačno izgleda arbitraža u praksi?
Zamislimo dva ECU-a koji šalju poruku i oba počinju sa SOF:
- Oba ECU-a pošalju SOF istovremeno – još nema sukoba.
- Počinju da šalju prvi bajt headera.
- ECU A šalje bit „1“ (kraći aktivni impuls), ECU B šalje bit „0“ (duži aktivni impuls).
- Na busu se pojavljuje signal koji odgovara bitu „0“ (dominantniji impuls).
- ECU A vidi da bus ne liči na ono što on šalje → odustaje.
- ECU B nastavlja da šalje svoju poruku.
Na ovaj način izbegavaju se kolizije i poruka sa višim prioritetom uvek „pobeđuje“.
Šta se dešava sa ECU-om koji izgubi?
ECU koji izgubi arbitražu:
- prelazi u stanje čekanja,
- posmatra magistralu dok se ne završi trenutni frame,
- ponovo pokušava slanje kada bus postane slobodan.
Zahvaljujući ovome J1850 može da podrži do 32 aktivna čvora bez sudaranja poruka.
Zašto je J1850 arbitraža jednostavnija od CAN-arbitraže?
CAN koristi složeniji mehanizam baziran na identifikatorima poruka i „dominantnim“ bitovima koji poništavaju recesivne bitove. J1850 radi nešto slično, ali mnogo jednostavnije:
- manje učesnika na mreži,
- jednostavniji format poruke,
- manje detalja u headeru koje treba arbitrirati.
U praksi, to znači da je J1850 pouzdan čak i u uslovima gde se više modula bori za bus, iako je tehnologija starija i sporija od CAN-a.