Aki kicsit is ismeri az autójának lelkivilágát, az hallotta már a CAN-bus, az OBD diagnosztika, vagy éppen az oszcilloszkópos diagnosztika kifejezéseket. De milyen üzeneteket „fognak el” vagy éppen továbbítanak ezek a rendszerek? Most induló, Adatok az autóban című cikksorozatunk első részéből kiderül, hogy miért is fontos a bináris kód.
Adatok az autóban sorozat – 1. rész
Az ősidőkben volt az az állapot, mikor volt egy üzemanyagszint-jelző a tankban, a műszerfalon egy pöcök, a kettő között egy kábel, és kész, ha kifogyott a benzin, arról a vezető úgy értesült, hogy megállt a motor, hiszen nyilván marhára nem vette észre, hogy fekszik a mutató. Jó-jó, tudom, a Trabantban még ennyi sem volt, de most ezen elegánsan libbenjünk át. Aztán volt az, amikor esetenként már két kábel volt az egyik a mutatónak, a másik pedig a sárga lámpácskának, amit már talán jobb eséllyel vett észre a fogalmatlan sofőr. Aztán meg most van az, hogy pontosan tudjuk, hogy hány kilométert mehetünk még azzal a tankkal, ha pedig kifogy a nafta, akkor sípol, visít, kiír, villog. Lássuk be ezeknek mindnek egy-egy külön kábel minimum hülyeség lenne.
Vagy vegyünk egy másik példát, a motorhőmérsékletet: annó volt egy mutató a műszerfalon, és ha az ellendült a pirosig, akkor baj volt. A jel egy hőmérséklet jeladótól jött, ami be volt tekerve a hűtőkörbe, és ennyi. Aztán hirtelen egyre több dolognak lett szüksége erre a hőmérséklet jelre. Megjelent a motorvezérlő-egység, aztán egyre több vezérlőegység egymás után, mivel a járművek szabályozórendszereinek fejlődése egy idő után szükségessé tette azt, hogy az egyes funkciókat külön-külön vezérlőegységek szabályozzák. (Itt nem véletlenül említek „járműveket”, mert ez nem csak az autókra, hanem szinte mindenre igaz, aminek kereke van, a bicikliktől a repülőkön át a tengeralattjárókig.)
Soros vagy párhuzamos?
Ezzel azonban felmerült egy olyan probléma is azonnal, hogy mi történik, ha egy adott szenzor által biztosított információra egyszerre több vezérlőegységnek is szüksége van. A „másik oldali” probléma is lehetséges, azaz mi történik akkor, ha egy aktuátort (azaz beavatkozót, pl. egy elektromos szervómotor vagy egy mágnesszelep) két különböző vezérlőegység is vezérelni szeretne azonos időben.
Az első probléma még megoldható úgy, hogy minden egyes vezérlőegység saját szenzorral méri ugyanazt a paramétert. Ez amellett, hogy drága, még helyigényes is, hiszen pl. egy szívócsőben nehezen fér el adott esetben csak azért három MAP szenzor, mert a szívócső nyomás értékre szüksége van a motorvezérlőnek, a fékvezérlőnek és a váltóvezérlőnek is.
A következő lehetőség az, hogy az adott szenzort összekötik minden olyan vezérlőegységgel, amelynek szüksége van az általa biztosított információra. Ez már járhatóbb út, ezt hívják
párhuzamos információátvitelnek.
A párhuzamos információátvitel jellemzői:
- csak egy szenzor kell minden fajtából,
- nagyon sok kábel kell hozzá,
- de legalább jól áttekinthető, javítható és
- nagy a hibatűrése, mert nincs feldolgozó számítógép, így az informatikai rendszerek tipikus átviteli hibái nem jelentkeznek.
A vezetékek azonban amellett, hogy drágák, nehezek is, így a ’80-as évek végére elérkeztünk egy olyan ponthoz, amikor már nem lehetett tovább bonyolítani a vezetékhálózatot, ezért ki kellett fejleszteni a gépjárművek számára egy olyan rendszert, amiben az egyes vezérlőegységek és a szenzorok ugyanazon a vezetékhálózaton kommunikálnak egymással. Ezt pedig
soros információátvitelnek
hívják. A soros digitális rendszerekben összesen egy, vagy maximum két vezeték van, ezen jutnak el az egyes információk a szenzoroktól a vezérlőkig, és onnan a beavatkozókig, digitális formában, és időben egymás után, szép sorban. A digitális jelek formáját az úgynevezett CAN-bus protokoll szabja meg.
A soros digitális információátvitel jellemzői:
- csak egy szenzor kell minden fajtából,
- már nem kell sok kilométer kábel, így egyszerű, olcsó, sőt, még a súlya is kicsi,
- az irányítóegységek egy egységes szabályrendszer, azaz protokoll szerint „beszélgetnek”,
- viszonylag nagy adatátviteli sebesség is lehetséges (ami mondjuk egy gigabites Ethernet hálózathoz képest még mindig megmosolyogtatóan kevés, mindössze 1 Mbit/s, de itt ez is bőven elég, ráadásul sokkal jobb a zavartűrése is)
- a bővítés, módosítás aránylag egyszerű,
- bármi használható a vezeték helyett, ami digitális jelet tud közvetíteni, így például füstjelek, vagy a realitásnál maradva akár optikai kábel is
- vizsgálata a megfelelő „célszerszámmal” egyszerű, ez maga a soros diagnosztika.
Kapcsolódó cikkünk: Minden szakmának megvan a maga nyelve, nincs ez másként az autószerelők között sem… |
Mi a digitális? Nem, nem (csak) szívgyógyszer
A digitális azt jelenti, hogy kétállású, azaz vagy van jel vagy nincs. A digitális rendszerekhez így remekül passzol a kettes számrendszer, ami nullából és egyből áll.
A digitális kód alapeleme a bit, ami kétféle információt takarhat, az 1 a „van”, a 0 a „nincs”. Ha azt is meg akarjuk tudni, hogy valami mennyire van vagy nincs, azaz például egy fojtószelep mennyire nyitott vagy zárt, akkor egynél több bitet kell alkalmazni, mivel két bit már négy-, három bit már nyolcféle információt jelent (a kettő hatványai). 1 bájt (vagy byte) az 8 bitből áll, és 28, azaz 256 féle információt tud átvinni.
Ehhez képest az analóg…
Az analóg jelek egy szenzorban pontosan követik a mért paraméter változását. Azaz tegyük fel pl. hogy egy 0 és 90 fok közötti elfordulást mérő szenzor 0 és 90 Ohm között változtatja az ellenállását, az elfordulással arányosan, analóg módon. Ez azt jelenti, hogy ha az elfordulás 1 fok, akkor az ellenállás 1 Ohm, ha 80 fok, akkor 80 Ohm, és ha 12,4896 fok, akkor az ellenállás 12,4896 Ohm. Nyilvánvalóan ez a legpontosabb adat, ami csak lehetséges, de a számítógépek digitális alapon működnek, így ezt a jelet ebben a formában nem fogják tudni értelmezni. Le kell fordítani bináris kódra, a lefordítással azonban veszítünk a jel pontosságából. Azt, hogy mennyit, a felbontástól függ:
Ha egy bites a felbontás, akkor 0 és 45 fok között 0 Ohm lesz az ellenállás, 45 és 90 fok között pedig 90 Ohm, azaz kettes számrendszerben fogalmazva: 0 és 1. Ha kétbites a felbontás, akkor már négy állapot lehetséges: 0-22,5 fok, 22,5-45 fok, 45-67,5 fok és 67,5-90 fok, azaz 00, 01, 10 és 11; ha hárombites, akkor már 8 állást tud megkülönböztetni a szenzor, ha négybites, akkor pedig már 16-ot.
Most viszont ugorjunk vissza egy percre a kettes számrendszerhez, mert azt sem lenne rossz megérteni.
A bináris kód, azaz a kettes számrendszer
A kettes számrendszer minden számot a kettes szám hatványaival ír le. Mielőtt a lecsóba csapnánk, két dolgot nagyon jegyezzünk meg: minden szám nulladik hatványa 1, és minden szám első hatványa önmaga. Az utóbbi könnyedén belátható, hiszen a hatványozás azt jelenti, hogy a hatvány számának megfelelő alkalommal szorozzuk meg a számot önmagával. Ha a hatvány csak egy, akkor egyszer sem kell megszorozni.
Pl. 24 = 2 * 2 * 2 * 2 = 16 (jól látjuk, hogy összesen négy darab kettes van leírva, ez OK).
21 = 2 * = 2, hiszen a kettest csak egyszer írtuk le, nem volt újabb kettes, a végeredmény 2, pipa.)
Jogosan merül fel a kérdés, hogy akkor a 20 az vajon miért 1? Nullaszor kellett leírni a 2-est, azaz ha egy számot egyszer sem írunk le, akkor az egy büdös nagy semmi, és nem pedig egy. Mindez igaz, de valamelyik ókori matematikus ezt így találta jónak, így vezette fel izzadtságos munkával valami jó nagy kőtáblára, mielőtt valamelyik „művelt” római katona kibelezte volna szegényt, így fogadjuk el, hogy ez így van. Nem mellesleg pedig ez a tétel most nekünk kapóra jön, nem is kicsit, hiszen enélkül sehogy sem tudnánk leírni kettes számrendszerben páratlan számokat.
Szóval a kettes számrendszer lényege a következő:
Jobbról balra kell haladni, így nőnek szépen a hatványértékek. Tehát maradva az előbb említett négybites rendszerben a következő lehetőségek adódnak:
- 0000 – sehol sincs 1-es, úgyhogy ez egy jó nagy nulla
- 0001 – 23 érték: üres; 22 érték: üres; 21 érték: üres; 20 = 1; azaz a végösszeg: 1
- 0010 – 23 érték: üres; 22 érték: üres; 21 = 2; 20 érték: üres; azaz a végösszeg: 2
- 0011 – 23 érték: üres; 22 érték: üres; 21 = 2; 20 = 1; azaz a végösszeg: 2+1=3
- 0100 – 23 érték: üres; 22 = 4; 21 érték: üres; 20 érték: üres; azaz a végösszeg: 4
- 0101 – 23 érték: üres; 22 = 4; 21 érték: üres; 20 = 1; azaz a végösszeg: 4+1=5
- 0110 – 23 érték: üres; 22 = 4; 21 = 2; 20 érték: üres; azaz a végösszeg: 4+1=6
- (…)
- 1111 – 23 = 8; 22 = 4; 21 = 2; 20 = 1; azaz a végösszeg: 8+4+2+1 = 15
A fenti szögelfordulás jeladó példájánál maradva, ha egy négybites analóg-digitális átalakítót akasztunk rá, akkor az a jeladó egy négybites felbontású digitális jellé fordítja le az analóg jelet, azaz valahogy így működik:
Összesen 16-féle állapota lehetséges a 0000 és az 1111 között. 90 fokot elosztva 16-tal 5,625 fokot kapunk, így a négybites jeladó 5,625 fokonként fogja változtatni a jelét, valahogy így:
- 0-5,625 fok: 0000, azaz 0
- 5,625-11,25 fok: 0001, azaz 1
- 11,25-16,875 fok: 0010, azaz 3
és így tovább.
Jeltovábbítás
A jelet azonban valahogy továbbítani is kell. A négybites esetben az egyik lehetőség az, hogy négy kábelt húzunk ki a szenzor és a vezérlőegység közé, és amelyiken áram folyik, ott nulla helyett egyes van, mindenki boldog. Illetve majdnem mindenki, kivéve azt, akinek egy 1024 bit felbontású szenzorral kellene dolgoznia, mert bizony neki 1024 darab kábelt kellene behúzgálnia. Ez se nem olcsó, se nem jó, így sürgősen fel kellett találni az időalapú információátvitelt.
Ez arról szól, hogy a szenzor amikor 1-es van, akkor egy periódusnyi időre „felteszi a kezét”, azaz bekapcsolja az áramot, amikor pedig nulla, akkor lapít.
Azaz egy 3-as szám, azaz egy 0010 így nézne ki: lapít-lapít-jelentkezik-lapít
Ehhez már csak azt kell tudni, hogy milyen ütemben kell lapítani és jelentkezni, méghozzá nem csak az információt közlő szenzornak, hanem a vevőnek, pl egy vezérlőegységnek is. Erre való az órajel. Nem, az órajel nem az az iksz, amit az asszony berajzol a falra, hogy „Bélám, oda fúrd a tiplit, amire a kakukkosórát akasztjuk!”, az valójában nem más, mint egy ütem. Olyasmi, mint egy metronóm, csak sokkal-sokkal gyorsabb. Ezt az ütemet ismeri az adó, azaz a szenzor, aki így tudja, hogy mikor tegye fel a kezét, és ismeri a vevő, azaz a vezérlőegység is, aki pedig így tudja, hogy az egyes kézfeltételek mit jelentenek.
Az autó tehát „jelentkezik vagy lapít” nyelven, azaz digitális jelek útján beszélget, azt pedig, hogy ezek a jelek mi módon jutnak el a kocsi egyik végéből a másikba, sorozatunk következő részéből tudhatjátok meg.