Politechnika Gdańska Wydział Elektroniki, Telekomunikacji i Informatyki Katedra Systemów Geoinformatycznych Aplikacje Systemów Wbudowanych Magistrala CAN (Contorller Area Network) Gdańsk, 2018
Na początku lat dziewięćdziesiątych międzynarodowy przemysł samochodowy stanął przed dwoma problemami dotyczącymi rozwoju samochodów: jak poprawić komfort pojazdów (elektrycznie podnoszone szyby, regulacja siedzeń i lusterek, podgrzewanych siedzeń, elektronicznego sterowania klimatyzacją, wyposażenia audio, systemy nawigacyjne) jak poprawić bezpieczeństwo pojazdów (centralne zamki, systemy antykradzieżowe, ABS, jak również ekonomicznego i przyjaznego dla środowiska sterowania pracą silnika) 2
Obu problemom stawiono czoło poprzez intensywną elektronizację komunikacji wewnątrz pojazdu zawierającego wiele urządzeń Oszacowano, że do roku 2005 pojazdy będą zawierać do 100 mikrokontrolerów i wszystkie powinny mieć możliwość komunikowania się ze sobą Rosnąca liczba różnych typów wiązek kabli (600) oraz ich długości (2000 m) spowodowała, że przemysł motoryzacyjny zaczął rozglądać się za nowymi sposobami komunikacji Nowy sposób komunikacji znaleziono w przemyśle komputerowym 3
Miał on zapewniać: Przenoszenie danych z małą i dużą szybkością w zakresie od 5 kb/s do 1 Mb/s Bezbłędne przenoszenie danych Optymalne przenoszenie mikrostrumieni danych (do 8 bajtów na komunikat) Łatwość utrzymania Niskie koszty w masowej produkcji Prostą konstrukcję magistrali (media i topologia magistrali) dla łatwej integracji w pojeździe 4
Opracowano wiele magistral niekompatybilnych ze sobą Przyjęły się następujące: - CAN w wersjach o małej i dużej prędkości - VAN - J1850CP - J1850DLC Z czasem system CAN stał się światowym liderem na polu magistral dla pojazdów 5
Magistralę CAN stosuje się: Przemysł samochodowy Przemyśle przetwórczym Budownictwie Sterowaniu windami Systemach automatyzacji laboratoriów Systemach czujnikowo-wykonawczych wykonawczych 6
CAN jest szeregowym, asynchronicznym systemem komunikacyjnym łączącym czujniki i elementy wykonawcze elektronicznych stacji sterujących w samochodach i służy do przesyłania danych cyfrowych. Jest to system asynchroniczny, ponieważ każda stacja (węzeł) jest synchronizowana przez wiadomość z innej stacji. Innymi czynnikami są czas trwania bitu, struktura wiadomości oraz potwierdzenie odbioru. 7
Standaryzacja magistrali Podstawą jest siedmiowarstwowy model odniesienia OSI/ISO W przypadku magistrali CAN warstwy 1, 2, 7 (fizyczna, łącza danych, aplikacji) są wyspecyfikowane szczegółowo, natomiast warstwy 3.. 6 (sieciowa, transportowa, sesji, prezentacji) są puste 8
Charakterystyka warstwy fizycznej Zawiera specyfikację topologii sieciowej magistrali CAN i dołączania elementów (stacji) do medium magistrali CAN wykorzystuje tzw. topologie magistrali Wszystkie elementy są połączone z pojedynczą skrętką pary przewodów ekranowaną, lub nie Na końcach znajdują się odpowiednie impedancje zakończenia magistrali 9
Charakterystyka warstwy fizycznej Układ nadawania/odbioru sieci CAN jest połączony z medium magistrali poprzez dwa doprowadzenia (CANH, CANL) Do rzeczywistego przesyłania danych stosuje się różnicowe sygnały napięciowe (ze względu na wymagane zabezpieczenia przed błędami) Różnica napięcia pomiędzy obydwiema liniami magistrali jest skwantowana 10
Charakterystyka warstwy fizycznej Użytkownicy nie muszą sami zajmować się konstrukcją łącza nadawczo-odbiorczego odbiorczego (dostępne są gotowe układy scalone w postaci kontrolerów CAN) Są one zoptymalizowane pod względem: - zakłóceń elektromagnetycznych - zajmowanej powierzchni płytki drukowanej - przeciążeń termicznych (w przypadku zwarcia) - wyjściowego standardu poziomów sygnałów Wszystkim co jest niezbędne dla zestawienia łącza CAN, to dołączenie go do linii magistrali 11
Charakterystyka warstwy fizycznej Gdy stacja nie jest bezpośrednio podłączona do magistrali CAN, to długość linii doprowadzeniowej nie powinna przekraczać 2 metry dla szybkości przesyłania danych 250 kb/s i 30 cm dla większych Całkowita długość linii doprowadzających nie powinna przekraczać 30 metrów 12
Wymiana informacji między stacjami sieci Przez odwołanie się do określonej stacji (zorientowanie na stację) Przez podanie określonej wiadomości (zorientowanie na wiadomość) 13
Adresowanie stacji Nadawca adresuje odbiornik podając adres odbiornika (np. stacja 25 przesyła wiadomość do stacji 37) W ten sposób ustalane jest rzeczywiste połączenie między nadajnikiem, a odbiornikiem Nadawany pakiet danych zawiera adres odbiornika i nadajnika, a pozostałe stacje ignorują taki pakiet Odbiornik potwierdza odbiór, a w przypadku braku potwierdzenia nadajnik powtarza wiadomość 14
Wymiana określona wiadomością Nadajnik dodaje do wiadomości niepowtarzalny identyfikator i wysyła ją przez magistralę (np. stacja A przesyła wyniki pomiaru napięcia z indentyfikatorem 978) Adresy nadajnika i odbiornika nie są dołączane Taka wiadomość może być przeznaczona do kilku odbiorników (Pobieraj z magistrali to co jest ci potrzebne) Przepływ wiadomości Realizowany jest przez nadawanie w warunkach kontrolowanej rywalizacji opatrzonych odpowiednim priorytetem wiadomości, lub ramek 15
Dominujące i recesywne stany magistrali lub bitów Transmisja danych odbywa się przez bity dominujące i recesywne (ustępujące i dominowane) Stan recesywny magistrali, to taki stan który może być nadpisywany przez stan dominujący magistrali Wartość logiczna 0 reprezentuje stan dominujący, a wartość logiczna 1 stan recesywny Do wymiany danych przez magistralę, w sieci używane są cztery rodzaje pakietów danych nazywanych ramkami: ramka danych ramka zdalnego wywołania ramka sygnalizacji błędu ramka przepełnienia 16
Ramka danych SOF bit startowy, zawsze jest bitem dominującym (0) Pole arbitrażu (decyzyjne) zawiera dane określające dostęp do magistrali Identyfikator zawiera identyfikator transmitowanych ramek (2048 = 2032 dostępnych + 16 zarezerwowanych dla specjalnych funkcji) Pojedynczy sterownik może przetworzyć 2032 różnych wiadomości (wartość zmierzona, pozycje przełączników, funkcje sygnalizacyjne, itp.) Format ramki rozszerzonej (CAN20B) ma identyfikator 29 bitowy 17
Ramka danych Bit zdalnego żądania transmisji RTR jest zwykle dominujący (0), umożliwia stacji zaadresowanie i wysłanie wiadomości do innej określonej stacji Bit rozszerzenia identyfikatora IDE czy transmitowana ramka w standardowym formacie (11 bitowy identyfikator), czy rozszerzonym (29 bitowy identyfikator) R0 rezerwowy dla ewentualnego rozszerzenia systemu 18
Ramka danych DLC ile bajtów danych jest kolejno transmitowanych w polu danych (w pojedynczej ramce danych może być transmitowanych nie więcej niż 8 bajtów danych) Pole danych Pole CRC suma kontrolna wyliczana na podstawie wysyłanych danych 19
Ramka danych Pole potwierdzenia Przerwa ACK transmitowane w postaci recesywnej przez nadajnik i dominującej przez odbiornik (można sprawdzić, czy przynajmniej jedna stacja odebrała wiadomość) Bit ogranicznika ACK Pole zakończenia ramki EOF składa się z siedmiu recesywnych bitów Przed następną ramką danych stacje odbierające potrzebują krótkiej przerwy na przetworzenie lub zapamiętanie odebranych danych 20
Unikanie konfliktów Wszystkie stacje są podłączone do jednej magistrali CAN, dlatego: - co stanie się, gdy kilka stacji zechce wysłać wiadomość w tym samym czasie? - jak podjąć decyzje, która stacja może rozpocząć nadawanie, a która stacja musi poczekać ze swoją transmisją? W celu unikania konfliktów stosuje się specjalną procedurę dostępu do magistrali, w której ważną rolę odgrywają bity dominujące i recesywne w polu arbitrażowym Każda stacja słyszy swoje własne przesłane dane na magistralę Wysyła bit na magistralę, odbiera go z powrotem i porównuje z własnym Jeżeli te dwa bity są identyczne to transmisja jest dozwolona 21
Unikanie konfliktów Stacja 1: identyfikator 367, Stacja 2: identyfikator 232, Stacja 3: identyfikator 239 22
Ramka zdalnego żądania transmisji Spełnia jedną z ważniejszych funkcji w sieci Służy do obchodzenia normalnego cyklu transmisji danych (np. czujnik temperatury dostarcza pomiar co 5 minut) Dzięki niej stacja może zażądać danych bezpośrednio od innej stacji Przesyłana ramka danych jest w takim przypadku zmodyfikowana Identyfikator stacji, do której jest wysyłane żądanie jest podawany w polu identyfikatora Liczba użytecznych bajtów zawartych w wywołanej wiadomości (tutaj 3) jest podawana w polu DLC Bit zdalnego żądania transmisji, który jest bitem dominującym (0), jest transmitowany recesywnie (1) Nie ma pola danych (DLC jest bezpośrednio przed CRC) Stacja, która rozpozna w wiadomości swój identyfikator, natychmiast przesyła ramki z żądanymi danymi. 23
Detekcja błędów i ich korekcja Magistrala CAN charakteryzuje się zdolnościami wykrywania wielu błędów podczas transmisji danych i odpowiedniego reagowania na nie Dla transmisji danych z szybkością 500 kb/s, na każde 0.7 s przypada 1 błędny bit spowodowany zakłóceniami zewnętrznymi Wbudowany sposób zabezpieczenia przed błędami gwarantuje, że przez 1000 lat pracy tylko jeden błąd nie będzie wykryty 24
Wykrywanie błędów transmisji Detekcja błędnego bitu - po arbitrażu jest tylko jedna stacja wysyłająca wiadomości - każda stacja odbiera zwrotnie swoją własną transmisję - jeżeli zostanie odebrany inny od własnego bit, to jest oczywiste, że na magistrali wystąpił błąd - W przypadku wykrycia błędu stacja przełącza się na procedurę jego korekcji 25
Wykrywanie błędów transmisji Wykrywanie błędnych bitów dodatkowych - specyfikacja określa, że jeżeli w ramce danych jest transmitowanych kolejno więcej niż pięć bitów o tej samej wartości, to każda grupa pięciu bitów jest poprzedzana przez bit komplementarny - ten wprowadzony bit, który nie zawiera żadnej informacji, nazywany jest bitem dodatkowym - po zakończeniu są usuwane ze strumienia danych - dlatego jeżeli odbiornik wykryje w ramce więcej niż pięć kolejnych bitów o tej samej wartości, oznacza to błąd podczas transmisji danych i uruchamiana jest procedura poprawiania błędów 26
Detekcja błędu CRC Proces polega na oszacowaniu sumy kontrolnej CRC w odbiorniku Gdy sumy kontrolne odebrana i obliczona różni się, to uruchamiana jest procedura korekcji błędów 27
Detekcja błędów potwierdzenia Bit ACK wysyłany jest jako bit recesywny Wszystkie stacje które poprawnie odebrały poprzednią ramkę nadpisują go bitem dominującym Oznacza to, że przynajmniej jedna stacja odebrała dane poprawnie Brak nadpisania ACK bitem dominującym oznacza, że żadna stacja nie odebrała poprawnie wiadomości Wywoływana jest procedura korekcji błędów 28
Detekcja błędu formatu W ramce jest kilka pól, które muszą zawsze mieć ustaloną zawartość (są zawsze bity recesywne) - w polu ogranicznika CRC - w polu ogranicznika potwierdzenia - w polu EOF Jeżeli w tych polach zostanie wykryty bit dominujący, to taki stan może być tylko spowodowany przez błąd transmisji danych Wywoływana jest procedura korekcji błędu 29
Korekcja błędów W przypadku błędu transmisji danych: - ramki, w których został stwierdzony błąd są natychmiast odrzucane i nie przetwarzane - jeśli stacja systemu wykryje błąd, to wysyła natychmiast ramkę informującą o błędzie, która składa się z sześciu dominujących bitów i ogranicznika ramki błędu zawierającego osiem bitów recesywnych - jest to naruszenie przyjętej zasady więcej niż 5 takich samych bitów - wszystkie pozostałe stacje wykrywają ten stan i uznają ramkę jako błędną i odrzucają ją 30
Korekcja błędów W przypadku błędu transmisji danych: - one także wysyłają ramkę sygnalizującą o błędzie - stacja, która wykryła błąd, celowo uszkadza całą transmitowaną ramkę, tak że wszystkie stacje dołączone do magistrali odbierają jako błędną - oznacza to, że o błędzie lokalnym w jednej stacji, są natychmiast powiadamiane inne stacje (głównym założeniem sieci CAN jest, żeby wszystkie stacje odbierały poprawne dane, które będą przetwarzane, lub błędne, które będą odrzucane) - pierwotna stacja nadająca po stwierdzeniu błędu poprawia wiadomość i natychmiast wysyła ją ponownie 31
Dla przypomnienia Są w nim bity dominujące (0) i recesywne (1) 11-bitowy dla CAN20A i 29-bitowy dla CAN20B identyfikator 15-bitowa suma kontrolna CRC 1-bitowy ogranicznik 7-bitowe pole EOF 6-bitowa ramka błędu Nic nie kojarzy się bezpośrednio ze strukturą danych mikrokontrolera 8- lub 16-bitowego 32
Jak zaprogramować mikrokontroler zgodnie z protokołem sieci? 33
Jak zaprogramować mikrokontroler zgodnie z protokołem sieci? Istnieje wiele gotowych elementów składowych i modułów dostarczanych przez producentów układów scalonych dla systemu CAN, co spowodowało, że stał się on tak popularny, w tak krótkim czasie 34
Jedynym zadaniem mikrokontrolera jest: wpisanie bajtów danych (0.. 8), które mają zostać wysłane do układu scalonego protokołu CAN wypełnienie pola identyfikatora i pola DLC odpowiednie ustawienie bitu RTR 35
Pozostałe elementy procesu przetwarzania wykonywane są przez układ scalony sterownika CAN Dane są wprowadzane do magistrali CAN za pośrednictwem układu scalonego transceivera Mikrokontroler otrzyma potwierdzenie pomyślnego wysłania danych, lub komunikat o błędzie 36
Podobnie dzieje się przy odbiorze danych Sterownik CAN, za pośrednictwem transcivera CAN, otrzymuje ramki CAN z magistrali Sprawdza sumę kontrolną, usuwa zbędne pola i do mikrokontrolera wysyła otrzymane dane, albo komunikat o błędzie 37
Filtrowanie akceptacyjne Każda stacja przyłączona do magistrali nie musi przetwarzać 2048 różnych identyfikatorów ramek Selekcja identyfikatorów nazywana jest filtracją akceptacyjną Można tak zaprogramować sterownik CAN, żeby sprawdzał wszystkie otrzymywane ramki, ale do mikrokontrolera wysyłał ramki o kreślonym identyfikatorze Do filtrowania akceptacyjnego można użyć się dwóch układów scalonych BasiCAN i FullCAN 38
Oprogramowanie interfejsu Oprogramowanie operacyjne - wprowadza cały system w ruch - zapewnia jego działanie - testuje interfejs wraz z mikrokontrolerem Oprogramowanie aplikacyjne - rejestracja pomiarów - sterowanie wyświetlaczem - transmisja daty i czasu - 39
Zgodność pomiędzy 20A i 20B Sterowniki z możliwym 20A mogą przetwarzać tylko ramki standardowe (po odebraniu ramki rozszerzonej generują komunikat o błędzie) Sterowniki z możliwym 20A i biernymi cechami 20B przetwarzają tylko ramki standardowe, jednak akceptują ramki rozszerzone (przeprowadzają próbę błędu i odpowiadają bitem ACK, albo ramką błędu) Sterowniki z możliwym 20B przetwarzają, przechowują i przepuszczają ramki standardowe i rozszerzone 40
Dla potrzeb przemysłu motoryzacyjnego wyróżnia się cztery klasy magistrali: Klasa A szybkość transmisji do 10 kb/s, używana do łączenia urządzeń takich jak: światła, kierunkowskazy, siłowniki siedzeń i lusterek, centralny zamek Klasa B szybkość transmisji ok. 40 kb/s używana do łączenia urządzeń takich jak sterowniki klimatyzacji Klasa C szybkość transmisji 250-1000 kb/s używana do transmisji sygnałów w czasie rzeczywistym pomiędzy podzespołami mechanicznymi, a ich sterownikami (sterowanie silnikiem, skrzynią biegów, układy ABS, ESP, ACC) Klasa D szybkość przesyłu 1.0-1010 Mb/s wykorzystywana do transmisji multimedialnych 41
Przykład zastosowania magistrali CAN klasy C 42
Przykład zaimplementowanej sieci CAN 43