Interfejs komunikacyjny CAN: podstawy

Aby węzły mogły się ze sobą komunikować w sieci CAN, każdy z nich musi mieć ustawioną taką samą prędkość transmisji. Jednakowa prędkość transmisji pozwala wszystkim węzłom próbkować sygnał na magistrali w tym samym momencie czasu, a w rezultacie zagwarantuje poprawne odczytywanie przesyłanych wiadomości.

Punktem wyjściowym do skonfigurowania prędkości transmisji węzła jest ustawienie parametru o nazwie Nominal Bit Rate (rysunek 5). Jest to czas potrzebny na wysłanie jednego bitu danych na magistralę. Nominal Bit Rate składa się z czterech segmentów: Synchronization Segment, Propagation Delay Segment, Phase Buffer Segment 1 oraz Phase Buffer Segment 2. Każdy z nich jest podzielony na jednostki o nazwie Time Quanta. Jest to interwał czasu pomiędzy kolejnymi cyklami zegara taktującego. Odczytu stanu magistrali węzeł sieci dokonuje w chwili określonej przez punkt Sample Point.

Rys. 5. Na czas wysłania bitu na magistralę Nominal Bit Time składają się cztery segmenty podzielone na jednostki Time Quanta [2]

Rys. 5. Na czas wysłania bitu na magistralę Nominal Bit Time składają się cztery segmenty podzielone na jednostki Time Quanta [2]

 

Kodowanie informacji

W interfejsie CAN informacja kodowana jest przy użyciu metody NRZ (Non-Return to Zero). Jest to bardzo intuicyjny sposób prezentacji danych binarnych. Jedynce logicznej odpowiada wysoki stan logiczny, a zeru logicznemu przypisany jest niski stan logiczny (rysunek 6).

Rys. 6. NRZ – sposób kodowania informacji stosowany w CAN [2]

Rys. 6. NRZ – sposób kodowania informacji stosowany w CAN [2]

 

W przypadku wystąpienia w ramce kilku kolejnych bitów o tej samej wartości, poziom sygnału pozostaje bez zmian. Im większa liczba takich bitów, tym trudniejsze jest dla węzłów odbiorczych ich poprawne zinterpretowanie. Aby uniknąć pomyłki i zsynchronizować sygnał zegarowy węzłów sieci, w przypadku wystąpienia pięciu kolejnych bitów o te samej wartości węzeł nadawczy wstawia po nich bit o wartości przeciwnej. Mechanizm ten nazywany jest Bit Stuffing (rysunek 7).

Rys. 7. Mechanizm Bit Stuffing [2]

Rys. 7. Mechanizm Bit Stuffing [2]

 

Stany sygnału na magistrali

Informacje są przesyłane przez magistralę CAN metodą różnicową. Oznacza to, że stany sygnału na magistrali CAN określane są przy pomocy różnicy napięcia między liniami CAN High oraz CAN Low. Magistrala może przyjąć dwa stany: recesywny i dominujący. Stan recesywny wystąpi, gdy napięcie na obu liniach magistrali CAN będzie równe i wyniesie 2,5 V, a więc różnica napięć będzie równa 0 V. Stan dominujący wystąpi, gdy napięcie na linii CAN High wyniesie 3,5 V, natomiast na linii CAN Low 1,5 V, a więc różnica napięć będzie równa 2 V. Każde z wymienionych wartości napięcia ma określoną tolerancję błędu (tabela 1).

Tab. 1. Akceptowalne poziomy napięć linii magistrali CAN

Sygnał Stan recesywny Stan dominujący
CAN High 2–3 V 2,75–4,5 V
CAN Low 2–3 V 0,5–2,25 V

 

Na magistrali CAN zero logiczne reprezentowane jest przez stan dominujący, natomiast jedynka logiczna reprezentowana jest przez stan recesywny (rysunek 8).

 

Rys. 8. Relacje między logicznymi wartościami CAN a stanami magistrali CAN [3]

Rys. 8. Relacje między logicznymi wartościami CAN a stanami magistrali CAN [3]

 

Warstwa łącza danych w CAN

Ramki CAN

Wiadomości wysyłane w sieci CAN nazywane są ramkami komunikacyjnymi. W warstwie łącza danych określono cztery rodzaje ramek komunikacyjnych CAN. Są to:

  • data frame – ramka służąca do przesyłania danych,
  • remote frame – ramka zdalnego wywołania (wysyłana do węzła w celu odesłania przez niego odpowiedzi z danymi),
  • error frame – ramka sygnalizacji błędu,
  • overload frame – ramka przepełnienia.

Specyfikacja CAN wyróżnia dwa rodzaje ramek do wysyłania danych: standardową  (wersja CAN 2.0A) oraz rozszerzoną (CAN 2.0B). Te dwa warianty głównie różnią się długością identyfikatora (adresu). Standard CAN 2.0A cechuje się adresem ramki o długości 11 bitów (rysunek 9), natomiast w standardzie CAN 2.0B adres zawiera 29 bitów (rysunek 10). Pola ramek CAN:

  • SOF (Start Of Frame) – początek ramki,
  • RTR (Remote Transmission Request Bit) – rodzaj ramki,
  • IDE (Identifier Extension) – format ramki danych (podstawowy lub rozszerzony),
  • r0 – zarezerwowany bit,
  • DLC (Data Length Code) – liczba wykorzystywanych bajtów danych,
  • CRC (Cyclic Redundancy Check) – suma kontrolna,
  • ACK (Acknowledgement) – potwierdzenie wysłania/odebrania danych,
  • EOF (End of Frame) – zakończenie ramki,
  • IFS (Intermission) – przerwa przed następną ramką.

Rys. 9. Struktura ramki danych (format ramki standardowej – CAN 2.0A)

Rys. 9. Struktura ramki danych (format ramki standardowej – CAN 2.0A)

Rys. 10. Struktura ramki danych (format ramki rozszerzonej – CAN 2.0B)

Rys. 10. Struktura ramki danych (format ramki rozszerzonej – CAN 2.0B)

 

O autorze