CAN-bus czyli wymiana informacji i diagnoza po szynie danych
CAN-bus czyli wymiana informacji po szynie danych w Mercedesie klasy "S" Magistrala CAN jest tak skonstruowana, że w jednej chwili nadawać może tylko jedno urządzenie. Jeśli zdarzy się sytuacja, że wiele nadajników chce wysyłać dane, wszystkie milkną i jako pierwsze rozpoczynają transmisję te urządzenia, które mają najwyższy priorytet. W Mercedesie klasy S przez samochód przebiegają dwie, a w CL nawet trzy sprzężone ze sobą szyny danych. Dane ważne dla bezpieczeństwa jazdy, na przykład z układów sterowania napędem, przepływają szyną o większej przepustowości niż sygnały dotyczące na przykład klimatyzacji. W Mercedesie klasy S magistrala przenosi (w zależności od wyposażenia auta) do 650 sygnałów sterujących około 150 funkcjami 50 urządzeń elektronicznych. Informacje te mogą być wykorzystywane przez wiele układów do najróżniejszych zadań: np. przez klimatyzację do sterowania dmuchawą, radio w celu dopasowania siły głosu, deskę rozdzielczą do pokazywania prędkości czy przez komputer pokładowy i system nawigacji do znalezienia optymalnej trasy. Auta Mercedesa klasy S i CL, obok tradycyjnych kabli miedzianych, zawierają światłowody. Przez szynę o nazwie D2B może przepływać ponad 5,6 miliona bitów na sekundę, czyli około 60 razy więcej niż tradycyjną CAN. Dzięki temu, że magistrala D2B może przenosić także sygnały audio, system nagłaśniający, urządzenie głośno mówiące oraz system nawigacji mogą korzystać z tych samych głośników. Mimo iż ciągle przybywa w samochodach nowych układów elektronicznych, dzięki cyfrowemu układowi CAN zmniejszyło się okablowanie samochodu. W poprzedniku klasy S było 3,2 km kabli ważących 56 kg, dziś znajduje się tam tylko 2,2 km przewodów o masie 39 kg. W Volvo już od roku 1999 komunikacja wszystkich urządzeń odbywa się w technice CAN -bus. Chociaż przełącznik świateł steruje siedmioma różnymi funkcjami, dochodzą do niego tylko trzy przewody: plus, masa i sygnał danych. Takim kablem połączone są wszystkie urządzenia wykonawcze. Dzięki technice CAN-bus jednym przewodem mogą być przenoszone jednocześnie w obu kierunkach dwa sygnały lub więcej. Przepływają dane - np. sterujące silnikiem lub skrzynią biegów - z szybkością 250 kbit/s oraz do modułów mających mniej istotne zadania, jak sterowanie klimatyzacją lub światłem wewnątrz samochodu - te informacje transmitowane są z prędkością 125 kbit/s.Jeśli na przykład włączone mają być tylne światła przeciwmgielne, przełącznik świateł przekazuje przez szynę danych odpowiedni cyfrowy sygnał do wszystkich modułów. Układy, do których nie jest on adresowany, ignorują te informacje. Są one odbierane prze REM (Rear Electronic Module) umieszczony w bagażniku. Układ pobudza przekaźnik, który z kolei włącza lampy przeciwmgielne. To jednak nie koniec - jednocześnie REM kontroluje ich działanie. Jeśli wszystko jest w porządku, odpowiednia informacja przepływa przez szynę danych i na tablicy rozdzielczej zapala się lampka OK. Dzięki technice CAN-bus oraz elastycznie działającym modułom, sygnał wysłany do układu REM może naprzykład spowodować włączenie tylnego światła przeciwmgielnego, gdy przepali się żarówka znajdująca się w świetle hamowania.Komunikacja wszystkich pokładowych urządzeń sterujących odbywa się poprzez CAN (Controller Area Network). Nazwa ta obejmuje zarówno magistralę, jak i protokół określający sposób przesyłania danych. CAN działa na zasadzie rozsiewczej (broadcasting), co oznacza, że informacje są wysyłane przez jedno urządzenie, a pozostałe mogą je odbierać. Ponieważ wszystkie przesyłane pakiety danych zawierają identyfikator adresata, każdy z odbiorników "wie", czy są one przeznaczone dla niego.
Ogólne informacje
Podstawowe własności magistrali CAN to:
- Duża odporność na zewnętrzne zakłócenia elektromagnetyczne, dzięki zastosowaniu różnicowej techniki transmisji bitów. Ponadto każda ramka CAN opatrzona jest sumą kontrolną CRC-15. Według matematycznych obliczeń jeden przekłamany bit może zostać nie wykryty raz na 1000 lat ciągłej pracy magistrali (prawdopodobieństwo niewykrycia wynosi 10^-11).
- Transmisja na magistrali odbywa się metodą „broadcastową” w konfiguracji multi-master.
- Dostęp do medium transmisyjnego realizowany jest poprzez mechanizm CSMA/CA (Carrier Sense Multiple Access with Collision Avoidance). Zapewnia on transmisję wiadomości z uwzględnieniem jej priorytetu. W odróżnieniu od magistrali Ethernetowej, wspomniany mechanizm zapobiega utracie informacji w przypadku kolizji na magistrali.
- Dane na magistrali mogą być transmitowane z prędkością do 1Mbps na odległość max. 40 metrów. Wraz ze wzrostem odległości prędkość maleje. Należy pamiętać, że rzeczywista efektywność (prędkość) przesyłanych danych po uwzględnieniu nagłówka i danych nadmiarowych wynosi ~50% (także przy identyfikatorze 29-bitowym).
Szybkość transmisji kbps |
Długość magistrali m |
1000 |
40 |
500 |
100 |
200 |
200 |
100 |
660 |
50 |
10000 |
5 |
100000 |
- Standard CAN definiuje kilka typów ramek. Ramka danych może zawierać do 8 bajtów danych. Mechanizm wykrywania i obsługi błędów korzysta z ramek błędów (error frames). Istnieje możliwość użycia ramek zdalnych (RTR - Remote Transmission Request frames), oraz ramek przeładowania (overload frames).
- Elastyczność systemu - dołączenie kolejnych węzłów bez konieczności zmian hardwerowych i softwerowych.
- CAN jest to magistralą asynchroniczną i szeregową.
Warstwa fizyczna
Standard CAN jest zdefiniowany w dwóch warstwach modelu odniesienia, co daje pełną elastyczność w stosunku do pozostałych warstw. Jako medium transmisyjne podstawą jest medium miedziane (skrętka ekranowana lub nieekranowana). Rzadkie są przypadki stosowania światłowodu, natomiast prowadzone są obecnie badania nad użyciem fal radiowych.
Warstwa fizyczna definiuje:
- poziomy sygnałów występujących na magistrali. Stan dominujący, odzwierciedla niski poziom logiczny, natomiast stan recesywny, odzwierciedla wysoki poziom logiczny.
- impedancję falową magistrali. zależności bitowe, z których wynika prędkość transmisji.
- kodowanie za pomocą metody NRZ (Non-return-to-Zero).
- synchronizację na magistrali, którą zapewnia metoda „bit stuffing”, polegająca na dostawieniu bitu stanu przeciwnego po serii 5 bitów tego samego stanu.
Istnieje kilka norm definiujących parametry magistrali przy różnych prędkościach transmisji. Standardy te różnią się poziomami napięć a także wartością impedancji terminującej na końcu magistrali. Wynika stąd maksymalna liczba węzłów jaką można podpiąć do magistrali
Najbardziej znane normy to:
1.ISO11898 dla magistral o szybkiej transmisji danych (do 1Mb/s).
- szybkość transmisji 125kpbs - 1Mbps
- od 2 do 30 węzłów na sieć
- maksymalna długość magistrali to 40 m
- terminatory 120ohm jako elementy dopasowania impedancyjnego
- przewód dwużyłowy ekranowany
- zasilanie 5V
- zakres napięć sygnału od -2 do +7V
- minimalny prąd wyjściowy nadajnika większy od 25mA
2.ISO11519 dla magistral o wolnej transmisji danych (do 125kb/s).
- szybkość transmisji do 125kbps
- od 2 do 20 węzłów w sieci
- szybkość przesyłanych danych zależy od obciążenia magistrali przez pojemność wprowadzaną przez węzły
- pojedyńczy terminator na końcu linii
- prąd wyjściowy większy niż 1mA
- napięcie zasilania 5V
- zakres napięć od -2V do + 7V
Czas trwania każdego z bitów jest ściśle zdefiniowany przez cztery segmenty. Koncepcję tą przedstawia poniższy rysunek:
Poszczególne elementy to:
tq - time quantum - jest to najmniejszy niepodzielny odcinek czasu służący do obliczenia zależności pozostałych segmentów (segmenty składają się z całkowitej wielokrotności liczby tq). Wartość tq zależy od częstotliwości taktowania danego węzła.
Segment synchronizacji - jest to segment znajdujący się w pierwszej fazie trwania bitu. Służy do synchronizacji węzłów znajdujących się w sieci. W chwili trwania segmentu synchronizacji następuje zmiana wartości bitu. Czas trwania tego fragmentu zawsze wynosi 1 tq.
Segment propagacji - segment ten jest używany do kompensacji opóźnień przez przewody transmisyjne oraz kontrolery obsługujące. Segment ten jest programowalny od 1 do 8 tq.
Segment pierwszego bufora fazy - jest wykorzystywany do kompensacji błędów fazowych zboczy sygnałów. Wartość tego pola może być ustawiana w zakresie od 1 do tq. Wartość tego pola może być wydłużona w momencie resynchronizacji. Po tym fragmencie bitu następuje próbkowanie wartości bitu (jednokrotne lub trzykrotne).
Segment drugiego bufora fazy - jest również wykorzystywany do kompensacji błędów fazowych zboczy sygnałów. Wartość tego pola również może być ustawiana w zakresie od 1 do tq. W trakcie resynchronizacji długość tego pola może być automatycznie skrócona. Przed tym segmentem bitu następuje próbkowanie wartości bitu (jednokrotne lub trzykrotne).
Chwila próbkowania magistrali jest parametrem wpływającym na wrażliwość węzła. Zmniejszenie wpływu zmian częstotliwości taktującej uzyskujemy poprzez wyprzedzające próbkowanie, natomiast opóźnione próbkowanie obniża wrażliwość węzłów na opóźnienia wynikające z toru transmisyjnego.
Warstwa łącza danych
Warstwa łącza danych definiuje strukturę ramki, oraz mechanizm dostępu do medium. W przypadku identyfikatora 11-bitowego standardu CAN2.0B struktura ramki przedstawia się następująco:
Poszczególne elementy to :
- SOF (Start of Frame) bit - dominujący bit oznaczający początek ramki
- ID (Identificator) - pole to reprezentuje 11-bitowy identyfikator ramki
- RTR bit - Jeżeli jest w stanie recesywnym, to mamy do czynienia z ramką zdalną (brak pola danych), w przeciwnym wypadku mamy do czynienia z ze zwykłą ramką danych
- IDE (Identificator Extension) - Bit który pozwala rozróżnić czy mamy do czynienia identyfikatorem podstawowym ramki, czy tez z rozszerzonym. Dla identyfikatora 11-bitowego, bit ten znajduje się w stanie dominującym.
- r0 - Bit zarezerwowany. Jest akceptowalny w dowolnym stanie recesywnym lub dominującym.
- DLC (Data Length Code) - 3 bitowe pole informujące jaka ilość bajtów jest przesyłana w aktualnej ramce
- Data field - Pole danych. Może zawierać od 0 do 8 bajtów danych.
- CRC (Cyclic Redundancy Check) field - 15-bitowe pole sumy kontrolnej. Suma kontrolna liczona jest na podstawie wszystkich bitów poprzedzających pole sumy kontrolnej. Pole sumy kontrolnej kończy ogranicznik (CRC-D - delimiter), znajdujący się zawsze w stanie recesywnym. Warto zapamiętać fakt, że suma kontrolna liczona jest na podstawie strumienia bez „bitów dostawionych”.
- ACK (Acknowledge) - 2-bitowe pole potwierdzenia (ACK slot, ACK-D - delimiter). Służy do potwierdzenia przez węzeł odbierający poprawności transmisji.
- EOF (End of Frame) - 7-bitowe pole końca ramki. Jest to ciąg bitów znajdujących się w stanie recesywnym.
- INT (Interval) - 3-bitowa przerwa międzyramkowa, zawsze znajdując się w stanie recesywnym
Po każdej przesłanej ramce musi wystąpić co najmniej 3-bitowa przerwa międzyramkowa.
W przypadku ramki z identyfikatorem 29-bitowym (poniżej), bit IDE ustawiony jest w stan recesywny, co sygnalizuje, że kolejne 18-bitów stanowi składową część identyfikatora 29-bitowego. Występuje tutaj dodatkowe pole SSR (Substitute Remote Request bit).
Jak łatwo policzyć, używając identyfikatora 11-bitowego możemy zaadresować 2048 węzłów. Ponieważ specyfikacja mówi, że siedem najstarszych bitów nie może znajdować się jednocześnie w stanie recesywnym , dlatego też efektywna liczba identyfikatorów możliwych do użycia wynosi 2032 (2048-2^4).
Dla identyfikatora 29-bitowego liczba ta rośnie do około 536 milionów. Tak duża liczba węzłów z kolei nie jest możliwa do podłączenia z przyczyn fizycznych, gdyż każdy dodatkowy węzeł wprowadza pojemność i dodatkowo obciąża magistralę powodując zniekształcenia przebiegów na niej występujących. Dlatego praktyczna liczba węzłów nie powinna przekraczać 32 urządzeń (przy maksymalnej prędkości).
Jak już wcześniej wspomniano dostęp do medium jest realizowany poprzez proces arbitrażu bitowego. Każdy węzeł „nasłuchuje” tego co dzieje się na magistrali w danej chwili, przez co wie kiedy medium jest wolne a kiedy zajęte. Gdy zachodzi potrzeba transmisji dany węzeł w przypadku braku aktywności na magistrali, zaczyna transmitować dane, blokując dostęp innym węzłom, które naturalnie przełączają się w tryb odbioru. Często jednak występują zdarzenia gdy dwa lub więcej węzłów chce jednocześnie rozpocząć transmisję danych. W takim przypadku stosowana jest tzw. logika iloczynu na rezystorze (wired and).
Sprzętowo realizowana jest ona poprzez zwykły tranzystor bipolarny pracujący w układzie otwartego kolektora. Jak wiadomo taki układ tranzystora pozwala wymusić na wyjściu stan niski, który odpowiada stanowi dominującemu w standardzie CAN. A więc gdy dany węzeł „wystawi na magistralę” stan recesywny a wykryje stan dominujący, przegrywa proces arbitrażu, przechodząc w stan odbioru. Omawiany przypadek został przedstawiony na rysunku poniżej:
Analizując przykładową realizację takiego mechanizmu, można dojść do wniosku, że największy priorytet ma ramka o najmniejszej wartości w polu identyfikatora. Niedopuszczalne jest zatem wysłanie ramki o takim samym identyfikatorze z dwóch różnych węzłów, gdyż może to doprowadzić do nieprzewidywalnych skutków. Natomiast dozwolone jest przesyłanie ramek w formie podstawowej i rozszerzonej na tej samej magistrali, co w niektórych przypadkach może zwiększyć efektywność transmisji.
Warstwa aplikacyjna
Standard CAN posiada bogatą rodzinę standardów w warstwie aplikacyjnej i użytkownika. Są to :
CANopen - Oparty na standardzie grupy CiA (CAN in Automation - standard DS 301). Bardzo popularny protokół, używany w systemach wbudowanych. Pozwala stworzyć w pełni dynamiczną sieć urządzeń. Jest zorientowany na obiektowe przesyłanie danych. Posiada mechanizmy takie jak PDO (Proccess Data Object), SDO (Service Data Object), NMT (Network Management), SYNC (Synchronization Object), EMG (Emergency Object).
CAN Areospace - standard wprowadzony przez NASA (National Aeronautic & Space Administration). Używany do systemu kontrolno-nawigacyjnego.
CAN Kindom - specyfikacja warstwy aplikacji stworzona przez szwedzka firmę Kvaser AB. Zaakceptowana przez organizację CiA, oraz dostępna bez opłat. Daje on projektantom swobodę w tworzeniu własnego systemu, otwierając możliwość do projektowania systemu modułowego.
Device Net - szeroko stosowany w aplikacjach automatyki przemysłowej Jest to otwarty standard sieciowy warstwy aplikacyjnej stworzony przez firmę Rocwell/Allen-Bardley. Rozwiązanie jest zaakceptowane przez CiA.
SDS - (Smart Distributed System) - specyfikacja stworzona przez firmę Honeywell, zajmującą się systemami sterującymi oraz kontrolno-pomiarowymi. Specyfikacja jest ogólnie dostępna bez dodatkowych opłat i zatwierdzona przez organizację CiA.
SafetyBus - standard opracowany przez grupę Safety Network International e.V. Stosowany w przemyśle transportowym, i automatyce przemysłowej
SAE - standard zdefiniowany przez grupę Society of Automotive Engineers. Stosowany jest jako system komunikacji urządzeń kontrolnych, pomiarowych w samochodach osobowych (J1850) i ciężarowych (J1939) (USA)
Zastosowanie
Magistrala CAN jest powszechnie stosowana w różnych dziedzinach. W przemyśle motoryzacyjnym na bazie magistrali CAN realizuje się cyfrowa magistralę pojazdów. Jest ona głównym medium zbiorczym dla sensorów, układów wykonawczych, jak i elementów dodatkowych.Stosowana technika priorytetów standardu CAN pozwala na rozgraniczenie sterowania z jednej strony elementów nadzwyczaj ważnych, takich jak poduszki powietrzne, z drugiej strony kwestii błahych takich jak transmisja danych między sprzętem dodatkowym A więc na "CANie" spoczywa bardzo duża odpowiedzialność.