Kas yra CAN?
CAN (Controller Area Network) tinklas sukurtas Robert Bosch GmbH firmos 1986 metais. Jo pagrindinė paskirtis - automobilių pramonė. Pagrindinis tikslas buvo padaryti automobilius patikimesnius, saugesnius ir ekonomiškesnius tuo pat metu sumažinant jungiamųjų laidų kiekį ir elektros grandinių sudėtingumą. CAN protokolas labai išpopuliarėjo ne tik automobilių ir sunkvežimių pramonėje bet ir kitose srityse (laivuose, traukiniuose, pramoninėje automatikoje, medicinos technikoje ir kt.).
Europos automobilių ir sunkvežimių gamintojai CAN'a pradėjo naudoti daugiau nei prieš 10 metų. Pagrindiniai CAN protokolo privalumai yra aukštas patikimumas ir didelis duomenų perdavimo greitis (iki 1 Mbit/s). Tačiau dėl specifinės aplinkos ir patikimumo padidinimo, automobiliuose naudojamas maksimalus greitis 500kbit/s.
Automobilių pramonėje siekiant užtikrinti skirtingų gamintojų įrangos suderinamumą, apie 1993 metus buvo sukurti ISO (International Standards Organization) ir SAE (International Standards Organization and Society of Automotive Engineers) standartai:
» ISO 11898 - didelio greičio (High-Speed) CAN standartas
» ISO 11519 - mažo greičio (Low-Speed) CAN standartas
» SAE J2284 - didelio greičio CAN standartas (High Speed CAN (HSC) for Vehicle Applications at 125 Kbps)
» SAE J1939 - CAN standartas kroviniams automobiliams ir autobusams
Yra dvi CAN protokolo specifikacijos 2.0A ir 2.0B. Pirmojoje naudojami 11 bitų identifikavimo adresas, antrojoje - 29 bitų.
Automobilių pramonėje CAN tinklo pagalba sujungiami variklio valdymo, papildomos įrangos, oro kondicionavimo, apšvietimo ir kitos įrangos blokai tarpusavyje. Jau apie 10 metu dauguma Europietiškų automobilių gamintojų naudoja CAN tinklus įrangos sujungimui. Amerikietiškų ir azietiškų automobilių gamintojai CAN'a pradėjo naudoti gerokai vėliau. Pirmasis automobilis su CAN tinklu buvo Mercedes-Benz S - klasės1991 metais, jame buvo sujungta prietaisų skydelis, variklio ir transmisijos valdymo blokai.
Dažnai automobiliuose yra keletas CAN tinklų dirbančių skirtingais greičiais. Variklio valdymo, ABS sistemos jungiamos "High-Speed" tinklu, o papildomos įrangos tinklai dirba "Low Speed". Kai kurie Amerikeitiškų automobilių gamintojai naudoja vieno laido (single-wire arba GMLAN) CAN tinklų atmainą.
CAN diagnostika
Daugumoje naujų automobilų yra įdiegta (EOBD) diagnostika CAN protokolu. Šis diagnostikos interfeisas yra standartizuotas ISO 15765 standarto (Diagnostics on CAN). Pirmieji automobiliai pasirodę rinkoje su CAN diagnostika buvo 2002 metais Ford Fiesta, Opel Vectra ir Mazda 6. Šiandien CAN diagnostika yra daugumoje naujų Ford, Jaguar, Mazda, Mercedes, Nissan, Toyota, Lexus, Renault, Peugeot, Chrysler, Opel, WV, Audi, Porsche, Volvo, Saab ir kt. automobilių. Daugumoje atvejų nesunkiai galima nustatyti ar automobilis turi diagnostiką per CAN. Tam reikia pažiūrėti ar yra atitinkami kontaktai automobilio OBD-II jungtyje.
Šiuo metu automobilių diagnostikai yra naudojami 4 skirtingi ISO15765 protokolo variantai:
ISO 11898 - didelio greičio (High-Speed) CAN standartas
ISO 11519 - mažo greičio (Low-Speed) CAN standartas
SAE J2284 - didelio greičio CAN standartas (High Speed CAN (HSC) for Vehicle Applications at 125 Kbps)
SAE J1939 - CAN standartas kroviniams automobiliams ir autobusams
Pagal CAN 2.0A specifikaciją naudojamas 11 bitų identifikavimas - toks variantas kartais vadinamas kaip Basic arba Standard CAN, o pagal CAN 2.0B specifikaciją naudojamas 29 bitų identifikavimas - kartais vadinamas kaip Full arba Extended Frame CAN.
CAN tinklo struktūra
Tipinis CAN tinklas automobiliuose yra sudarytas iš diferencialinės linijos (du laidai susukti tarpusavyje ir kiekviename linijos gale prijungta apkrovos varža).
Automobilių elektroninėje įrangoje apkrovos varžos yra įmontuotos valdymo blokuose. Sujungtų į CAN tinklą valdymo blokų gali būti keletas, tačiau apkrovos varžos bus tik 2 iš jų (dažniausiai variklio valdymo ir pavarų dėžės kompiuteriuose). Standartiškai apkrovos varža RT=124 Ω.
Tipinė tinklo struktūra (ISO11898)
Gali būti naudojamos ir kitokios CAN tinklo struktūros. Žemiau pateikta schema yra atsparesnė trukdžiams:
Taip pat kartais gali būti sutinkami žvaigždės tipo CAN tinklai. Tokiuose tinkluose naudojamos daugiau nei 2 apkrovos varžos:
Žvaigždės tipo tinklo schema
Nepriklausomai nuo tinklo struktūros bendra linijos varža yra RT/2= 62 Ω.
Informacijos perdavimas diferencialine linija yra daug patikimesnis ir atsparesnis trukdžiams. Vienu linijos laidu yra perduodama ta pati informacija kaip ir kitu, tik invertuota. Pavyzdžiui jei ant linijos CAN_H yra "0", tai ant CAN_L yra "1". Valdymo blokas visada priima abu signalus ir mato įtampos skirtumą tarp jų. Kadangi signalas perduodamas dviem laidas, tai trukdžiai abu juos veikia vienu metu, o skirtumas tarp CAN_H ir CAN_L išlieka tas pats.
Dažniausiai signalo amlitudė yra apie 1.25 V. CAN_H signalas yra tarp 2.5 ir 3.75 V, o CAN_L tarp 1.25 ir 2.5V.
Duomenys per CAN'a perduodami paketais. Paketo ilgis nėra fiksuotas, tačiau negali būti didesnis, nei apibrėžta standarto. Tarp duomenų paketų yra tarpai, kurių metu bet kuris į tinklą pajungtas prietaisas gali pradėti siuntimą.
CAN sistemų gedimai
Dažnai automobiliuose atsiranda gedimai pakeitus sugedusį valdymo bloką kitu. Valdymo blokai yra sujungti tarpusavyje per CAN tinklą ir visi turi savo identifikavimo adresą (11 arba 29 bitų). Pakeitus valdymo bloką kitu, kuris lyg ir niekuom nesiskiria nuo sugedusio, jis gali netikti dėl programinės versijos nesutapimo, identifikavimo ir kt. Taip pat pasitaiko gedimai dėl CAN tinklo laidų pažeidimų, ar paties bloko gedimų. CAN duomenų perdavimo laidai, būtinai turi būti susukti tarpusavyje, jeigu laidai eina atskirai 10 cm ar daugiau, tai labai didelė tikimybė kad tinklas veiks nepatikimai, arba visai neveiks. Taip pat ,taisant laidų pažeidimus nepatartina daryti laidų sujungimus, nes kiekviena laidų sujungime atsiranda signalo atspindžiai. O tai gali įtakoti duomenų perdavimo kokybei ir patikimumui. Dauguma sistemų bendraujančių per CAN tinklą, atsiradus vieno laido pažeidimams, gali dirbti avariniu rėžimu ir per vieną laidą.
NORMALUS SIGNALAS
Čia pavaizduotas komforto CAN tinklo signalas. Jame perduodamas 2 durų ir centrinio modulio signalai. 3 skirtingi duomenų paketai nesunkiai matosi, tačiau norint detaliau pamatyti šiuos signalus reikia gan greito oscilogtrafo.
CAN_L GEDIMAS
Oscilogramoje matosi signalo sutrikimai CAN_L linijoje. Šiuo atveju gali būti vieno iš kontrolerių gedimas. Kontroleris nesugeba duomenų perduoti per CAN_L liniją, dėl vidinio gedimo. Nes kaip matosi iš oscilogramos, kitų kontrolerių duomenys perduodami per abi linijas.
CAN_H GEDIMAS
Oscilogramoje matosi signalo sutrikimai CAN_H linijoje. Šiuo atveju gali būti vieno iš kontrolerių gedimas. Kontroleris nesugeba duomenų perduoti per CAN_H liniją, dėl vidinio gedimo. Nes kaip matosi iš oscilogramos, kitų kontrolerių duomenys perduodami per abi linijas.
CAN_L užtrumpintas į žemę.
Šiuo atveju CAN_L linijoje nėra jokio signalo. Tai gali būti tiek dėl valdymo bloko, tiek dėl laidų pažeidimų. Tokiu atveju reikėtų patikrinti ar CAN_L laidas nėra užsitrumpinęs į korpusą ar nutrūkęs. O jei tai bloko gedimas, nustatyti kurio, galima atjungiant po vieną visus blokus prijungtus prie CAN tinklo.
CAN_L užtrumpintas į +12v.
Šiuo atveju CAN_L linijoje nėra jokio signalo. Tai gali būti tiek dėl valdymo bloko, tiek dėl laidų pažeidimų. Tokiu atveju reikėtų patikrinti ar CAN_L laidas nėra užsitrumpinęs į +12V ar nutrūkęs. O jei tai bloko gedimas, nustatyti kurio, galima atjungiant po vieną visus blokus prijungtus prie CAN tinklo.
CAN_L GEDIMAS
Šiuo atveju kai kurių duomenų paketų CAN_L linijoje yra per maža signalo amplitudė. Kadangi ne visų paketų, o tik kai kurių signalas yra blogas, tai reiškia kad yra kažkurio bloko gedimas. Būtent šis gedimas yra iššauktas dirbtinai - pajungus CAN_L signalą į vieną iš blokų per 300 omų varžą. Toks gedimas realiai galėtų atsirasti dėl blogų kontaktų jungtyse, ar laidų oksidacijos.