Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

Samochodowa magistrala CAN — kilka faktów

Pomyślałem, że podzielę się z Wami kilkoma informacjami na temat samochodowej sieci CAN. Mam nadzieję, że mój wpis chociaż trochę przybliży z czym to się je :P.

Trochę historii

Standard ten został opracowany przez firmę Bosch około 1985 roku. Przed nastaniem czasów CAN (Car Area Network) producenci samochodów stosowali wiązki elektryczne łączące poszczególne elementy tejże wiązki bezpośrednio. A że do samochodów upychało się (i cały czas upycha) coraz to więcej elektroniki, to zarówno koszty jak i masa wiązek elektrycznych rosły. Taka sieć CAN natomiast, pozwoliła obniżyć zarówno koszty, jak i masę wiązki. Z tego względu przemysł motoryzacyjny dość szybko zaczął wykorzystywać to rozwiązanie. W 1993 sieci CAN stały się międzynarodowym standardem (ISO 11898).

Ale jak to działa?

W magistrali CAN nie ma wyodrębnionej jednostki nadrzędnej dlatego należy do grupy magistral typu multi-master. Komunikacja ma charakter rozgłoszeniowy ponieważ komunikaty nadawane na magistralę obierane są przez wszystkie urządzenia. Najważniejsze cechy CAN-a to:
1) do 8 bajtów danych w komunikacie,
2) komunikaty rozpoznawane przez identyfikatory,
3) automatyczna obsługa dostępu do magistrali,
4) sprzętowa obsługa błędów.

Sieć CAN jest siecią p2p. Znaczy to że żaden kontroler nie ma kontroli kiedy dany węzeł odczytuje czy zapisuje informacje. Kiedy dany węzeł jest gotowy do transmisji, sprawdza najpierw czy sieć jest zajęta. Następnie wysyła ramkę (informację) do sieci. Informacje te nie mają zapisanych adresów „nadawcy” ani „odbiorcy”. Zamiast tego każda wysłana informacja ma swój unikalny kod identyfikacyjny (ID). Na podstawie tego kodu pozostałe węzły sieci CAN „decydują cz”y dana informacja przeznaczona jest dla nich i czy mają ją przyjąć.
Co natomiast w przypadku, kiedy kilka węzłów chce nadać informację w tym samym czasie? Jak już napisałem, każda informacja ma swój unikalny kod ID. Kod ten jest zarazem informacją o priorytecie danej informacji. Na podstawie tych priorytetów kontroler sieci tworzy kolejkę – najpierw idą informację nadawane z wyższym priorytetem.
Ale na jakiej zasadzie sieć poznaje te wszystkie identyfikatory? Sieć CAN ma wgraną bazę danych stworzoną z plików tekstowych, na podstawie których kontroler odczytuje:
- nazwę kanału
- lokalizację, skąd informacja wychodzi wraz z długością informacji
- wartość
i kilka innych rzeczy, które pozwalają na wyciągnięcie odpowiednich wartości, jak liczba obrotów czy temperatura.

Rodzaje sieci CAN

Jak to bywa przy różnego rodzaju nowych technologiach wyróżnić można kilka rodzajów sieci CAN:

- Szybka sieć CAN – jak dotąd jest to najbardziej rozpowszechniony rodzaj sieci CAN. Jest to sieć dwużyłowa. Szybkość przesyłanych sygnałów sięga 1 Mbit/s. Rodzaj ten znany jest pod nazwami CAN C lub ISO 11898-2. Typowa sieć tego rodzaju zawiera w sobie takie rozwiązania jak system ABS, moduły kontroli silnika czy system emisji spalin. Jest już jednak następna generacja tej sieci – CAN FD (CAN with Flexible Data-Rate), która potrafi przesyłać dane z prędkością rzędu 8 Mbit/s.

- wolne sieci Can, odporne na zakłócenia/uszkodzenia – również dwużyłowe sieci. Szybkość przesyłu danych w tym rodzaju to maks.125 kbit/s. Rodzaj ten wykorzystywany jest w miejscach gdzie bardziej od prędkości przesyłu danych liczy się niezawodność – urządzenia dodatkowe (jak radio, klima itp.) mające bardziej wpływ na komfort podróży aniżeli działanie samochodu, połączenia z wiązką drzwi, lampami… Inne nazwy tego standartu to CAN B oraz ISO 11898-3.

- jednożyłowe sieci CAN – maksymalna prędkość to 33,3 kbit/s (88,3 kbit.s w trybie szybkim). Wykorzystywane są do połączenia urządzeń niewymagających dużej wydajności – na przykład regulacja lusterek czy foteli.

Warstwy sieci CAN

Poza omówioną wyżej warstwą sprzętową sieci elektrycznej jest jeszcze 6 innych warstw, mających wpływ na działanie wiązki elektrycznej nowoczesnych samochodów:

- warstwa łącza danych: definiuje zasady dostępu do medium transmisyjnego, zapewnia prawidłową transmisję, umożliwia wykrywanie i korygowanie błędów powstałych w warstwie fizycznej, tworzy ramki komunikacyjne
- warstwa sieciowa: kreuje logiczne drogi transmisji między urządzeniami i wybiera optymalne z nich (tak zwany routing), tworzy pakiety komunikacyjne,
- warstwa transportowa: zapewnia transmisję z wymaganymi parametrami (takimi jak przepustowość , stopa błędów, opóźnienia), optymalizuje zużycie usług sieciowych, oferuje usługi połączeniowe i bezpołączeniowe,
- warstwa sesji: rozszerza funkcje warstwy transportowej o mechanizmy umożliwiające synchronizację i zarządzanie wymianą informacji,
- warstwa prezentacji: przeprowadza ujednolicenie formatu informacji pochodzących z różnych systemów, wykonuje kompresję i szyfrowanie informacji, przekształca informację do postaci wygodnej dla przedstawienia użytkownikowi,
- warstwa aplikacji: pełni rolę interfejsu pomiędzy aplikacjami użytkownika a usługami sieci, tworzy komunikaty komunikacyjne.

Plusy? Minusy

Wiązka CAN może ważyć mniej niż „analogowa” poprzez zastosowanie mniejszej ilości przewodów. Zamiast łączyć sprzęty każdy ze sobą, można zastosować sieć CAN.

Zmniejsza to również koszty wyprodukowania takiej wiązki.
Poza tym CAN charakteryzuje się dużą odpornością na zakłócenia i niezawodnością. Uzyskano to poprzez nadawanie danych w postaci napięciowego sygnału różnicowego oraz sprzętowej obsłudze protokołu i kontroli błędów. Specjalizowane kontrolery formują komunikaty, sterują bezkolizyjnym dostępem do magistrali, filtrują komunikaty.
Niestety nie zawsze bywa tak kolorowo jak chcą to nam wmówić. Z doświadczenia wiem, że sieć CAN może robić trochę problemów. Nieraz, czy to przez problem sprzętowy czy też problem z softwerem tej sieci, potrafią występować problemy z interpretacją informacji wysyłanych przez podłączone do wiązki CAN podzespoły. Najwybitniejszym problemem z jakim się spotkałem, występował w Lanci Thesis, gdzie przez błąd w CAN'ie samochód "podmienił" sobie podnośniki przednich szyb z tylnymi zaciskami (tak, dobrze czytacie, w tym modelu tylne zaciski hamulcowe są elektryczne - hamulec ręczny sterowany jest silniczkiem). Problem objawiał się tym, że kiedy kierowca chciał otworzyć okno to samochód zaczynał hamować a kiedy chciał skorzystać z hamulca ręcznego (zdarza się czasami) to otwierały się okna.  

hobby

Komentarze

0 nowych
DjLeo MODERATOR BLOGA  17 #1 21.11.2016 20:28

Bardzo ciekawy poruszyłeś temat.Jako, że zdarza mi się mieć styczność z magistralą CAN z racji, np. programowania firmware-u do zegarów, czy innych modułów, to temat znam. Jednak chyba zbyt dosłownie tłumaczysz pojęcie CAN w tytule. Sieć a magistrala to jednak zupełnie dwie różne rzeczy, zmieniłbym tytuł na magistrala. No i temat warto by było rozszerzyć o HS-CAN czy MS-CAN, ale ogólnie bardzo fajny wpis ;)

walgav   14 #2 21.11.2016 20:31

@DjLeo: Dziękuję zarówno na zwrócenie uwagi na tytuł (zaraz poprawię) jak również za ciepłe słowo :P. A co do rozszerzenia tematu to postaram się jeszcze coś napisać. Co prawda mam sporo doczynienia z samochodami ale raczej rozbiórka/demontaż części i sprzedaż akcesoriów ale staram się powoli edukować w tym temacie :P

pocolog   11 #3 21.11.2016 20:36

Fajne, ale krótko.

TrustNoOne   10 #4 21.11.2016 20:43

"Problem objawiał się tym, że kiedy kierowca chciał otworzyć okno to samochód zaczynał hamować a kiedy chciał skorzystać z hamulca ręcznego (zdarza się czasami) to otwierały się okna. " - Już to widzę jak podczas srogiej zimy, aby ruszyć pod górkę kierowca opuszcza szyby... :D

Wpis ciekawy, choć krótki. Przydałaby się też garść informacji o oprogramowaniu (aplikacjach) i krótki opis co i jak można tam zrobić.

walgav   14 #5 21.11.2016 20:50

@pocolog , @TrustNoOne: Postaram się rozszerzyć temat jakimś następnym (następnymi?) wpisem. Mówiąc szczerze dopiero zaczynam sobie przyswajać informacje na ten temat a jest tego sporo, zwłaszcza dla osoby nie zajmującej się tym zawodowo :P.
@TrustNoOne: Dlatego gościu przyjeżdżał do nas parokrotnie po różne rzeczy żeby sobie sprawdzać samochód z działającymi częściami i starać się dochodzić gdzie tkwił problem. W końcu okazało się że jeden ze sterowników wpiętych w CAN się zwalił. Ale z tego co wiem samochów aktualnie jeździ w miarę dobrze

Kaworu   12 #6 21.11.2016 20:50

"- wolne sieci Can, odporne na uszkodzenia " - uszkodzenia? Nie zakłócenia?

walgav   14 #7 21.11.2016 20:54

@Kaworu: poprawiłem, dzięki

  #8 21.11.2016 21:10

firma bosch a nie bosh

Kpc21   9 #9 21.11.2016 21:19

Routing w CAN-ie? To ma być jakieś przesyłanie danych między autem a autem?

Chyba trochę się zapędziłeś wklejając tu cały model OSI :)

macminik   15 #10 21.11.2016 21:20

Cóż. Wizyta kuny i konieczność naprawy CAN kosztowało mnie kiedyś prawie 1000 zł.

walgav   14 #11 21.11.2016 21:22

@Kpc21: W tym punkcie chodzi o znalezienie drogi między jednym a drugim urządzeniem wpiętym w CAN tego samego samochodu

  #12 21.11.2016 21:24

Przepisałeś jakąś pracę z technikum?

darek_g   7 #13 21.11.2016 21:27

Wtrącę swoje 3 grodze. Otóż robiłem kiedyś projekt w którym do komunikacji z kilkoma modułami oraz z falownikiem sterującym silnikiem 3-fazowym, wykorzystałem właśnie magistralę CAN. Ja powiem tak.: jak się program dobrze napisze, a później całość dobrze przetestuje to by nie było takich cyrków jak piszesz o lanci. To ewidentnie efekt nie dopracowanej części softwarowej (liczę że sprzętowo dobrze to rozwiązali). Mój projekt już działa przeszło 5 lat i to w warunkach zakłóceń przemysłowych. Komunikacja odbywa się bez awaryjnie pomiędzy wszystkimi modułami. Wszystkie dane docierają tam gdzie mają dotrzeć.
Ale podsumowując artykuł spoko, fajnie że oprócz samych programów pojawiają się od czasu do czasu wpisy związane z elektroniką :)

karroryfer   6 #14 21.11.2016 21:32

Tak temat ciekawy a nawet na czasie ( dla mnie ) Dlatego zapytam od razu - dlaczego ( skoro wszystkie urządzenia podpięte do CAN mają dostęp do wszystkich komunikatów ( prawda ?) to jednak aby odczytać wszystkie parametry np silnika potrzebne są specjalizowane układy które zdeje się łączymy też do CAN.
Dlaczego więc nie obsługuje tego słynny skadinąd ELM 327 - są różne programy do jego obsługi ale chyba żaden nie daje możliwości zblizonych fabrycznych. Czy występuje tu jednak jakiś szyfrowanie ?

walgav   14 #15 21.11.2016 21:43

@darek_g: Właśnie patrząc na zapotrzebowanie na części (głównie elektronikę, ale nie tylko) ten model Lancii jest kiepsko sklecony sprzętowo. Raz że większość elektroniki jest chińska (a nawet jak nie to słabej jakości) a dwa że chyba za dużo chcieli na raz upchnąć. I prawdopodobnie coś za słabo się do projektowania przyłożyli.
@karroryfer: z tego co wiem to standaryzacja CAN dotyczy tylko kwestii sprzętowych (hardware). Natomiast kwestia softweru i obsługi pod kątem aplikacji/programu czytającego jest w stu procentach zależna od producenta samochodu. Także wprowadzają co mogą, żeby jak najbardziej ograniczyć pole manewru w korzystaniu z usług innych mechaników jak autoryzowane punkty (bądź mechanicy, którzy mają wykupione odpowiednie programy diagnostyczne). W końcu producenci muszą w jakiś sposób wymusić popyt na swoje usługi

  #16 21.11.2016 21:54

Naprawdę Bosh????????!!!!1111oneoneone

  #17 21.11.2016 22:11

"(...) samochód "podmienił" sobie podnośniki przednich szyb z tylnymi zaciskami (...)"

No nie, takie rzeczy to niestety (a może na szczęście) nie są możliwe.

Czarny Romek   5 #18 21.11.2016 22:34

@TrustNoOne: Ciekawe jakby samochód nagle zanienił hamulec z gazem. Tzn gdy kierowca wciska hamulec, to samochód przyspiesza, a gdy wciska gaz - hamuje

  #19 21.11.2016 22:56

Magistrala typu multi-master, z roku 1985: teraz byle złodziej bez problemu podpina swój kontroler do dostępnego fragmentu kabla CAN.
Co zrobiono w temacie bezpieczeństwa tego systemu?

DjLeo MODERATOR BLOGA  17 #20 21.11.2016 23:00

@karroryfer: Nie jest tak do końca jak mówisz, soft i komunikacja po odpowiedniej magistrali to podstawa. W dodatku u mnie w przypadku Forda aby skomunikować się z modułem np. zegarów HEC muszę skorzystać z magistrali HS-CAN. Bo mój magiczny Ford ma 2 magistrale komunikacyjne, ale spoko, są i autka co mają 3 :). Musiałem przerobić fabryczny ELM327 do obsługi w/w. Domontować przełącznik z trybu HS na MS. W dodatku soft z IDS'a (Fordowskiego), został w prawie całości sklonowanany w postaci ElmConfiga od kolegów z Rosji. Da sie? Da... Da. da..

Co do różnicy w odczytach, tudzież możności ich odczytu sprawa jest prosta. Każdy producent przystosowuję magistralę CAN do swoich własnych wymagań i tworzy szereg własnych modułów, które może ze sobą w łatwy sposób łączyć. Trudno oczekiwać uniwersalności w czymś co takie być nie może i nie na tym polega. Wyobraź sobie, że jeden samochód np. posiada moduł wycieraczek, który komunikuję się po CAN'ie z modułem SAM, a ten do modułu centralnego. Jak byś chciał to odczytać bez dodatkowych instrukcji? Dlatego każdy producent ma swój własny soft. A te uniwersalne odczytują wyłącznie podstawowe parametry. I to czasami wystarcza. Sam znam mechanika, który próbował mój samochód diagnozować jakimś softem uniwersalnym, jak się go zapytałem, czy ten soft poprawnie komunikuje się z modułem x, y, z, to nie wiedział. Inaczej mówiąc nie mógł odczytać poprawnie błędów, bo jak. Na szczęście Ford udostępnia soft, który wszystko jest w stanie wyłapać. Oczywiście mechanik nie miał o tym pojęcia.

Wracając do modułów, to one się ze sobą komunikują niezależnie, każdy i tak działa autonomicznie. Np. moduł zegarów nie jest zależny od modułu GEM, albo innych, ale jak chcesz aktywować moduł temopomatu, to musisz już zmienić ustawienia w kilku innych modułach, jednocześnie. Czemu? bo każdy z tych modułów wykonuję instrukcję innego. Np. moduł zegarów wyświetla ikonkę tempomatu na budziku :), i pobiera też informację o prędkości.

TrustNoOne   10 #21 21.11.2016 23:13

@Czarny Romek: Niektórym mogłoby to życie i auto uratować słuchając tłumaczeń, że im się pomyliło. ;)

DjLeo MODERATOR BLOGA  17 #22 21.11.2016 23:25

@Czarny Romek: Jeżeli choć trochę wiesz jak to technicznie wygląda, to wiesz też, że jest to po prostu nie możliwe :). Właśnie dlatego, że za jedno i drugie odpowiada zupełnie inny układ. Sterownik nie jest w stanie tego zmienić sam, bo po prostu jest to niemożliwe. Między bajki można włożyć teorie, że "komputer" może coś takiego zmienić sam. Poza tym w przypadku hamulca wchodzi w grę również układ mechaniczny. W starych autkach, np. w maluchu gaz nie miał żadnej elektroniki :). Only linka...

Subversive   7 #23 22.11.2016 07:18

Przyjemny i lekkostrawny artykuł na rozpoczęcie dnia. Dzięki ;-)

  #24 22.11.2016 09:11

Ah, nie ukrywam, ze bardzo zainteresowal mnie ten artykul....

Sam jestem mechanikiem (takim, ktory nie naprawia samochodow), a teraz zajmuje sie analiza danych (a wiec mozna by powiedziec, ze jestem informatykiem). Do czego zmierzam - fajnie byloby poczytac wiecej artykulow w tej dziedzinie.

Ja analizuje dane z CAN. I z tego co ja sie orientuje to "jednozylowy CAN" to jest raczej LIN. A ogolnie w samym samochodzie wystepuja rozne sieci, CAN, LIN, FlexRay, BroadR, Ethernet, etc. Oczywiscie, wszystko zalezy jaka marka i w jakim wieku jest samochod. Fajnie byloby poczytac wiecej na ten temat - jesli chcesz zglebiac temat ;-)

walgav   14 #25 22.11.2016 10:52

@HaniuHeniu (niezalogowany): Po tak ciepłym (chyba ;P) przyjęciu tego wpisu, mocno się zastanawiam nad kontynuacją. Boję się tylko że mam za małą wiedzę na ten temat, a opisując coś "na sucho", tylko na podstawie wiadomości z neta, mogę popełnić jakąś gafe ;P. Ale postaram się temat pociągnąć w wolnej chwili (czyli pewnie jakoś w przyszłym tygodniu).

walgav   14 #26 22.11.2016 15:00

@DjLeo: Akurat z przykładem linki gazu to nie bardzo trafiłeś. Coraz więcej aut ma już pedał gazu elektroniczny - informacja o tym czy (i z jaką siłą) gaz naciskasz idzie "po kablach", elektronicznie. Tak jest na przykład w volvach mniej więcej od 2001 roku czy w przytoczonej przeze mnie w tekście Thesis.
@Czarny Romek: A hamulec czy sprzęgło jednak cały czas wymagają fizycznej aktywności (serwo oraz pompy sprzęgła i hamulca działają po fizycznym wciśnięciu pedałów hamulca i sprzęgła)

Autor edytował komentarz w dniu: 22.11.2016 16:44
aragorn9   7 #27 22.11.2016 16:38

@Czarny Romek: hamulec zwykły musi być analogowy.

  #28 22.11.2016 16:41

@Mickey58 (niezalogowany): Jakby to było takie proste, żeby się wpiąć i włala samochód Twój... Na pewno są jakieś zabezpieczenia porobione w wiązce. Sam fakt że się wepniesz nic jeszcze nie znaczy. Różne systemy działają na różnych interfejsach (jak kolega @DjLeo wspomniał w jednym z komentów). Więc żeby obejść (o ile się w ogóle da) na przykład taki układ immobilazera musisz mieć dostęp do całej magistrali

DjLeo MODERATOR BLOGA  17 #29 22.11.2016 17:11

@walgav: Źle mnie zrozumiałeś, ja podałem za przykład instalacje, które kiedyś miały linkę i tyle, teraz nie ma samochodu z linką na gazie i to od bardzo dawna już. Wszystko elektronicznie.

walgav   14 #30 22.11.2016 17:17

@DjLeo: Tak, przepraszam. Niedawno doczytałem jak zasiadłem do lapka (muszę sobie wreszcie wybić z głowy odpowiadanie na szybko, podczas przerwy w robocie).

DjLeo MODERATOR BLOGA  17 #31 22.11.2016 17:28

@walgav: luzik ;)

Giiixxxx6   9 #32 22.11.2016 18:29

CAN... 3 lata temu nie wiedziałem co to za skrót, po liceum mam to wyryte w głowie. Nie wiem czy kiedykolwiek na zajęciach obyło się bez tego magicznego wyrazu :)

SweetDreams   9 #33 24.11.2016 07:39

@aragorn9: "hamulec zwykły musi być analogowy."

Jakieś źródło do tego stwierdzenia?