Interfejs komunikacyjny CAN: podstawy

Lata 80-te XX wieku były dla przemysłu motoryzacyjnego okresem historycznych zmian. Firmy projektujące i wytwarzające auta zaczęły na szeroką skalę montować w oferowanych przez siebie modelach urządzenia elektroniczne oparte na mikrokontrolerach. Urządzenia te dedykowane były do monitorowania i sterowania komponentami mechanicznymi samochodu np. silnikiem, hamulcami, poduszkami powietrznymi, deską rozdzielczą, klimatyzacją czy szybami. Wkrótce potem narodziła się koncepcja, według której urządzenia mogłyby współpracować ze sobą pełniąc rolę kompleksowych systemów, mających na celu zwiększyć niezawodność pojazdów oraz bezpieczeństwo i poczucie komfortu kierowcy i pasażerów. Systemy te obecnie znane są  pod nazwą np. systemu ABS, systemu kontroli trakcji, systemu ESP, systemu komfortu jazdy itp.

Czytelnikom zainteresowanym tematyką CAN od strony praktycznej polecamy artykuł, w którym przedstawiamy kompletną aplikację mikrokontrolerów XMC4500 firmy Infineon.

 

Konieczność współpracy między urządzeniami w ramach systemów, które tworzyły, wymuszała potrzebę zapewnienia komunikacji między nimi. Projektanci systemów starali się wybrać odpowiedni dla zastosowań motoryzacyjnych sieciowy standard przesyłu informacji, jednak żadna z istniejących technologii nie spełniała jednocześnie wszystkich przyjętych kryteriów, w tym takich jak: łatwość implementacji, niski koszt realizacji, wysoka niezawodność transmisji, duży zasięg transmisji i wysoka prędkość transmisji. Z tego powodu firma Bosch GmbH postanowiła opracować nową, dedykowaną dla zastosowań w motoryzacji technologię przesyłu informacji, spełniającą wszystkie wymienione wyżej kryteria. Opracowana została ona w 1981 roku i nadano jej nazwę CAN. W 1985 roku firma Bosch rozpoczęła współpracę z firmą Intel w celu opracowania układów elektronicznych realizujących transmisję CAN.

CAN w szybkim tempie zyskiwał popularność w przemyśle samochodowym. Początkowo był wykorzystywany tylko w autach osobowych, jednak wkrótce zaczął być używany również w innego rodzaju pojazdach: samochodach ciężarowych, autobusach, samolotach, statkach, maszynach rolniczych itp. Entuzjastyczne przyjęcie technologii CAN przez motoryzację zaowocowało jej szybką ekspansją do innych dziedzin wymagających przesyłu danych. Dzięki temu CAN jest obecnie popularną metodą transmisji danych wykorzystywaną w szerokiej gamie zastosowań przemysłowych. Są to nie tylko wspomniane już środki transportu, ale również np. systemy automatyki budynkowej, systemy rozproszonego sterowania w zakładach przemysłowych, sieci sensorowe i wiele innych.

Rys. 1. Przykładowy schemat sieci CAN w samochodzie [1]

Rys. 1. Przykładowy schemat sieci CAN w samochodzie [1]

CAN a model OSI/ISO

Model ISO OSI

Model OSI (Open Systems Interconnection) to stworzony przez organizację ISO (International Standard Organization) standard definiujący schemat komunikacji, który przeznaczony jest dla urządzeń elektronicznych wysyłających i odbierających informacje w sieci. Został stworzony w celu określenia zasad komunikacji, które mają być wspólne dla wszystkich technologii komunikacyjnych opartych na tym modelu.

W modelu OSI wyróżniono siedem połączonych ze sobą w sposób hierarchiczny poziomów, zwanych popularnie warstwami. Zaczynając od najniższej (pierwszej), a kończąc na najwyższej (siódmej) są to: warstwa fizyczna, warstwa łącza danych, warstwa sieciowa, warstwa transportowa, warstwa sesji, warstwa prezentacji i warstwa aplikacji. Każda z warstw odpowiada za realizację określonych zadań związanych z komunikacją. Oto krótkie podsumowanie każdej z warstw:

  • warstwa fizyczna: określa fizyczne cechy interfejsu (elementy mechaniczne i elektryczne, złącza, poziomy napięć, zależności czasowe), przeprowadza konwersję sygnału elektrycznego, radiowego bądź optycznego do postaci strumienia binarnego i odwrotnie,
  • 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.

Wymianę informacji między urządzeniem nadawczym i odbiorczym  można rozpatrywać na płaszczyźnie komunikacji rzeczywistej (fizycznej) oraz logicznej. Komunikacja logiczna odbywa się między tymi samymi (równorzędnymi) warstwami systemu, gdyż są one ze sobą kompatybilne. Przykładowo oznacza to, że warstwa łącza danych urządzenia nadającego informację komunikuje się z warstwą łącza danych urządzenia odbierającego informację. Taki schemat obowiązuje dla każdej z warstw. Inaczej jest w przypadku rzeczywistego przepływu informacji. Transmitowana w sieci informacja jest przetwarzana przez każdą warstwę zarówno urządzenia wysyłającego, jak też odbierającego. W warstwie aplikacji urządzenie wysyłające dysponuje informacją w postaci tak zwanego komunikatu. Jest on przekazywany do warstw niższych, będąc zamienianym kolejno do postaci datagramu (inaczej pakietu) w warstwie sieciowej, ramki w warstwie łącza danych oraz bitów w warstwie fizycznej, które następnie są nadawane przez medium transmisyjne w postaci sygnału (np. elektrycznego). Następnie sygnał ten jest odbierany i rekonstruowany przez urządzenie odbiorcze – kolejno od postaci bitów w warstwie fizycznej, przez ramkę w warstwie łącza danych, pakiet w warstwie sieciowej i ostatecznie do komunikatu w warstwie aplikacji. Rzeczywistą i logiczną wymianę informacji w systemie zgodną z modelem ISO OSI przedstawiono na rysunku 2.

Rys. 2. Model warstwowy OSI/ISO

Rys. 2. Model warstwowy OSI/ISO

 

Sposób rzeczywistego przepływu informacji tłumaczy czemu poziomy modelu OSI zwane są warstwami. Wiadomość zgodna z formatem wybranego poziomu ‘n’ zawiera w sobie wiadomość w formatach zgodnych z poziomami wyższymi niż ‘n’. Proces umieszczania informacji z warstw wyższych w formacie informacji warstw niższych nazywany jest kapsułkowaniem.

 

Warstwy modelu ISO OSI w CAN

CAN został zdefiniowany w oparciu o model ISO OSI. Specyfikacja CAN definiuje dwie pierwsze warstwy tego modelu. Warstwy 3–6 nie są używane, natomiast warstwa numer siedem jest opcjonalna i została pozostawiona do zdefiniowania przez projektantów danego systemu.

W CAN warstwa łącza danych i warstwa fizyczna działają według następującego scenariusza:

  1. Warstwa łącza danych urządzenia nadawczego formatuje przeznaczoną do wysłania wiadomość do postaci ramki CAN
  2. Warstwa łącza danych urządzenia nadawczego na podstawie modelu komunikacji i zasad dostępu do medium decyduje kiedy wysłać ramkę
  3. Od rozpoczęcia procesu nadawania do momentu otrzymania potwierdzenia doręczenia wiadomości warstwa łącza danych urządzenia nadawczego odpowiada za wykrywanie błędów
  4. Warstwa  fizyczna urządzenia nadawczego zamienia bity ramki CAN na sygnał elektryczny o odpowiednim poziomie napięcia i czasie trwania
  5. Warstwa fizyczna urządzenia odbiorczego dekoduje sygnały elektryczne do postaci informacji logicznej
  6. Warstwa łącza danych urządzenia odbiorczego przekształca informację logiczną do postaci ramki CAN
  7. Warstwa łącza danych urządzenia odbiorczego sprawdza czy w ramce nie zostały wykryte błędy. Jeśli nie, może potwierdzić otrzymanie wiadomości

Istotną cechą interfejsu CAN jest to, że wszystkie funkcjonalności warstwy fizycznej i łącza danych zostały zaimplementowane w układach scalonych realizujących transmisję CAN. Oznacza to, że po zbudowaniu platformy sprzętowej (koncepcje budowy urządzeń przedstawiono w dalszej części artykułu) warstwa fizyczna i łącza danych są od razu dostępne i gotowe do działania.

 

CAN – warstwa fizyczna

Topologia sieci CAN

CAN ma topologię magistrali. Magistrala jest rodzajem architektury sieciowej, w której wszystkie urządzenia transmisyjne (tak zwane węzły) połączone są szeregowo wspólnym dla nich medium transmisyjnym. Do przesyłania informacji przez magistralę służą dwa sygnały: CAN High (CANH) oraz CAN Low (CANL). Najpopularniejszym medium transmisyjnym dla CAN jest dwużyłowy kabel elektryczny. Na obu końcach magistrali linie kabla połączone są rezystorem terminującym o oporności 120 ?, co zapewnia niewrażliwość magistrali na odbicia sygnału. Schemat sieci CAN przedstawiono na rysunku 3.

Rys. 3. Struktura sieci CAN

Rys. 3. Struktura sieci CAN

Prędkość i zasięg transmisji

W zależności od potrzeb, w sieci CAN można przesyłać dane z prędkością do 1 Mb/s włącznie. Taką wartość prędkości uzyskać można jednak tylko w magistralach o małej długości, do 40 metrów. Wydłużenie magistrali możliwe jest do uzyskania kosztem zmniejszenia prędkości transmisji. W skrajnym przypadku możliwe jest osiągnięcie długości magistrali rzędu 10 km (przy prędkości transmisji 5 kb/s) (rysunek 4).

Rys. 4. Prosta zależności pomiędzy szybkością przesyłania danych a długością magistrali CAN

Rys. 4. Prosta zależności pomiędzy szybkością przesyłania danych a długością magistrali CAN

 

O autorze

Szymon Panecki

SZYMON PANECKI urodził się 17 lutego 1985 roku w Milanówku. Tytuł inżyniera Elektroniki i Telekomunikacji, a następnie magistra inżyniera na Wydziale Elektroniki Politechniki Wrocławskiej uzyskał kolejno w roku 2008 i 2010. Ponadto tytuł inżyniera Informatyki na Wydziale Elektroniki Politechniki Wrocławskiej uzyskał w roku 2011.

Szymon Panecki jest doświadczonym elektronikiem-konstruktorem, który w trakcie swojej zawodowej kariery koncentruje się na definiowaniu i projektowaniu (zarówno w warstwie sprzętowej jak i programowej) systemów wbudowanych opartych na mikrokontrolerach z rdzeniem ARM od różnych producentów, w tym przede wszystkim Infineon Technologies (rodzina XMC1000 i XMC4000), STMicroelectronics (STM32 i STR7), Freescale Semiconductor (Kinetis L) oraz Silicon Labs (EFM32 i Precision32). Obszarem jego szczególnego zainteresowania są systemy wykorzystujące czujniki środowiskowe (wilgotności, ciśnienia, temperatury) oraz przemysłowe i motoryzacyjne interfejsy komunikacyjne, głównie CAN.

Szymon Panecki od wielu lat współpracuje z czasopismem “Elektronika Praktyczna” oraz portalem Mikrokontroler.pl, na łamach których publikuje liczne artykuły dotyczące swoich projektów, jak również nowości produktowych firm z branży półprzewodnikowej.