SPECYFIKACJA. Przetwornik stężenia CO2 MODBUS RTU. Opracował: HTC-MODBUS-V

Podobne dokumenty
SPECYFIKACJA. Przetwornik stężenia CO2 MODBUS RTU. Opracował: HTC-K-MODBUS-V-L. HOTCOLD s.c.

SPECYFIKACJA. Przetwornik temperatury PT100 MODBUS RTU. Opracował: HCC-03-Modbus. HOTCOLD s.c

SPECYFIKACJA. Przetwornik temperatury PT100 MODBUS RTU. Opracował: HCC-05c-Modbus. HOTCOLD s.c

SPECYFIKACJA. Przetwornik wilgotności i temperatury RH&T MODBUS RTU. HCRH-Ka-Modbus. Opracował: HOTCOLD s.c

SPECYFIKACJA Przetwornik wilgotności HCRH-MODBUS-Kb

SPECYFIKACJA. Przetwornik różnicy ciśnień DPC250-M, DPC2500-M, DPC4000-M, DPC7000-M (MODBUS RTU)

SPECYFIKACJA Przetwornik wilgotności HCRH-Modbus

SPECYFIKACJA Przetwornik różnicy ciśnień DPC6000_MV (MODBUS, 0-10V)

SPECYFIKACJA HTC-K-VR. Kanałowy przetwornik CO2 z wyjściem analogowym V i progiem przekaźnikowym

SPECYFIKACJA HTC-VR, HTC-VVR-RH, HTC-VVR-T, HTCVVVR, HTC-VR-P, HTC-VVR-RH-P

!"#!"$%! %$"#%!!$! !"!#$ )&! &

SPECYFIKACJA HTC-VR, HTC-VVR-RH, HTC-VVR-T, HTC-VVVR, HTC-VR-P, HTC-VVR-RH-P

Protokół komunikacyjny sondy cyfrowej CS-26/RS-485 (lub RS-232)

SPECYFIKACJA PRZETWORNIK RÓŻNICY CIŚNIEŃ

SPECYFIKACJA PRZETWORNIK RÓŻNICY CIŚNIEŃ DPC250; DPC250-D; DPC4000; DPC4000-D

REJESTRATOR Z EKRANEM DOTYKOWYM TYPU KD7

REJESTRATOR EKRANOWY Typu KD8

Sterownik procesorowy S-2 Komunikacja RS485 MODBUS

RS485 MODBUS Module 16RO

SDM-16RO. Moduł rozszerzający 16 wyjść przekaźnikowych. wyprodukowano dla

RS485 MODBUS Module 16RO

RS485 MODBUS Module 16O

RS485 MODBUS Module 16O

AE-1050 przetwornik pętli prądowej 0-20mA z interfejsem RS485

RS485 MODBUS Module 6TE

RS485 MODBUS Module 8AI

RS485 MODBUS Module 8AO

SDM-8AO. Moduł rozszerzający 8 wyjść analogowych. wyprodukowano dla

Mini Modbus 1TE. Moduł rozszerzający 1 wejście temperaturowe, 1 wyjście cyfrowe. Wyprodukowano dla

RS485 MODBUS Module 6TE

AE kanałowy przetwornik temperatury z interfejsem RS485

RS485 MODBUS Module 8AI

SDM-6TE. Moduł rozszerzający 6 wejść temperaturowych. wyprodukowano dla

SiMod-X-(A1) Przetwornik parametrów powietrza z interfejsem RS485 (MODBUS RTU) oraz wyjściem analogowym (dotyczy wersji -A1)

Instrukcja integracji urządzenia na magistrali Modbus RTU. wersja 1.1

AE-1030 pokojowy czujnik temperatury z interfejsem RS485

Mini Modbus 1AI. Moduł rozszerzający 1 wejście analogowe, 1 wyjście cyfrowe. Wyprodukowano dla

RS485 MODBUS Module 8I8O

ADVANCE ELECTRONIC. Instrukcja obsługi aplikacji. Modbus konfigurator. Modbus konfigurator. wersja 1.1

Mini Modbus 1AO. Moduł rozszerzający 1 wyjście analogowe, 2 wyjście cyfrowe. Wyprodukowano dla

RS485 MODBUS Module 6RO

CENTRALKA DETCOM.3 DO DETEKTORÓW SERII 3.3

ANALIZATOR PARAMETRÓW SIECI TYPU ND1

SDM-16I. Moduł rozszerzający 16 wejść cyfrowych. wyprodukowano dla

UW-DAL-MAN v2 Dotyczy urządzeń z wersją firmware UW-DAL v5 lub nowszą.

RS-H0-05 (K)* Czytnik RFID MHz Mifare. Karta użytkownika

RS485 MODBUS Module 16I

RS485 MODBUS Module 6RO

THP-100-x parametry. Pobór prądu (przy zasilaniu 12V) Pobierana moc (przy zasilaniu 12V) 0,036W. Pomiar ciśnienia

SDM-8AI. Moduł rozszerzający 8 wejść analogowych. wyprodukowano dla

Instrukcja integracji urządzenia na magistrali Modbus RTU

1W-H3-05(K)* Czytnik RFID 125 khz Unique. Instrukcja

Moduł komunikacyjny Modbus RTU w standardzie RS-485 do ciepłomierza SonoMeter 31 i przelicznika energii Infocal 9

Opis interfejsu Modbus w sterowniku ACU3.57

Moduł komunikacyjny Modbus RTU do ciepłomierza SonoMeter 30

RS485 MODBUS Module 16I-M

RS485 MODBUS Module 16I

RS485 MODBUS Module 8I8RO

Przetwornik pomiarowy dla czujników siły FlexiForce

RS485 MODBUS Module 8I8RO

SDM-8I8O. Moduł rozszerzający 8 wejść cyfrowych, 8 wyjść cyfrowych. wyprodukowano dla

RS485 MODBUS Module 6RO

Komunikacja z czujnikiem

HP-1 parametry. Pobór prądu (przy zasilaniu 12V) Pobierana moc (przy zasilaniu 12V) 0,036W. Pomiar ciśnienia

Instrukcja obsługi. Przetwornik pomiarowy dla czujników siły FlexiForce. Programowalny moduł z wyjściem 0..10V, OC i RS485 (MODBUS)

MiniModbus 4DI. Moduł rozszerzający 4 wejścia cyfrowe. Wyprodukowano dla

MiniModbus 4DO. Moduł rozszerzający 4 wyjścia cyfrowe. Wyprodukowano dla. Instrukcja użytkownika

wayy.pl DOKUMENTACJA TECHNICZNA DTR W.DDM.401 Moduł wyjść analogowych

STHR-2810, 2811, 2812 Przetwornik temperatury i wilgotności z czujnikiem Sensirion

Moduł wejść i wyjść analogowych

SYSTEM E G S MODUŁ ML/A-1m INSTRUKCJA UŻYTKOWANIA

Dokumentacja techniczna Nr AIM-8N Moduł wejść analogowych

SDM-6RO. Moduł rozszerzający 6 wyjść przekaźnikowych. wyprodukowano dla

MiniModbus 4DI-M. Moduł rozszerzający 4 wejścia cyfrowe z pamięcią liczników. Wyprodukowano dla

Konfigurator Modbus. Instrukcja obsługi programu Konfigurator Modbus. wyprodukowano dla

Moduł rozszerzeń ATTO dla systemu monitorującego SMOK.

Moduł wejść uniwersalnych

Sterownik PLC ELPM-8DI8DO z aplikacją ELPM-8DI8DOasRoleta wersja v

m e d i a s e r v i c e Moduł kamery JPEG z komunikacją szeregową CJ0706A

Różnicowy przetwornik ciśnienia EL-PS-xxx

DODATEK A OPIS INTERFEJSU SIECIOWEGO FMP300

ASTOR IC200ALG320 4 wyjścia analogowe prądowe. Rozdzielczość 12 bitów. Kod: B8. 4-kanałowy moduł ALG320 przetwarza sygnały cyfrowe o rozdzielczości 12

MODUŁ ETHERNETOWY DS202

MS360-LPM. wersja 1.09 (wersja robocza) Dokumentacja użytkownika

Protokół Modbus dla zasilaczy serii EN54

1W-H3-04P (K)* *Litera K odnosi się do wersji czytnika ze wspólną katodą. Czytnik RFID 125 khz Unique. Karta produktu

MPI-8E 8-KANAŁOWY REJESTRATOR PRZENOŚNY

DZT Licznik energii elektrycznej Sieć trójfazowa 4-przewodowa Połączenie bezpośrednie 100A Wyjście impulsowe oraz RS485/Modbus.

Politechnika Wrocławska

wayy.pl DOKUMENTACJA TECHNICZNA DTR W.DDM.301 Moduł wyjść cyfrowych

M-1TI. PROGRAMOWALNY PRECYZYJNY PRZETWORNIK RTD, TC, R, U / 4-20mA ZASTOSOWANIE:

Kod produktu: MP01105

SYSTEM E G S MODUŁ ML/A-1m wersja V32.1

Kod produktu: MP01105T

Czujnik temperatury zewnętrznej

PRZETWORNIK TYPU P21Z INSTRUKCJA OBSŁUGI

PROTOKÓŁ MQTT (uzupełnienie do instrukcji obsługi miernika ND30)

Transkrypt:

SPECYFIKACJA HTC-MODBUS-V Przetwornik stężenia CO2 MODBUS RTU Opracował:

HOTCOLD s.c. 2017-06-08

1. Wprowadzenie... 3 1.1. Funkcje urządzenia... 3 1.2. Charakterystyka urządzenia... 3 2. Dane techniczne...4 2.1. Parametry ogólne przetwornika... 4 2.2. Parametry pomiaru CO2... 4 2.3. Parametry wyjścia analogowego... 4 2.4. Parametry termoelementu... 5 2.5. Parametry interfejsu szeregowego... 5 3. Instalacja... 5 3.1. Bezpieczeństwo... 5 3.2. Konstrukcja urządzenia... 5 3.3. wyprowadzeń... 6 3.4. Konfiguracja adresu... 7 3.5. Konfiguracja prędkości... 7 3.6. Przywracanie ustawień fabrycznych... 7 3.7. Sygnalizacja LED... 8 3.8. Wytyczne... 8 4. Protokół MODBUS...9 4.1. Mapa rejestrów... 9 4.2. Funkcje protokołu... 10 4.3. Format danych... 11 4.4. Suma kontrolna CRC... 11 Strona 2 z 15

1. Wprowadzenie Przedmiotem niniejszego opracowania jest charakterystyka funkcjonalności przetwornika stężenia CO2 opartego na czujniku TELAIRE 6613, z interfejsem RS-485 z wbudowanym protokołem MODBUS RTU, z wyjściem analogowym w standardzie 0-10V oraz w zależności od wersji, doposażonego w czujnik pomiaru temperatury wyprowadzenia dostępne na złączu. UWAGA: Przed przystąpieniem do uruchomienia modułu należy zapoznać się z tekstem zawartym w niniejszym opracowaniu. 1.1. Funkcje urządzenia pomiar stężenia CO2 analogowe wyjście napięciowe 0-10 [V] (proporcjonalne do stężenia CO2) wyprowadzenia czujnika temperatury dostępne na złączu diodowa sygnalizacja pracy urządzenia szeregowy interfejs RS-485 (odczyt wartości pomiarowych, konfiguracja parametrów pracy) o protokół MODBUS RTU o komunikacja w trybie HALF DUPLEX o sprzętowo konfigurowany adres (1-127) o sprzętowo konfigurowana prędkość (9600, 19200, 38400, 57600, 115200) 1.2. Charakterystyka urządzenia Podstawową funkcją przetwornika CO2 v2 jest pomiar zawartości stężenia CO2 w powietrzu. Zmierzone za pośrednictwem zintegrowanego czujnika TELAIRE 6613 wartości stężenia CO2 są następnie przeliczane i uśredniane w mikrokontrolerze, dostępne są w jego pamięci (w rejestrach typu HOLDING REGISTERS) zgodnie ze standardem MODBUS. Odczyt rejestrów odbywa się za pomocą funkcji protokołu MODBUS przesyłanych szeregowym interfejsem RS-485. Sygnalizacja braku / błędu czujnika, stanu przekroczenia zakresu pomiarowego, realizowana jest za pośrednictwem rejestrów statusowych. prezentowane mogą być także w postaci analogowej na wyjściu napięciowym w standardzie 0-10V. Jako opcja istnieje także możliwość zastosowania czujnika termorezystancyjnego (RTD), z wyprowadzeniami dostępnymi na złączu. Strona 3 z 15

2. Dane techniczne 2.1. Parametry ogólne przetwornika Zasilanie - napięciem stałym - napięciem przemiennym Pobór prądu - typowy 1) Sygnalizacja LED<70,0 ma - maksymalny 2) Złącze instalacyjne Wymiary Waga Montaż 3) Środowisko pracy Temperatura pracy DC 24V (20...30V) AC 24V (20...27,6V) <35,0 ma opis w punkcie Sygnalizacja LED śrubowe w rastrze 5.00mm ( 2,5mm2) 120 x 80 x 25 (L x H x W) 100 g naścienny bezpyłowe, powietrze, gazy neutralne 0 C 50 C 1) Średni pobór prądu urządzenia w warunkach: transmisja 10 zapytań na sekundę; prędkość transmisji 9600 b/s; jednoczesny odczyt 3 rejestrów; rezystory terminujące magistralę 2 x 120Ω; zasilanie 24V DC, wyjście napięciowe obciążone rezystancją 10k; 2) Maksymalny chwilowy pobór prądu urządzenia w warunkach jak w punkcie 1) + wyjście napięciowe obciążone rezystancją 1k; 3) Instalacji urządzenia powinien dokonywać wykwalifikowany personel; Orientacja pionowa zgodnie z oznakowaniem UP góra, DOWN dół; 2.2. Parametry pomiaru CO2 Typ czujnika Zakres pomiarowy Dokładność: - w zakresie 400 1250 ppm - w zakresie 1250 2000 ppm Częstotliwość próbkowania Czas odpowiedzi 1) TELAIRE 6613 0 2000 ppm ±3% ± 5 % ± 30 ppm 2Hz < 2 min 1) Podany czas odpowiedzi jest równy jednej stałej czasowej odpowiadającej 90% wartości ustalonej; 2.3. Parametry wyjścia analogowego Typ wyjścia Zakres wyjściowy Rozdzielczość Obciążalność Częstotliwość odświeżania napięciowe 10 V 12 bitów (5 mv) RL > 1 kω 2 Hz Strona 4 z 15

2.4. Parametry sensora temperatury (RTD) Typ czujnika Zakres pomiarowy Dokładność np. NTC1,8K, NTC5,02K, Pt100, Pt1000 i inne 0 C 50 C Zależna od użytego sensora np. Pt100 kl.a +/-0,15 C s Czas odpowiedzi 1) 1) Warunkiem uzyskania podanych czasów odpowiedzi jest przepływ powietrza > 1m/s; podany czas odpowiedzi jest równy jednej stałej czasowej odpowiadającej 63% wartości ustalonej; 2.5. Parametry interfejsu szeregowego Warstwa fizyczna Protokół komunikacji Konfiguracje połączeń 1) Prędkości transmisji RS-485 MODBUS RTU HALF DUPLEX 9600 / 19200 / 38400 / 57600 / 115200 b/s 1) HALF DUPLEX komunikacja dwukierunkowa jedną parą przewodów; 3. Instalacja 3.1. Bezpieczeństwo Instalacji urządzenia powinien dokonywać wykwalifikowany personel! Wszystkie podłączenia należy wykonać zgodnie ze schematami elektrycznymi przedstawionymi w niniejszej specyfikacji! Przed przystąpieniem do uruchomienia należy sprawdzić wszystkie podłączenia elektryczne! 3.2. Konstrukcja urządzenia Rysunek 1. Widok obwodu drukowanego przetwornika. Strona 5 z 15

3.3. wyprowadzeń Rysunek 2. wyprowadzeń przetwornika CO2 w wersji naściennej. Rysunek 3. Schemat podłączenia przetwornika CO2 w wersji naściennej. Strona 6 z 15

3.4. Konfiguracja adresu Urządzenie wyposażono w przełącznik 7-pozycyjny do sprzętowego ustalenia adresu (od 1 do 127 ). Ustawienie adresu 0 na przełączniku spowoduje użycie adresu zapisanego w urządzeniu za pośrednictwem protokołu MODBUS (domyślnie 1 ). Rysunek 4. Adresacja przetwornika. 3.5. Konfiguracja prędkości Urządzenie wyposażono w układ 3 zworek do sprzętowego ustalenia prędkości interfejsu RS-485 (zgodnie z poniższą tabelą). Brak zworek spowoduje użycie wartości prędkości zapisanej w urządzeniu za pośrednictwem protokołu MODBUS (domyślnie 9600 b/s ). Rysunek 5. Konfiguracja prędkości interfejsu RS-485. 3.6. Przywracanie ustawień fabrycznych Funkcja przywracania ustawień fabrycznych dotyczy wyłącznie parametrów transmisji interfejsu RS-485 (w tym adresu i prędkości). Aby przywrócić ustawienia należy nacisnąć i przytrzymać przycisk S1 przez około 2 sekundy (zabezpieczenie przed przypadkowym naciśnięciem). Gdy dioda D1 zacznie mrugać należy zwolnić przycisk. Urządzenie zacznie działać z nowymi ustawieniami automatycznie. Strona 7 z 15

3.7. Sygnalizacja LED Tabela poziomów / statusów sygnalizowanych na diodzie D2: Status Kolor diody Zachowanie 1 rozgrzewanie modułu CO2 zielony mruganie (250ms / 250ms**) 2 0 800 [ppm] * zielony świecenie ciągłe 3 800 1200 [ppm] * żółty świecenie ciągłe 4 1200 2000 [ppm] * czerwony świecenie ciągłe 5 > 2000 [ppm] czerwony mruganie (250ms / 250ms**) 6 brak czujnika CO2 lub inny błąd czerwony mruganie (100ms / 600ms**) (*) Histereza przełączania stanu świecenia diody wynosi ± 50 ppm. (**) Mruganie (XXX ms / YYY ms) oznacza XXX czas załączenia, YYY czas wyłączenia 3.8. Wytyczne W przypadku pracy w otoczeniu dużych zakłóceń, należy zastosować przewody ekranowane. Ekran przewodu należy podłączyć do najbliższego punktu PE od strony zasilacza. Rysunek 6. Sposób podłączenia przetwornika do magistrali RS-485 pracującej w trybie HALF DUPLEX. Strona 8 z 15

4. Protokół MODBUS 4.1. Mapa rejestrów Tabela rejestrów: Nr rejestru 1 400 2000 2 0/1/2/3/4/5/6 3 1000 (0x03E8) 4 5 6 1234 1/2/3 wg tabeli poleceń 7 8 9 10 11 0-65535 0-65535 0-65535 0-65535 - 12 400 5000 Stężenie CO2 [ ppm ] ( 1 = 1 ppm ) Rejestr statusowy ( 0: NO SENSOR, 1: SENSOR OK, 2: ERROR, 3: WARM UP, 4: CALIBRATION, 5: IDLE, 6: OVER RANGE (*) Wartość testowa - do weryfikacji poprawności odczytu rejestrów Rejestr hasła Rejestr poleceń Rejestr parametru Licznik poprawnych ramek Licznik wyjątków Licznik błędnych CRC Licznik błędnych bajtów nie używany wyłącznie dla celów serwisowych (*) NO SENSOR brak czujnika; SENSOR OK prawidłowe działanie czujnika; ERROR błąd działania czujnika; WARM UP czujnik w trakcie podgrzewania; CALIBRATION czujnik w trakcie kalibracji; IDLE czujnik w trybie uśpienia; OVER RANGE przekroczenie zakresu pomiarowego; Tabela poleceń: Nr polecenia Funkcja 1 Ustaw adres urządzenia Parametry 1 247 (1-wartość domyślna) 96 9600 b/s (wartość domyślna) 192 19200 b/s 384 38400 b/s 576 57600 b/s 1152 115200 b/s 2 Ustaw prędkość transmisji 3 Ustaw bity parzystości 0 NO PARITY; brak bitu parzystości 1 EVEN PARITY; (wartość domyślna) 2 ODD PARITY, 4 Ustaw bity Stopu 1 1 x STOP; 1 bit stopu (wartość domyślna) 2 2 x STOP; 2 bity stopu 5 Ustaw elewację 105 Odczytaj elewację 6 Reset urządzenia 0 2500 [m n.p.m.] (wysokość nad poziomem morza) j.w. 1 programowy reset urządzenia Uwagi: Podanie błędnej lub spoza zakresu wartości parametru, skutkuje wpisaniem do rejestru poleceń wartości 0xEEEE. Każdorazowemu wywołaniu polecenia musi towarzyszyć wpisanie hasła (1234 decymalnie). Wywołanie polecenia poprzez pojedyncze wpisy do rejestrów, musi zostać zakończone wpisaniem hasła. Strona 9 z 15

4.2. Funkcje protokołu W przetworniku zaimplementowano następujące funkcje standardu MODBUS: 4.2.1. KOD ZNACZENIE 03 (0x03) Odczyt N x 16-bitowych rejestrów 16 (0x10) Zapis N x 16-bitowych rejestrów Odczyt zawartości grupy rejestrów wyjściowych (0x03) Format żądania: Adres urządzenia Kod funkcji Adres bloku danych Liczba rejestrów (N) Suma kontrolna CRC Rozmiar 1 247 (0xF7) 0x03 0x0000 0xFFFF 1 125 (0x7D) wg obliczeń Rozmiar y N x 1 247 (0xF7) 0x03 2xN wg mapy rejestrów wg obliczeń Rozmiar 1 247 (0xF7) 0x83 0x01 / 0x02 / 0x03 / 0x04 wg obliczeń Format odpowiedzi: Adres urządzenia Kod funkcji Licznik bajtów rejestrów Suma kontrolna CRC Format błędu: Adres urządzenia Kod funkcji Kod błędu Suma kontrolna CRC 4.2.2. Zapis do grupy rejestrów wyjściowych (0x10) Format żądania: Adres urządzenia Kod funkcji Adres bloku danych Liczba rejestrów (N) Licznik bajtów Suma kontrolna CRC Rozmiar N x 1 247 (0xF7) 0x10 0x0000 0xFFFF 1 123 (0x7B) 2xN użytkownika wg obliczeń Rozmiar 1 247 (0xF7) 0x10 0x0000 0xFFFF 1 123 (0x7B) wg obliczeń Rozmiar 1 247 (0xF7) 0x90 0x01 / 0x02 / 0x03 / 0x04 wg obliczeń Format odpowiedzi: Adres urządzenia Kod funkcji Adres bloku danych Liczba rejestrów (N) Suma kontrolna CRC Format błędu: Adres urządzenia Kod funkcji Kod błędu Suma kontrolna CRC Strona 10 z 15

4.3. Format danych Rysunek 7. Przesył danych w standardzie MODBUS RTU zaimplementowany w przetworniku. Rysunek 8. Format znaku w standardzie MODBUS RTU zastosowany w przetworniku. Rysunek 9. Format pól danych i CRC w standardzie MODBUS RTU zastosowany w przetworniku. 4.4. Suma kontrolna CRC Zgodnie ze standardem MODBUS, do wyliczenia sumy kontrolnej CRC wykorzystano wielomian: X16 + X15 + X2 + 1. 4.4.1. Bitowy algorytm liczenia CRC: Procedura wyznaczania sumy kontrolnej CRC metodą bitową: a) załadowanie wartości 0xFFFF do 16-bitowego rejestru CRC; b) pobranie pierwszego bajta z bloku danych i wykonanie operacji EX-OR z młodszym bajtem rejestru CRC, umieszczenie rezultatu w rejestrze; c) przesunięcie zawartości rejestru CRC w prawo o jeden bit w kierunku najmniej znaczącego bitu (LSB), wyzerowanie najbardziej znaczącego bitu (MSB); d) sprawdzenie stanu najmłodszego bitu (LSB) w rejestrze CRC, jeżeli jego stan równa się 0, to następuje powrót do punktu c, jeżeli 1, to wykonywana jest operacja EX-OR rejestru CRC ze stałą 0xA001; e) powtórzenie punktów c i d do ośmiu razy, co odpowiada przetworzeniu całego bajta; f) powtórzenie sekwencji b, c, d, e dla kolejnego bajta wiadomości, kontynuacja tego procesu aż do przetworzenia wszystkich bajtów wiadomości; g) zawartość rejestru CRC po wykonaniu wymienionych operacji jest poszukiwaną wartością sumy kontrolnej CRC; Strona 11 z 15

h) dopisanie sumy kontrolnej CRC do ramki MODBUS RTU musi zostać poprzedzone zamianą miejscami starszego i młodszego bajta rejestru CRC. 4.4.2. Tablicowy algorytm liczenia CRC: Przykład implementacji procedury wyznaczania sumy kontrolnej CRC metodą tablicową: /* The function returns the CRC as a unsigned short type */ unsigned short CRC16 ( puchmsg, usdatalen ) /* message to calculate CRC upon */ unsigned char *puchmsg ; /* quantity of bytes in message */ unsigned short usdatalen ; { /* high byte of CRC initialized */ unsigned char uchcrchi = 0xFF ; /* low byte of CRC initialized */ unsigned char uchcrclo = 0xFF ; /* will index into CRC lookup table */ unsigned uindex ; /* pass through message buffer */ while (usdatalen--) { /* calculate the CRC */ uindex = uchcrclo ^ *puchmsg++ ; uchcrclo = uchcrchi ^ auchcrchi[uindex] ; uchcrchi = auchcrclo[uindex] ; } return (uchcrchi << 8 uchcrclo) ; } Strona 12 z 15

/* Table of CRC values for high order byte */ static unsigned char auchcrchi[] = { 0x40 } ; /* Table of static char 0x04, 0xCC, 0x08, 0xC8, 0x1D, 0x1C, 0x11, 0xD1, 0x37, 0xF5, 0x3B, 0xFB, 0x2E, 0x2F, 0x22, 0xE2, 0x62, 0x66, 0x6E, 0xAE, 0x7B, 0x7A, 0x77, 0xB7, 0x51, 0x93, 0x5D, 0x9D, 0x48, 0x49, 0x44, 0x84, 0x40 }; 0xC6, 0x0E, 0xDA, 0x17, 0x33, 0x3D, 0xE9, 0x24, 0xA0, 0xA4, 0xA8, 0xBD, 0xB1, 0x97, 0x9B, 0x8E, 0x82, 0x06, 0x0A, 0x1A, 0x16, 0xF3, 0xFF, 0x29, 0x25, 0x60, 0x6C, 0x68, 0xBC, 0x71, 0x55, 0x5B, 0x8F, 0x42, 0x07, 0xCA, 0x1E, 0xD6, 0xF2, 0x3F, 0xEB, 0xE5, 0x61, 0xAC, 0x78, 0x7C, 0x70, 0x95, 0x99, 0x4F, 0x43, 0xC7, 0xCB, 0xDE, 0xD2, 0x32, 0x3E, 0x2B, 0x27, 0xA1, 0xAD, 0xB8, 0xB4, 0xB0, 0x94, 0x59, 0x8D, 0x83, 0x05, 0x0B, 0xDF, 0x12, 0x36, 0xFE, 0x2A, 0xE7, 0x63, 0x6D, 0xB9, 0x74, 0x50, 0x54, 0x58, 0x4D, 0xC5, 0xC9, 0x1F, 0x13, 0xF6, 0xFA, 0xEA, 0xE6, 0xA3, 0xAF, 0x79, 0x75, 0x90, 0x9C, 0x98, 0x4C, 0xC4, 0x09, 0xDD, 0xD3, 0xF7, 0x3A, 0xEE, 0x26, 0xA2, 0x6F, 0xBB, 0xB5, 0x91, 0x5C, 0x88, 0x8C, CRC values for low order byte auchcrclo[] = { 0xC3, 0x03, 0x02, 0x0C, 0x0D, 0xCD, 0x0F, 0xCF, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDC, 0x14, 0xD4, 0xD5, 0x15, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0x35, 0x34, 0xF4, 0x3C, 0xFC, 0x39, 0xF9, 0xF8, 0x38, 0x28, 0xEF, 0x2D, 0xED, 0xEC, 0x2C, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xA6, 0xA7, 0x67, 0xA5, 0x65, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xBA, 0xBE, 0x7E, 0x7F, 0xBF, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x53, 0x52, 0x92, 0x96, 0x56, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x89, 0x4B, 0x8B, 0x8A, 0x4A, 0x85, 0x45, 0x87, 0x47, 0x46, */ 0xC2, 0xCE, 0xDB, 0xD7, 0xF1, 0xFD, 0xE8, 0xE4, 0xE0, 0x64, 0xA9, 0x7D, 0x73, 0x57, 0x9A, 0x4E, 0x86, Strona 13 z 15