Mateusz Niedziółka V rok Koło Naukowe Techniki Cyfrowej dr inż. Wojciech Mysiński opiekun naukowy TEMPERATURE CONTROL SYSTEM BY THE CAN BUS UKŁAD REGULACJI TEMPERATURY POPRZEZ MAGISTRALĘ CAN Keywords: network, motorization, automation, bus, protocol, topology. Słowa kluczowe: sieć, motoryzacja, automatyka, magistrala, protokół, topologia. The topic of this article is about practical implementation of temperature control system by the CAN bus. It is a very popular bus also use in spheres like industrial automation, robotics. We owe its commonness to easy implementation, low costs of production and high protection against errors. 1. Controller Area Network wstęp [1] Jak wiadomo, w systemach rozproszonych ważne jest to by przesyłanie danych odbywało się jak najszybciej i jak najbardziej niezawodnie. Magistralą, która spełnia w pełni te kryteria jest właśnie CAN. Szybkość, brak awaryjności, prostota implementacji to tylko, niektóre z jej wielu zalet. Rozwój motoryzacji wymusza szybki rozwój techniki, która ma zaspokoić najwyższe wymagania ze strony przedsiębiorców oraz właścicieli zakładów samochodowych. W latach 80 firma Bosch postanowiła, wynaleźć coś co spełni oczekiwania rynku. Powstała magistrala CAN, która w swoim pierwowzorze miała być przeznaczona wyłącznie do samochodów. Dzięki tej gałęzi przemysłu zyskała ona swoją popularność. Później jednak, okazało się, że jest na nią duże zapotrzebowanie również w dziedzinie automatyki przemysłowej. 1.1. Topologia [6] Wszystkie urządzenie dołączone są do wspólnych przewodów w postaci szyny. Szyna składa się z dwóch przewodów: CAN high, CAN low. Przewody przeważnie są w postacie skrętki, jednak nie jest to wymóg, bez którego magistrala nie będzie działać. Sygnał napięciowy jest sygnałem różnicowym. Stosuje się ją przeważnie w środowiskach narażonych na dość duże zakłócenia elektromagnetyczne takie jak sale produkcyjne czy choćby samochody. Warto tutaj skupić się na istotnej cesze magistrali. Jest to magistrala typu multimaster [1] co oznacza, że każdy moduł może być jednocześnie nadajnikiem i odbiornikiem. Urządzenia nie posiadają adresów. Adresowana jest jedynie wiadomość. W zależności jak ustawione są filtry i maski danego kontrolera CAN w danym module, będzie to decydować, czy odbierze on wiadomość znajdującą się na magistrali. Jest to tzw. adresowanie zawartością. Z racji tego
rozwiązania nie ma konieczności adresowania poszczególnych węzłów, a co za tym idzie nie ma problemu z przyłączeniem dodatkowych modułów do sieci, gdyż nie ma potrzeby sprzętowej modyfikacji całej sieci. 1.2. Standard ISO11898 [6] Z biegiem czasu magistralą CAN zainteresowała się Międzynarodowa Organizacja Normalizacyjna, po to aby objąć ją normą według standardu ISO/OSI [6]. Jest to podstawa standaryzacji komunikacji danych. Warto wspomnieć, że organizacja ta w latach dziewięćdziesiątych rozpoczęła proces ustalania norm dla magistrali pojazdów. Dla magistrali CAN zostały określone jedynie 3 z 7 warstw: Warstwa fizyczna: -dwuprzewodowa skrętka -rezystory -sygnał różnicowy Warstwa łącza danych: -adresy urządzeń -sterowanie -dane -zabezpieczenia przed błędami Warstwa aplikacji: -protokół wymiany informacji 1.3. Budowa ramki danych [1] Dane wysyłane są w postaci pakietów nazywanych ramkami. Występują ich cztery rodzaje jednak przedstawię tę, która jest dla nas najistotniejsza a mianowicie ramkę danych, która składa się z 7 głównych pól. początku ramki arbitrażu kontrolne danych CRC potwierdzenia końcowe Rys. 1. Ramka danych W skrócie opiszę najważniejsze pola ramki danych: początku ramki pozwala na synchronizację pomiędzy wszystkimi węzłami. arbitrażu pole to zawiera 12 bitów. 11 bitów jest przeznaczone na identyfikator natomiast jeden bit jest to tzw. RTR. Wartość tego bitu decyduje o tym czy wysyłamy ramkę danych czy zdalną kontrolne pole to zawiera 6 bitów. Pierwszy bit IDE, musi być dominujący jeżeli chcemy przesłać ramkę standardową (recesywny jest w przypadku ramki rozszerzonej). danych zawiera to co chcemy przesłać po magistrali. CRC pole sumy kontrolnej.
2. Praktyczne zastosowanie magistrali CAN - wstęp W celu uruchomienia komunikacji poprzez magistralę CAN zaprojektowałem 3 moduły. Każdy wyposażyłem w mikro-kontroler oraz urządzenia peryferyjne. Moduł pierwszy posiada wyświetlacz ciekłokrystaliczny, na którym będzie wyświetlana temperatura aktualnie mierzona, dodatkowo będzie on posiadał możliwość ustawiania temperatury zadanej za pomocą dwóch przycisków. Te dwie wartości będzie on porównywał ze sobą i dawał sygnał na magistralę informując o tym czy temperatura aktualnie mierzona nie przekracza temperatury zadanej przez użytkownika. Moduł drugi posiada termometr [9] mierzący temperaturę otoczenia oraz potencjometr. Potencjometr służy do zadania odpowiedniej wartości współczynnika wypełnienia w metodzie modulacji szerokości impulsów. Moduł trzeci odpowiada za chłodzenie termometru z modułu drugiego. Posiada on silnik prądu stałego, który napędza wiatraczek [8]. Włącza się on jeżeli dostanie informację, że temperatura zadana przez użytkownika jest większa od temperatury aktualnie mierzonej. 2.1. Płytka uniwersalna Każdy moduł posiada w sobie zaprojektowaną przeze mnie płytkę uniwersalną. Głównymi jej elementami jest mikrokontroler Atmega32 [4] firmy Atmel, kontroler CAN MCP2515 [2] firmy Microchip oraz transceiver MCP2551 [3] również firmy Microchip. Rys. 2. Gotowa płytka pod moduł CAN W darmowej, ograniczonej wersji programu Eagle, firmy CadSoft [7] zaprojektowałem 3 identyczne płytki w celu minimalizacji kosztów zamówienia. Były one jednak tak uniwersalne, że mogłem w dużym stopniu modyfikować układ w zależności od własnych potrzeb.
2.2. Protokół wymiany informacji [2][4][5]. W mojej pracy korzystam z dobrodziejstwa firmy Microchip jakim jest kontroler MCP2515 [2]. Aby usprawnić możliwość korzystania z magistrali CAN, kontroler w sposób sprzętowy realizuje pewne zadania opierając się na warstwie łącza danych. Natomiast niezbędne jest zdefiniowanie przez użytkownika dodatkowych reguł w celu inicjalizacji wymiany danych po magistrali. Urządzenie w sposób sprzętowy realizuje zadania: kontrolę ramek arbitraż opóźnienia czasowe wykrywanie błędów filtrowanie wiadomości Użytkownik natomiast musi zdefiniować: rodzaj identyfikatora (standardowy bądź rozszerzony) wartość identyfikatora dla każdej wiadomości długość pola danych rodzaj przesyłanej ramki (czy ma być to ramka zdalna czy ramka danych) prędkość przesyłu danych wartości masek oraz filtrów zapis do konkretnych buforów nadawczych priorytet każdego z buforu nadawczego odczyt z odpowiednich buforów odbiorczych Głównym modułem, który wysyła najbardziej znaczące dane jest moduł numer 2. Wysyła on dwa rodzaje informacji: 1) temperaturę 2) wartość współczynnika wypełnienia Ramka danych, która posiada w sobie wartość współczynnika wypełnienia ma identyfikator 43 h. Natomiast ramka danych odpowiadająca za przesyłanie danych o temperaturze posiada identyfikator 2F h. Pierwsza informacja jest jedno-bajtowa dlatego uzupełniam pole DLC (z ang. Data Length Code) w ramce danych o wartość 1. Natomiast w przypadku drugiej wiadomości, która jest dwu-bajtowa wpisuję wartość 2 do pola DLC. Moduł numer 1 z wyświetlaczem oraz numer 3 z wiatraczkiem odpowiednio odbierają informację. W celu odebrania informacji trzeba odpowiednio zdefiniować filtry i maski. Natomiast pomimo, że moduł numer 1 odbiera informacje o wartości temperatury, wysyła ponadto informację o identyfikatorze CE h, od której zależy, czy wiatrak znajdujący się na module numer 3 zostanie uruchomiony.
Powyższy opis części protokołu zrealizowany przeze mnie potwierdza to iż magistrala CAN jest typu multimaster [1] dany moduł/węzeł może wysyłać i jednocześnie odbierać informację na magistrali. 3. Działanie układu. Moduł nr 2 wysyła informację o bieżącej temperaturze. Moduł nr 1 porównuje wartość temperatury zadanej przez użytkownika z wartością temperatury otrzymanej. Jeżeli temperatura mierzona nie przekracza zadanej, moduł nr 1 nie wysyła wiadomości o włączeniu wiatraczka. Rys. 3. Etap 1 wysyłanie informacji o temperaturze z modułu drugiego do modułu pierwszego. W momencie kiedy temperatura zadana zostanie przekroczona moduł nr 1 wysyła wiadomość na magistralę która włącza wiatrak. Rys. 4. Etap 2 włącznie chłodzenia. Dodatkowo można regulować obroty wiatraczka za pomocą potencjometru znajdującego się w module nr 2.
Rys. 5. Etap 3 regulacja obrotów wiatraczka Rys. 6. Widok wszystkich modułów Literatura [1] Elektronika praktyczna 4/2000 [2] Dokumentacja techniczna kontrolera CAN MCP2515 firmy Microchip dostępna na stronie http://www.microchip.com/ [3] Dokumentacja techniczna transceivera CAN MCP2551 firmy Microchip dostępna na stronie http://www.microchip.com/ [4] Dokumentacja techniczna mikrokontrolera Atmega32 firmy Atmel dostępna na stronie http://www2.atmel.com/ [5] Kurs programowania mikro-kontrolerów AVR umieszczony na stronie http://www.hobby.abxyz.bplaced.net/ [6] http://canbus.pl/ [7] http://www.cadsoftusa.com/ [8] http://www.unitedpro.com/ [9] http://www.maxim-ic.com/