1 / 32 Magistrale danych: CAN Bus i Modbus
  • Fundamenty automatyki: Systemy sterowania wymagają niezawodnej wymiany danych w trudnych warunkach.
  • CAN (Controller Area Network): Standard czasu rzeczywistego, stworzony dla motoryzacji.
  • Modbus: Najbardziej rozpowszechniony protokół przemysłowy na świecie.
  • Cel wykładu: Zrozumienie fizyki sygnałów, mechanizmów arbitrażu oraz różnic między magistralami i siecią Ethernet.
  • Porównamy determinizm z przepustowością i nauczymy się diagnozować najczęstsze błędy.
Wprowadzenie CAN i Modbus

Magistrale CAN i Modbus to dwa fundamentalne standardy komunikacyjne, które ukształtowały współczesny przemysł i motoryzację. Ich głównym zadaniem jest zapewnienie niezawodnej transmisji danych w środowisku silnie zaszumionym, gdzie standardowe rozwiązania sieciowe mogą zawodzić. CAN Bus został zaprojektowany z myślą o systemach czasu rzeczywistego, w których opóźnienie transmisji musi być przewidywalne i ograniczone.

Modbus z kolei powstał jako prosty i uniwersalny protokół łączący sterowniki PLC, czujniki i aktuatory w instalacjach przemysłowych. Oba standardy łączy odporność na zakłócenia elektromagnetyczne oraz możliwość pracy w topologii magistrali, co znacząco upraszcza okablowanie i zmniejsza koszty. Współczesne systemy często łączą oba te protokoły w ramach jednej architektury sterowania.

Zrozumienie różnic między magistralami a siecią Ethernetową jest kluczowe dla projektanta systemów wbudowanych. Podczas gdy Ethernet stawia na przepustowość, magistrale takie jak CAN i Modbus priorytetyzują determinizm i niezawodność w trudnych warunkach. Te właściwości czynią je niezbędnymi w aplikacjach, w których stawką jest bezpieczeństwo ludzi i maszyn.

2 / 32 Historia CAN: wizja firmy Bosch
  • Rok 1983: Robert Bosch GmbH rozpoczyna prace nad systemem komunikacji „wewnątrzsamochodowej".
  • Problem: Rosnąca liczba sterowników (ECU) i czujników prowadziła do powstawania ogromnych wiązek kabli (kilometry przewodów).
  • Koncepcja: Stworzenie jednej magistrali, do której każdy może się podłączyć, zamiast połączeń punkt-punkt.
  • 1986: Oficjalna prezentacja CAN na kongresie SAE w Detroit. Pierwszy chip stworzony wspólnie z Intelem (82526).
Historia Bosch CAN

Prace nad magistralą CAN rozpoczęto w firmie Bosch w odpowiedzi na konkretny problem inżynierski – lawinowo rosnącą liczbę sterowników elektronicznych w samochodach. Pod koniec lat siedemdziesiątych typowy pojazd wyższej klasy zawierał już kilkanaście jednostek ECU połączonych setkami metrów przewodów. Takie podejście nie tylko zwiększało masę pojazdu, ale także obniżało niezawodność całego układu elektrycznego.

Zespół inżynierów pod kierownictwem Uwe Kienckego opracował koncepcję magistrali szeregowej, w której wszystkie urządzenia komunikują się za pośrednictwem zaledwie dwóch przewodów. Współpraca z Intelem zaowocowała powstaniem pierwszego kontrolera CAN – układu 82526, który implementował cały protokół w sprzęcie. Prezentacja na kongresie SAE w 1986 roku wzbudziła ogromne zainteresowanie, ponieważ branża motoryzacyjna od dawna poszukiwała właśnie takiego rozwiązania.

Warto podkreślić, że CAN od początku projektowano z myślą o krytycznych dla bezpieczeństwa zastosowaniach. Mechanizmy detekcji błędów, arbitrażu i retransmisji były wbudowane w protokół od pierwszej specyfikacji i stanowią do dziś jego największą zaletę. Konkurencyjne rozwiązania, takie jak VAN (Vehicle Area Network), nie zdołały zdobyć takiej popularności ze względu na mniejszą elastyczność.

3 / 32 Przełom rynkowy: Mercedes-Benz W140
  • Rok 1991: Mercedes Klasy S (W140) staje się pierwszym samochodem seryjnym z CAN Bus.
  • Zastosowanie: Połączenie sterownika silnika, skrzyni biegów i układu klimatyzacji.
  • Skalowanie: Sukces Mercedesa sprawił, że CAN stał się standardem de facto w motoryzacji.
  • 1993: Protokół zostaje ustandaryzowany jako ISO 11898. Standard definiuje napięcia: stan recesywny (0V różnicy) i dominujący (~2V różnicy).
Mercedes W140 CAN

Model Mercedes-Benz Klasy S W140 był nie tylko flagowym sedanem swojej epoki, ale również prawdziwym poligonem doświadczalnym dla nowych technologii motoryzacyjnych. Wprowadzenie magistrali CAN w pojeździe seryjnym stanowiło ogromne wyzwanie logistyczne i inżynieryjne, ponieważ wymagało przeprojektowania całej architektury elektrycznej samochodu. Decyzja o zastosowaniu CAN zapadła po udanych testach prototypów, które wykazały znaczną redukcję masy wiązek kablowych.

Standardyzacja protokołu jako ISO 11898 w 1993 roku była bezpośrednim następstwem sukcesu wdrożenia w Mercedesie. Norma ta zdefiniowała kluczowe parametry warstwy fizycznej, w tym poziomy napięć dla stanów dominującego i recesywnego, które pozostają niezmienione do dziś. Ujednolicenie specyfikacji umożliwiło producentom półprzewodników tworzenie kompatybilnych transceiverów CAN, co drastycznie obniżyło koszty implementacji.

Rozwój CAN w latach dziewięćdziesiątych nabrał tempa również dzięki temu, że inne koncerny, takie jak BMW, Audi i Volvo, szybko podążyły śladem Mercedesa. Dziś trudno wyobrazić sobie jakikolwiek pojazd mechaniczny bez tej magistrali – od małych samochodów osobowych po ogromne maszyny budowlane i ciągniki rolnicze. CAN Bus stał się tym samym jednym z najdłużej utrzymujących się standardów w historii motoryzacji.

4 / 32 Historia Modbus: „dziadek" automatyki
  • Rok 1979: Firma Modicon (dziś Schneider Electric) projektuje protokół dla swoich sterowników PLC.
  • Założenia: Prostota implementacji, niskie wymagania sprzętowe i darmowy standard.
  • Ewolucja: Zaczynał jako protokół szeregowy (Modbus RTU), ewoluował do wersji sieciowej (Modbus TCP).
  • Dlaczego przetrwał? Ponieważ jest przewidywalny i niemal każde urządzenie na rynku go obsługuje.
Historia Modbus Modicon

Protokół Modbus narodził się w 1979 roku w firmie Modicon, która była jednym z pionierów w dziedzinie programowalnych sterowników logicznych. Jego twórca, Andy Modrovsky (stąd nazwa Modbus), postawił na maksymalną prostotę implementacji, aby każdy producent urządzeń przemysłowych mógł łatwo dodać obsługę tego protokołu. W tamtych czasach nie istniały jeszcze powszechnie przyjęte standardy komunikacji przemysłowej, a każdy producent stosował własne, zamknięte rozwiązania.

Decyzja o udostępnieniu Modbusa jako otwartego standardu okazała się genialnym posunięciem strategicznym – protokół błyskawicznie zyskał popularność i stał się de facto standardem w automatyce. W przeciwieństwie do dzisiejszych praktyk, dokumentacja Modbusa była publikowana bezpłatnie, co zachęcało kolejnych producentów do implementacji. Dzięki temu Modbus przetrwał do dziś, podczas gdy wiele komercyjnych protokołów z tamtej epoki dawno odeszło w zapomnienie.

Warto zauważyć, że Modbus wyprzedził swoją epokę pod względem koncepcji adresowania i modelu danych. Podział na cztery tabele – cewki, wejścia dyskretne, rejestry wejściowe i rejestry przechowujące – okazał się na tyle uniwersalny, że stał się wzorcem dla późniejszych protokołów. Nawet współczesne systemy automatyki budynkowej i przemysłowej wracają do tych samych sprawdzonych koncepcji.

5 / 32 CAN: fizyka sygnału różnicowego
  • Magistrala składa się z pary skręconych przewodów: CAN_High i CAN_Low.
  • Stosowana jest transmisja różnicowa – odporna na zakłócenia elektromagnetyczne (EMI).
  • Każde zakłócenie indukuje się w obu przewodach jednocześnie, a odbiornik mierzy tylko różnicę napięć między nimi.
  • Wymagana terminacja: rezystory 120 Ω na obu końcach magistrali (zapobieganie odbiciom fal).
CAN Physical Layer Differential

Transmisja różnicowa zastosowana w magistrali CAN jest kluczowym rozwiązaniem zapewniającym odporność na zakłócenia elektromagnetyczne w trudnym środowisku pracy. Sygnał użyteczny stanowi różnica potencjałów między przewodami CAN_High i CAN_Low, natomiast wszelkie zakłócenia wspólne dla obu przewodów (szumy, przesłuchy) ulegają wyeliminowaniu. Dzięki temu magistrala CAN może pracować w bezpośrednim sąsiedztwie silników elektrycznych, przetwornic napięcia i innych źródeł silnych pól magnetycznych.

Rezystory terminujące o wartości 120 omów na obu końcach magistrali pełnią niezwykle istotną funkcję – zapobiegają odbiciom sygnału, które mogłyby zniekształcić transmisję. W praktyce oznacza to, że długość magistrali oraz liczba węzłów wpływają na jakość sygnału, a nieprawidłowa terminacja jest jedną z najczęstszych przyczyn problemów z komunikacją CAN. W standardzie ISO 11898 maksymalna długość magistrali przy prędkości 1 Mb/s wynosi 40 metrów, ale przy niższych prędkościach można osiągnąć nawet kilometr.

Para skręconych przewodów (skrętka) dodatkowo redukuje zakłócenia, ponieważ zmiana kierunku skrętu przewodów powoduje, że indukowane pola magnetyczne znoszą się wzajemnie. Inżynierowie projektujący instalacje CAN muszą zwracać uwagę na jakość skrętki oraz unikać prowadzenia przewodów równolegle do kabli zasilających, co mogłoby wprowadzić dodatkowe zakłócenia. Prawidłowo zaprojektowana warstwa fizyczna to fundament działania całego systemu.

6 / 32 Napięcia na magistrali CAN
  • Stan recesywny (logic 1): CAN_H = 2.5V, CAN_L = 2.5V. Różnica = 0V.
  • Stan dominujący (logic 0): CAN_H ≈ 3.5V, CAN_L ≈ 1.5V. Różnica ≈ 2.0V.
  • Węzły realizują logiczne OR na magistrali – jeśli ktokolwiek wyśle „0", magistrala przechodzi w stan dominujący.
  • To pozwala na implementację arbitrażu bez kolizji.
CAN Voltages Dominant Recessive

System napięć na magistrali CAN został zaprojektowany w sposób umożliwiający niezawodne wykrywanie dwóch stanów logicznych przy jednoczesnej odporności na zakłócenia. W stanie recesywnym oba przewody znajdują się na potencjale 2,5 V, co oznacza brak różnicy napięć i jest interpretowane jako jedynka logiczna. Stan dominujący, odpowiadający zeru logicznemu, powstaje, gdy nadajnik ściąga przewód CAN_High do około 3,5 V, a CAN_Low do około 1,5 V.

Mechanizm ten realizuje funkcję logicznego OR na magistrali – jeśli choć jeden węzeł wygeneruje stan dominujący, cała magistrala przechodzi w ten stan. Ta właściwość ma fundamentalne znaczenie dla arbitrażu, ponieważ pozwala wielu węzłom jednoczesne nadawanie bez ryzyka zniszczenia danych. Odbiorniki CAN są zaprojektowane tak, aby detekcja stanu dominującego była możliwa nawet przy różnicy napięć wynoszącej zaledwie 0,5 V.

Należy pamiętać, że transceivery CAN mają wbudowane zabezpieczenia przed zwarciem i przekroczeniem zakresu napięć, co jest szczególnie istotne w aplikacjach motoryzacyjnych. W nowoczesnych układach stosuje się transceivery zgodne z normą ISO 11898-2, które tolerują napięcia wspólne w zakresie od -2 V do +7 V. Dzięki temu magistrala CAN jest odporna na błędy okablowania, takie jak przypadkowe zwarcie do masy lub akumulatora.

7 / 32 Mechanizm arbitrażu CAN Bus
  • CSMA/CA (Carrier Sense Multiple Access with Collision Avoidance): Dostęp wielokrotny z nasłuchem i unikaniem kolizji.
  • Kiedy dwa sterowniki zaczynają nadawać jednocześnie, porównują to, co wysłały, z tym, co widzą na linii.
  • Jeśli sterownik wysłał „1" (recesywny), ale widzi „0" (dominujący), oznacza to, że ktoś inny nadaje i ma wyższy priorytet.
  • Sterownik natychmiast przerywa nadawanie i czeka na koniec ramki zwycięzcy.
CAN Arbitration Mechanism

Arbitraż w magistrali CAN jest realizowany na poziomie bitowym i stanowi jeden z najbardziej eleganckich mechanizmów w protokołach komunikacyjnych. Gdy dwa lub więcej węzłów rozpoczyna nadawanie jednocześnie, każdy z nich wysyła bity identyfikatora ramki, jednocześnie monitorując stan magistrali. Ponieważ stan dominujący (0) nadpisuje stan recesywny (1), węzeł, który wyśle recesywny bit, ale odczyta dominujący, natychmiast traci prawo do nadawania.

Proces ten jest całkowicie bezdestrukcyjny – zwycięska ramka nie ulega żadnemu uszkodzeniu, a przegrane węzły automatycznie przechodzą w tryb odbioru. Dzięki temu CAN osiąga determinizm niedostępny dla innych protokołów: wiadomość o najwyższym priorytecie zawsze zostanie dostarczona w przewidywalnym czasie, niezależnie od obciążenia magistrali. W systemach czasu rzeczywistego jest to cecha absolutnie kluczowa.

Warto podkreślić, że arbitraż dotyczy wyłącznie identyfikatora ramki oraz bitu RTR – pola danych nie podlegają arbitrażowi, ponieważ nadaje tylko jeden węzeł. Maksymalne opóźnienie spowodowane oczekiwaniem na dostęp do magistrali jest więc sumą czasów transmisji wszystkich ramek o wyższym priorytecie plus własna ramka. Daje to projektantom systemów precyzyjne narzędzie do szacowania czasów odpowiedzi w krytycznych aplikacjach.

8 / 32 Priorytety wiadomości (identyfikator)
  • To ID ramki decyduje o jej priorytecie.
  • Im niższa wartość binarna ID, tym wyższy priorytet (ponieważ zawiera więcej zer dominujących na początku ID).
  • ID 0x000 ma najwyższy możliwy priorytet.
  • W samochodzie najwyższy priorytet mają dane z czujników silnika i hamulców, a linie „komfortowe" (np. klimatyzacja) – niższy.
CAN ID Priority

Identyfikator w ramce CAN pełni dwie role – adresuje wiadomość i określa jej priorytet. Im niższa wartość liczbowa identyfikatora, tym wyższy priorytet, co wynika bezpośrednio z mechanizmu arbitrażu bitowego. W standardzie CAN 2.0A identyfikator ma 11 bitów, co daje 2048 możliwych wartości, z czego niektóre są zarezerwowane dla funkcji specjalnych, takich jak ramki zdalne.

Projektując system CAN, inżynierowie muszą starannie przydzielić identyfikatory poszczególnym komunikatom, kierując się wymaganiami czasowymi. W samochodzie najwyższy priorytet mają ramki związane z bezpieczeństwem – sygnały z czujników ciśnienia hamulców, poduszek powietrznych i układu ESP. Niższy priorytet otrzymują komunikaty komfortu, takie jak sterowanie klimatyzacją czy elektrycznymi szybami, które tolerują większe opóźnienia.

Analiza priorytetów w systemie CAN wymaga znajomości harmonogramowania w systemach czasu rzeczywistego. Każdy identyfikator można traktować jako zadanie o określonym okresie i deadline'cie, a arbitraż bitowy gwarantuje, że najbardziej pilne zadania zawsze zostaną wykonane w terminie. Narzędzia do modelowania i symulacji magistrali CAN pozwalają zweryfikować, czy przydział identyfikatorów spełnia wszystkie wymagania czasowe.

9 / 32 Struktura ramki CAN (standard 2.0A)
  • SOF: Start of Frame (1 bit dominujący).
  • Identifier: 11 bitów adresu.
  • RTR: Request for Remote Transmission.
  • DLC: Data Length Code (ile bajtów danych wysyłamy: 0-8).
  • Data Field: Maksymalnie 8 bajtów danych.
  • CRC: Suma kontrolna zapobiegająca przekłamaniom.
  • ACK: Potwierdzenie otrzymania przez inne węzły.
CAN Frame Structure

Struktura ramki CAN 2.0A została starannie zaprojektowana, aby zapewnić niezawodną transmisję przy minimalnym narzucie. Ramka rozpoczyna się od bitu SOF (Start of Frame), który synchronizuje wszystkie odbiorniki na magistrali. Następnie przesyłany jest 11-bitowy identyfikator wraz z bitem RTR, który określa, czy ramka zawiera dane, czy jest żądaniem transmisji zdalnej.

Pole DLC (Data Length Code) informuje o liczbie bajtów danych w ramce – może wynosić od 0 do 8, co pozwala na przesłanie maksymalnie 64 bitów informacji w jednej ramce. Po danymi następuje pole CRC z 15-bitową sumą kontrolną i bitem ogranicznika, które chronią przed przekłamaniami. Pole ACK składa się z bitu potwierdzenia i bitu ogranicznika, umożliwiając adresatom sygnalizację poprawnego odbioru.

Każda ramka zakończona jest sekwencją siedmiu bitów recesywnych (EOF), która oznacza koniec transmisji. Warto dodać, że ramka CAN zawiera również mechanizm bit-stuffingu – po pięciu kolejnych bitach o tej samej wartości nadajnik wstawia bit o przeciwnej wartości, co zapobiega utracie synchronizacji. Dzięki temu odbiorniki mogą precyzyjnie odtwarzać zegar z nadchodzącego strumienia danych.

10 / 32 CAN 2.0B – rozszerzone ID
  • Wprowadzenie 29-bitowego identyfikatora zamiast 11-bitowego.
  • Pozwala na zaadresowanie znacznie większej liczby typów wiadomości (ponad 500 milionów).
  • Stosowane głównie w protokole J1939 (ciężarówki, autobusy, maszyny budowlane).
  • Standardowy i rozszerzony CAN mogą współistnieć na tej samej magistrali.
Extended CAN 2.0B

Rozszerzona wersja CAN 2.0B została wprowadzona, aby sprostać rosnącym potrzebom adresacyjnym w złożonych systemach, takich jak pojazdy ciężkie i maszyny budowlane. Główną różnicą w stosunku do standardu 2.0A jest 29-bitowy identyfikator, który pozwala na zaadresowanie ponad 536 milionów unikalnych komunikatów. Rozszerzony identyfikator składa się z bazowej 11-bitowej części i dodatkowego 18-bitowego rozszerzenia.

Co istotne, ramki standardowe i rozszerzone mogą współistnieć na jednej magistrali CAN, ponieważ mechanizm arbitrażu odpowiednio je rozróżnia. Węzeł wysyłający ramkę rozszerzoną sygnalizuje to bitem IDE (Identifier Extension), który w standardowej ramce ma wartość dominującą, a w rozszerzonej recesywną. Dzięki temu starsze urządzenia obsługujące tylko CAN 2.0A mogą działać w tej samej sieci co nowsze komponenty 2.0B.

Protokół J1939, stosowany powszechnie w autobusach, ciężarówkach i maszynach rolniczych, w pełni wykorzystuje możliwości adresacyjne CAN 2.0B. W standardzie tym każdy parametr pojazdu ma przypisany określony identyfikator PGN (Parameter Group Number), co umożliwia wymianę danych między podzespołami różnych producentów. Standaryzacja na poziomie protokołu aplikacyjnego była kluczowym krokiem w kierunku interoperacyjności w branży pojazdów użytkowych.

11 / 32 Obsługa błędów w CAN: CRC i ACK
  • Suma CRC: Odbiornik oblicza sumę i porównuje z tą wysłaną przez nadawcę.
  • Potwierdzenie ACK: Nadawca wysyła bit recesywny w polu ACK. Jeśli jakikolwiek węzeł odebrał ramkę poprawnie, „nadpisuje" ten bit stanem dominującym.
  • Jeśli nadawca nie zobaczy potwierdzenia (ACK Error), automatycznie ponawia transmisję.
  • Error Frames: Specjalne ramki wymuszające na wszystkich węzłach odrzucenie błędnych danych.
CAN Error Handling

Mechanizmy obsługi błędów w magistrali CAN należą do najbardziej zaawansowanych spośród wszystkich protokołów warstwy łącza danych. Każdy węzeł CAN wyposażony jest w dwa liczniki błędów – TEC (Transmit Error Counter) i REC (Receive Error Counter), które dynamicznie śledzą jakość transmisji. W zależności od wartości tych liczników węzeł może znajdować się w jednym z trzech stanów: Error Active, Error Passive lub Bus Off.

W stanie Error Active węzeł aktywnie uczestniczy w komunikacji i może wysyłać ramki błędów (Error Frames) składające się z sześciu bitów dominujących. Gdy licznik przekroczy próg 127, węzeł przechodzi w stan Error Passive, w którym może tylko odbierać dane i wysyłać pasywne ramki błędów. Przekroczenie progu 255 w liczniku TEC powoduje przejście w stan Bus Off, w którym węzeł całkowicie odłącza się od magistrali.

Ramki błędów są wysyłane przez każdy węzeł, który wykryje problem na magistrali, i wymuszają odrzucenie całej bieżącej ramki przez wszystkie odbiorniki. Mechanizm ten zapobiega propagacji uszkodzonych danych w systemie i pozwala na automatyczne odtwarzanie po ustąpieniu zakłóceń. W połączeniu z 15-bitową sumą CRC i potwierdzeniem ACK, CAN osiąga niezwykle niski poziom błędów resztkowych.

12 / 32 CAN FD (Flexible Data-rate)
  • Zalety klasycznego CAN (8 bajtów danych, 1 Mbps) stały się wąskim gardłem.
  • CAN FD wprowadza rewolucję: przyspiesza transmisję tylko w fazie przesyłania danych (do 8-10 Mbps).
  • Zwiększa payload z 8 do 64 bajtów w jednej ramce.
  • Zmniejsza ryzyko „zapełnienia" magistrali w nowoczesnych pojazdach elektrycznych.
CAN FD Flexible Data

CAN FD (Flexible Data-Rate) to ewolucyjny krok naprzód w stosunku do klasycznego CAN, opracowany przez firmę Bosch i zdefiniowany w normie ISO 11898-1:2015. Główną innowacją jest możliwość zwiększenia szybkości transmisji wyłącznie w fazie przesyłania danych, podczas gdy faza arbitrażu pozostaje przy tradycyjnej prędkości. Dzięki temu urządzenia CAN FD mogą współistnieć z klasycznymi węzłami CAN na tej samej magistrali.

Zwiększenie ładunku danych z 8 do 64 bajtów na ramkę znacząco poprawia efektywność protokołu w aplikacjach wymagających przesyłania dużych bloków informacji. W nowoczesnych pojazdach elektrycznych, gdzie trzeba monitorować setki parametrów baterii, silników i przetwornic, CAN FD okazuje się niezbędny. Typowe prędkości transmisji w fazie danych sięgają od 2 do 8 Mb/s, a najnowsze implementacje osiągają nawet 10 Mb/s.

W warstwie fizycznej CAN FD wykorzystuje te same transceivery i okablowanie co klasyczny CAN, co ułatwia migrację istniejących systemów. Różnice dotyczą przede wszystkim kontrolera CAN, który musi obsługiwać nowy format ramki oraz mechanizm przełączania prędkości (BRS bit). W praktyce oznacza to, że modernizacja starszej instalacji CAN do CAN FD wymaga wymiany wszystkich węzłów komunikacyjnych, co jest istotnym kosztem.

13 / 32 Warstwa wyższa: CANopen i J1939
  • Sam CAN definiuje tylko warstwy fizyczną i łącza danych (warstwy OSI 1-2, jak kable i sygnały).
  • J1939: Standard określający, co oznaczają poszczególne ID i dane w pojazdach ciężkich (np. ID 0xF004 to obroty silnika).
  • CANopen: Stosowany w automatyce przemysłowej, medycynie (MRI) i windach. Wprowadza pojęcia SDO (Service Data Objects) i PDO (Process Data Objects).
CANopen J1939 Protocols

Protokoły wyższego poziomu, takie jak CANopen i J1939, rozszerzają możliwości magistrali CAN, definiując znaczenie poszczególnych identyfikatorów i pól danych. Sam CAN dostarcza jedynie warstwy fizycznej i łącza danych, ale nie określa, jak interpretować przesyłane informacje. CANopen, opracowany przez organizację CiA (CAN in Automation), jest powszechnie stosowany w automatyce przemysłowej, medycznej i robotyce.

Sercem CANopen jest słownik obiektów (Object Dictionary), który zawiera wszystkie parametry i zmienne dostępne w danym urządzeniu. Komunikacja odbywa się za pomocą dwóch typów obiektów: SDO (Service Data Objects) do konfiguracji i PDO (Process Data Objects) do szybkiej wymiany danych procesowych. Protokół definiuje również mechanizmy synchronizacji (SYNC) i zarządzania siecią (NMT), które umożliwiają koordynację pracy wielu urządzeń.

J1939, stworzony przez Society of Automotive Engineers, dominuje w pojazdach użytkowych i ciężkim sprzęcie. Wykorzystuje 29-bitowe identyfikatory CAN 2.0B do przesyłania danych dotyczących parametrów silnika, skrzyni biegów, hamulców i innych podsystemów. Dzięki standaryzacji PGN (Parameter Group Number) urządzenia różnych producentów mogą bezproblemowo wymieniać informacje, co jest kluczowe w nowoczesnych pojazdach.

14 / 32 Modbus: model klient-serwer
  • Architektura oparta na zapytaniach: klient (master) pyta, serwer (slave) odpowiada.
  • Serwer nigdy nie inicjuje rozmowy sam z siebie (w przeciwieństwie do CAN).
  • Pozwala to na budowę stabilnych systemów, gdzie jeden sterownik zarządza setkami czujników.
  • Wspólna przestrzeń adresowa (0-65535) ułatwia integrację.
Modbus Client Server

Model komunikacji Modbus opiera się na architekturze klient-serwer, w której jedno urządzenie (klient, dawniej master) inicjuje wszystkie transmisje, a pozostałe (serwery, dawniej slave) odpowiadają na żądania. Jest to fundamentalna różnica w stosunku do CAN, gdzie każde urządzenie może rozpocząć transmisję w dowolnej chwili. Taka asymetria upraszcza projektowanie systemów sterowania, ponieważ klient ma pełną kontrolę nad przepływem danych.

W typowej konfiguracji przemysłowej klientem jest sterownik PLC lub komputer nadrzędny, a serwerami czujniki, siłowniki i inne urządzenia peryferyjne. Każde urządzenie w sieci ma unikalny adres w zakresie od 1 do 247, przy czym adres 0 jest zarezerwowany dla transmisji rozgłoszeniowych. Serwer nigdy nie inicjuje transmisji samodzielnie – odpowiada wyłącznie na żądania skierowane do niego przez klienta.

Model klient-serwer sprawdza się doskonale w systemach, gdzie jeden centralny sterownik zarządza wieloma urządzeniami wykonawczymi. Wady tego rozwiązania ujawniają się w sytuacjach, gdy kilka klientów chce komunikować się z tym samym serwerem lub gdy potrzebna jest szybka reakcja na zdarzenia. Mimo tych ograniczeń prostota i przewidywalność Modbusa sprawiają, że pozostaje on najpopularniejszym protokołem przemysłowym na świecie.

15 / 32 Modbus RTU: silna strona szeregowa
  • Dane przesyłane binarnie, najczęściej przez RS-485.
  • Stosowana suma kontrolna 16-bitowa (CRC).
  • Wydajny na długich dystansach (do 1200m) przy niskich prędkościach (np. 9600 bps).
  • Bardzo tani w implementacji w mikrosterownikach.
Modbus RTU RS485

Modbus RTU (Remote Terminal Unit) to najpopularniejsza implementacja protokołu Modbus w warstwie fizycznej, działająca najczęściej za pośrednictwem interfejsu RS-485. Format binarny, w którym dane są przesyłane jako surowe bajty, zapewnia wysoką wydajność i niski narzut komunikacyjny. Każda ramka RTU rozpoczyna się od adresu urządzenia, następnie kodu funkcji, pola danych i 16-bitowej sumy kontrolnej CRC.

Standard RS-485, na którym opiera się Modbus RTU, wykorzystuje transmisję różnicową umożliwiającą pracę na dystansach do 1200 metrów przy prędkości 9600 bodów. Maksymalna liczba urządzeń w segmencie RS-485 wynosi 32, ale można ją zwiększyć za pomocą repeaterów. W praktyce przemysłowej Modbus RTU jest często stosowany w sieciach liczników energii, stacjach pogodowych i systemach HVAC, gdzie niska prędkość transmisji jest akceptowalna.

Suma kontrolna CRC-16 jest obliczana dla całej ramki z wyłączeniem samych bajtów CRC, co zapewnia wysoki poziom ochrony przed przekłamaniami. Implementacja algorytmu CRC w mikrokontrolerach jest na tyle prosta, że nie obciąża znacząco jednostki centralnej. Dzięki temu Modbus RTU może być realizowany nawet w najtańszych 8-bitowych mikrokontrolerach, co przyczyniło się do jego masowego rozpowszechnienia.

16 / 32 Modbus TCP: integracja z Ethernetem
  • Ramka Modbus zostaje opakowana w nagłówek MBAP i wysłana przez standardową sieć IP.
  • Wykorzystuje port TCP 502.
  • Brak sumy CRC wewnątrz ramki (za błędy odpowiada warstwa TCP/IP).
  • Pozwala na dostęp do urządzeń przemysłowych przez internet (z odpowiednim zabezpieczeniem).
Modbus TCP Ethernet

Modbus TCP to adaptacja protokołu Modbus do pracy w sieciach Ethernetowych, zdefiniowana jako standard przez organizację Modbus-IDA. Ramka Modbusa zostaje opakowana w nagłówek MBAP (Modbus Application Protocol), który zawiera identyfikator transakcji, identyfikator protokołu, długość i identyfikator urządzenia. Wykorzystanie portu TCP 502 umożliwia łatwą integrację z istniejącą infrastrukturą IT.

W przeciwieństwie do Modbus RTU, wersja TCP nie zawiera własnej sumy kontrolnej CRC, ponieważ za niezawodność transmisji odpowiada stos TCP/IP. Eliminuje to narzut obliczeniowy związany z CRC, ale jednocześnie wymaga stabilnego połączenia sieciowego. W praktyce oznacza to, że Modbus TCP sprawdza się doskonale w sieciach lokalnych, jednak w sieciach rozległych może napotkać problemy z opóźnieniami i utratą pakietów.

Zastosowanie Modbus TCP umożliwia zdalny monitoring i sterowanie urządzeniami przemysłowymi przez internet, co otwiera nowe możliwości w dziedzinie Przemysłu 4.0. Należy jednak pamiętać o odpowiednim zabezpieczeniu takich połączeń za pomocą VPN, firewalli lub tuneli TLS. Coraz częściej stosuje się Modbus Secure, który dodaje szyfrowanie TLS i uwierzytelnianie do standardowego Modbus TCP.

17 / 32 Modbus ASCII: prekursor diagnostyki
  • Zamiast danych binarnych, przesyła znaki czytelne dla człowieka (np. ':0103...').
  • Mniej wydajny niż RTU (używa dwa razy więcej bajtów), ale łatwiejszy do podsłuchania zwykłym terminalem.
  • Rzadko spotykany w nowoczesnych maszynach, ale nadal obecny w starszych systemach HVAC.
  • Wykorzystuje bajty LRC do kontroli błędów.
Modbus ASCII Comparison

Modbus ASCII jest starszym wariantem protokołu, w którym dane są przesyłane w postaci znaków ASCII, co czyni je czytelnymi dla człowieka przy użyciu zwykłego terminala szeregowego. Każdy bajt danych jest reprezentowany jako dwa znaki szesnastkowe, co podwaja objętość przesyłanych informacji w porównaniu z wersją RTU. Ramka ASCII rozpoczyna się od dwukropka (:) i kończy parą znaków CR/LF.

Kontrola błędów w Modbus ASCII jest realizowana za pomocą sumy LRC (Longitudinal Redundancy Check), która jest prostsza w obliczeniu niż CRC, ale zapewnia słabszą ochronę. Pomimo mniejszej wydajności, Modbus ASCII był popularny w latach osiemdziesiątych i dziewięćdziesiątych ze względu na łatwość debugowania i implementacji w prostych terminalach. Dziś standard ten jest wypierany przez Modbus RTU i TCP, ale nadal można go spotkać w starszych instalacjach HVAC i systemach zarządzania budynkami.

Z punktu widzenia inżyniera sieci, Modbus ASCII oferuje jeszcze jedną zaletę – przerwy między znakami mogą być dłuższe niż w RTU bez ryzyka błędnej interpretacji ramki. W systemach, gdzie opóźnienia są zmienne i trudne do kontrolowania, ASCII może okazać się bardziej niezawodny niż RTU. Niemniej jednak, w nowych projektach zdecydowanie zaleca się stosowanie Modbus RTU lub TCP ze względu na wyższą wydajność.

18 / 32 Model danych Modbus: 4 tabele
  • Discrete Inputs: 1-bitowe, tylko odczyt (np. łącznik krańcowy).
  • Coils (cewki): 1-bitowe, odczyt/zapis (np. załączenie pompy).
  • Input Registers: 16-bitowe, tylko odczyt (np. poziom napięcia).
  • Holding Registers: 16-bitowe, odczyt/zapis (np. nastawa temperatury).
Modbus Data Model Registers

Model danych Modbusa dzieli przestrzeń adresową na cztery logiczne tabele, co umożliwia precyzyjne określenie typu i przeznaczenia każdego parametru. Wejścia dyskretne (Discrete Inputs) i cewki (Coils) są zmiennymi jednobitowymi, przy czym te pierwsze są tylko do odczytu, a drugie umożliwiają odczyt i zapis. Rejestry wejściowe (Input Registers) i rejestry przechowujące (Holding Registers) są zmiennymi 16-bitowymi, z podobnym rozróżnieniem praw dostępu.

W praktyce przemysłowej cewki są używane do sterowania urządzeniami binarnymi, takimi jak przekaźniki, zawory i sygnalizatory. Wejścia dyskretne reprezentują stany łączników krańcowych, przycisków i czujników zbliżeniowych. Rejestry wejściowe służą do odczytu wartości analogowych, na przykład temperatury, ciśnienia czy poziomu napięcia, podczas gdy rejestry przechowujące umożliwiają konfigurację parametrów pracy urządzenia.

Warto zwrócić uwagę, że dane 32-bitowe, takie jak liczniki energii czy precyzyjne pomiary, wymagają połączenia dwóch sąsiednich rejestrów 16-bitowych. Kolejność bajtów (little-endian lub big-endian) może się różnić w zależności od producenta, co jest częstą przyczyną problemów z integracją. Dlatego przed wdrożeniem systemu Modbus zawsze należy sprawdzić dokumentację techniczną urządzenia dotyczącą mapowania rejestrów.

19 / 32 Adresowanie: pułapka 0 vs 1
  • W dokumentacjach rejestry często zaczynają się od adresu 40001.
  • Jednak w ramce binarnej adres fizyczny to 0.
  • Błąd przesunięcia o jeden (off-by-one error) jest najczęstszym powodem nieudanych wdrożeń Modbus.
  • Zawsze sprawdzaj, czy Twój program kliencki indeksuje od 0 czy od 1.
Modbus Addressing Pitfalls

Problem adresowania w Modbus jest klasycznym przykładem pułapki, w którą wpada wielu początkujących inżynierów automatyki. Historycznie dokumentacja Modbusa posługiwała się adresacją w postaci 40001, 40002 itd., gdzie pierwsza cyfra oznacza typ rejestru (4 dla holding registers), a kolejne cyfry numer rejestru. W rzeczywistej ramce protokołu adres fizyczny jest jednak przesunięty o jeden – rejestr 40001 ma adres protokołu 0.

To przesunięcie (off-by-one error) wynika z faktu, że pierwsi producenci PLC indeksowali rejestry od 1, podczas gdy protokół Modbus indeksuje od 0. W rezultacie programista, który odczyta dokumentację mówiącą o rejestrze 40001 i wyśle zapytanie o adres 40001, otrzyma błędne dane. Prawidłowe zapytanie powinno dotyczyć adresu 0, co odpowiada rejestrowi 40001 w dokumentacji.

Aby uniknąć tego błędu, należy zawsze sprawdzać, czy biblioteka Modbusa, z której korzystamy, oczekuje adresów w notacji PLC (40001) czy protokołowej (0). Większość nowoczesnych bibliotek i narzędzi konfiguracyjnych radzi sobie z tym automatycznie, ale świadomość tego rozróżnienia jest kluczowa przy debugowaniu. Najlepszą praktyką jest zweryfikowanie adresacji na prostym przykładzie przed uruchomieniem całego systemu.

20 / 32 Kody funkcji: odczyt (01, 03, 04)
  • FC 01: Czyta bity wyjściowe (coils).
  • FC 03: Czyta rejestry konfiguracyjne (holding registers). Najczęściej używana funkcja.
  • FC 04: Czyta dane z czujników (input registers).
  • Master podaje adres startowy i liczbę elementów do pobrania.
Modbus Read Function Codes

Kody funkcji odczytu w protokole Modbus umożliwiają klientowi pobieranie danych z serwera w ustandaryzowany sposób. Funkcja FC 01 (Read Coils) służy do odczytu stanu cewek wyjściowych, natomiast FC 02 (Read Discrete Inputs) odczytuje wejścia binarne. Najczęściej używana jest funkcja FC 03 (Read Holding Registers), która pozwala na odczyt rejestrów konfiguracyjnych i danych procesowych z dowolnego urządzenia Modbus.

Funkcja FC 04 (Read Input Registers) jest przeznaczona do odczytu rejestrów wejściowych reprezentujących dane z czujników i innych źródeł tylko do odczytu. Każda ramka zapytania zawiera adres początkowy i liczbę żądanych elementów, a odpowiedź zwraca żądane wartości wraz z liczbą bajtów danych. Maksymalna liczba elementów, jakie można odczytać w jednym żądaniu, wynosi 2000 bitów dla funkcji bitowych i 125 rejestrów dla funkcji rejestrowych.

Wydajność systemu Modbus można znacznie poprawić poprzez odpowiednie dobranie liczby odczytywanych elementów w jednym żądaniu. Zbyt małe zapytania generują duży narzut komunikacyjny, podczas gdy zbyt duże mogą przekroczyć limity buforów urządzenia. Optymalnym podejściem jest odczytywanie wszystkich potrzebnych danych z danego urządzenia w jednym, możliwie dużym żądaniu, co minimalizuje ruch na magistrali.

21 / 32 Kody funkcji: zapis (05, 06, 16)
  • FC 05: Zapis pojedynczego bitu.
  • FC 06: Zapis pojedynczego rejestru 16-bitowego.
  • FC 16 (0x10): Zapis wielu rejestrów jednocześnie (rekomendowane dla oszczędności czasu).
  • Jeśli serwer ma problem, zwraca kod błędu (exception code), np. 0x02 – nieprawidłowy adres.
Modbus Write Function Codes

Kody funkcji zapisu w protokole Modbus umożliwiają klientowi modyfikację stanu urządzeń wykonawczych i parametrów konfiguracyjnych. Funkcja FC 05 (Write Single Coil) pozwala na ustawienie lub wyzerowanie pojedynczej cewki, co odpowiada na przykład załączeniu lub wyłączeniu przekaźnika. Funkcja FC 06 (Write Single Register) umożliwia zapis pojedynczej wartości 16-bitowej do rejestru przechowującego, na przykład nastawy temperatury czy progu alarmowego.

Funkcja FC 16 (Write Multiple Registers) jest zalecana do zapisu kilku rejestrów jednocześnie, ponieważ redukuje liczbę transakcji na magistrali. W jednym żądaniu można zapisać maksymalnie 125 rejestrów, co jest szczególnie przydatne podczas inicjalizacji urządzenia lub zmiany całego bloku parametrów. Jeśli serwer nie może zrealizować żądania, zwraca kod wyjątku, na przykład 02 (nieprawidłowy adres) lub 03 (nieprawidłowa wartość).

Obsługa błędów w Modbus jest stosunkowo prosta – serwer odpowiada ramką błędu z ustawionym najstarszym bitem kodu funkcji i kodem wyjątku w polu danych. Najczęściej spotykane kody wyjątku to 01 (nieobsługiwana funkcja), 02 (błędny adres) i 03 (błędna wartość danych). W systemach krytycznych warto implementować mechanizmy ponawiania transmisji z narastającym opóźnieniem, aby uniknąć przeciążenia magistrali w przypadku tymczasowych problemów.

22 / 32 Timing w Modbus RTU: cisza T3.5
  • Modbus RTU nie ma bajtu startu. Ramkę poznaje się po ciszy na magistrali.
  • Przerwa między ramkami musi trwać co najmniej czas potrzebny na przesłanie 3.5 znaku.
  • Przerwa wewnątrz ramki nie może przekroczyć 1.5 znaku.
  • Systemy Windows (ze względu na multitasking) często mają problem z precyzyjnym zachowaniem tych czasów.
Modbus RTU Timing T3.5

Zagadnienie czasów w Modbus RTU jest kluczowe dla poprawnej komunikacji, ponieważ protokół nie używa znaczników początku i końca ramki w postaci znaków specjalnych. Zamiast tego ramkę identyfikuje się po okresie ciszy na magistrali poprzedzającym transmisję i następującym po niej. Minimalny czas ciszy między ramkami (T3.5) odpowiada czasowi transmisji 3,5 znaka przy danej prędkości, co dla 9600 bodów wynosi około 3,6 milisekundy.

Maksymalny dozwolony czas przerwy wewnątrz ramki (T1.5) wynosi czas transmisji 1,5 znaka i jest krytyczny dla integralności danych. Jeśli przerwa między bajtami w trakcie nadawania ramki przekroczy tę wartość, odbiornik uzna, że transmisja została zakończona i rozpocznie interpretację odebranych danych. W systemach operacyjnych czasu rzeczywistego, takich jak RTOS, zapewnienie tych czasów nie stanowi problemu, ale w systemach z Windows może być wyzwaniem.

Problemy z zachowaniem czasów Modbus RTU występują szczególnie często w przypadku konwerterów USB-RS485 i maszyn wirtualnych. System Windows, ze względu na swój harmonogram zadań, może wstrzymać transmisję na czas przekraczający T1.5, co prowadzi do błędów ramki. Rozwiązaniem jest stosowanie dedykowanych sterowników czasu rzeczywistego, sprzętowych interfejsów PCIe lub zwiększenie buforowania na poziomie aplikacji.

23 / 32 CAN vs Ethernet: bitwa o determinizm
  • Ethernet: Skupia się na przepustowości. Pakiety wysyłane są „najszybciej jak się da".
  • CAN Bus: Skupia się na determinizmie. Wiemy dokładnie, kiedy wiadomość dotrze (gwarantowany czas odpowiedzi).
  • Ethernet przy dużym obciążeniu generuje nieprzewidywalne opóźnienia. CAN dzięki arbitrażowi bitowemu zawsze „puszcza" najważniejszą daną przodem.
CAN vs Ethernet Determinism

Porównanie CAN z Ethernetem unaocznia fundamentalny kompromis między przepustowością a determinizmem w projektowaniu sieci komunikacyjnych. Ethernet, zaprojektowany do przesyłania dużych wolumenów danych, osiąga przepustowości rzędu gigabitów na sekundę, ale nie gwarantuje czasu dostarczenia pakietu. CAN z kolei celowo ogranicza prędkość i rozmiar ramki, aby zapewnić przewidywalność transmisji, co jest niezbędne w systemach sterowania krytycznych dla bezpieczeństwa.

Determinizm CAN wynika z dwóch kluczowych cech: arbitrażu bitowego i stałego czasu transmisji ramki. Dzięki arbitrażowi wiemy, że ramka o najwyższym priorytecie zawsze zostanie nadana jako pierwsza, a maksymalny czas oczekiwania można obliczyć na podstawie czasów transmisji wszystkich ramek o wyższym priorytecie. W Ethernet klasy CSMA/CD nie ma takiej gwarancji, ponieważ po kolizji oba nadajniki czekają losowy czas przed ponowną próbą.

W zastosowaniach przemysłowych wybór między CAN a Ethernetem zależy od konkretnych wymagań aplikacji. Dla przesyłania obrazów z kamer przemysłowych Ethernet jest naturalnym wyborem ze względu na przepustowość. Dla sterowania serwonapędami w obrabiarce CNC konieczny jest CAN lub Industrial Ethernet (EtherCAT, Profinet), który łączy zalety obu technologii poprzez implementację deterministycznych mechanizmów na poziomie sprzętowym.

24 / 32 Metody dostępu do pasma
  • Ethernet (CSMA/CD): Collision Detection. Po kolizji oba urządzenia „milkną" na losowy czas. To niszczy przewidywalność.
  • CAN (CSMA/CA): Collision Avoidance. Nikt nie milknie – dane o wyższym priorytecie przepływają bez zakłóceń.
  • To dlatego hamulec w samochodzie musi być na CAN, a Netflix na Ethernet.
CSMA/CD vs CSMA/CA

Różnica między metodami dostępu do nośnika CSMA/CD (stosowaną w klasycznym Ethernecie) a CSMA/CA (stosowaną w CAN) ma fundamentalne znaczenie dla zachowania sieci w stanach przeciążenia. W CSMA/CD, gdy dwie stacje wykryją kolizję, przerywają nadawanie i oczekują przez losowy czas (backoff), po którym ponawiają próbę. Mechanizm ten niszczy przewidywalność, ponieważ czas dostępu staje się zmienną losową zależną od liczby kolizji.

CAN implementuje znacznie bardziej eleganckie rozwiązanie – CSMA/CA z arbitrażem bitowym. Zamiast dopuszczać do kolizji, CAN jej zapobiega, wykorzystując właściwości elektryczne magistrali. Ponieważ stan dominujący nadpisuje stan recesywny, transmisja o wyższym priorytecie przechodzi bez zakłóceń, a węzły o niższym priorytecie automatycznie się wycofują. Dzięki temu całkowita przepustowość magistrali jest optymalnie wykorzystywana, a najważniejsze wiadomości nie doświadczają opóźnień.

Różnicę tę najlepiej ilustruje przykład awaryjnego hamowania w samochodzie z CAN i próba przesłania strumienia wideo przez Ethernet. W CAN komunikat o wciśnięciu pedału hamulca natychmiast uzyskuje dostęp do magistrali, niezależnie od jej obciążenia. W Ethernecie ta sama ramka mogłaby czekać w kolejce za pakietami z systemu rozrywki, co w krytycznej sytuacji jest niedopuszczalne. To właśnie ten mechanizm decyduje o wyborze CAN w aplikacjach safety-critical.

25 / 32 Modbus TCP vs standardowy Ethernet
  • Modbus TCP to protokół warstwy aplikacji (layer 7). On nie zastępuje Ethernetu – on go używa.
  • Zaleta: Dowolna infrastruktura IT zadziała z Modbus TCP (switche, routery, WiFi).
  • Wada: Brak rzeczywistego determinizmu bez stosowania Industrial Ethernet (np. EtherCAT, Profinet).
Modbus TCP Layering

Modbus TCP należy rozumieć jako protokół warstwy aplikacji, który funkcjonuje na szczycie standardowego stosu TCP/IP, nie zastępując go. Ramka Modbusa jest przenoszona jako ładunek segmentu TCP, który z kolei jest enkapsulowany w pakietach IP i ramkach Ethernet. Oznacza to, że Modbus TCP może być transmitowany przez dowolną infrastrukturę sieciową obsługującą TCP/IP, w tym routery, przełączniki i sieci bezprzewodowe.

Możliwość wykorzystania gotowej infrastruktury IT jest największą zaletą Modbus TCP, ale jednocześnie źródłem potencjalnych problemów. Przełączniki Ethernet, choć szybkie, wprowadzają zmienne opóźnienia związane z buforowaniem i przetwarzaniem ramek. W aplikacjach przemysłowych wymagających determinizmu, standardowy Ethernet może być niewystarczający, co prowadzi do stosowania rozwiązań Industrial Ethernet, takich jak EtherCAT czy Profinet IRT.

W praktyce Modbus TCP znajduje zastosowanie wszędzie tam, gdzie wymagana jest integracja urządzeń przemysłowych z systemami IT, na przykład w wizualizacji SCADA, systemach MES i Internetie Rzeczy. Łatwość implementacji i powszechna dostępność bibliotek Modbus dla wszystkich języków programowania sprawiają, że jest to najczęściej wybierany protokół do komunikacji z urządzeniami polowymi. Należy jednak pamiętać o segmentacji sieci przemysłowej od biurowej za pomocą firewalli i VLAN-ów.

26 / 32 Tabela porównawcza: CAN, Modbus, Ethernet
  • Zasięg: CAN (do 1 km), Modbus RS485 (1.2 km), Ethernet (100 m / światłowód).
  • Topologia: CAN (magistrala), Modbus (magistrala), Ethernet (gwiazda).
  • Prędkość: CAN (1 Mbps), Modbus RTU (115 kbps), Ethernet (10 Gbps).
  • Payload: CAN (8B), Modbus (250B), Ethernet (1.5kB).
Comparison Table Technical

Tabela porównawcza CAN, Modbus i Ethernet uwidacznia, że każdy z tych standardów został zaprojektowany z myślą o innych priorytetach i zastosowaniach. CAN i Modbus dzielą topologię magistrali i transmisję różnicową, ale różnią się diametralnie modelem komunikacji – CAN jest zdarzeniowy i rozproszony, podczas gdy Modbus jest cykliczny i scentralizowany. Ethernet z kolei oferuje nieporównywalnie większą przepustowość kosztem utraty determinizmu, chyba że zastosuje się rozszerzenia Time-Sensitive Networking.

Zasięg poszczególnych standardów również podlega odmiennym ograniczeniom. CAN osiąga do 1 km przy niskich prędkościach, ale przy 1 Mb/s zasięg spada do 40 metrów. Modbus RTU na RS-485 utrzymuje stabilną komunikację do 1200 metrów, co czyni go idealnym do monitorowania rozległych instalacji przemysłowych. Klasyczny Ethernet ogranicza się do 100 metrów na segmencie miedzianym, ale z użyciem światłowodów można osiągnąć wiele kilometrów.

Wybór odpowiedniej technologii sieciowej dla konkretnego zastosowania wymaga przeanalizowania wielu czynników wykraczających poza suche parametry tabeli. Należy uwzględnić koszt wdrożenia, dostępność komponentów, wymagania dotyczące bezpieczeństwa oraz kompetencje zespołu utrzymującego instalację. W praktyce nowoczesne systemy łączą wszystkie trzy standardy – Ethernet jako szkielet komunikacji, CAN dla krytycznych funkcji czasu rzeczywistego i Modbus dla urządzeń polowych.

27 / 32 Przykład: diagnostyka OBD-II w samochodzie
  • Gniazdo OBD-II (pod kierownicą) to bezpośrednie wyjście magistrali CAN.
  • Diagnosta wysyła zapytanie na ID 0x7E0, a sterownik silnika odpowiada na ID 0x7E8.
  • Dzięki temu w czasie rzeczywistym widzimy ciśnienie doładowania, temperaturę czy błędy (DTC).
OBD-II CAN Diagnostics

System OBD-II (On-Board Diagnostics) to praktyczna implementacja magistrali CAN, z którą każdy kierowca i mechanik ma styczność podczas diagnostyki pojazdu. Gniazdo OBD-II, zlokalizowane zazwyczaj pod kolumną kierownicy, udostępnia magistralę CAN pojazdu za pomocą zestandaryzowanego złącza 16-pinowego. Diagnosta podłącza do niego skaner, który wysyła zapytania na standardowe identyfikatory i odbiera odpowiedzi z poszczególnych sterowników.

Protokół komunikacyjny OBD-II opiera się na zestawie parametrów PID (Parameter IDs), które są ustandaryzowane przez normę ISO 15031. Każdy PID odpowiada konkretnemu parametrowi pojazdu, takiemu jak prędkość obrotowa silnika (PID 0x0C), temperatura płynu chłodzącego (PID 0x05) czy ciśnienie doładowania (PID 0x0B). Dzięki standaryzacji PID, jeden uniwersalny skaner może diagnozować pojazdy różnych marek i modeli.

Komunikacja OBD-II wykorzystuje identyfikatory CAN 0x7E0 dla zapytań adresowanych do sterownika silnika i 0x7E8 dla odpowiedzi. W pojazdach z wieloma sterownikami stosuje się adresowanie funkcyjne, gdzie identyfikator jest modyfikowany w zależności od adresata. Protokół OBD-II definiuje również kody błędów DTC (Diagnostic Trouble Codes), które składają się z czterech znaków alfanumerycznych i umożliwiają precyzyjne zlokalizowanie usterki.

28 / 32 Przykład: elektrownia fotowoltaiczna
  • Inwertery solarne zazwyczaj udostępniają dane przez Modbus TCP.
  • Master (np. system SCADA lub smart home), co minutę pobiera rejestry: aktualna moc produkowana, napięcie paneli, stan izolacji.
  • Modbus pozwala na łatwe łączenie urządzeń od różnych producentów w jeden system monitoringu.
Solar PV Modbus Monitoring

Systemy fotowoltaiczne są doskonałym przykładem zastosowania protokołu Modbus w praktyce przemysłowej i komercyjnej. Każdy nowoczesny inwerter solarny udostępnia zestaw rejestrów Modbus, zawierających między innymi aktualną moc produkowaną, napięcie paneli, prąd, temperaturę oraz skumulowaną energię wyprodukowaną od początku pracy. Te dane mogą być odczytywane przez system nadzoru SCADA, lokalny sterownik budynku lub platformę chmurową.

Integracja wielu inwerterów różnych producentów w jeden system monitoringu jest możliwa właśnie dzięki standaryzacji Modbus. Wspólna przestrzeń adresowa i ujednolicone kody funkcji sprawiają, że główny system sterowania może komunikować się z urządzeniami różnych marek bez potrzeby implementacji dedykowanych sterowników. Producenci inwerterów często udostępniają mapę rejestrów Modbus w dokumentacji technicznej, co ułatwia integrację systemową.

Częstym scenariuszem w fotowoltaice jest zastosowanie Modbus RTU na RS-485 do lokalnej komunikacji z inwerterami i Modbus TCP do przesłania zagregowanych danych do systemu nadzoru. Taka architektura łączy zalety obu wariantów – niezawodność transmisji różnicowej na krótkich dystansach z łatwością integracji IP na dłuższych odcinkach. W nowych instalacjach coraz częściej stosuje się wyłącznie Modbus TCP z użyciem przemysłowych przełączników Ethernet.

29 / 32 Bezpieczeństwo (cyberbezpieczeństwo)
  • Problem: Zarówno klasyczny CAN, jak i Modbus powstały w czasach bez hakerów.
  • Brak szyfrowania, brak uwierzytelniania.
  • Jeśli wpięto się fizycznie w kable, można przejąć pełną kontrolę nad maszyną.
  • Współcześnie stosuje się Modbus Secure (TLS) oraz zabezpieczone bramy (gateway).
Security Vulnerabilities

Problem cyberbezpieczeństwa w magistralach CAN i Modbus wynika z faktu, że oba protokoły powstały w latach, gdy łączność sieciowa urządzeń przemysłowych nie była powszechna, a zagrożenia hakerskie praktycznie nie istniały. Zarówno CAN, jak i Modbus nie implementują żadnych mechanizmów szyfrowania ani uwierzytelniania, co oznacza, że każdy, kto uzyska fizyczny dostęp do magistrali, może odczytać wszystkie przesyłane dane i wysyłać własne ramki.

W przypadku CAN zagrożenie jest szczególnie poważne, ponieważ krytyczne dla bezpieczeństwa funkcje pojazdu, takie jak hamowanie i sterowanie silnikiem, są sterowane za pośrednictwem tej magistrali. Sławne ataki hakerskie na samochody (między innymi Jeep Cherokee w 2015 roku) polegały właśnie na włamaniu się do sieci CAN przez podatne na ataki systemy rozrywki połączone z internetem. W odpowiedzi producenci wprowadzili bramy sieciowe (gateway) izolujące magistrale krytyczne od systemów łączności z internetem.

Współczesne podejście do bezpieczeństwa Modbusa obejmuje stosowanie Modbus Secure, który dodaje szyfrowanie TLS do standardowego Modbus TCP. Dla Modbus RTU na RS-485 bezpieczeństwo musi być zapewnione na poziomie fizycznym – poprzez kontrolę dostępu do szaf sterowniczych i monitorowanie integralności połączeń. Coraz więcej urządzeń przemysłowych implementuje również uwierzytelnianie na poziomie aplikacji za pomocą haseł i certyfikatów.

30 / 32 Diagnoza błędu: analizator logiczny
  • Najlepszym narzędziem do pracy z tymi sieciami jest analizator logiczny lub oscyloskop cyfrowy.
  • Widzimy wtedy fizyczne poziomy napięć i błędy takie jak bit-stuffing error w CAN czy błędy CRC w Modbus.
  • Częstym problemem są pętle masy oraz brak uziemienia ekranu przewodu.
Logic Analyzer Diagnosis

Diagnostyka magistral CAN i Modbus wymaga odpowiedniego sprzętu pomiarowego, którego podstawą jest analizator logiczny lub oscyloskop cyfrowy. Analizator logiczny rejestruje stany logiczne na magistrali w funkcji czasu, umożliwiając dekodowanie ramek CAN i Modbus na poziomie bitów. Zaawansowane modele potrafią automatycznie rozpoznawać typ protokołu i wyświetlać odczytane dane w formie czytelnej dla człowieka.

Obserwacja sygnałów na magistrali pozwala zidentyfikować typowe usterki, takie jak brak terminacji (odbicia sygnału na końcach linii), zbyt niskie napięcie różnicowe (uszkodzony transceiver) czy błędy bit-stuffing w CAN. Szczególnie przydatne jest rejestrowanie długich sekwencji transmisji w celu wykrycia sporadycznych błędów, które mogą być spowodowane zakłóceniami elektromagnetycznymi. Profesjonalne analizatory CAN oferują również funkcję pomiaru obciążenia magistrali i czasu odpowiedzi poszczególnych węzłów.

Jedną z najczęstszych przyczyn problemów w instalacjach przemysłowych są pętle masy i nieprawidłowe uziemienie ekranów przewodów. Pętla masy powstaje, gdy urządzenia na magistrali są uziemione w różnych punktach o różnym potencjale, co powoduje przepływ prądów wyrównawczych przez ekran przewodu. Rozwiązaniem jest uziemienie ekranu w jednym punkcie, najlepiej w centralnym punkcie magistrali, oraz stosowanie izolacji galwanicznej w transceiverach.

31 / 32 Przyszłość magistral: TSN i zonal
  • Tradycyjne magistrale są wypierane przez Automotive Ethernet.
  • Wprowadzana jest architektura strefowa (ang. zonal architecture) – Ethernet jako szkielet, CAN/Modbus jako lokalne dojścia do czujników.
  • Technologia TSN (Time Sensitive Networking) pozwala Ethernetowi stać się tak deterministycznym jak CAN.
Future Zonal Architecture

Przyszłość magistral komunikacyjnych w przemyśle i motoryzacji zmierza w kierunku połączenia zalet CAN, Modbus i Ethernet w ramach jednolitej architektury sieciowej. Automotive Ethernet, rozwijany przez organizację OPEN Alliance SIG, ma szansę zastąpić tradycyjne magistrale w nowych pojazdach, oferując przepustowości rzędu 100 Mb/s i wyższe. Technologia TSN (Time Sensitive Networking) zdefiniowana w standardzie IEEE 802.1 dodaje do Ethernetu mechanizmy deterministyczne, które dorównują możliwościom CAN.

Architektura strefowa (zonal architecture) to nowe podejście do projektowania elektroniki samochodowej, w którym pojazd dzieli się na kilka stref geograficznych, każda z własnym kontrolerem strefowym. Kontrolery te są połączone szkieletem Automotive Ethernet, a do lokalnych czujników i siłowników w danej strefie komunikują się za pomocą CAN lub Modbus. Rozwiązanie to znacząco redukuje długość wiązek kablowych i upraszcza proces produkcji.

Migracja z tradycyjnych magistral do architektury strefowej będzie procesem stopniowym, trwającym wiele lat. Istniejąca baza pojazdów i maszyn z CAN oraz Modbus będzie wymagała wsparcia przez kolejne dekady, co oznacza, że wiedza o tych protokołach pozostanie cenna. Inżynierowie sieci muszą być przygotowani na pracę w środowisku hybrydowym, łączącym starsze technologie z nowoczesnymi rozwiązaniami Ethernetowymi.

32 / 32 Podsumowanie modułu 2
  • CAN Bus: Król czasu rzeczywistego i bezpieczeństwa. Najważniejszy w pojazdach i systemach krytycznych.
  • Modbus: Król kompatybilności. Niezbędny w przemyśle i budynkach.
  • Ewolucja dąży do łączenia tych światów poprzez sieć IP i Industrial Ethernet.
  • Zawsze pamiętaj o terminacji i poprawnym uziemieniu!
Summary and Conclusion

Podsumowując moduł drugi, magistrale CAN i Modbus stanowią fundament współczesnej komunikacji w motoryzacji i automatyce przemysłowej. CAN Bus, ze swoim eleganckim mechanizmem arbitrażu bitowego i solidną obsługą błędów, pozostaje niezastąpiony w systemach wymagających determinizmu i wysokiej niezawodności. Modbus z kolei, dzięki swojej prostocie i otwartości, jest najchętniej wybieranym protokołem do łączenia urządzeń różnych producentów w jednolity system sterowania.

Kluczowe wnioski z tego modułu obejmują zrozumienie różnic między transmisją różnicową a symetryczną, znajomość mechanizmów arbitrażu i priorytetyzacji w CAN oraz umiejętność konfiguracji podstawowych parametrów Modbusa. Inżynier sieci transportu danych powinien również zdawać sobie sprawę z ograniczeń obu protokołów, szczególnie w zakresie bezpieczeństwa i przepustowości. Praktyczna umiejętność diagnozowania problemów za pomocą analizatora logicznego jest nieoceniona w codziennej pracy.

W kolejnych modułach poznamy kolejne standardy komunikacyjne, w tym DVB-T, GPS, ZigBee oraz sieci komórkowe. Każdy z tych standardów wnosi nowe wyzwania i możliwości, ale wiedza zdobyta w tym module – dotycząca transmisji różnicowej, adresacji i obsługi błędów – będzie stanowić solidną podstawę do dalszej nauki. Zachęcam do samodzielnych eksperymentów z tanimi modułami CAN i interfejsami USB-Modbus, które pozwolą ugruntować zdobytą wiedzę w praktyce.