Politechnika Śląska Wydział Automatyki, Elektroniki i Informatyki Instytut Informatyki INTELIGENTNY CZUJNIK W STRUKTURZE SIECI ROZLEGŁEJ Praca dyplomowa magisterska Promotor: dr inż. Henryk Małysiak Autor: Tadeusz Pietraszek Gliwice, czerwiec 2002
T.Pietraszek Inteligentny czujnik w strukturze sieci rozległej 2 1. Spis treści 1. Spis treści...2 2. Wstęp...4 3. Analiza problematyki pomiarów stężenia gazów w obiektach...5 3.1. Informacje ogólne...5 3.2. Informacje o czujnikach gazu...6 4. Koncepcja realizacji rozproszonego systemu pomiarowego...8 4.1. Czujniki...8 4.2. Centralki...9 4.3. Komunikacja lokalna...9 4.4. Zastosowanie sieci opartej na protokole TCP/IP...9 4.5. Baza danych...9 4.6. Konsola operatora...10 4.7. Zdalny dostęp do funkcji systemu...10 5. Mikroprocesorowy czujnik gazu z sensorem półprzewodnikowym SnO 2...11 5.1. Informacje o detektorach SnO 2 i przetwarzanie sygnałów analogowych...11 5.1.1. Sterowanie grzałką...12 5.1.2. Ekstrakcja...12 5.1.3. Prenormalizacja...12 5.1.4. Kompensacja środowiskowa i normalizacja...13 5.1.5. Testowanie poprawności działania sensora i sterowanie wyjść...13 5.2. Projekt oprogramowania czujnika...13 5.2.1. Schemat blokowy czujnika...14 5.2.2. Funkcje czujnika...15 5.3. Kalibracja sensora...16 5.3.1. Mapa pamięci EEPROM sensora...16 5.3.2. Zasady obsługi tablic dynamicznych...20 5.4. Protokół komunikacyjny...20 5.4.1. Protokół Modbus...21 5.4.2. Mapa pamięci MODBUS...25 5.4.3. Warstwa fizyczna protokołu komunikacyjnego...28 5.4.4. Propozycja wykorzystania transmisji bezprzewodowej...29 5.5. Normy europejskie...31 5.6. Wdrożenie projektu czujnika do produkcji...32 6. Zastosowanie sterownika TINI do obsługi mikroprocesorowych czujników z interfejsem Modbus...33 6.1. Opis sterownika TINI...33 6.1.1. Budowa modułu DSTINI1...34 6.1.2. Maszyna wirtualna Javy...34 6.1.3. Możliwości i ograniczenia języka Java...36 6.1.4. Możliwości i ograniczenia sterownika TINI...37 6.2. Funkcje realizowane przez centralę TINI...38 6.2.1. Odczyt czujników z magistrali Modbus...38 6.2.2. Sterowanie lokalne moduły DO8...39 6.2.3. Podłączenie do sieci Internet...42
T.Pietraszek Inteligentny czujnik w strukturze sieci rozległej 3 6.2.4. Generowanie stron WWW...42 6.2.5. Zdalna konfiguracja czujników i centralki...45 6.2.6. Zapisywanie wyników pomiarów do bazy danych...47 6.3. Implementacja...48 6.4. Bezpieczeństwo serwera TINI...53 6.5. Wydajność serwera TINI...53 7. Program do zarządzania i konfiguracji inteligentnymi czujnikami...54 7.1. Środowisko Java Swing możliwości i ograniczenia...55 7.2. Projekt programu SmartSet...57 7.2.1. Sposoby dostępu do czujników...57 7.2.2. Obsługa różnych urządzeń i wersji programów...58 7.2.3. Serializacja...58 7.3. Implementacja...59 7.3.1. Wnioski...66 8. Wykorzystanie bazy danych do gromadzenia danych pomiarowych...67 8.1. Architektura systemu i wybór środowiska...68 8.1.1. Architektura systemu...69 8.2. Projekt bazy danych...70 8.3. Implementacja...72 8.4. Wnioski...74 9. Uruchamianie i testowanie...75 9.1. Program obsługi czujnika Smart...75 9.2. Program obsługi centralki...76 9.3. Program SmartSet...76 9.4. Program obsługi bazy danych...77 10. Wnioski...78 11. Wykaz wykorzystanych programów i środowisk uruchomieniowych oraz sprzętu...79 12. Wykaz literatury...81
T.Pietraszek Inteligentny czujnik w strukturze sieci rozległej 4 2. Wstęp W pracy dyplomowej przedstawiony został projekt systemu inteligentnych czujników, z możliwością podłączenia do sieci Internet. Projekt obejmuje oprogramowanie inteligentnego czujnika mikroprocesorowego, oprogramowanie centralki opartej na komputerze TINI, umożliwiającej podłączenie systemu do sieci Ethernet z wykorzystaniem protokołu TCP/IP oraz oprogramowania dla komputera PC. Komputer PC podłączony przez sieć Ethernet umożliwia gromadzenie i wizualizację wyników, a także zdalną i lokalną diagnostykę i konfigurację sensorów. System w założeniach ma budowę modularną, umożliwiającą rozbudowanie go o kolejne elementy a także wymianę istniejących elementów na inne. Dzięki wykorzystaniu standardowych protokołów komunikacyjnych poszczególne elementy mogą być również użyte w innych, już istniejących systemach Duża część oprogramowania wchodzącego w skład systemu została napisana w języku Java. Dotyczy to zarówno programów uruchamianych na komputerach PC, jak i centralki w systemie mikroprocesorowym. Podejście to umożliwiło prostą integrację z sieciami TCP/IP, protokołami internetowymi, XML i XML-RPC, jednak kosztem mniejszej szybkości działania. Można przypuszczać, że ze względu na znaczny wzrost mocy obliczeniowej komputerów oraz równie szybki wzrost złożoności oprogramowania i związaną z nim koniecznością standaryzacji i programowania komponentowego, opisywane technologie będą zyskiwały coraz większą popularność, także w środowiskach układów mikroprocesorowych. Założenia opisywanego systemu zostały opublikowane przez autora w Zeszytach Naukowych Politechniki Śląskiej [7] oraz przedstawione na IX Konferencji Sieci Komputerowe (11-14 czerwca 2002r., Zakopane). Koncepcja systemu zaprezentowana w niniejszej pracy oraz wykonane oprogramowanie zostały wykorzystane przez firmę ATEST-Gaz w Gliwicach przy wdrożeniu systemu do produkcji.
T.Pietraszek Inteligentny czujnik w strukturze sieci rozległej 5 3. Analiza problematyki pomiarów stężenia gazów w obiektach Obecnie, ze względu na coraz ostrzejsze normy oraz dostosowywanie przepisów do standardów europejskich, pomiar stężenia gazów i substancji lotnych w obiektach zaczyna mieć coraz większe znaczenie i nie dotyczy już tylko obiektów gdzie zagrożenie jest największe (np. kopalni i zakładów chemicznych). Przykłady obiektów, rodzaj zagrożenia oraz rodzaj mierzonej substancji przedstawia poniższa tabela. Tabela 1 Przykłady obiektów i występujących zagrożeń Obiekt Zagrożenie Rodzaj pomiaru Kotłownia gazowa Wyciek gazu z powodu nieszczelności CH 4, CO instalacji, nieprawidłowe odprowadzanie spalin Kotłownia węglowa Zbyt wysoki poziom tlenku węgla przy złym CO Podziemny parking odprowadzaniu spalin Zbyt wysoki poziom tlenku węgla przy nieprawidłowym działaniu wentylacji, wyciek gazu z samochodów z instalacjami gazowymi propan-butan, CO Tunel Poziom spalin, pożar CO, temperatura Magazyn Wyciek gazu z instalacji wózków widłowych propan-butan napędzanych gazem Stacja paliw Wyciek paliwa do ziemi opary paliwa w studzienkach w pobliżu zbiorników Oczyszczalnia ścieków Nieprawidłowy proces fermentacji H 2 S, CH 4 Basen pomieszczenia techniczne Wyciek chloru stosowanego do odkażania wody Chlor 3.1. Informacje ogólne Pomiarów gazów lub substancji lotnych dokonuje się za pomocą czujników wyposażonych w element pomiarowy, który generuje sygnał zależny od stężenia badanej substancji w powietrzu. Ponieważ zależność sygnału od stężenia badanej substancji nie jest z reguły prostą zależnością liniową, istnieje konieczność przetwarzania sygnału. Przetwarzanie może być realizowane przez układ analogowy lub układ cyfrowy. W przypadku, gdy wielkością wyjściową ma być sygnał analogowy, a samo przetwarzanie nie jest zbyt skomplikowane, stosuje się układy analogowe. W pozostałych przypadkach z reguły znajdują wykorzystanie układy mikroprocesorowe.
T.Pietraszek Inteligentny czujnik w strukturze sieci rozległej 6 Wraz z rozwojem technologii i miniaturyzacji, na rynku pojawiają się coraz tańsze i bardziej wydajne mikroprocesory, wyposażone w różnorodne układy peryferyjne. Oznacza to, że mikroprocesor taki przejmuje coraz więcej funkcji, redukując liczbę dodatkowych układów analogowych i cyfrowych. Umożliwia to wykonanie taniego i prostego układu posiadającego jednocześnie duże możliwości przetwarzania sygnału. 3.2. Informacje o czujnikach gazu W pracy wprowadzone zostaje rozróżnienie pomiędzy czujnikami pomiarowymi i detekcyjnymi. Czujnik pomiarowy jest przetwornikiem przetwarzającym mierzoną wielkość fizyczną na sygnał elektryczny (analogowy lub cyfrowy), przy czym w zakresie pomiarowym sygnał wyjściowy odpowiada z określoną dokładnością konkretnej wartości wielkości stężenia gazu lub substancji. Czujnik detekcyjny (detektor) natomiast nie podaje wyniku stężenia, a jedynie wskazuje, czy są przekroczone określone wartości progowe. Dla przykładu, czujnikiem pomiarowym będzie czujnik gazu mierzący stężenie 0-100% DGW 1, natomiast czujnikiem detekcyjnym jest czujnik gazu sygnalizujący jedynie przekroczenie progu alarmowego 150ppm. W praktyce stosuje się różne elementy detekcyjne do czujników gazów i par lotnych, których zasadza działania oparta jest na różnych procesach fizycznych i chemicznych. Poszczególne elementy detekcyjne różnią się parametrami, z których najważniejsze to: - rodzaj gazu wykrywanego przez element, - stężenia gazu (lub substancji) poprawnie mierzone przez element, - największe dopuszczalne stężenie gazu (lub substancji), powyżej którego może nastąpić uszkodzenie elementu, - charakterystyka elementu, rodzaj sygnału wyjściowego, - zależność charakterystyki od parametrów zewnętrznych (np. wilgotność, temperatura), - czułość skrośna określająca wpływ innych gazów na wynik pomiaru, - trwałość, stabilność parametrów. Rys. 1. Przykłady głowic czujnika Smart z detektorami półprzewodnikowymi, pelistorowymi i elektrochemicznymi [18] 1 DGW Dolna Granica Wybuchowości. Dla gazów palnych określa najniższe stężenie w powietrzu, powyżej którego możliwe jest samorzutne rozprzestrzenianie się płomienia na niespaloną część mieszaniny.
T.Pietraszek Inteligentny czujnik w strukturze sieci rozległej 7 Typy stosowanych elementów detekcyjnych przedstawia poniższa tabela (ich podstawowe parametry znajdują się m.in. w [1] i [10]). Tabela 2 Typy elementów detekcyjnych stosowane do detekcji gazów Typ czujnika Zasada działania Mierzona substancja półprzewodnikowy reakcja gazu redukującego z powierzchnią półprzewodnika większość gazów palnych pelistorowy katalityczne spalanie gazów w detektorze większość gazów palnych elektrochemiczny reakcja chemiczna z powierzchnią detektora większość gazów toksycznych ogniwo paliwowe siła elektromotoryczna ogniwa zależna od tlen fotoelektryczny stężenia zmienna absorpcja promieniowania dla różnych gazów dwutlenek węgla W zależności od typów wykrywanych gazów i wymagań dotyczących czujnika stosuje się odpowiedni element detekcyjny. Do wykrywania niewielkich stężeń gazów palnych często stosuje się detektory z elementami półprzewodnikowymi ze względu na ich wysoką czułość i przystępną cenę. Wadą tych detektorów jest konieczność złożonego przetwarzania sygnału, który silnie zależny jest od czynników zewnętrznych. Detektory te zostaną wykorzystane przy konstrukcji systemu pomiarowego przedstawionego w dalszej części pracy.
T.Pietraszek Inteligentny czujnik w strukturze sieci rozległej 8 4. Koncepcja realizacji rozproszonego systemu pomiarowego Oprogramowane czujniki z elementami detekcyjnymi są jedynie jednym ze składników systemu pomiarowego. Przedmiotem pracy jest opracowanie koncepcji rozproszonego systemu pomiarowego oraz wykonanie oprogramowania poszczególnych elementów. Na poniższym rysunku przedstawiono strukturę systemu pomiarowego z uwzględnieniem elementów, do których założenia i wymagania opisane są w dalszej części rozdziału. Centralka TINI RS-485, MODBUS Konsola operatora Ethernet DB RS-485, MODBUS SERWER - BAZA DANYCH + WWW Centralka TINI Rys. 2. Struktura systemu pomiarowego z inteligentnymi czujnikami 4.1. Czujniki Podstawowym elementem wchodzącym w skład systemu jest czujnik pomiarowy, wyposażony w element detekcyjny. Projekt czujnika musi uwzględniać możliwość zastosowania różnych rodzajów elementów detekcyjnych bez konieczności wprowadzania dużych zmian w programie. Zadaniem czujnika jest mierzenie stężenia danej substancji i przekazywanie wypracowanej informacji do otoczenia. Czujnik może komunikować się z otoczeniem za pomocą następujących interfejsów: - sygnalizacja optyczna (np. diody LED w czujniku), - wyjścia przekaźnikowe, - wyjścia prądowe 4-20mA, - cyfrowy interfejs komunikacyjny. Ze względu na rozrzut parametrów elementów pomiarowych oraz na zmiany tych parametrów w czasie, istnieje konieczność początkowej i okresowej kalibracji czujnika. Projekt czujnika musi uwzględniać konieczność kalibracji i umożliwiać łatwe jej wykonanie, także bez konieczności demontażu czujnika i otwierania obudowy.
T.Pietraszek Inteligentny czujnik w strukturze sieci rozległej 9 4.2. Centralki Centralki są bardzo istotnym elementem systemu pomiarowego, ponieważ mają one za zadanie gromadzenie informacji o stanie czujników oraz generowanie sygnałów zbiorczych i sterowanie wyjściami (np. sygnalizacja alarmowa, syrena, wentylatory,...). W przypadku większych systemów centralki muszą umożliwić komunikację z systemami nadrzędnymi (np. system zarządzania budynkiem [6], sterownikami przemysłowymi, systemami gromadzącymi dane o stężeniach,...). 4.3. Komunikacja lokalna W sytuacji, gdy czujniki nie istnieją niezależnie i są podłączone do centralki, istnieje konieczność wyboru interfejsu komunikacyjnego. W zależności od rodzaju czujników, centralka może być podłączona do każdego czujnika oddzielnie (poprzez interfejs cyfrowy lub analogowy np. 4-20mA) lub można wykorzystać magistralę komunikacyjną (np. RS- 485). Każde z tych rozwiązań ma swoje wady i zalety, przy czym najważniejsze kwestie do uwzględnienia to: - koszt wykonania instalacji, - niezawodność, - szybkość działania, - możliwość dwukierunkowej komunikacji z czujnikiem, - łatwość wykonania oprogramowania. 4.4. Zastosowanie sieci opartej na protokole TCP/IP Do komunikacji z centralek z systemami nadrzędnymi zaproponowano wykorzystanie sieci Ethernet z wykorzystaniem protokołu TCP/IP. Mimo pewnych wad, rozwiązanie to posiada szereg zalet i obrazuje obecne trendy w systemach przemysłowych. Rozwiązanie jest łatwe do zaimplementowania na sterowniku wybranym do pełnienia roli centralki i umożliwia komunikację centralek z nowoczesnymi sterownikami przemysłowymi oraz systemami opartymi na komputerach PC. 4.5. Baza danych W złożonych systemach pomiarowych, często istnieje konieczność śledzenia zmian pewnego parametru (np. stężenia gazu) w dłuższym okresie czasu np. dziennym dobowym, miesięcznym. Funkcję taką można zaimplementować przy wykorzystaniu wewnętrznej pamięci centralki lub z wykorzystaniem relacyjnej bazy danych (rozwiązanie przedstawione w pracy). Rozwiązanie oparte na relacyjnej bazie danych jest łatwe do wykonania dzięki komunikacji poprzez sieć z protokołem TCP/IP i wykorzystaniu odpowiednich protokołów.
T.Pietraszek Inteligentny czujnik w strukturze sieci rozległej 10 Ważne jest, aby rozwiązanie było niezależne od zastosowanej bazy danych i umożliwiało dobór bazy danych w zależności od uwarunkowań lokalnych. Dane gromadzone w bazie mogą być następnie wizualizowane w przeglądarce WWW za pomocą odpowiedniego oprogramowania. 4.6. Konsola operatora Konsola jest istotnym elementem, umożliwiającym operatorowi monitorowanie stanu systemu. W zależności od rozwiązania, może być wykorzystywana okazjonalnie (np. w przypadku sytuacji awaryjnej) lub ciągle (w przypadku konieczności stałego monitorowania stanu systemu). Istotną kwestią jest również to, z jakim maksymalnym opóźnieniem dane pomiarowe są udostępniane operatorowi. 4.7. Zdalny dostęp do funkcji systemu W przypadku złożonego systemu, zainstalowanego w obiektach oddalonych od producenta, zdalny dostęp do systemu jest niezwykle istotny. Dzięki niemu, serwis jest w stanie szybko i tanim kosztem diagnozować poprawność działania oraz wykrywać usterki, zanim spowodują one zaprzestanie działania całego systemu. Planując zdalny dostęp do systemu należy zapewnić właściwy kompromis pomiędzy możliwościami i swobodą dostępu a bezpieczeństwem. Należy sobie zdawać sprawę z tego, że im łatwiejszy i pełniejszy jest dostęp do systemu, tym łatwiej może dochodzić do nadużyć ze strony pracowników firmy producenta, czy też osób z zewnątrz. Mimo, iż w systemie obsługującym czujniki nie ma istotnych danych klienta, które należy chronić przed osobami niepowołanymi, łatwo można sobie wyobrazić sytuację, w której błędna konfiguracja systemu (celowa lub przypadkowa) może spowodować np. ewakuację budynku na skutek fałszywego alarmu. Podsumowując, przy planowaniu zdalnego dostępu do systemu, należy wykorzystać środki i narzędzia umożliwiające właściwą jego ochronę.
T.Pietraszek Inteligentny czujnik w strukturze sieci rozległej 11 5. Mikroprocesorowy czujnik gazu z sensorem półprzewodnikowym SnO 2 W rozdziale zostanie przedstawiony projekt systemu mikroprocesorowego, będącego podstawową częścią systemu inteligentnych czujników. Jako podstawowy detektor współpracujący z czujnikiem została wybrana rodzina detektorów SnO 2 [8] i pod jej kątem zostało wykonane oprogramowanie. Jednocześnie, starano się uzyskać na tyle elastyczny kod, by po niewielkich przeróbkach umożliwić współpracę z innymi detektorami. Na obecnym etapie kod współpracuje również z detektorami elektrochemicznymi, planowana jest także obsługa mostków pelistorowych. Należy także zwrócić uwagę na mapę pamięci sterownika oraz protokołu komunikacyjnego, umożliwiającą jednolitą obsługę różnego typu urządzeń, identyfikację numeru seryjnego, daty produkcji i wersji oprogramowania istniejących oraz przyszłych układów. 5.1. Informacje o detektorach SnO 2 i przetwarzanie sygnałów analogowych Detektory SnO 2, wykorzystywane w czujniku działają na zasadzie oddziaływania gazu redukującego (takiego jak CO i CH 4 ) z powierzchnią półprzewodnika wewnątrz detektora. Opór detektora Rs. zależy od stężenia badanego gazu i temperatury grzałki. Wygląd oraz model elektryczny sensora przedstawione są na poniższym rysunku: Rys. 3. Wygląd oraz model elektryczny detektora CO i CH 4 - SB-95 [8] Sensor ma wyprowadzenia grzałki (1 i 3) oraz wyprowadzenie detekcyjne 2, które zachowuje się tak, jakby było podłączone do środka grzałki. Uproszczone podłączenie sensora w układzie przestawiono poniżej:
T.Pietraszek Inteligentny czujnik w strukturze sieci rozległej 12 Vcc U H 0.5*R H 0.5*R H R L U H U DET 0.5*R H R S 0.5*R H R S 1 3 2 Rys. 4. Model elektryczny i podłączenie sensora SB-95 u układzie pomiarowym Poniżej przedstawiono przegląd algorytmu sterowania sensora i etapy przetwarzania sygnału. 5.1.1. Sterowanie grzałką Do poprawnego funkcjonowania sensora niezbędne jest cykliczne kluczowanie napięcia grzałki. Kluczowanie powoduje zmianę temperatury grzałki i detektora, a co za tym idzie zmianę parametrów. W zależności od typu detektora i rodzaju wykrywanego gazu w określonym momencie cyklu należy dokonać odczytu napięcia detektora. Dla przykładu, grzałka detektora SB-95 jest kluczowana z okresem 10 - sekundowym (3s faza wysoka, 7s faza niska). Pomiar napięcia elektrody sensora następuje 100ms przed końcem każdej fazy. W fazie wysokiej mierzone jest stężenie metanu, natomiast w fazie niskiej - stężenie tlenku węgla. 5.1.2. Ekstrakcja Jak wynika z modelu, wyprowadzenie detektora zachowuje się tak, jakby było rezystorem podłączonym w połowie rezystora grzałki. Stężenie gazu wpływa na opór sensora R S, którego wartość należy obliczyć do dalszego przetwarzania. Ponieważ prawdziwa jest zależność: R H << R L można założyć, że napięcie w połowie grzałki wynosi 0.5U H. Zatem wartość RS obliczamy według poniższego wzoru: U DET 0.5 U H RS = RL V U Wartość R S jest następnie przetwarzana w dalszym ciągu algorytmu. 5.1.3. Prenormalizacja W następnym etapie wartość oporu sensora jest prenormalizowana poprzez wymnożenie przez odpowiednią stałą i otrzymywane są wartości zbliżone dla wszystkich sensorów. Konieczność prenormalizacji oporu wynika z rozrzutu parametrów detektorów oraz CC DET
T.Pietraszek Inteligentny czujnik w strukturze sieci rozległej 13 możliwości wykorzystania różnych oporów pomiarowych w układzie. Wartość prenormalizowaną oznaczono jako nr S. nr S RMUL = RS RMUL R 5.1.4. Kompensacja środowiskowa i normalizacja s0 = 10000 W tym etapie następuje zamiana prenormalizowanego oporu na wartość odpowiadającą rzeczywistemu stężeniu gazu. Należy uwzględnić to, że funkcja ta jest silnie zależna od czynników zewnętrznych, takich jak temperatura i wilgotność powietrza. Wielkości te są mierzone za pomocą czujnika temperatury i wilgotności, a następnie wyznaczany jest parametr środowiskowy uwzględniany przy normalizacji. Dla uproszczenia załóżmy, że parametrem środowiskowym jest temperatura i że kalibracji czujnika dokonujemy dla trzech temperatur (0 C, 20 C i 60 C). W procesie kalibracji tworzymy 3 tablice normalizacji dla odpowiednich temperatur, przy czym każda tablica zawiera tabelaryczną zależność n = f nr ) gdzie n jest stężeniem gazu w ppm a nr S ( S jest prenormalizowanym oporem sensora. Algorytm wyznaczania stężenia gazu n x dla temperatury T X polega na obliczeniu stężeń n 1 i n 2 odpowiednio dla dwóch temperatur T 1 i T 2, takich, że T 1 < T x < T 2, a następnie liniowej interpolacji stężenia gazu. Wartości stężeń wyznaczane są za pomocą tablic normalizacji także za pomocą interpolacji liniowej. 5.1.5. Testowanie poprawności działania sensora i sterowanie wyjść W ostatnim etapie następuje testowanie poprawności mierzonych wielkości analogowych, pośrednich wielkości otrzymywanych w trakcie obliczeń, ustawianie flag błędów, ostrzeżeń i alarmów oraz odpowiednie wysterowywanie wyjść układu. 5.2. Projekt oprogramowania czujnika Przedstawiony algorytm idealnie nadaje się do zaimplementowania w układzie mikroprocesorowym. Został wybrany procesor firmy Microchip PIC16F873 [15], który mimo pewnych wad, dość dobrze nadaje się do implementacji opisanego algorytmu. Procesor ten jest wykonany w architekturze RISC i posiada podobnie jak inne procesory firmy Microchip tylko 35 instrukcji. Wszystkie instrukcje za wyjątkiem instrukcji warunkowych i instrukcji skoków wykonywane są w 1 cyklu programu. Procesor posiada 4k słów pamięci programu (Flash EEPROM), 128 bajtów pamięci danych (EEPROM) oraz 192 rejestrów komórek pamięci RAM. Procesor działa z zegarem taktowanym prędkościami do 20MHz, posiada 3 układy czasowo licznikowe, 10-bitowy przetwornik analogowo-cyfrowy, port szeregowy (umożliwiający pracę synchroniczną i asynchroniczną) oraz 10-bitowy generator PWM.
T.Pietraszek Inteligentny czujnik w strukturze sieci rozległej 14 Procesor dobrze sprawuje się w warunkach przemysłowych, dzięki zabezpieczeniu pamięci EEPROM przez zapisem, sprzętowemu układowi watchdog, sprzętowemu układowi opóźniającemu start procesora po podaniu napięcia zasilania oraz wbudowanemu układowi zerującemu procesor przy spadku napięcia zasilania poniżej 4.5V. Do niewątpliwych wad procesora 16F873 należą: - zbyt mała ilość rejestrów RAM i komórek pamięci EEPROM, - ograniczenie stosu do 8 poziomów, - ubogie tryby adresowania (jeden tryb adresowania pośredniego), - konieczność programowego implementowania instrukcji arytmetycznych (mnożenie, dzielenie). 5.2.1. Schemat blokowy czujnika Uproszczony schemat blokowy czujnika z uwzględnieniem najważniejszych bloków przedstawiono poniżej. Głowica pomiarowa Sensor Przetwarzanie analogowe KLUCZ vheat +5V up PIC 16F873 Sygnalizacja LED Temp vdet vtemp A/D PWM Interfejs komunikacyjny U/I 4-20mA Serial RX TX RS485 DIR A B Rys. 5. Uproszczony schemat blokowy czujnika Układ czujnika ma następujące wymagania dotyczące komunikacji procesora z otoczeniem: - sterowanie kluczowaniem grzałki i układu pomiarowego sensora (wyjścia cyfrowe), - sterowanie sygnalizacją optyczną - diody LED (wyjścia cyfrowe), - odczyt napięć grzałki, detektora, temperatury przez 10-bitowy przetwornik A/C, - generowanie sygnału analogowego 4-20mA przez wbudowany 10-bitowy generator PWM), - obsługa portu szeregowego (komunikacja cyfrowa).
T.Pietraszek Inteligentny czujnik w strukturze sieci rozległej 15 5.2.2. Funkcje czujnika Podstawową funkcją czujnika jest sterowanie układem analogowym, pomiar napięć z wejść analogowych oraz przetwarzanie zmierzonych wartości według algorytmu podanego w rozdziale 5.1 oraz odpowiednie sterowanie wyjściami cyfrowymi i analogowymi. Czujnik musi okresowo wykonywać funkcje autodiagnostyczne pozwalające na wykrycie awarii części analogowej i cyfrowej. Układ może znajdować się w następujących stanach: - pomiaru układ funkcjonuje poprawnie i mierzy stężenia gazu, - blokady (LOCK) ze względu na nieustabilizowanie pracy części analogowej po włączeniu, czujnik przez określony czas nie dokonuje odczytów i nie wykonuje funkcji diagnostycznych, - kalibracji (CAL) układ mierzy i przetwarza sygnały wejściowe, jednak niektóre funkcje diagnostyczne nie są wykonywane (awarie są zamaskowane) oraz możliwa jest modyfikacja pamięci EEPROM - testowy (TEST) stany wejść analogowych są zadawane programowo, co umożliwia sprawdzenie poszczególnych funkcji programu, - symulacji wyniku (RAMP) system symuluje piłokształtne narastanie sygnałów wejściowych. Z punktu widzenia diagnostyki układ może znajdować się w następujących stanach: - praca funkcje diagnostyczne nie wykryły żadnej awarii, - awaria niekrytyczna funkcje diagnostyczne wykryły awarię, jednak układ jest w stanie funkcjonować, wskazania czujnika mogą być niepoprawne, - awaria krytyczna awaria uniemożliwiająca pracę czujnika, czujnik nie działa. Z punktu widzenia pomiarów układ może znajdować się w następujących stanach: - brak przekroczeń stężenie gazu jest niższe niż najniższy próg ostrzeżenia, - ostrzeżenie 1 - stężenie gazu przekroczyło pierwszy próg ostrzeżenia, - ostrzeżenie 2 - stężenie gazu przekroczyło drugi próg ostrzeżenia, - alarm stężenie gazu przekroczyło próg alarmowy, - przeciążenie - stężenie gazu lub badanej substancji jest tak wysokie, że może doprowadzić do uszkodzenia lub zmiany charakterystyki detektora, - przeciążenie zapamiętane przez określony czas stężenie utrzymywało się na poziomie powyżej progu przeciążenia, co mogło doprowadzić do zmiany parametrów detektora. Stan taki jest zapamiętany w pamięci EEPROM i czujnik wymaga rekalibracji.
T.Pietraszek Inteligentny czujnik w strukturze sieci rozległej 16 5.3. Kalibracja sensora Ze względu na duży rozrzut parametrów detektorów SnO 2, a także możliwość zastosowania różnych elementów detekcyjnych, każdy inteligentny sensor musi być indywidualnie kalibrowany. Kalibracja odbywa się poprzez interfejs szeregowy po zaprogramowaniu czujnika i polega na wpisaniu do pamięci EEPROM procesora odpowiednich tablic kalibracji. Tablica kalibracji składa się z pewnej liczby par: wartość X wartość Y. Dla argumentów pomiędzy wartościami X z tabeli, procesor dokonuje liniowej interpolacji. Dzięki wykorzystaniu wskaźników w pamięci i dynamicznych tablic możliwe jest optymalne dobranie liczby elementów w tablicy do właściwości aproksymowanej funkcji. Y Y X X Rys. 6. Optymalny dobór liczby odcinków interpolacji dla różnych rodzajów funkcji Dodatkowo możliwe jest przechowywanie wielu kopii tej samej tablicy w pamięci EEPROM procesora, co może odpowiadać kolejnym rekalibracjom czujnika. Zarówno pamięć danych, jak i programu jest chroniona sumą kontrolną CRC16. 5.3.1. Mapa pamięci EEPROM sensora Ze względu na ograniczony rozmiar pamięci EEPROM czujnika, do przechowywania informacji kalibracyjnych została wykorzystana została część pamięci programu w pamięci Flash EEPROM. Pamięć ta cechuje się większym czasem zapisu i mniejszą liczbą cykli zapisu niż pamięć EEPROM, jednak nie ma to znaczenia przy okresie kalibracji czujnika około 1 roku. Sumarycznie pamięć EEPROM wykorzystywana w czujniku ma 640 bajtów, przy czym pamięć jest podzielona na 3 banki: - BANK0 128 bajtów (pamięć EEPROM), - BANK1 256 bajtów (pamięć Flash EEPROM), - BANK2 256 bajtów (pamięć Flash EEPROM). Adresacja komórki pamięci odbywa się poprzez podanie adresu banku (0-2) oraz adresu komórki pamięci w danym banku. Ze względu na łatwość kodowania, przyjęte zostało ograniczenie, że pojedyncza struktura w pamięci (tablica) nie może przekraczać granic banków. Wszystkie struktury w pamięci EEPROM (za wyjątkiem bloku głównego umieszczonego na początku pamięci EEPROM) mają zmienne położenie i zmienny rozmiar, określany przy
T.Pietraszek Inteligentny czujnik w strukturze sieci rozległej 17 ich tworzeniu. Dzięki temu, niewielkim kosztem uzyskano maksymalną elastyczność przy doborze wielkości tablic i efektywne wykorzystanie pamięci (nie ma marnowanej pamięci przy mniejszym rozmiarze pamięci niż zakładano). Reprezentacja i operacje na tablicach dynamicznych, podobne do reprezentacji na listach w pamięci komputera, zostały przedstawione na poniższym rysunku. Logiczna struktura pamięci EEPROM IP IP (nieakt) IP (nowa) Blok główny NULL TP TP (nieakt) NULL EC 0 [C] 80 [C] CC NULL NULL CC CC (nieakt) NULL Fizyczna struktura pamięci EEPROM Rys. 7. Reprezentacja tablic dynamicznych w pamięci EEPROM Podobnie jak w przypadku list, operacja dodawania nowej tablicy nie wiąże się z przepisywaniem całej struktury pamięci, a jedynie poprawieniem odpowiedniego wskaźnika w bloku głównym i dodaniu nowej tablicy w wolne miejsce w pamięci. W praktyce operacja ta jest realizowana w przypadku dodawania nowej tablicy kalibracji, natomiast w przypadku zmiany rozmiaru tablicy (lub fizycznego wykasowania starej) przepisywana jest zawartość całej pamięci ze względu na konieczność zachowania ciągłości. Przy opisywaniu struktur w pamięci EEPROM przyjęto następującą konwencję:
T.Pietraszek Inteligentny czujnik w strukturze sieci rozległej 18 - [b:n] komórka o pamięci w banku b o adresie n. - [m:n][:n+1] komórka 16 bitowa zajmująca bajty o adresach n i (n+1). Zmienne 16-bitowe zapisywane są w konwencji BIG-ENDIAN, czyli starszy bajt zapisywany jest jako pierwszy. - [+i] i-ty bajt tablicy, która w całości znajduje się w pamięci w banku określonym przez adres początkowy tablicy. Blok główny Blok znajduje się na początku pamięci EEPROM i jest to jedyny blok posiadający stałe położenie w pamięci. Położenie pozostałych bloków wynika z informacji zapisanych w bloku głównym. Pierwsze 8 bajtów pamięci EEPROM nie jest chronione sumą kontrolną. Tabela 3 Struktura bloku głównego pamięci EEPROM sensora [0:0] (niechronione CRC) EESTAT - zmienna zawiera pamięć stanu czujnika [0:1] (niechronione CRC) [zarezerwowane] [0:2][:3] (niechronione CRC) LIFE_TIME zawiera całkowity czas działania czujnika od momentu kalibracji. Jest ona równa całkowitej liczbie cykli odczytu /256 [0:4]-[0:5] (niechronione CRC) [zarezerwowane] [0:6][:7] (niechronione CRC) DCRC zawiera sumę kontrolną pamięci EEPROM liczoną od adresu [0:8] [0:8][:9] PCRC zawiera sumę kontrolną pamięci programu [0:10][:11] (IP) zmienna zawiera adres wskaźnika bloku konfiguracyjnego czujnika (rozdział 0) [0:12][:13] (TP) zmienna zawiera adres wskaźnika bloku normalizacji temperatury (rozdział 0) [0:14][:15] (EC1) zmienna zawiera adres wskaźnika bloku kompensacji środowiskowej dla gazu 1 (rozdział 0) [0:16][:17] (EC2) zmienna zawiera adres wskaźnika bloku kompensacji środowiskowej dla gazu 2 w czujnikach dwugazowych (rozdział 0) [0:18]-[0:21] [zarezerwowane] [0:22][:23] SN zmienna zawiera numer seryjny urządzenia [0:24] MODBUS_ADDR zmienna zawiera adres Modbus urządzenia [0:25][0:29] [zarezerwowane] Blok konfiguracyjny czujnika (IP) Blok ten określa podstawowe parametry konfiguracji czujnika, które umożliwiają poprawną jego pracę. Tabela 4 Struktura bloku konfiguracyjnego pamięci EEPROM sensora [(ip)+0] N liczba bajtów w bloku [+1] G1_W1 poziom pierwszego ostrzeżenia dla gazu 1 (0-255) [+2] G1_W2 poziom drugiego ostrzeżenia dla gazu 1 (0-255) [+3] G1_AL poziom alarmowy dla gazu 1 (0-255) [+4][+5] RL_H wartość opornika pomiarowego dla gazu 1 (faza wysoka) [+6][+7] RX_H wartość normalizacyjna oporu dla gazu 1 [+8] G2_W1 poziom pierwszego ostrzeżenia dla gazu 2 (0-255) [+9] G2_W2 poziom drugiego ostrzeżenia dla gazu 2 (0-255) [+10] G2_AL poziom alarmowy dla gazu 2 (0-255) [+11][+12] RL_L wartość opornika pomiarowego dla gazu 2 (faza
T.Pietraszek Inteligentny czujnik w strukturze sieci rozległej 19 niska) [+13][+14] RX_L wartość normalizacyjna oporu dla gazu 2 [+15][+16] PWM1_Y0 współczynnik kompensacji dla źródła prądowego 1 [+17][+18] PWM1_k współczynnik kompensacji dla źródła prądowego 1 [+19][+20] PWM1_Y0 współczynnik kompensacji dla źródła prądowego 1 [+21][+22] PWM1_k współczynnik kompensacji dla źródła prądowego 1... [zarezerwowane] [+(n+1)] P rozmiar informacji dodatkowych: 0 brak informacji dodatkowych, 6 informacje o poprzedniej tablicy [+(n+1)+1][+2][+3] Data stworzenia bloku (YY/MM/DD) [+(n+1)+4] Autor tablicy (0-255) [+(n+1)+5][+(n+1)+6] Wskaźnik na poprzedny (nieaktywny) blok konfiguracyjny Blok normalizacji temperatury (TP) Blok ten zawiera tablicę normalizacyjną pozwalającą na wyznaczenie temperatury (lub współczynnika środowiskowego) na podstawie wejść z przetwornika (0-1023). Wartości temperatury podane są z dokładnością 1 C z przesunięciem 128 (tj. temperaturze 0 C odpowiada wartość 128). Wartości kolejnych napięć muszą być uporządkowane rosnąco. Tabela 5 Struktura bloku normalizacji pamięci EEPROM sensora [(tp)+0] N liczba wpisów w tablicy w bloku [+1][+2] U1 napięcie odczytywane z sensora (0-1023) [+3] T1 temperatura (0-255) [+4][+5] U2 napięcie odczytywane z sensora (0-1023) [+6] T2 temperatura (0-255)...... [+3n-2][+3n-1] UN napięcie odczytywane z sensora (0-1023) [+3n] TN temperatura (0-255) [+(n+1)] P rozmiar informacji dodatkowych: 0 brak informacji dodatkowych, 6 informacje o poprzedniej tablicy [+(3n+1)+1][+2][+3] Data stworzenia bloku (YY/MM/DD) [+(3n+1)+4] Autor tablicy (0-255) [+(3n+1)+5][+(3n+1)+6] Wskaźnik na poprzedny (nieaktywny) blok konfiguracyjny Blok kompensacji środowiskowej (EC) Blok ten określa jak parametr środowiskowy (temperatura) wpływa na normalizację sygnału. Kilku różnym temperaturom mogą odpowiadać te same wskaźniki. Wartości kolejnych temperatur muszą być uporządkowane rosnąco. Tabela 6 Struktura bloku kompensacji środowiskowej pamięci EEPROM sensora [(ec)+0] N liczba wpisów w tablicy w bloku [+1] T1 temperatura (0-255) [+2][+3] CC1 wskaźnik na tablicę normalizaji dla temp. T1 [+4] T2 temperatura (0-255) [+5][+6] CC2 wskaźnik na tablicę normalizaji dla temp. TN...... [+3n-2][+3n-1] UN temperatura (0-255) [+3n] CCN wskaźnik na tablicę normalizaji dla temp. TN [+(n+1)] P rozmiar informacji dodatkowych:
T.Pietraszek Inteligentny czujnik w strukturze sieci rozległej 20 0 brak informacji dodatkowych, 6 informacje o poprzedniej tablicy [+(3n+1)+1][+2][+3] Data stworzenia bloku (YY/MM/DD) [+(3n+1)+4] Autor tablicy (0-255) [+(3n+1)+5][+(3n+1)+6] Wskaźnik na poprzedny (nieaktywny) blok konfiguracyjny Blok normalizacji (CC) Blok ten określa jak zależność stężenia badanej substancji od oporu znormalizowanego. Jeden blok normalizacji może być wykorzystany dla różnych temperatur, jeżeli w bloku kompensacji środowiskowej (EC) zostaną wpisane te same wskaźniki dla różnych temperatur. Wartości kolejnych argumentów w tablicy muszą być uporządkowane rosnąco. Tabela 7 Struktura bloku normalizacji pamięci EEPROM sensora [(cc)+0] N liczba wpisów w tablicy w bloku [+1][+2] nr1 opór znormalizowany [+3][+4] N1 stężenie badanej substancji (0-20000) [+5][+6] NR2 opór znormalizowany [+7][+8] N2 stężenie badanej substancji (0-20000)...... [+4n-3][+4n-2] NRN opór znormalizowany [+4n-1][+4n] NN stężenie badanej substancji (0-20000) [+(n+1)] P rozmiar informacji dodatkowych: 0 brak informacji dodatkowych, 6 informacje o poprzedniej tablicy [+(3n+1)+1][+2][+3] Data stworzenia bloku (YY/MM/DD) [+(3n+1)+4] Autor tablicy (0-255) [+(3n+1)+5][+(3n+1)+6] Wskaźnik na poprzedny (nieaktywny) blok konfiguracyjny 5.3.2. Zasady obsługi tablic dynamicznych W rozdziale 5.3.1 przedstawiona została mapa pamięci zaimplementowana w sensorze. Jak widać, każda tablica dynamiczna może, lecz nie musi ze względów na konieczność oszczędności pamięci, zawierać blok informacji dodatkowych, w którym określone są następujące dane: - data kalibracji (rok, miesiąc i dzień), - autor kalibracji (1 bajt), - informacja o poprzednim bloku kalibracji w pamięci (jeżeli blok jest blokiem ostatnim wpisywane jest wartość NULL). Informacje te są szczególnie użyteczne przy wielokrotnej rekalibracji czujnika, gdy jego papierowa dokumentacja nie jest dostępna. Na podstawie poprzednich kalibracji producent może określić stabilność sensora i jego proces starzenia się. 5.4. Protokół komunikacyjny W trakcie tworzenia oprogramowania inteligentnego czujnika szybko okazało się, że interfejs szeregowy może być wykorzystywany zarówno do celów kalibracji, jak i do
T.Pietraszek Inteligentny czujnik w strukturze sieci rozległej 21 wymiany danych w czasie normalnej pracy. W tym celu zaistniała konieczność opracowania odpowiedniego protokołu komunikacyjnego. Przede wszystkim należało podjąć decyzję czy należy wykorzystać istniejący protokół komunikacyjny, czy opracować protokół dedykowany do obsługi czujników. Opracowanie protokołu dedykowanego ma tą zaletę, że można go w pełni dostosować do specyfiki urządzenia i nie wnosi on żadnych ograniczeń. Niewątpliwą wadą natomiast jest fakt, że w tym przypadku czujniki współpracowałyby tylko i wyłącznie z dedykowanymi sterownikami. To ostatnie jest sprzeczne z początkowymi założeniami, że poszczególne elementy systemu mogą być wykorzystywane oddzielnie. W przypadku zastosowania istniejącego protokołu należy natomiast określić w jaki sposób będzie on wykorzystywany do wymiany danych z sensorem, tak aby spełnione były wszystkie założenia postawione przy projektowaniu systemu. W szczególności, dotyczy to możliwości identyfikacji typu i wersji urządzenia, odczytywania danych pomiarowych z czujnika oraz możliwości kalibracji. Dodatkowo, należy zapewnić możliwość odczytywania podstawowych danych przez inne urządzenia komunikujące się za pomocą tego protokołu. Dla czujników gazu podstawowymi danymi są: - dane identyfikujące urządzenie (typ, wersja, numer seryjny, data kompilacji programu), - dane pomiarowe stężenie gazu i temperatura, - flagi oznaczające awarie, przekroczenia progów alarmowych. Pozostałe dane, w tym sposób kalibracji i pośrednie wyniki przy przetwarzaniu sygnału, można potraktować jako dodatkowe, do których dostęp może być ograniczony tylko do dedykowanych narzędzi. Wymagania dla protokołu komunikacyjnego są następujące: - możliwość prostej implementacji na mikroprocesorze, - brak interferencji z istotnymi funkcjami sensora, np. poprzez wymuszanie ścisłych zależności czasowych, - możliwość dopasowania do specyfiki czujnika (odczyt danych pomiarowych i flag, zapis pamięci EEPROM, możliwość sterowania czujnikiem), - kompatybilność z istniejącymi rozwiązaniami (sterowniki przemysłowe) z zakresie odczytu danych podstawowych. 5.4.1. Protokół Modbus W wyniku analizy zdecydowano się na protokół Modbus opracowany przez firmę Modicon. Protokół jest protokołem typu master-slave, w którym jeden sterownik (master) może kontrolować wiele urządzeń podrzędnych. Mimo iż protokół ten został początkowo opracowany wyłącznie do komunikacji ze sterownikami firmy Modicon i zawiera szereg rozwiązań charakterystycznych dla tych sterowników, dzięki dostępności specyfikacji oraz prostocie implementacji jest często wykorzystywany w innych urządzeniach. Protokół Modbus opiera się na wymianie danych w cyklu zapytanie-odpowiedź, przy czym cykl inicjowany jest przez urządzenie master. Do wspólnej magistrali może być
T.Pietraszek Inteligentny czujnik w strukturze sieci rozległej 22 podłączone tylko jedno urządzenie master i wiele urządzeń slave, nie ma więc problemu z rozwiązywaniem kolizji i arbitrażem. Sterownik wysyła ramkę zapytania do urządzenia o danym adresie, na którą stacja slave powinna odpowiedzieć w określonym czasie. Jeżeli to nie nastąpi, sterownik może dokonać retransmisji ramki, a po nieudanej retransmisji zgłasza błąd komunikacji. W przypadku wystąpienia błędu po stronie stacji slave (przy odebraniu poprawnej ramki), stacja może odpowiedzieć zgłaszając wyjątek (Exception response). W protokole Modbus istnieje możliwość wysłania transmisji do wszystkich stacji (Broadcast). Transmisja taka nie jest potwierdzana przez sterowniki, nie ma więc gwarancji, że wszystkie urządzenia ją otrzymały. ZAPYTANIE Sterownik Komunikacja poprawna ODPOWIEDŹ ZAPYTANIE Sterownik TIMEOUT ZAPYTANIE? Sterownik Wyjątek - exception response EXCEPTION-RESPONSE ZAPYTANIE - BROADCAST Sterownik Transmisja rozgłoszeniowa - broadcast Rys. 8. Scenariusze transmisji w protokole Modbus Protokół Modbus występuje w dwóch odmianach: - Modbus ASCII, - Modbus RTU. Ze względu na uniezależnienie się od ścisłych zależności czasowych wybrano protokół Modbus ASCII. Protokół ten charakteryzuje się dwukrotnie mniejszą wydajnością niż odmiana RTU, jednak wydajność nie jest kluczowa w omawianym rozwiązaniu. Ze względu na poziom zgodności z protokołem Modbus, urządzenia podzielono na 3 klasy: - class 0,
T.Pietraszek Inteligentny czujnik w strukturze sieci rozległej 23 - class 1, - class 2. Implementacja protokołu w czujniku zgodna jest z Modbus class 0, co oznacza konieczność implementacji funkcji odczytu i zapisu wielu rejestrów oznaczanych w literaturze FC03 i FC16. Dodatkowo, dla lepszej współpracy z popularnymi programami została zaimplementowana funkcja FC06. Ze względu na ograniczenie pamięci mikroprocesora rozmiar ramki MODBUS został ograniczony do 42 bajtów. Zapytania przekraczające ten rozmiar powodują wysłanie komunikatu Exception response przez czujnik. W protokole Modbus ASCII każdy znak zostaje zakodowany za pomocą jego szesnastkowej reprezentacji w postaci tekstowej (przykładowo znakowi o kodzie 255 odpowiada dwubajtowy łańcuch znakowy FF. Dodatkowo, na początku ramki dodawany jest znak dwukropka, a na koniec dodawana jest jednobajtowa suma kontrolna (uzupełnienie do dwóch sumy wszystkich znaków) oraz znak końca linii (znaki o kodzie 10 i 13). Poniżej przedstawiono format ramek zapytania i możliwych odpowiedzi w protokole Modbus zaimplementowanym w czujniku. Funkcja FC03 Funkcja FC03 służy do odczytu wielu kolejnych rejestrów. Ramka transmitowana przez sterownik ma następujący format: Tabela 8 Format ramki zapytania FC03 [0] <slave> Numer stacji slave [1] 03h Numer funkcji 03 odczyt wielu rejestrów [2][3] <addr> Adres pierwszego słowa do odczytu (BIG-ENDIAN) [4][5] <len> Liczba słów do odczytu (BIG-ENDIAN) Poprawna odpowiedź ma format: Tabela 9 Format odpowiedzi na zapytanie FC03 [0] <slave> Numer stacji slave [1] 03h Numer funkcji 03 odczyt wielu rejestrów [2] <bcount> Liczba odczytanych bajtów (równa <len>*2) [3]- [2+count] <data> Odczytane dane Możliwy jest wyjątek 01 lub 02 w przypadku podania nieprawidłowego adresu lub zbyt długiej ramki: Tabela 10 Format odpowiedzi na zapytanie FC03 wyjątek [0] <slave> Numer stacji slave [1] 83h Numer funkcji 03 i sytuacja wyjątkowa (+128) [2] <exception> Rodzaj wyjątku: 01 niepoprawny adres, 02 błedny adres funkcji
T.Pietraszek Inteligentny czujnik w strukturze sieci rozległej 24 Funkcja FC16 Funkcja FC16 służy do zapisu wielu kolejnych rejestrów. Ramka transmitowana przez sterownik ma następujący format: Tabela 11 Format ramki zapytania FC16 [0] <slave> Numer stacji slave [1] 10h Numer funkcji 16 zapis wielu rejestrów [2][3] <addr> Adres pierwszego słowa do zapisu (BIG-ENDIAN) [4][5] <len> Liczba słów do zapisu (BIG-ENDIAN) [6] <bcount> Liczba bajtów do zapisu (równa <len>*2) [7]- [6+count] <data> Dane do zapisu Poprawna odpowiedź ma format: Tabela 12 Format odpowiedzi na zapytanie FC16 [0] <slave> Numer stacji slave [1] 10h Numer funkcji 16 zapis wielu rejestrów [2][3] <addr> Adres pierwszego słowa do zapisu (BIG-ENDIAN) [4][5] <len> Liczba słów do zapisu (BIG-ENDIAN) Możliwy jest wyjątek 01 lub 02 w przypadku podania nieprawidłowego adresu lub zbyt długiej ramki: Tabela 13 Format odpowiedzi na zapytanie FC16 wyjątek [0] <slave> Numer stacji slave [1] 90h Numer funkcji 16 i sytuacja wyjątkowa (+128) [2] <exception> Rodzaj wyjątku: 01 niepoprawny adres, 02 błedny adres funkcji Funkcja FC06 Funkcja FC06 umożliwia zapis pojedynczego rejestru. Można zamiast niej wywołać funkcję FC16 z zapisem jednego rejestru, nie poszerza więc funkcjonalności urządzenia. Jej implementacja umotywowana jest tym, że wiele sterowników przemysłowych i programów wywołuje ją przy modyfikacji pojedynczego rejestru: Tabela 14 Format ramki zapytania FC06 [0] <slave> Numer stacji slave [1] 06h Numer funkcji 06 zapis wielu rejestrów [2][3] <addr> Adres słowa do zapisu (BIG-ENDIAN) [4][5] <data> Wartość zapisanego słowa Poprawna odpowiedź ma format: Tabela 15 Format odpowiedzi na zapytanie FC06 [0] <slave> Numer stacji slave [1] 06h Numer funkcji 06 zapis wielu rejestrów [2][3] <addr> Adres słowa do zapisu (BIG-ENDIAN) [4][5] <data> Wartość zapisanego słowa
T.Pietraszek Inteligentny czujnik w strukturze sieci rozległej 25 Możliwy jest wyjątek 01 lub 02 w przypadku podania nieprawidłowego adresu lub zbyt długiej ramki: Tabela 16 Format odpowiedzi na zapytanie FC06 wyjątek [0] <slave> Numer stacji slave [1] 86h Numer funkcji 06 i sytuacja wyjątkowa (+128) [2] <exception> Rodzaj wyjątku: 01 niepoprawny adres, 02 błedny adres funkcji 5.4.2. Mapa pamięci MODBUS Implementacja protokołu w trybie zgodności class 0 oznacza możliwość wymiany danych z czujnikiem tylko i wyłącznie przez odczyt i zapis 16 - bitowych rejestrów. Z tego powodu istnieje konieczność zaprojektowania mapy pamięci określającej znaczenie poszczególnych rejestrów dla istniejących i przyszłych czujnikach. W wyniku analizy wyodrębniono następujące bloki pamięci: - blok identyfikacyjny (wspólny dla wszystkich czujników), stałej długości pozwalający na określenie typu urządzenia i jego numeru seryjnego tylko do odczytu, - blok rejestrów wirtualnych charakterystycznych dla danego czujnika (ich interpretacja zależy od typu urządzenia) tylko do odczytu, - blok wirtualnych rejestrów sterujących charakterystycznych dla danego czujnika do odczytu i zapisu, - blok fizycznych rejestrów RAM czujnika wykorzystywany w celach diagnostycznych możliwy do modyfikacji po ustawieniu odpowiedniego rejestru sterującego, - blok fizycznych rejestrów EEPROM czujnika wykorzystywany przy kalibracji możliwy do modyfikacji po ustawieniu odpowiedniego rejestru sterującego. Ze względu na specyfikę czujnika, w dalszej części pracy opisując odwołania do mapy pamięci przyjęto adresację bajtową, podczas gdy protokół Modbus stosuje adresy 16 - bitowych słów. Podając adres Modbus wartość poniższych adresów należy podzielić prze 2 (a w implementacjach stosujących adresację od 1 a nie 0 należy dodatkowo dodać 1). Blok identyfikacyjny zajmuje pierwszych 8 bajtów (4 słowa) i ma następujące znaczenie: Tabela 17 Blok identyfikacyjny czujników w systemie [0] <type> Typ urządzenia 1- czujnik SMART półprzewodnikowy, 2 czujnik SMART elektrochemiczny, 128 moduł wyjść DO8,... [1] <ver> Wersja programu [2] <sver><rev > Wersja programu (4 starsze bity) i revision (4 młodsze bity) [3][4][5 <compdate> Data kompilacji programu YY/MM/DD ] [6][7] <sn> Numer seryjny czujnika
T.Pietraszek Inteligentny czujnik w strukturze sieci rozległej 26 Ze względu na różnorodność urządzeń, które mogą być podłączone do magistrali pozostałe bloki pamięci są zależne od typu urządzenia i wersji programu. Mapa pamięci dla urządzenia Smart w wersji półprzewodnikowej (<type> = 1) Blok rejestrów wirtualnych służy do odczytu stanu czujnika, jest pomocna przy kalibracji oraz umożliwia diagnozę sytuacji niepoprawnych. Transmitowane flagi umożliwiają określenie trybu pracy układu, rodzaju awarii i stanu przekroczeń progów alarmowych. Tabela 18 Mapa pamięci czujnika Smart rejestry wirtualne [8][9] <awkr1><awkr2> Flagi oznaczające awarie krytyczne (czujnik nie działa). Znaczenie poszczególnych bitów: AWKR1.0 AWKR znacznik awarii krytycznej AWKR1.1 GO_ERR znacznik zwarcia grzałki AWKR1.2 GS_ERR znacznik oderwania grzałki AWKR1.3 UO_ERR znacznik oderwania sensora AWKR1.4 US_ERR znacznik zwarcia sensora AWKR1.5 T_ERR znacznik awarii pom. tmperatuty AWKR1.6 PCRC_ERR znacznik błędu CRC programu AWKR1.7 DCRC_ERR znacznik błędu CRC danych AWKR2.0 OVFL przepełnienie op. arytm. AWKR1.1 EE_ERR błędna zawartość pamięci EEPROM AWKR1.2 I2C_ERR błąd komunikacji I2C AWKR1.3 CAL_ERR przekroczenie czasu kalibracji [10][11] <awn1><awn1> Flagi oznaczające awarie niekrytyczne (czujnik działa, ale wymagana jest interwencja serwisu). Znaczenie poszczególnych bitów: AWN1.0 AWN znacznik awarii niekrytycznej AWN1.1 G_WAR znacznik odchyłki grzałki AWN1.2 GOVL_WAR znacznik przeciążania gazowego AWN1.3 TOVL_WAR przeciążenie temperaturowe AWN1.4 HOVL_WAR przeciążaenie środowiskowe AWN1.5 CAL_WAR sugerowana rekalibracja AWN1.6 KLAPA_WAR otwarta obudowa AWN1.7 CONN_WAR brak komunikacji RS [12][13] <alarms><eestat> Flagi alarmów I ostrzeżeń oraz zapamiętane przeciążenia: ALARMS.0 W1_G1 pierwsze ostrzeżenie gaz1 ALARMS.1 W2_G1 drugie ostrzeżenie gaz1 ALARMS.2 AL_G1 alarm gaz1 ALARMS.3 W1_G2 pierwsze ostrzeżenie gaz21 ALARMS.4 W2_G2 drugie ostrzeżenie gaz2 ALARMS.5 AL_G2 alarm gaz2 EESTAT.0 GOVL_EE zapamiętane przec. gazowe EESTAT.1 TOVL_EE zapamiętane przec. temper. EESTAT.2 HOVL_EE zapamiętane przec. środ. EESTAT.2 HOVL_EE zapamiętane otwarcie obudowy [14][15] <statea>zero Falgi określające tryb pracy urządzenia: STATEA.0 CAL tryb kalibracji STATEA.1 TEST tryb testowy STATEA.2 RAMP tryb symulacji czujnika STATEA.7 LOCK tryb blokady po załączeniu czujnika [16][17] ZERO<samplecnt> Licznik prórek (0-255) [18][19] <lifetime> Całkowity czas działania czujnika (liczba cykli
T.Pietraszek Inteligentny czujnik w strukturze sieci rozległej 27 / 256) [20][21] <n1> Stężenie gazu 1 [22][23] <n2> Stęzenie gazu 2 [24][25] ZERO<temp> Temperatura [ C + 128] [26][27] <vdet1> Wartośc sygnału z przetwornika dla gazu 1 (0-1023) [28][29] <vdet2> Wartośc sygnału z przetwornika dla gazu 1 (0-1023) [30][31] <vheat1> Wartośc zmierzonego napięcia grzałki dla fazy wysokiej (0-1023) [32][33] <vheat2> Wartośc zmierzonego napięcia grzałki dla fazy niskiej (0-1023) [34][35] <vtemp> Wartośc zmierzonego napięcia układu pomiaru temperatury (0-1023) [36][37] <R1> Obliczona wartość R dla gazu1 [38][39] <R2> Obliczona wartość R dla gazu2 [40][41] <nr1> Znormalizowane R1 [42][43] <nr2> Znormalizowane R2 [44][45] <RxH> Wartość oporu normalizującego 1 [46][47] <RxL> Wartość oporu normalizującego 2 [48][49] <RlH> Wartość opornika pomiarowego RL [50][51] <RlL> Wartość opornika pomiarowego RL [52][53] <n1_1> Interpolowane stęzenie 1 dla gazu 1 [54][55] <n1_2> Interpolowane stęzenie 2 dla gazu 2 [56][57] <n2_1> Interpolowane stęzenie 1 dla gazu 1 [58][59] <n2_2> Interpolowane stęzenie 2 dla gazu 1 Blok wirtualnych rejestrów sterujących przypisany jest do adresów 256-511 umożliwia sterowanie trybem pracy urządzenia: Tabela 19 Mapa pamięci czujnika Smart wirtualne rejestry sterujące [256] <cal> Wpisanie wartości 1 powoduje ustawienie trybu kalibracji [257] <test> Wpisanie wartości 1 powoduje ustawienie trybu testowego [258] <ramp> Wpisanie wartości 1 powoduje ustawienie trybu symulacji wyniku [niezaimplementowane] [384] <zeroee> Wpisanie wartości 1 powoduje wyzerowanie flagi <EESTAT> Blok rejestrów RAM przypisany jest do adresów 512-767 umożliwia odczyt i zapis fizycznej komórki RAM czujnika. Zapis dowolnej komórki także jest możliwy, jednak tylko w trybie testowym. Blok rejestrów EEPROM przypisany jest do adresów 768-1535 (bank0: adresy 768-895, bank1: adresy 1024-1279, bank2: adresy 1280-1535) umożliwia odczyt i zapis dowolnej komórki EEPROM czujnika. Zapis komórki możliwy jest tylko w trybie kalibracji. Mapa pamięci dla urządzenia DO8 (<type>=128) Dla przykładu zamieszczona jest mapa pamięci specyficzna dla modułu wyjść przekaźnikowych omówionego w rozdziale 6.2.2. Moduł ten posiada bloki analogiczne do bloków czujnika Smart. Tabela 20 Mapa pamięci modułu DO8 rejestry wirtualne [8][9] <awkr1>zero Flagi oznaczające awarie krytyczne (moduł nie