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:
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.
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.
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:
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