Ramka sieci CAN występuje w dwóch wariantach: CAN2.0 A oraz CAN2.0 B. Wersje różnią się od siebie długością identyfikatora – A jest 11-bitowy, natomiast B – 29-bitowy. Dzięki zwiększeniu pola identyfikatora w wersji B możemy wysłać znacznie więcej komunikatów, bo aż 229. Im niższy identyfikator ramki, tym ramka ma większy priorytet, co mogliśmy zaobserwować czytając opis algorytmu arbitrażu w pierwszej części artykułu (link).
Podczas programowania sterownika PLC wybieramy wariant CAN2.0, który chcemy zastosować: A lub B. W jednej ramce CAN przesyłanych jest maksymalnie 8 bajtów danych. Możemy wyróżnić w niej siedem podstawowych obszarów przedstawionych na rysunku nr 7. Do obserwowania ramek możemy oczywiście wykorzystać zwykły oscyloskop lub jeden z dostępnych na rynku analizatorów przeznaczonych do sieci CAN. Godnym polecenia jest urządzenie PCAN-USB w wersji z optoizolacją. Przy zakupie hardware’u oprogramowanie PCAN View dostajemy za darmo. Pozwala ono na odbieranie, wysyłanie i rejestrowanie ramek pojawiających się w sieci. Przede wszystkim jest ono bardzo przydatne podczas integracji systemów różnych producentów.
- SOF – Start of frame/ Rozpoczyna nadawaną ramkę, jego wartość jest zawsze dominująca “0”.
- Identyfikator ramki – określa identyfikator i priorytet ramki, składa się z 11 lub 29 bitów.
- RTR – Remote Transmission Request/ Znacznik ramki zdalnej – gdy węzeł A żąda dane od węzła B ustawia bit RTR na 1. Pole danych zostaje puste, a DLC określa, ile danych żąda.
- IDE – Identifier Extension/ Informuje o formacie ramki, bit dominujący „0” to CAN2.0A, ”1” to CAN2.0B.
- r0 – bit zarezerwowany
- DLC – Data Length Code/ Określa długość pola danych w bajtach, zajmuje 4 bity.
- Dane – maksymalnie do 8 bajtów
- CRC – Cyclic Redundancy Check/ Suma kontrolna – sprawdzanie poprawności ramki poprzez porównanie CRC ramki wysłanej i odebranej.
- ACK – Acknowledgement/ Potwierdzenie odbioru telegramu, 2-bitowa informacja zwrotna.
- EOF – End of frame/ Koniec ramki, 7 kolejnych bitów o wartości recesywnej.
Sieć CAN zdobyła uznanie w świecie automatyki, a na jej fundamentach powstało wiele innych protokołów. Sprawdzone rozwiązania okazały się inspiracją dla wcześniej już wspomnianej sieci budynkowej KNX. W 1994 r. Allen-Bradley(teraz Rockwell Automation) stworzył protokół warstwy aplikacyjnej DeviceNet, wykorzystujący warstwę łącza danych z CAN. Sieci nie są ze sobą wprost kompatybilne, lecz na rynku możemy spotkać wiele konwerterów umożliwiających wymianę danych pomiędzy nimi. Kolejnymi rozszerzeniami CAN są SAE J1939 oraz NMEA 2000, wykorzystywane odpowiednio w pojazdach ciężkich oraz w przemyśle okrętowym. SAE J1939 spotkamy w ciężarówkach, przyczepach i naczepach, ciągnikach, dużych pojazdach wojskowych i budowlanych. Z NMEA2000 korzystają instrumenty nawigacyjne na statkach oraz jachtach. Te dwa protokoły mogą współistnieć w jednej sieci fizycznej.
CanOpen – idealny do automatyki przemysłowej
Aby usprawnić sposób konfiguracji sieci CAN, stworzono CanOpen. Jest to protokół warstwy aplikacyjnej idealnie nadający się do automatyki przemysłowej. Bazuje na profilach urządzeń oraz zdefiniowanych dla nich obiektach komunikacyjnych (SDO i PDO). Informacje o obiektach danego urządzenia są dostarczane poprzez pliki EDS (Electronic data sheets). Wprowadzenie CanOpen bardzo uprościło oraz skróciło czas konfiguracji urządzeń (PLC, wyspy IO, napędów) oraz wymiany danych pomiędzy nimi. Więcej o CanOpen w osobnym artykule.
Sieć CAN jest bardzo uniwersalnym rozwiązaniem do wymiany danych pomiędzy urządzeniami. Możemy ją spotkać praktycznie w każdej gałęzi przemysłu, transportu oraz inteligentnych instalacjach budynkowych. Posiadając podstawową wiedzę możemy nawet zdiagnozować przyczyny problemów występujących w naszych autach. Sprzętowo realizowany arbitraż dostępu do magistrali, wysyłanie danych cyklicznie lub zdarzeniowo i odporność na zakłócenia to cechy sieci CAN, które zaważyły na tak dużej popularności tego standardu.
Dominik Broniszewski, WAGO.PL
Przeczytaj część pierwszą: