Z życia elektronika – #5 – Protokół CAN

Na rozgrzewkę:

Realizując w pracy weryfikację swojego projektu doszedłem do analizy protokołu komunikacyjnego. Mój projekt komunikuje się ze światem zewnętrznym za pomocą protokołu CAN (Can Area Network). CAN jest bardzo popularnym protokołem komunikacyjnym stosowanym w wielu gałęziach przemysłu, w których głównym celem nie jest zawrotna prędkość transmisji, a na przykład duża odporność na zakłócenia.

Pierwszym zastosowaniem protokołu CAN był przemysł motoryzacyjny, pod który był projektowany. Obecnie CAN wykorzystywany jest w wielu gałęziach przemysłu (samoloty, maszyny rolnicze, automatyka, urządzenia medyczne), wszędzie tam gdzie niezbędna jest odporna na zakłócenia transmisja danych. 

Zakres wpisu:

  • Definicja stanów logicznych
  • Budowa ramki danych
  • Warstwa fizyczna
  • Pojęcia związane z CAN

Definicja stanów logicznych:

Zanim przejdziemy do dokładnego opisania protokołu CAN wyjaśnijmy sobie jedną rzecz, mianowicie poziomy napięć oraz związane z nimi stany logiczne. Protokół CAN określa dwa bity: recesywny (logiczna „1”) oraz dominujący (logiczne „0”). W zależności od prędkości (High/Low Speed) magistrali w normalnej pracy definiowane są dwa rodzaje poziomów logicznych. Napięcie na magistrali Low-Speed oraz High-Speed są zgodne z poniższymi przebiegami. 

 

Magistrala CAN działa w sposób różnicowy tzn. mierzona jest różnica napięć pomiędzy CAN-H, a CAN-L. Podczas normalnej pracy różnica <500mV uznawana jest jako bit recesywny, zaś bit dominujący występuję wtedy gdy różnica jest większa niż 900mV.

Budowa ramki danych:

CAN jest szeregowym protokołem komunikacyjnym. Wiadomości wysyłane są rozgłoszeniowo, czyli dane trafiają do wszystkich urządzeń wpiętych do sieci, urządzenie weryfikuje czy dana ramka jest dla niego interesująca wykorzystując do tego ID. ID ramki informuję o jej zawartości oraz decyduje o priorytecie. Decyzja o przyjęciu ramki realizowana jest za pomocą filtrowania sprzętowo-software’owego.

Zacznijmy od przedstawienia graficznego budowy ramek protokolu CAN. Występują dwa formaty ramek w magistrali, wersja podsatwowa (CAN 2.0A) i rozszerzona (CAN 2.0B).

CAN używa czterech różnych typów ramek:

  • Ramka danych (Data Frame)

Pole arbitrażu determinuje priorytet wiadomości podczas chęci jednoczesnego dostępu dwóch urządzeń do linii transmisyjnej. W zależności od wersji protokołu CAN pole arbitrażu może składać się z 11 bitowego identyfikatora i bitu RTR (CAN 2.0A) lub z 29 bitowego identyfikatora (CAN 2.0B) oraz bitów SRR, IDE i RTR.

Pole danych: zawiera od 0 do 8 bajtów danych

Pole CRC: zawiera 15 bitów, obliczana od bitu startu do pola danych

Pole potwierdzenia: transmiter czeka na potwierdzenie od urządzenia odbiorczego. Jeśli nie otrzyma potwierdzenia ramka jest transmitowana ponownie.

  • Ramka zdalna (Remote Frame)

W ramce Remote bit RTR jest recesywny co oznacza wygranie arbitrażu przez ramki remote z ramkami danych, ponieważ ramki remote mają wyższy priorytet. Ramki Remote nie mają pola danych, lecz stosowane są do wysyłania żądania informacji o identyfikatorze i długości danych. Po wystąpieniu żądania węzeł posiadający informację powinien zapewnić je jak najszybciej.

  • Ramka błędu (Error Frame)

Jest transmitowana kiedy któreś z urządzeń wykryje błąd w transmisji, po wysłaniu ramki wszystkie urządzenia połączone do magistrali wiedzą o błędzie. Pole Flaga Błędu składa się z 6 takich samych bitów, Ogranicznik Błędu złożony jest z 8 bitów recesywnych. Ogranicznik błędu zapewnia zwłokę na odczytanie Flagi Błędu przez inne urządzenia i wysłanie przez nie Ramki Błędu. Po wystąpieniu Ramki Błędu tranmister ponownie wysyła ramkę.

  • Ramka przepełnienia (Overload Frame)

Jest to ramka bardzo podobna do ramki błędu. Ten rodzaj ramki nie jest używany zbyt często, współczesne kontrolery nie dopuszczają do przepełnienia.

Warstwa fizyczna:

Do realizacji komunikacji za pomocą protokołu CAN niezbędny jest mikrokontroler oraz transceiver. Procesor zapewnia obsługę protokołu CAN, zaś tranceiver zamianę poziomów napięć.

Medium transmisyjnym protokołu CAN są dwa skręcone przewody o nominalnej impedancji 120Ω, ekranowane lub nieekranowane. Skrętka zapewnia bliskie umiejscowienie przewodów między sobą co pomaga w odporności na zakłócenia zewnętrzne jak i emisję zakłóceń do otoczenia przez magistralę. Maksymalna prędkość protokołu CAN wynosi 1Mbit/s. Prędkość transmisji spada odpowiednio ze wzrostem długości przewodów, zgodnie z poniższą tabelą:

Długość przewodu

Prędkość max

100 m

500 kbit/s

200 m

250 kbit/s

500 m

125 kbit/s

6 km

10 kbit/s

Terminacja: zrealizowana jest za pomocą rezystorów 120Ω umieszczonych na krańcach linii transmisyjnej. Zadaniem rezystorów terminujących jest usunięcie odbić na końcach linii oraz zapewnienie odpowiedniego napięcia w stanie recesywnym zgodnego z protokołem CAN.

Pojęcia związane z CAN:

Arbitraż: Kiedy dwa urządzenia chcą wysłać w tym samym czasie wiadomość dochodzi do arbitrażu. Arbitraż decyduje, które urządzenie dostanie dostęp do magistrali.

Bit stuffing: po wystąpieniu 5 takich samych bitów wysłanych przez węzeł nadawczy, pojawia się bit przeciwny, odbiorniki nie kwestionują tego bitu jako danej. Bit Stuffing jest użyteczny do wykrywania błędów. Kiedy odbiorniki wykryją 6 takich samych bitów występujących po sobie pojawi się błąd Bit Stuffing.  

Autor artykułu
Mateusz Pluta

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *