Podstawowe pojęcia i właściwości CAN CAN jest magistralą systemową umożliwiającą wzajemną komunikację pomiędzy modułami elektronicznymi. Ponieważ jest siecią multimaster, dlatego możliwa jest sytuacja, gdy każdy moduł może mieć dostęp do szyny i jeżeli wysyła dane o odpowiednio wysokim priorytecie, zajmuje szynę na czas transmisji jednego telegramu. Modułami łączonymi za pomocą tej sieci mogą być zarówno proste układy wejścia-wyjścia, układy mikroprocesorowe a także komputery. Właśnie dzięki możliwości podłączenia układów o dużej mocy obliczeniowej, tworzy się system realizujący funkcję inteligencji rozproszonej. Wiadomość (telegram) Jest podstawową jednostką informacji, składającą się z kilkudziesięciu bitów. Telegram zawiera od 0 do 8 bajtów danych oraz dodatkowe bity umożliwiające poprawny przesył danych. NADAJNIK Moduł rozpoczynający transmisję wiadomości jest nazywany NADAJNIKIEM tej wiadomości; staje się nim dopiero wtedy gdy stwierdzi, że szyna jest wolna. ODBIORNIK Stacja jest nazywana ODBIORNIKIEM, wtedy gdy nie jest NADAJNIKIEM tej wiadomości i gdy szyna nie jest bezczynna. Identyfikator Wyróżnia telegram w sieci. Może być 11-bitowy (CAN 2.0A) oraz 29-bitowy (CAN 2.0B). Priorytet Identyfikator definiuje statyczny priorytet wiadomości podczas dostępu do szyny. Przepływ informacji W systemie CAN nie wykorzystuje się adresowania poszczególnych węzłów, przez co nie ma potrzeby informowania systemu o zmianie konfiguracji. Takie rozwiązanie ma swoje zalety: Elastyczność systemu; dodanie węzła do sieci CAN nie wymaga jakichkolwiek zmian w oprogramowaniu, sprzęcie, a także w warstwie aplikacyjnej. Przepływ wiadomości; każda wiadomość ma swój identyfikator. Nie wskazuje on na miejsce docelowe wiadomości, ale opisuje znaczenie danych zawartych w informacji. Węzły w sieci odbierają wszystkie wysłane wiadomości. Jeśli identyfikator wiadomości zostaje "zaakceptowany" przez węzeł (filtracja) to dane zawarte w telegramie podlegają dalszemu przetwarzaniu. Wielodostęp (ang. multicast); w konsekwencji filtracji wiadomości, każdy węzeł może odebrać i jednocześnie wykonać odpowiednie działania na tej samej paczce informacji. Zgodność danych; sieć CAN gwarantuje, że każda wiadomość jest jednocześnie akceptowana przez wszystkie węzły lub zostaje odrzucona. W ten sposób zgodność danych w systemie jest kontrolowana albo przez wielodostęp albo przez obsługę błędów. Prędkość transmisji W konkretnym rozwiązaniu sieci CAN prędkość transmisji jest stała. Transfer informacji możliwy jest z prędkością w granicach od 5 kbit/s do 1 Mbit/s. CAN początkowo stosowany w przemyśle samochodowym, charakteryzował się niewielką długością całej szyny rzędu 5 10 metrów przy transmisji rzędu 1 Mbit/s. Po zaakceptowaniu tego systemu przez inne gałęzie przemysłu, wymagane odległości znacznie się zwiększyły dochodząc do 10 km przy jednoczesnym obniżeniu prędkości transmisji danych do 5 kbit/s. Najczęściej stosowane są systemy o przepustowości od 25 do 500 kbit/s. Zdalny dostęp do danych (ang. Remote Data Request) Przy wysyłaniu RAMKI ZDALNEJ (ang. REMOTE FRAME),węzeł potrzebujący dane może zażądać od innego wysłania RAMKI DANYCH (ang. DATA FRAME). Ramka danych i odpowiednia jej ramka "zdalna" (żądania) posiadają ten sam identyfikator. Multimaster Gdy magistrala jest wolna, to dowolna jednostka może rozpocząć transmisję wiadomości. Jeśli jednostka wysyła wiadomość o wysokim priorytecie to w ten sposób może uzyskać dostęp do szyny. Stany logiczne magistrali W sieci CAN występują dwa uzupełniające się poziomy logiczne: "dominujący" (ang. dominant) lub "ustępujący" (ang. "recessive"). Podczas jednoczesnej transmisji bitu "dominującego" i "ustępującego" przez dwa różne urządzenia, otrzymamy w rezultacie poziom "dominujący". Umownie oznacza się poziom "dominujący" jako 0, a poziom "ustępujący" jako 1. Poziom 0 ma wyższy priorytet niż poziom 1. Specyfikacja nie definiuje stanów fizycznych (napięcie elektryczne lub wiązka świetlna) reprezentujących poziomy logiczne. W większości przypadków, gdy stosujemy skrętkę nieekranowaną i odpowiednie układy nadawczo-odbiorcze, definiuje się następujące stany fizyczne: gdy na magistralę zapisywana jest logiczna "1", to na dwóch liniach sygnałowych pojawia się napięcie 2.5 V; stan taki reprezentuje poziom "ustępujący"; gdy na magistralę zapisywane jest logiczne "0", to linia CAN-H (CAN high) zostaje podciągnięta do napięcia 5 V, natomiast stan drugiej linii - CAN-L (CAN low) zostaje zmniejszony do poziomu reprezentującego masę układu; taką sytuację reprezentuje poziom "dominujący"; Dostęp do magistrali - arbitraż Istnieje wiele opracowanych metod dostępu do sieci, jednakże w sieci CAN zastosowano metodę typu CSMA (Carrier Sense Multiple Access), który zapewnia równouprawnienie wszystkim użytkownikom i uniezależnia sieć od awarii któregokolwiek węzła. Wszystkie urządzenia - węzły bezpośrednio "nasłuchują" czy w sieci nie znajduje się sygnał. Ponadto wszystkie węzły mają jednakowy dostęp do wspólnego medium transmisyjnego. W sieci CAN przekazywana informacja dostępna jest dla wszystkich urządzeń podłączonych do sieci, jednak odbierają ją tylko te, dla których jest przeznaczona. Decyzja o rozpoczęciu nadawania zostaje podjęta na podstawie aktualnego stanu sieci - urządzenie nasłuchując, rozpoznaje czy sieć jest wolna, czy też trwa transmisja. Zasadniczy problem pojawia się wtedy, gdy dwie stacje stwierdzą brak transmisji w sieci i jednocześnie przystąpią do nadawania. W praktyce stosuje się dwie metody zapobiegania konfliktom transmisji: CSMA z wykrywaniem kolizji (CSMA/CD); CSMA z unikaniem kolizji (CSMA/CA); Zasada CSMA/CA, użyta w technologii CAN, polega na unikaniu kolizji. W metodzie tej urządzenie przed przystąpieniem do transmisji sprawdza stan sieci. Jeżeli nie wykrywa transmisji pochodzącej od innych urządzeń, wysyła charakterystyczny krótki sygnał oznaczający chęć nadawania (zgłoszenie nadawania). Następnie odczekuje określony przedział czasu, aby upewnić się, iż ów sygnał dotarł do wszystkich modułów i dopiero wtedy rozpoczyna nadawanie. Obowiązkiem każdego węzła, który w trakcie nadawania otrzymał zgłoszenie nadawania od innego, jest zaprzestanie transmisji i odczekanie okresu o losowej długości. Może nastąpić kolizja sygnałów - zgłoszeń nadawania. Problem ten jest rozwiązywany podobnie jak w przypadku kolizji sygnału zgłoszenia nadawania z normalną transmisją. W przeciwieństwie do metody CSMA/CD, po wystąpieniu kolizji, o prawo dostępu do sieci ubiegają się tylko te stacje których sygnały zgłoszenia brały udział w kolizji. Po przygotowaniu komunikatu do nadawania, węzeł obserwuje stan magistrali i powstrzymuje transmisję aż do chwili stwierdzenia, że szyna jest wolna - w tym momencie może rozpocząć nadawanie. Pierwszym elementem komunikatu jest identyfikator. Jeżeli w tym samym czasie rozpoczną nadawanie dwa urządzenia, to identyfikatory wiadomości "nałożą się" na siebie. W razie niezgodności nakładających się bitów (0 i 1) w sieci ustali się wartość 0. Dzięki temu węzeł, który nadał 1 (a więc węzeł o wyższym identyfikatorze) może wykryć kolizję i przerwać nadawanie. Węzeł o niższym identyfikatorze może nadać resztę wiadomości bez przeszkód. Mechanizm arbitrażu gwarantuje, że ani informacja ani czas nie są tracone. Gdy RAMKA DANYCH i RAMKA ZDALNA mają ten sam identyfikator i są inicjowane w tym samym czasie, to wyższy priorytet ma ramka danych i to ona zostaje wysłana na szynę. Bezpieczeństwo Dla osiągnięcia największego bezpieczeństwa transferu danych, we wszystkich węzłach sieci CAN zaimplementowano odpowiednie sposoby detekcji błędów, sygnalizacji i samokorekcji. Do osiągnięcia poprawnej detekcji stosuje się: monitorowanie (nadajnik porównuje poziom bitu nadawanego z poziomem bitu wykrytego na szynie); cykliczna kontrola nadmiarowości (kod nadmiarowy); kontrola bitów ("uszczelnianie" - ang. bit stuffing); kontrola poprawnej składni wiadomości. Sygnalizacja błędów i "odzyskiwanie czasu" Uszkodzona wiadomość jest zaznaczana przez jeden z węzłów wraz z jednoczesnym zasygnalizowaniem błędu. Możliwe jest także "odzyskanie czasu" podczas wykrycia błędu. Polega to na tym, iż w momencie pojawienia się, w trakcie nadawani wiadomości, błędu na szynie, możliwe jest zakończenie wysyłania wiadomości. Zdarzenie to może mieć miejsce dopiero po czasie odpowiadającym wysłaniu 29 bitów i gdy nie występują kolejne błędy. Uzyskujemy w ten sposób skrócenie czasu emisji w warunkach błędnej pracy systemu. Ograniczenie uszkodzeń Węzły sieci CAN są zdolne odróżnić krótkotrwałe zakłócenia od trwałych uszkodzeń. W przypadku wadliwego działania węzła, zostaje on wyłączony, aż do momentu, w którym zakłócenie minie. Ilość modułów W systemie CAN, ilość modułów jest teoretycznie nieograniczona. Wynika to z tego, że w sieci tej nie ma adresacji modułów, a każda wysyłana informacja może być odebrana przez wszystkie moduły (ang. broadcast). Decyzja, czy informacja będzie przydatna dla konkretnego modułu (węzła), zależy od ustawionego filtru akceptującego dane, ustawionego programowo. Kryterium do podjęcia tej decyzji jest identyfikator, z którym każda informacja jest nadawana. Identyfikator ma długość 11 bitów (format standardowy - CAN 2.0A), co umożliwia rozróżnienie 2032( różnych typów wiadomości-danych. Istnieje również opcja identyfikatora o długości 29 bitów (format rozszerzony - CAN 2.0B), który umożliwia rozróżnienie 536870912 wiadomości. Za pomocą identyfikatora układ CAN rozpoznaje typ lub adresata wiadomości, a co za tym idzie, priorytet wysyłanych danych. W praktyce ilość stosowanych modułów jest ograniczona przez parametry elektryczne nadajników/odbiorników. Istnieje jednakże możliwość zastosowania układów wzmacniających sygnał tzw. powtarzaczy (ang. repeater), za pomocą których można zwiększyć ilość podłączonych do szyny urządzeń i zwiększyć zasięg sieci. Duża ilość modułów zastosowanych w jednej sieci wpływa na opóźnienie w przesyle informacji. Kanał transmisyjny Szyna składa się z pojedynczego kanału transmisyjnego, który przenosi poszczególne bity informacji. W specyfikacji Bosch'a nie jest ustalona konkretna implementacja kanału. W zależności od potrzeb medium transmisyjnym może być np. pojedynczy przewód z masą, skrętka nieekranowana, włókna światłowodowe. Najczęściej spotykanym rozwiązaniem jest zastosowanie skrętki nieekranowanej. Potwierdzenie Wszystkie odbiorniki kontrolują zgodność wiadomości aktualnie odbieranych i żądają potwierdzenia poprawności informacji i ewentualnego ustawienia znacznika niezgodności odebranych danych. Tryb uśpienia i pobudzenia Aby zmniejszyć zapotrzebowanie energii, możliwe jest ustawienie modułów CAN w tryb uśpienia, bez konieczności odłączania danego urządzenia od sieci. Szyna zostaje pobudzona z trybu uśpienia, gdy jeden ze sterowników wykaże swoją aktywność lub poprzez wewnętrzne potrzeby systemu. W trakcie przebudzania szyny, zostaje ona skasowana, a warstwa transferu oczekuje na stabilizację oscylatora systemu. Warstwa ta czeka (kontroluje pojawienie się 11 kolejnych "ustępujących" bitów), aż magistrala przejdzie w stan aktywny i synchronizuje się z nią, powodując jednoczesne, ponowne, załączenie modułu, który wykazał aktywność. W następstwie załączenia szyny inne węzły, które są w stanie uśpienia, należy pobudzić za pomocą specjalnie dedykowanej wiadomości o najniższym, możliwym do użycia identyfikatorze (rrr rrrd rrrr = 111 1110 1111). Nośnik informacji - RAMKA DANYCH RAMKA DANYCH składa się z siedmiu różnych pól bitowych: START RAMKI, POLE ARBITRAŻU, POLE KONTROLNE, POLE DANYCH, POLE CRC, POLE POTWIERDZENIA (ACK), KONIEC RAMKI. START RAMKI Oznacza początek RAMKI DANYCH lub RAMKI ZDALNEJ. Składa się z pojedynczego "dominującego" bitu. Stacja (moduł) może nadawać dopiero wtedy gdy szyna jest bezczynna. Wszystkie pozostałe stacje są następnie synchronizowane zboczem opadającym, pola START RAMKI. POLE ARBITRAŻU Składa się z dwóch pól: IDENTYFIKATORA i BITU RTR. IDENTYFIKATOR Ma długość 11 bitów, są one nadawane w kolejności od ID-10 do ID-0. Najmniej znaczącym jest bit ID-0. Siedem najbardziej znaczących bitów (ID-10 - ID - 4) nie może być jednocześnie w stanie "ustępującym". BIT RTR (ang. Remote Transmission Request BIT) W RAMCE DANYCH powinien być ustawiony jako "dominujący", natomiast w RAMCE ZDALNEJ - jako "ustępujący". POLE KONTROLNE Składa się z 6 bitów: kod długość danych (4 bity), rezerwowe (2 bity). Dodatkowe 2 bity mogą być wysłane jako "dominujące", odbiornik akceptuje dowolną kombinację tych bitów. KOD DŁUGOŚCI DANYCH Wskazuje, ile zostanie wysłanych bajtów danych. Dopuszczalna jest liczba bajtów danych w zakresie od 0 do 8. POLE DANYCH Zawiera informacje, które wysyłamy do sieci wewnątrz RAMKI DANYCH. Pole to może zawierać od 0 do 8 bajtów danych, z których każdy zawiera 8 bitów, przesyłanych począwszy od bardziej znaczącego bitu. POLE KODU NADMIAROWEGO (CRC) Składa się z SEKWENCJI KODU NADMIAROWEGO oraz OGRANICZNIKA KODU NADMIAROWEGO. SEKWENCJA KODU NADMIAROWEGO Kontrola danych jest uzyskiwana poprzez cykliczny kod nadmiarowy, który jest najlepszym rozwiązaniem dla ramek nie przekraczających długości 127 bitów. Sprawdzeniu podlega ciąg bitów począwszy od STARTU RAMKI, a skończywszy na ostatnim bicie POLA DANYCH (jeśli istnieje). Kontrola polega na przeprowadzeniu kilku operacji na następujących wielomianach: P(X)=X15+X14+X10+X8+X7+X4+X3+1 - wielomian generujący, 15 stopnia (k=15), charakterystyczny dla wszystkich węzłów CAN (tj. 1100 0101 1001 1001); G(X) wielomian (stopnia m) opisujący przesyłaną informację; F(X) - wielomian (stopnia n=m+k) zawierający informację zakodowaną, przygotowaną do nadania; H(X) - wielomian (stopnia n=m+k) reprezentujący informację zakodowaną, odebraną przez węzeł docelowy; R(X) - wielomian opisujący resztę z dzielenia (SEKWENCJA KODU NADMIAROWEGO); E(X) - wielomian błędów. Każdy wielomian wiadomości G(X) przedstawiający m - elementowy ciąg bitów, mnożony jest przez Xk. Następnie wyrażenie XkG(X) dzieli się przez wielomian generujący P(X). Otrzymana w wyniku reszta R(X) tworzy ciąg k symboli kontrolnych. Operacje te wykonywane są w nadajniku. Do odbiornika dochodzi zakodowana informacja reprezentowana przez wielomian H(X), który jest dzielony przez wielomian generujący P(X). Jeżeli dzielenie realizowane jest bez reszty, to w odebranym ciągu kodowanym nie ma błędów lub są one nie wykryte. Jeżeli w wyniku dzielenia H(X) przez P(X) otrzymujemy resztę R(X)ą0, to oznacza, że odebrany ciąg jest błędny. Gdy przesyłany ciąg kodowy F(X) zostanie odebrany z błędami w postaci H(X), to realizując sumowanie modulo dwa tych dwóch wielomianów uzyskamy wielomian błędów E(X) (przy braku błędów E(X)=0). Jako, że F(X) dzieli się przez P(X) bez reszty, to reszta R(X) otrzymana z dzielenia H(X) przez P(X) jest taka sama jak przy dzieleniu E(X) przez P(X). Jeśli wielomian R(X) jest różny od zera to oznacza, że wystąpiły błędy w odebranym ciągu bitów. Liczba błędów w odebranym ciągu kodowym jest równa stopniowi wielomianu błędów R(X). SEKWENCJA KODU NADMIAROWEGO ma długość 15 bitów i jest bezpośrednio nadawana za ostatnim bitem POLA DANYCH. OGRANICZNIK KODU NADMIAROWEGO kończy POLE KODU NADMIAROWEGO. Składa się on z pojedynczego "ustępującego" bitu. POLE POTWIERDZENIA Zawiera dwa bity: BIT POTWIERDZENIA oraz OGRANICZNIK POTWIERDZENIA. BIT POTWIERDZENIA zostaje ustawiony jako "dominujący" przez nadajnik. Natomiast wszystkie pozostałe węzły, które poprawnie odebrały dane, informują nadajnik poprzez ten bit, wymuszając poziom "ustępujący". OGRANICZNIK POTWIERDZENIA jest drugim bitem znajdującym się w POLU POTWIERDZENIA i ustawionym jako "ustępujący". W konsekwencji tego BIT POTWIERDZENIA jest otoczony przez dwa bity "ustępujące": OGRANICZNIK KODU NADMIAROWEGO oraz OGRANICZNIK POTWIERDZENIA. KONIEC RAMKI Każda RAMKA DANYCH i ZDALNA jest zakończona sekwencją składającą się z 7 bitów "ustępujących". Wymagania czasowe ZNAMIONOWA PRĘDKOŚĆ TRANSMISJI Jest wielkością określającą liczbę bitów przesłanych rozsynchronizowania transmisji, przez idealny nadajnik. w czasie sekundy, bez ZNAMIONOWY CZAS TRWANIA BITU ZNAMIONOWY CZAS TRWANIA BITU = 1 / (ZNAMIONOWA PRĘDKOŚĆ TRANSMISJI) Wielkość tą można podzielić na cztery wyodrębnione, nie zachodzące na siebie, segmenty czasowe: SEGMENT SYNCHRONIZUJĄCY (SYNC_SEG), SEGMENT CZASU PROPAGACJI (PROP_SEG), SEGMENT 1 BUFORA FAZOWEGO (PHASE_SEG1), SEGMENT 2 BUFORA FAZOWEGO (PHASE_SEG2), t(syncseg) = SYNC_SEG t(TSEG1) = PROP_SEG + PHASE_SEG1 t(TSEG1) = PHASE_SEG2 SEGMENT SYNCHRONIZUJĄCY Używany jest do synchronizacji wszystkich węzłów w sieci CAN. SEGMENT CZASU PROPAGACJI Używany jest do kompensacji fizycznych opóźnień w sieci (podwójne opóźnienie wywołane propagacją sygnału w linii, opóźnienie komparatora wejściowego oraz opóźnienie sterownika wyjściowego). SEGMENT 1 i 2 BUFORA FAZOWEGO Bufory te są używane do kompensacji błędów synchronizacji węzła z magistralą. Segment ten może być dłuższy lub krótszy, w zależności od desynchronizacji. PUNKT PRÓBKOWANIA Jest miejscem, w którym zostaje odczytana i zinterpretowana wartość logiczna magistrali. Punkt ten jest zlokalizowany bezpośrednio za SEGMENTEM 1 BUFORA FAZOWEGO. CZAS PRZETWARZANIA INFORMACJI Jest czasem, pomiędzy początkiem segmentu a PUNKTEM PRÓBKOWANIA, zarezerwowanym do wyznaczenia poziomu następnego bitu. KWANT CZASU (tq) Jest to ustalona jednostka czasu, ściśle związana z okresem oscylatora zastosowanego w węźle. Istnieje możliwość programowego przeskalowania (ang. Baud Rate Prescaler - BRP) jej w zakresie od 1 do 32 MINIMALNEGO CZASU KWANTOWANIA. CZAS TRWANIA POSZCZEGÓLNYCH SEGMENTÓW: SYNC_SEG - długość jednego KWANTU CZASU; PROP_SEG - długość programowalna od 1 do 8 KWANTÓW CZASU; PHASE_SEG1 - długość programowalna od 1 do 8 KWANTÓW CZASU; PHASE_SEG2 - jest maksimum długości pomiędzy segmentem PHASE_SEG1 i CZASEM PRZETWARZANIA INFORMACJI; CZAS PRZETWARZANIA INFORMACJI - jest mniejszy lub równy długości dwóch KWANTÓW CZASU. Całkowita ilość KWANTÓW CZASU, podczas transmisji jednego bitu, jest programowalna w zakresie od 8 do 25. Tabela zawiera, rekomendowane przez organizację CAN in Automation, wartości podstawowych parametrów czasowych definiujących prędkość przesyłu informacji. BTR0 oraz BTR1 są rejestrami zawierającymi wartości odpowiadające preskalerowi. Warstwa fizyczna - przewody Rolę kabla przekazującego sygnały w sieci CAN mogą pełnić przewody metalowe, takie jak skrętka, włókna światłowodowe lub fale elektromagnetyczne - radiowe lub podczerwone. Kable te różnią się znacznie zarówno właściwościami użytkowymi, jak i ceną. Warto podkreślić, że w różnych segmentach tej samej sieci mogą być wykorzystywane różne rodzaje kabli. Najszerzej stosowanym rodzajem kabla jest obecnie skrętka (ang. twisted pair), która stanowi jednocześnie najtańszy środek transmisji sygnału. Duża popularność skrętki wynika z niskiej ceny, szerokiej dostępności tego typu kabla oraz dobrych doświadczeń telefonii, która masowo stosuje skrętkę zarówno do transmisji sygnałów analogowych jak i cyfrowych. Parametry transmisyjne skrętki umożliwiają przekaz sygnału z szybkością ok. 2 Mbit/s na odległości kilku kilometrów lub większą, przekraczającą 10 Mbit/s, na odcinku rzędu 100 m (sieć Ethernet). Skrętka może być stosowana jako łącze dwupunktowe lub wielopunktowe, w którym wiele węzłów jest dołączanych do tego samego kabla. W systemie CAN i w jego różnych implementacjach, wykorzystuje się czasami dwie skrętki ekranowane w jednej powłoce ochronnej. Jedna skrętka służy jako magistrala komunikacyjna, natomiast druga zapewnia zasilanie dla układów separacji galwaniczne, nadawczo-odbiorczych, itp. W większości przypadków stosuje się skrętkę o impedancji falowej 120 ohmów ą10%. Włókna światłowodowe (ang. fiber optics) są stosunkowo nowym rodzajem kabla, odznaczającym się bardzo małym tłumieniem sygnału oraz zupełną niewrażliwością na zakłócenia elektromagnetyczne. Zastosowanie światłowodu umożliwia znaczne zwiększenie rozpiętości sieci oraz uzyskanie bardzo dużych szybkości transmisji. Dodatkową zaletą światłowodu jest zapewnienie galwanicznej izolacji węzłów sieci. Ze względu na swe zalety, światłowody rozpowszechniają się szybko w systemach przemysłowych, instalowanych w środowisku o szczególnie wysokim poziomie zakłóceń. Wadą światłowodów jest dość wysoki koszt łącza, na które składa się nie tylko kabel, ale także przetworniki elektrooptyczne i pryzmatyczne rozgałęźniki sygnału. Dlatego zastosowanie światłowodów w systemie CAN jak na razie nie zyskało wielu zwolenników i brak jest konkretnych specyfikacji na ten temat. Tradycyjne sieci automatyki przemysłowej (np. w analogowej technologii 4 - 20 mA) oparte były na topologii gwiazdy. Ta topologia zwiększa w znacznym stopniu ilość stosowanego okablowania, a co za tym idzie zwiększa koszty. W systemie wykorzystującym sieć CAN, poprzez zastosowanie topologii magistrali, znacznie ograniczono ilość kabli oraz dodatkowych elementów sterowania. Układy obsługujące sieć CAN Podstawowymi elementami w urządzeniach obsługujących sieć CAN, są kontrolery oraz układy nadawczo-odbiorcze. Większość, liczących się na rynku półprzewodnikowym, firm stworzyło własne układy wspierając w ten sposób system CAN (Dodatek C). W chwili obecnej występuje wiele różnych układów, począwszy od prostych układów nadawczoodbiorczych, poprzez mikrokontrolery 8-bitowe, a skończywszy na rozbudowanych procesorach DSP. Układy obsługujące system CAN można podzielić na trzy grupy: układy nadawczo-odbiorcze (ang. trasceiver); kontrolery współpracujące z mikroprocesorem. mikroprocesory(mikrokontrolery) z zaimplementowanym standardem CAN. W zależności od potrzeb stosuje się różne sposoby sprzężenia kontrolerów (mikrokontrolerów) z magistralą CAN. Poniższy rysunek przedstawia przykładowe sposoby dołączenia układów 87CE598, 87C196CA/CB oraz SJA1000 poprzez układ nadawczoodbiorczy 82C250 do magistrali. Podsumowanie Podstawowe parametry CAN Ilość modułów Nieograniczona (teoretycznie), w praktyce zależna od parametrów (węzłów) elektrycznych nadajników/odbiorników Rodzaj przesyłanych Obiektowo-zorientowane, multimaster danych Ilość telegramów 2032 Dostęp do szyny Według priorytetu telegramu, arbitraż bitowy (CSMA/CA) Przepustowość szyny Max. 1 Mbit/s Praca w czasie Czas odpowiedzi telegramu o najwyższym priorytecie (<134 us, bez rzeczywistym błędu) Środki programowe: Bezpieczeństwo Środki do wykrywania, obsługi i ograniczenia błędów; CRC (cyclic redundancy code) Hamminga; Prawdopodobieństwo błędu 10-13 Środki sprzętowe: Możliwość przełączania pracy dwuprzewodowej na jednoprzewodową przy zerwaniu lub zwarciu jednego z przewodów; Możliwość dublowania linii; Topologia Magistrala, gwiazda; Medium transmisyjne Przewód miedziany (skrętka), światłowód Długość szyny Zależna od szybkości przesyłu danych (do 10 km); Interface szeregowy CAN CAN (ang. Controller Area Network) jest seryjną koncepcją systemu typu ,,bus", opracowaną przez firmę Bosch, dla potrzeb układów sterowania przemysłu samochodowego. Wysokie wymagania w systemach komunikacji i fakt wykorzystania go w seryjnych pojazdach (dostępność korzystnych cenowo komponentów) przemawiają za jego zastosowaniem poza obszarem samochodu, jako otwartego systemu komunikacyjnego automatyki. Zarówno specyfika jak też standaryzacja CAN-a są zorientowane na architekturę modelu ISO/OSI. Protokół CAN używa i dostosowuje się do wymagań modelu na poziomie trzech warstw tego modelu: warstwie pierwszej (w. fizycznej), warstwie drugiej (w. łącza danych) oraz warstwie siódmej (w. aplikacji). Warstwa fizyczna zapewnia komunikację na optycznych i elektrycznych różnicowych, dwuprzewodowych liniach ,,bus" dzięki wyspecjalizowanym produktom oraz wykorzystanie innych mediów w oparciu o inne komponenty. Warstwa danych wykorzystuje zespolone podzespoły CAN do transmisji danych, zgodnie ze specyfiką protokołu. Warstwa aplikacyjna jest to koncepcja swobodnego wyboru nie objęta specyfikacją CAN lecz proponująca już gotowe, standardowe oprogramowanie mechanizmów sterowania pracy. Podstawowe właściwości systemu CAN: Liczba uczestników systemu CAN jest teoretycznie nieograniczona. Wysłana informacja może zostać odebrana przez wszystkich uczestników sieci CAN i każdy uczestnik sam rozstrzyga czy ją przyjmie. Kryterium wyboru jest zawarte w identyfikatorze, który przekazywany jest w komunikacie. identyfikator ma 11 bitów w standardowej ramce. Możliwa jest również opcja z identyfikatorem 29 bitowym (w Extendet Frame). Opisana metoda rozróżniania komunikatów zapewnia elastyczność systemu ze względu na nowych uczestników i nie wymaga rozbudowanego oprogramowania i sprzętu. Format ramki danych standardu CAN : Identyfikator pola zawiera informacje o informacji i jej priorytecie dla dostępu do pamięci. Pole kontroli CRC (ang. Cyclic Redundancy Check) jest szerokie na 15 bitów i służy do rozpoznawania braków w komunikacie. Pole ACK (ang. Acknowledge) daje liczbę wszystkich przyłączonych użytkowników, którzy opatrzoną ramkę danych poprawnie odebrali (ich potwierdzenie odbioru). Nie objaśnione pola są zajęte mocnymi wartościami bitów. Typowa struktura uczestnika sieci CAN : Węzeł taki składa się z fizycznego interfejsu, protokołu kontrolera, pamięci komunikatów oraz mikrokontrolera. Mikrokontroler steruje funkcją sensora i układu wykonawczego. Mikrokontroler posiada dostęp do pamięci komunikatu, w trakcie odbioru i wysyłania komunikatów magazynuje je. Każdy uczestnik posiada dla siebie właściwą tabelę rodzaju komunikatu, który jest gotowy do wysłania (przyjmowania). Transmisją nazywamy czynność, w której mikrokontroler zapisuje zwrotny komunikat w pamięci komunikatu, z której CAN kontroler ją automatycznie wysyła. W trakcie odbioru tylko te komunikaty zostają odebrane i zapamiętane, które zostaną zaakceptowane przez wbudowany filtr. Całość tablic rodzajów komunikatów w systemie CAN może być interpretowana jako rozproszona pamięć. Na tej pamięci możemy wykonywać operacje zapisu, odczytu, wykorzystać jej zawartość w każdej chwili wychwytując czas i parametry. Dostępnych jest szereg komponentów realizujących funkcje fizycznego interfejsu, kontrolera linii i modułu kontrolnego, w postaci układów scalonych pełniących role transmiterów CAN-82C250, układów I/O82C150, mikrokontrolerów-8xC592, 8xCE598 i innych potrzebnych do tworzenia sieci CAN.