Gdy kilka sterowników musi wymieniać dane bez centralnego komputera, najczęściej liczy się nie efektowność rozwiązania, lecz odporność na zakłócenia i przewidywalne opóźnienia. Magistrala CAN właśnie dlatego trafiła do samochodów, maszyn, robotów i systemów automatyki. Poniżej wyjaśniam, jak działa, jak ją poprawnie okablować, czym różnią się CAN, CAN FD i CANopen oraz jakie błędy najczęściej blokują komunikację.
Najważniejsze informacje o komunikacji CAN
- CAN to różnicowa, szeregowa sieć wielowęzłowa bez konieczności stosowania centralnego mastera.
- O dostępie do przewodów decyduje arbitraż bitowy, a niższy identyfikator wiadomości ma wyższy priorytet.
- Klasyczny CAN przesyła do 8 bajtów danych w jednej ramce, a CAN FD do 64 bajtów.
- Typowa sieć wymaga dwóch rezystorów 120 Ω, po jednym na każdym fizycznym końcu przewodu.
- Prędkość do 1 Mbit/s jest osiągalna w klasycznym CAN, ale im większa szybkość, tym krótszy powinien być przewód.
Czym jest CAN i dlaczego tak dobrze sprawdza się w automatyce
CAN, czyli Controller Area Network, jest protokołem zaprojektowanym do komunikacji między sterownikami działającymi w jednym systemie. Każdy moduł może zarówno wysyłać, jak i odbierać wiadomości, dlatego sieć nie potrzebuje urządzenia, które nieustannie przydziela dostęp do medium. To upraszcza układ i ogranicza liczbę przewodów.
W praktyce zamiast osobnych połączeń punkt-punkt stosuje się jedną wspólną linię. Do niej dołączone są węzły, na przykład sterownik silnika, czujnik temperatury, moduł wejść i panel operatorski. Jedna wiadomość może zostać odebrana przez wiele urządzeń jednocześnie, a każdy odbiornik sam decyduje, czy interesuje go dany identyfikator.
Warstwa fizyczna korzysta zwykle z dwóch przewodów oznaczanych jako CAN_H i CAN_L. Sygnał jest różnicowy, czyli odbiornik analizuje różnicę napięć między liniami, a nie tylko napięcie jednej żyły względem masy. Dzięki temu zakłócenia indukujące się podobnie w obu przewodach są w dużej mierze odrzucane.
Protokół a urządzenia fizyczne
Sam mikrokontroler nie zawsze może być bezpośrednio podłączony do przewodu. Potrzebuje kontrolera CAN, który tworzy i sprawdza ramki, oraz transceivera, czyli układu zamieniającego poziomy logiczne na sygnał różnicowy. W wielu mikrokontrolerach kontroler jest już wbudowany, ale zewnętrzny transceiver nadal pozostaje konieczny.
Do komunikacji urządzeń nie wystarcza też sama zgodność elektryczna. Trzeba ustalić szybkość transmisji, format identyfikatorów, znaczenie poszczególnych bitów oraz sposób kodowania danych. CAN definiuje transport ramek, natomiast protokoły wyższej warstwy, takie jak CANopen, J1939 czy UDS, porządkują sposób wykorzystania tych ramek.
Jak przebiega wymiana danych na magistrali
W CAN nie wysyła się danych do konkretnego adresu urządzenia w sposób znany z klasycznych sieci komputerowych. Ramka ma identyfikator opisujący znaczenie wiadomości, na przykład prędkość silnika, temperaturę baterii albo stan hamulca. Moduły nasłuchują sieci i przyjmują tylko te komunikaty, które odpowiadają ich filtrom.
Jeżeli kilka urządzeń zacznie nadawać jednocześnie, nie dochodzi do przypadkowego zniszczenia danych. CAN wykorzystuje arbitraż bitowy. Bit dominujący ma pierwszeństwo przed recesywnym, dlatego przy standardowych identyfikatorach wiadomość z niższym numerem ID wygrywa dostęp do przewodu, a pozostałe węzły wycofują się bez utraty całej ramki.
To rozwiązanie jest bardzo praktyczne dla systemów czasu rzeczywistego. Komunikat awaryjny może otrzymać wyższy priorytet niż cykliczny odczyt temperatury. Trzeba jednak rozsądnie projektować identyfikatory, bo źle ustawione priorytety mogą doprowadzić do długiego oczekiwania wiadomości o niskim priorytecie.
Co znajduje się w ramce
Klasyczna ramka CAN zawiera między innymi identyfikator, pole sterujące, dane, sumę kontrolną CRC, bit potwierdzenia oraz pola końcowe. W standardowym formacie identyfikator ma 11 bitów, a w rozszerzonym 29 bitów. Dłuższy identyfikator daje więcej możliwości organizacji komunikacji, ale zwiększa narzut i czas transmisji.
| Rodzaj ramki | Zastosowanie | Najważniejsza cecha |
|---|---|---|
| Data frame | Przesyłanie danych | Zawiera identyfikator i pole danych |
| Remote frame | Żądanie wysłania danych | Występuje głównie w starszych rozwiązaniach |
| Error frame | Sygnalizowanie błędu | Może wymusić ponowienie transmisji |
| Overload frame | Opóźnienie kolejnej ramki | Informuje o chwilowej niedostępności odbiornika |
Kontrolery CAN stale sprawdzają poprawność komunikacji. Wykrywają między innymi błędy bitowe, błędy CRC, błędy formatu i brak potwierdzenia. Urządzenie, które generuje zbyt wiele błędów, przechodzi przez stany error active, error passive i bus off. Ten ostatni odłącza węzeł od transmisji, aby uszkodzony moduł nie zakłócał całej sieci.
Okablowanie, topologia i rezystory terminujące

Najbezpieczniejsza topologia CAN przypomina linię z urządzeniami dołączonymi krótkimi odgałęzieniami. Nie warto budować rozległej gwiazdy, ponieważ każde długie odgałęzienie powoduje odbicia sygnału. Przy małej prędkości sieć może mimo tego działać, ale problemy zwykle pojawiają się dopiero po zwiększeniu obciążenia lub włączeniu kolejnych węzłów.
Na obu końcach głównego przewodu montuje się rezystor 120 Ω między CAN_H i CAN_L. Rezystory dopasowują impedancję przewodu i ograniczają odbicia. Nie należy montować terminacji przy każdym urządzeniu, ponieważ zbyt mała rezystancja całkowita nadmiernie obciąży nadajniki.
Przy wyłączonym zasilaniu pomiar między CAN_H i CAN_L powinien zwykle pokazać około 60 Ω. Wynika to z równoległego połączenia dwóch rezystorów 120 Ω. Odczyt około 120 Ω może oznaczać brak jednej terminacji, a wartość wyraźnie niższa od 60 Ω często wskazuje na trzeci rezystor albo terminację w kilku modułach.
Przewody i masa odniesienia
Do klasycznego CAN stosuje się skręconą parę przewodów o impedancji dopasowanej do użytych transceiverów. Ekranowanie może pomóc w środowisku przemysłowym, ale nie naprawi złej topologii ani braku terminacji. W wielu instalacjach dobrze jest doprowadzić również masę odniesienia, nawet gdy poszczególne urządzenia mają izolację galwaniczną.
Odgałęzienia powinny być możliwie krótkie, szczególnie przy 500 kbit/s i 1 Mbit/s. W praktyce problemy często powoduje nie sama długość głównego kabla, ale kilka długich przewodów doprowadzonych do urządzeń w układzie gwiazdy.
Prędkość transmisji a długość przewodu
W klasycznym CAN najczęściej spotyka się szybkości od 125 kbit/s do 1 Mbit/s. Nie można jednak traktować maksymalnej prędkości jako celu samego w sobie. Im szybsza transmisja, tym mniej czasu pozostaje na propagację sygnału i tym większe znaczenie mają długość przewodów, odgałęzienia, opóźnienia transceiverów oraz jakość terminacji.
| Prędkość nominalna | Orientacyjna długość całej linii | Typowe zastosowanie |
|---|---|---|
| 1 Mbit/s | około 25 m | Szybkie układy sterowania i krótkie wiązki |
| 500 kbit/s | około 100 m | Automatyka maszyn i wiele instalacji pojazdowych |
| 250 kbit/s | około 250 m | Większe maszyny i instalacje rozproszone |
| 125 kbit/s | około 500 m | Dłuższe odcinki z umiarkowanym ruchem danych |
| 50 kbit/s | do około 1000 m | Rozległe sieci o niewielkim obciążeniu |
Są to wartości orientacyjne, a nie gwarancja działania w każdej instalacji. Przed wyborem szybkości obliczam obciążenie sieci, długość najdłuższego odgałęzienia i czas potrzebny na przesłanie najważniejszych ramek. Stabilne 250 kbit/s często daje lepszy efekt niż źle zaprojektowane 1 Mbit/s.
Klasyczny CAN i CAN FD
Klasyczny CAN pozwala przesłać maksymalnie 8 bajtów danych w jednej ramce. CAN FD zwiększa pole danych do 64 bajtów i może stosować inną, wyższą szybkość w fazie danych. Dzięki temu zmniejsza się liczba ramek potrzebnych do przesłania większego pakietu.
CAN FD nie jest jednak automatycznie zgodny z każdym starszym urządzeniem. Wspólna sieć wymaga sprawdzenia kontrolerów, transceiverów, konfiguracji bit timing oraz dopuszczalnej szybkości. Jeżeli jeden węzeł obsługuje wyłącznie klasyczny CAN, nie powinien otrzymywać ramek CAN FD.
Gdzie stosuje się CAN i kiedy wybrać inne rozwiązanie
CAN dobrze sprawdza się tam, gdzie wiele sterowników musi wymieniać krótkie komunikaty w sposób odporny na zakłócenia. Spotyka się go w samochodach, maszynach rolniczych, robotach mobilnych, napędach, ładowarkach, systemach baterii i urządzeniach automatyki.
W robotyce szczególnie przydatne jest to, że moduły silników, enkoderów i czujników mogą pracować jako niezależne węzły. Awaria jednego urządzenia nie musi blokować całej logiki sterowania, a priorytety komunikatów można dopasować do wymagań ruchu.
| Interfejs | Największa zaleta | Ograniczenie |
|---|---|---|
| CAN | Arbitraż, diagnostyka błędów i odporność na zakłócenia | Małe ramki i ograniczona przepustowość |
| RS-485 | Prosta warstwa fizyczna i duża elastyczność protokołu | Sam interfejs nie definiuje arbitrażu ani formatu wiadomości |
| Ethernet przemysłowy | Duża przepustowość i łatwa obsługa większych danych | Wyższa złożoność i inne wymagania czasowe |
| UART punkt-punkt | Niska cena i prostota połączenia | Brak wspólnego medium dla wielu urządzeń |
Nie wybieram CAN do przesyłania obrazów, dużych logów ani danych wymagających szerokiego pasma. Jego mocną stroną nie jest szybkość porównywalna z Ethernetem, lecz przewidywalna komunikacja krótkich, ważnych informacji.
Uruchomienie sieci CAN krok po kroku
Najpierw ustalam wspólną konfigurację wszystkich węzłów. Muszą zgadzać się co najmniej szybkość nominalna, format ramek oraz parametry czasowe kontrolera. Różny bit timing może sprawić, że urządzenia elektrycznie widzą sygnał, ale odrzucają każdą wiadomość jako błędną.
- Sprawdź oznaczenia CAN_H i CAN_L oraz ciągłość przewodów.
- Wyłącz zasilanie i zmierz rezystancję między liniami.
- Potwierdź obecność dokładnie dwóch terminacji na końcach sieci.
- Ustaw identyczną szybkość transmisji we wszystkich urządzeniach.
- Podłącz najpierw dwa węzły i sprawdź pojedynczą ramkę testową.
- Dodawaj kolejne urządzenia, obserwując liczniki błędów i obciążenie sieci.
Do diagnostyki przydaje się interfejs USB-CAN z programem monitorującym, analizator stanów logicznych albo oscyloskop. Sam fakt, że aplikacja nie zgłasza wiadomości, nie mówi jeszcze, czy problem dotyczy przewodów, filtrów identyfikatorów, złej prędkości czy braku potwierdzenia.
Przeczytaj również: Piny USB-C - Jak to działa? Pełny przewodnik i diagnostyka
Najczęstsze przyczyny braku komunikacji
- Zamienione CAN_H i CAN_L, szczególnie przy ręcznie wykonanych złączach.
- Brak jednego rezystora terminującego albo trzy aktywne terminacje.
- Topologia gwiazdy i zbyt długie odgałęzienia.
- Różne szybkości transmisji lub niezgodne ustawienia CAN FD.
- Brak wspólnego odniesienia potencjału przy dużej różnicy mas.
- Filtr odbiorczy odrzucający poprawne ramki.
- Przeciążenie sieci dużą liczbą ramek cyklicznych.
Jeśli węzeł przechodzi w stan bus off, nie zaczynam od wymiany kontrolera. Najpierw sprawdzam terminację, poziomy sygnału, zwarcia do masy i zasilanie transceivera. W większości pierwszych uruchomień problem leży w warstwie fizycznej albo konfiguracji, nie w samym protokole aplikacyjnym.
Jak zaprojektować sieć, która nie zacznie sprawiać problemów po rozbudowie
Dobrze działający prototyp może nie być jeszcze dobrą instalacją. Przed dodaniem kolejnych modułów warto policzyć przewidywane obciążenie, ustalić właścicieli identyfikatorów i opisać częstotliwość nadawania każdej wiadomości. Dotyczy to zwłaszcza systemów, w których wiele urządzeń wysyła dane cyklicznie.
Największą różnicę robią proste decyzje: liniowa topologia, krótkie odgałęzienia, tylko dwie terminacje, wspólna szybkość i sensownie ustawione priorytety. Gdy te warunki są spełnione, CAN pozostaje niedrogim i odpornym interfejsem, który dobrze znosi trudne środowisko elektryczne.
Jeśli system ma przesyłać większe porcje danych, rozważam CAN FD albo Ethernet, ale nie traktuję ich jako automatycznego zamiennika. Dla sterowania napędem, diagnostyki i wymiany krótkich komunikatów klasyczny CAN nadal jest często prostszym i bardziej przewidywalnym wyborem.