ATNEL tech-forum
https://forum.atnel.pl/

Magistrala CAN -- wprowadzenie
https://forum.atnel.pl/topic1178.html
Strona 1 z 1

Autor:  SunRiver [ 16 cze 2012, o 15:43 ]
Tytuł:  Magistrala CAN -- wprowadzenie

W zasadzie to kosztem wprowadzenia można by przejść od razu do meritum, niemniej wypada słowem wstępu
opisać co nieco samą magistralę jak i jej zalety i wady, bowiem dla mnie jest to chleb powszedni, ale wielu z was
trochę się może wydać skomplikowane.

Wiec tak magistralę CAN (Controler AREA Network) powołano do życia w latach 80 w firmie Bosch (dzisiejsze O'Bosche):)
na potrzeby rynku motoryzacyjnego w celu poprawienia i zwiększenia niezawodności systemów ABS i wielu innych ....

W uproszczeniu zawierającym sedno działania CAN można powiedzieć że jest to asynchroniczna szeregowa magistrala
służąca do wymiany danych i tego się tego trzymać rękami, nogami i zębami (sztuczne szczeki są bardzo na miejscu).

CAN posiada wiele ciekawych własności niemniej tutaj wymienię tylko te podstawowe i postaram się je wyjaśnić :)

1. Posiada bardzo dużą odporność na zakłócenia elektromagnetyczne.

-- to zawdzięcza zastosowaniu różnicowej transmisji poszczególnych bitów.
-- dodatkowo każda ramka opatrzona jest sumą kontrolną CRC-15.

Cóż to oznacza dla nas... hmmm... matematycznie można obliczyć że jeden przekłamany bit może zostać nie wykryty
raz na 1000lat ciągłej pracy magistrali , więc prawdopodobieństwo niewykrycia wynosi 10^-11. Stanowi więc to
o dużej niezawodności magistrali, Co zresztą potwierdzają też badania i testy przeprowadzone przez firmę Bosch,
z których wynika iż w ciągu 4000h pracy wystąpiło około 3.95*10^(-3) nie wykrytych błędów transmisji.

2. Transmisja na magistrali CAN jest przeprowadzana metodą broadcastową.

Czyli oznacza to że magistrala pracuje w konfiguracji multi-master bez jednostki nadrzędnej.
Można więc uprościć powyższe stwierdzenie w taki sposób:

-- wszystkie urządzenia na magistrali są masterami.

3. Dostęp do medium transmisyjnego realizuje CSMA/CA (Carrier Sense Multiple Access with Collision Avoidance)

Jest to sprytny mechanizm zapewniający transmisję wiadomości z uwzględnieniem jej priorytetu.
CSMA/CA w odróżnieniu od ETH (Ethernet) jest dużo skuteczniejszy i zapobiega utracie informacji w przypadku
kolizji na magistrali.


No dobra na razie wystarczy:) teraz może trochę jaśniej napiszę zamiast suchych faktów :)

Jak już zauważyliście magistrala CAN jest bardzo ciekawa, ale co w niej takiego jest że w ogóle warto sobie nią
głowę zawracać, czy potrzeba nam technologi samochodowych w układach, przecież mamy USART, I2C, SPI .....

hmmm no tak niby racja, no ale przyjrzyjmy się zatem prędkości magistrali. Otóż CAN pozwala transmitować dane
z prędkością do 1Mbps. Szybko prawda no ale nie jest aż tak kolorowo. 1Mbps jest , ale maksymalnie na odległość
do 40m. Czyli wraz ze wzrostem odległości prędkość maleje :( dodatkowo musimy też pamiętać, że rzeczywista
prędkość (efektywna) przesyłania danych po uwzględnieniu nagłówka i danych nadmiarowych wynosi aż ~50%.
Dotyczy to również danych z 24bitowym identyfikatorem.

W poniższej tabelce widzimy dostępne prędkości dla odpowiedniej długości magistrali:

Obrazek

Standard CAN definiuje nam tez kilka typów ramek, co ciekawe Ramka danych może zawierać tylko do 8 bajtów danych.
Z kolei mechanizm wykrywania i obsługi błędów używa ramek błędów (error frames). Dodatkowo istnieje możliwość
użycia ramek zdalnych RTR (Remote Transmission Request frames). Nie bez zasadne jest więc stwierdzenie,
że magistrala ta wpływa na elastyczność systemu oraz jest tania w implementacji.

No tak , ale co ma CAN do elastyczności UART jest też elastyczny podobnie jak I2C..

hehe zgadzam się z tym , ale wielu początkujących nawet nie zdaje sobie sprawy z ograniczeń w/w magistral.
żadna z w/w nie pozwala na dołączanie kolejnych węzłów bez zmian hardwerowych i softwerowych.

Jak napisałem wyżej CAN jest szeregową asynchroniczna magistralą. Bity na magistrali kodowane są metoda NRZ
(Non Return to Zero). CAN pozwala też na znaczne zmniejszenie okablowania, np producenci samochodów dzięki CAN
zmniejszyli wagę okablowania o kilka kilogramów jak też i ich długość o kilka kilometrów :)

Po dokładnym przyglądnięciu się magistrali CAN nie trudno nie zauważyć, że jest oparta na modelu warstwowym ISO/OSI.
Specyfikacja CAN definiuje jedynie warstwę fizyczną oraz łącza danych. Natomiast wybór medium transmisyjnego oraz
warstwę aplikacji pozostawia do zdefiniowania projektantom systemu. Myślę że jasno wynika to z Tabelki.

Obrazek

W odniesieniu do wspomnianego modelu warstwowego schemat transmisji wiadomości na magistrali CAN wraz
z uwzględnieniem jej postaci w przejściu przez kolejne warstwy.

Obrazek

Oczywiście musimy tez pamiętać iż od strony architektonicznej budowa węzła CAN zależy przede wszystkim od tego
w jakich warunkach i do czego będzie ona wykorzystywana. Rozglądnijcie się w około. Szybko zauważycie ze stale
poszukuje się rozwiązań bardziej odpornych na niekorzystne warunki w miejscu pracy starając się jednocześnie
zmniejszyć koszty całego systemu.

Typowa budowa węzła CAN:

Obrazek

Jak widzicie wyżej na jednej magistrali mamy 2 węzły o architekturach :

-- trójczłonowej , zawierający osobne urządzenia : mikrokontroler, kontroler CAN, oraz Transceiver
-- dwuczłonowej , czyli zawierający mikrokontroler z wbudowanym Kontrolerem CAN oraz Transceiver

Istnieje jeszcze oparta na układach FPGA, gdzie układ FPGA realizuję obsługę protokołu CAN, a mikrokontroler
może zostać zastąpiony procesorem Picoblaze osadzonym wewnątrz kodu VHDL. Transceiver występuje tutaj
także jako osobne urządzenie.


Ufff... Czas na podsumowanie czyli to co powinniście w sumie na tym etapie wiedzieć po przeczytaniu zawartych
wyżej informacji :)

CAN to dwuprzewodowa, pół-dupleksowa sieć z szybką komunikacją do 1 Mbit/s. Transmisja odbywa się w czasie rzeczywistym.
Magistrala CAN umożliwia wzajemną komunikację pomiędzy modułami elektronicznymi. Jest siecią multi-master, co oznacza,
że każdy z podsystemów sieci jest równorzędny przy inicjowaniu transmisji. Magistrala CAN jest bardzo bezpieczna,
odporna na błędy, zakłócenia i niezawodna dzięki zastosowaniu sprzętowej obsługi protokołu i kontroli błędów.



I to na razie tyle ... w następnej części/poście zajmiemy się integracja CAN z naszymi AVRkami dlatego
proponuje poszperać i zaopatrzyć się w układ MCP2515, który to jest Transceiverem CAN
Gdyż zajmiemy się dwoma standardami :

ISO11529-2: CAN o małej szybkości. oczywiście mała szybkość odnosi się do przesyłania danych od 5kb/s do 125kb/s.
ISO11898: CAN o dużej szybkości. Ten standard dotyczy szybkości przesyłania danych do 1Mb/s.

A do czego można zastosować CAN poza samochodem ?? ---- a na przykład :)

--- zastosowania w technice cywilnej:
inteligentne budynki,
przemysł lotniczy,
przemysł samochodowy - samochody osobowe i cię żarowe,
ciężki sprzęt budowlany,
pojazdy specjalne (np. wozy strażackie),
przemysłowe układy automatyki i sterowania;
--- zastosowania w technice wojskowej:
transportery opancerzone - kołowe i gąsienicowe,
stacje radiolokacyjne – morskie i lądowe,
mosty przewoźne,
symulatory,
--- inne zastosowania:
sworznie pomiarowe,
czujniki i przetworniki pomiarowe,
sterowniki plc,
pulpity i konsole operatorskie,
konwertery.

Jak więc widzicie CAN ma szerokie zastosowania i każdy znajdzie coś dla siebie :)
Do przeczytania w następnym artykule.....


CDN.... ale nie koniecznie dzisiaj :P

Autor:  mirekk36 [ 16 cze 2012, o 16:01 ]
Tytuł:  Re: Magistrala CAN -- wprowadzenie

O kurczę ale się szybko skończyło czytanie :( buuuuu

A na poważnie - SunRiver mega świetny wstęp a czyta się lekko i przyjemnie więc dlatego nagły szok gdy dotrze się już do końca. Sam z wypiekami na twarzy będę czekał ale spokojnie na resztę - wiem co to znaczy przygotowywać takie materiały i ile to roboty i zachodu.

Autor:  jachu [ 16 cze 2012, o 16:53 ]
Tytuł:  Re: Magistrala CAN -- wprowadzenie

SunRiver - czyta sie super . Czekam na reszte z niecierpliwoscia. Wielkie dzieki :)

Autor:  SunRiver [ 16 cze 2012, o 17:21 ]
Tytuł:  Re: Magistrala CAN -- wprowadzenie

No cóż bez wprowadzenia i poznania koniecznych faktów , cały następny materiał który się powoli wykluwa w odległych i nie dostępnych
czeluściach chorego umysłu :) -- normalnie sam się boje tam zaglądać :) będzie się opierał o to co właśnie przeczytaliście,
nie wiem czy uda mi się to wszystko wyłuszczyć zrozumiale , ale nie obejdzie się bez ściśle teoretyczno-matematycznych rozważań
w wszystko po to by wam namieszać w głowach, rozrzucić i zmieszać z błotem tok rozumowania , namotać i na końcu pokazać
że wszystko jest banalnie proste:) Zatem zapewnić was mogę iż na pewno będzie prozą, choć zawieje i grozą, przejdzie w grecką tragedię
składając się u końca na komedię sytuacyjną :)

Autor:  Wrangler [ 16 cze 2012, o 17:31 ]
Tytuł:  Re: Magistrala CAN -- wprowadzenie

Czy słyszałeś SunRiver o sieci DMX?

Autor:  SunRiver [ 16 cze 2012, o 18:26 ]
Tytuł:  Re: Magistrala CAN -- wprowadzenie

Oczywiście że znam dobrze interfejs systemu sterowania DMX (Digital Multiplex Signal) zakładam że chodzi ci o protokół DMX512 lub USITT DMX512, Kiedyś zajmowałem się oświetleniem scenicznym zresztą, zbudowałem kilka sterowników DMX z Dimmer-Packami :)
Nie jest to sieć :) Ale bardzo zbliżone gdyż cały system składa się z węzłów zwanych Daisy-Chain ze sterownikiem na początku i rezystancją terminującą na końcu. A całość sterowania polega na adresacji fizycznej urządzeń w systemie. w zasadzie jest to układ bliższy szynie I2C posiada podobne właściwości.
To tak w uproszczeniu:)

Autor:  Sonix [ 16 cze 2012, o 18:34 ]
Tytuł:  Re: Magistrala CAN -- wprowadzenie

Coś za szybko się skończyło to czytanie...
Czekam z niecierpliwością na kolejne części :)


Wrangler napisał(a):
Czy słyszałeś SunRiver o sieci DMX?


Myślę że lepiej byłoby go zapytać o czym nie słyszał ;)

Autor:  Wrangler [ 16 cze 2012, o 18:34 ]
Tytuł:  Re: Magistrala CAN -- wprowadzenie

Dokładnie chodzi mi o oświetlenie sceniczne. Co sądzisz o połączeniu CAN i DMX, ma ta jakiś sens? Obeznany jak najbardziej nie jestem w temacie, ale mam znajomego, który takie coś chce zrobić. Niby jeszcze czegoś takiego na rynku nie było. Jeżeli rzeczywiście nie ma podobnej kombinacji, to może widocznie nie było sensu czegoś takiego robić? Projekt dotyczy sterowania oświetleniem scenicznym z PC, ale i również zsynchronizowane jest z tym całym systemem analogowe sterowanie z łączników instalacyjnych. Mózgiem tego wszystkiego ma być jakiś ARM, więcej szczegółów nie pamiętam..

Autor:  SunRiver [ 16 cze 2012, o 18:47 ]
Tytuł:  Re: Magistrala CAN -- wprowadzenie

Ujmę to tak niema sensu łączenia CAN z DMX . DMX podobnie jak MIDI został opracowany na potrzeby runku Muzycznego w celu
właśnie zastąpienia układów sterowania ręcznego. W zasadzie implementacja sterowania DMX w PC jest bardzo prosta
i w tym wypadku niema potrzeby ze się tak wyrażę wywarzania otwartych drzwi. Popatrz urządzenia pracujące pod DMX
są dostępne bez problemu podobnie jak wszelkie przystawki i konsole, jest to standard przewidziany właśnie do tego celu
Ramka danych obejmuje cały zakres możliwości sterowania. Budowanie układu z CAN byłoby zbędnym utrudnieniem.
Możliwe że lepiej by było pokombinować LIN ale koszta instalacji i skomplikowanie całości było by nie opłacalne.
To trochę tak jakbyś chciał wymyślać koło od nowa. :)

Autor:  Wrangler [ 16 cze 2012, o 19:01 ]
Tytuł:  Re: Magistrala CAN -- wprowadzenie

Być może będę się z nim widział w poniedziałek, to może dowiem się czegoś więcej i wtedy skomentujesz coś więcej. Mnie po prostu o tyle zaciekawił ten jego projekt, że usłyszałem coś w stylu "tego jeszcze nie było".
Jakiś cel na pewno w tym musi być, no bo marnować czas i pieniądze.. no nie wiem.. tylko czy właśnie można to samo połączenie jakie ma spełniać CAN z DMX można by wykonać inaczej i lepiej.
Nie wiem o jakie funkcje CAN ma uzupełniać DMX. Dam znać, bo jestem ciekaw, co ktoś inny zupełnie postronny ma na ten temat coś rzeczowego do powiedzenia.
No i czy ten pomysł to faktycznie takie "WoW". :)

Autor:  SunRiver [ 16 cze 2012, o 19:08 ]
Tytuł:  Re: Magistrala CAN -- wprowadzenie

Dokładnie czegoś takiego nie było, Można się pokusić o komunikacje w CAN z urządzeniem sterującym DMX , ale łączenie tych protokołów w jeden jest bez sensowne i bezcelowe jeśli chodzi mu o zredukowanie ilości kabli to jest to bez sensowne.
Z DMX nie masz możliwości odczytu czyli jeden sterownik wysyła dane na wszystkie 512 kanałów po kolei od 1 do 512 i powtarza
urządzenie na kanale po prostu tylko odbiera niema żadnej kontroli. Może o to mu chodzi żeby urządzenie odpowiadało??

Lepiej by było jakby pokombinował nie z CAN-em , a z np sterowaniem cable-free .

Autor:  rezasurmar [ 16 cze 2012, o 19:26 ]
Tytuł:  Re: Magistrala CAN -- wprowadzenie

Można powiedzieć SunRiver megusta ;).
Masz jakieś doświadczenia w współpracy AVRów na CAN przy zakłóconym mocno środowisku, tj. w zakładach produkcyjnych.

Jestem ciekaw, czy w ogóle warto w to brnąć, czy lepiej jednak pomyśleć o procesorach hitachi, motorola, pic.
Za jakiś czas kroi mi się poważny projekt, który będzie musiał prawdopodobnie wytrzymać sporo zakłóceń.
Can co prawda jest bardziej standardem samochodowym, ale spotkałem go nie raz już w maszynach przemysłowych. Sortownikach szczególnie.

Autor:  SunRiver [ 16 cze 2012, o 19:42 ]
Tytuł:  Re: Magistrala CAN -- wprowadzenie

Ależ oczywiście że tak właśnie do mocno zakłóconych środowisk CAN zaprojektowano. Owszem powstał on na potrzeby motoryzacyjne ,
ale stosowany jest szeroko :) miedzy innymi w urządzeniach przemysłowych :)

a gorszego środowiska jak samochód już chyba niema :) i CAN właśnie spisuje się rewelacyjnie :)
a jego implementacja jest bardzo prosta , choć można użyć gotowe układy z wbudowanym kontrolerem CAN

Autor:  kierlan [ 17 cze 2012, o 14:44 ]
Tytuł:  Re: Magistrala CAN -- wprowadzenie

aż zamówiłem sobie MCP2515 xD

Autor:  jachu [ 21 cze 2012, o 10:31 ]
Tytuł:  Re: Magistrala CAN -- wprowadzenie

http://www.elektroda.pl/rtvforum/topic2168306.html

tu tez troche i linki do jakis przykladow.
SunRiver czekam na dalsze czesci :)

Autor:  SunRiver [ 21 cze 2012, o 12:21 ]
Tytuł:  Re: Magistrala CAN -- wprowadzenie

Musicie poczekać trochę bo mnie zmogło ostatnie 2 dni gorączka w okolicy 40 St , zapożyczone mam tylko obrazki , i to niektóre , spędzam sporo czasu z CAM wiec mogę spokojnie pisać z pamięci , ale w opisie ze względu na terminologie nie da się uniknąć podobieństw. :(
z tego powodu jest mi bardzo przykro, .... bo albo nie napisze się nic odkrywczego , albo ktoś to już zrobił , na szczęście dla mnie kolejna magistralą
będzie LIN , a tego jeszcze nikt nie opisywał .

Autor:  jachu [ 21 cze 2012, o 12:36 ]
Tytuł:  Re: Magistrala CAN -- wprowadzenie

SunRiver napisał(a):
Musicie poczekać trochę bo mnie zmogło ostatnie 2 dni gorączka w okolicy 40 St , zapożyczone mam tylko obrazki , i to niektóre , spędzam sporo czasu z CAM wiec mogę spokojnie pisać z pamięci , ale w opisie ze względu na terminologie nie da się uniknąć podobieństw. :(
z tego powodu jest mi bardzo przykro, .... bo albo nie napisze się nic odkrywczego , albo ktoś to już zrobił , na szczęście dla mnie kolejna magistralą
będzie LIN , a tego jeszcze nikt nie opisywał .


SunRiver - pisz i nie przejmuj sie ze ktos juz cos napisal. jakby Mirek na to patrzyl nie mielibysmy takich dwoch wspanialych pozycji :) Wiec czekam i nie wykrecisz sie :)
ZDROWIEJ :)

Autor:  Malutki_27 [ 21 cze 2012, o 12:43 ]
Tytuł:  Re: Magistrala CAN -- wprowadzenie

Tak, tak .... kuruj się na spokojnie ......... tylko wiesz ............ nie przeginaj za bardzo z czasem, bo jak już to nastąpi, to my tam pojedziemy do ciebie i raz ale za to porządnie cię wykurujemy ;)

Autor:  SunRiver [ 7 lip 2012, o 21:36 ]
Tytuł:  Re: Magistrala CAN -- wprowadzenie

ech....

Strona 1 z 1 Strefa czasowa: UTC + 1
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/