Własna aplikacja do INTEGRY – liczymy sumę kontrolną CRC i testujemy (część 2)
Dariusz Bembenek
W firmie zajmuje się sprawami technicznymi, które dotyczą systemów alarmowych. Prowadzi warsztaty z systemów Perfecta oraz Integra.
Kontakt
Zobacz również
Zgodnie z wcześniejszą zapowiedzią, w tej części będziemy wysyłać testowe ramki do manipulatora i będziemy sprawdzać, czy to działa. Zanim jednak to przetestujemy, musimy nauczyć się obliczać sumę kontrolną CRC.
Jaki jest wzór na obliczenie sumy kontrolnej dla INT-KLCD?
W dokumentacji protokołu można znaleźć opis, jak należy tego dokonać. Obliczenie sprowadza się do wykonania następujących czynności:
- pomiędzy bajtami ramki d1…dn, wykonaj funkcję (XOR) (alternatywa wykluczająca), wynik wpisz do CRC1
- pomiędzy bajtami ramki d1…crc1, wykonaj dodawanie, wpisz wynik do CRC2 (uwzględnij najmłodszy bajt)
Z powyższego wynika, że dla naszych ustalonych bajtów przeprowadzamy dwie operacje. Wynik pierwszej traktujemy jako jedną ze zmiennych, którą wkładamy do drugiej operacji (dlatego d1…crc1).
Pseudo kod:
CRC1 = (d1 xor d2 xor d3 xor d4 xor … dn)
CRC2 = (d1 + d2 + d3 + d4 + … dn + CRC1) AND 0x00FF
Początek ramki i koniec ramki nie biorą udziału w obliczaniu CRC. Na poniższym filmie pokazano, w jaki sposób można obliczyć CRC korzystając z kalkulatora wbudowanego w system Windows.
Jak obliczyć sumę kontrolną, korzystając z kalkulatora Windows?
Inne sposoby na obliczenie sumy kontrolnej
W rzeczywistych projektach, każdorazowe liczenie sumy kontrolnej w kalkulatorze Windows jest zdecydowanie niewygodne. Programista dąży do tego, aby ten proces zautomatyzować. Na potrzeby testów, przygotowałem małą aplikację (Windows) do obliczania sumy kontrolnej. Aplikacja jest dostępna poniżej:
Na poniższym filmie pokazano, w jaki sposób należy korzystać z programu do liczenia CRC. Dodam, że podawane bajty w postaci szesnastkowej można podawać jako: FF lub 0xFF lub -FF. Program radzi sobie z białymi znakami. Jeżeli ramka będzie podana w ekstremalnie zły sposób, to program wyrzuci odpowiedni komunikat.
W powyższym filmie pokazano „półautomatyczne” obliczanie ramki, ale w docelowej wersji aplikacji, program posiada wbudowany generator i sam oblicza pełną ramkę. Aplikacja pozwala na obliczenie 2-bajtowej sumy kontrolnej i przedstawia pełną ramkę, którą należy wysłać do portu RS-232 w manipulatorze INT-KLCD. Dodatkowo, program pokazuje ramkę zapisaną w formacie, który jest akceptowany przez program „Terminal”, z którego będziemy zaraz korzystać.
Ok, skoro już wiemy, jak pozyskać 2 bajtową sumę kontrolną dla naszej ramki, to czas na testy.
Czas na TESTY
Narzędzia do przeprowadzenia testów
Do naszych eksperymentów, należy mieć ze sobą następujące komponenty:
- centrala Integra
- manipulator INT-KLCD (lub inny do Integry, posiadający złączkę PIN5 z RS-232)
- konwerter USB-RS
- kalkulator Windows lub powyższy program (liczenie CRC)
- program do obsługi portu RS-232, np. Bray Terminal
Program można ściągnąć ze strony:
Po pobraniu, warto program uruchamiać jako administrator.
Krok 1: Ustalenie ramek do testowania
W ramach ćwiczeń, proponuję następujące ramki: załączenie czuwania strefy 1, wyłączenie czuwania, załączenie wyjście OUT1 i wyłączenie tego wyjścia. Mamy więc do zaprojektowania 4 ramki i wszystkie te ramki już pokazaliśmy w filmie wyżej.
Pod poniższym linkiem można ściągnąć plik tekstowy, a w nim opisywane ramki.
Powyższe ramki przed każdym bajtem zawierają znak dolara, który jest wymagany do programu „Terminal” (jeżeli chcemy wysyłać ciągi znaków szesnastkowych).
Krok 2: Konfiguracja programu Terminal (baudrate itp.).
Port RS-232 w INT-KLCD pracuje na następujących parametrach:
- prędkość 4800
- 8 bitów danych
- 1 bit stopu
Są to popularne ustawienia i większość programów bez problemu przyjmie takie parametry. Na poniższym zrzucie widać zaznaczenie właściwych opcji w programie Terminal.
Jeszcze jedna ważna sprawa. Aby Integra mogła przyjmować ramki po RS-232 manipulatora, to należy upewnić się, że taka możliwość jest włączona.
Krok 3: Podłączenie konwertera USB-RS do manipulatora i komputera
W ramach eksperymentu korzystamy z konwertera USB-RS, ale w docelowym projekcie integrator może użyć przewodu skonstruowanego specjalnie na tą okoliczność.
Krok 4: Testujemy!
Doszedłem do wniosku, że pokazywanie na screenach takich testów jest mało efektywne, dlatego zapraszam na kolejny seans. Film poniżej.
Wiemy już, w jaki sposób można wysyłać ramki do centrali i jaką mają postać. Teraz czas na integratora. W zależności od rodzaju projektu, integrator może z zewnętrznych systemów lub urządzeń wpuszczać do centrali odpowiednie ramki.
W tej części to wszystko. Mam nadzieję, że powyższe treści pozwoliły rozeznać się w możliwości sterowania pracą centrali Integra. W kolejnej części pokażę sposób na odbieranie danych z centrali Integra.
Centrala w sposób ciągły rozgłasza swój stan na porcie RS-232. Możemy przechwycić ramki zawierające m.in. informacje o czuwaniu stref, informacje o załączonych wyjściach itd. Analiza odbieranych danych w kolejnej części tego cyklu artykułów.
Powiązane produkty
INT-KLCD-BL Manipulator LCD
- Rodzaj manipulatora: LCD
- Kolor podświetlenia: niebieski
- Współpraca z centralami: INTEGRA
- Ilość wejść: 2
- Klasa środowiskowa: II
- Temperatura pracy: -10…+55 °C
- Certyfikat EN50131: Grade 3
- Napięcie zasilania (± 15%): 12 V
- Pobór prądu (gotowość): 17 mA
- Max pobór prądu: 101 mA
- Wymiary: 140 x 126 x 26 mm
USB-RS Kabel do łączenia urządzeń Satel z komputerem
- Typ urządzenia: Konwerter do programowania
- Współpraca: Urządzenia z gniazdami RS-232 / RS-232 (TTL)
- Inne: Kabel USB typu B (1.8 m)
Powiązane porady
Własna aplikacja do INTEGRY – analiza protokołu RS-232 w LCD (część 1)
Ta seria artykułów będzie dotyczyć budowy aplikacji (Windows), która ma za zadanie zarządzać pracą centrali Integra. Wspólnie zajrzymy do uproszczonego protokołu integracji, który dostępny jest w złączu PIN5 manipulatorów INT-KLCD. Artykuł ma tylko zasygnalizować możliwość integracji i stanowi bazę do dalszych, własnych działań. Znajomość zagadnień prezentowanych w artykule wykracza poza zakres, który instalator znać powinien. … Czytaj więcej »
Własna aplikacja do INTEGRY – odbieramy dane z centrali (część 3)
Do tej pory zajmowaliśmy się nadawaniem danych do centrali, korzystając ze złącza PIN5 w LCD. I to zadziałało (patrz część 2 serii). Jednak RS-232 to nie tylko nadawanie, ale też odbieranie danych. W ramach złącza PIN5 również zostało to uwzględnione. Trzecia część tej serii artykułów ma za zadanie wyjaśnić, co oznaczają poszczególne bajty odbierane z … Czytaj więcej »
Integracja centrali INTEGRA z zewnętrznym programem – protokół integracji ETHM-1
Moduł ethernetowy ETHM-1 Plus oprócz standardowych funkcji i możliwości, udostępnia specjalny protokół integracyjny. W naszych zasobach dostępny jest również artykuł, który zawiera program do liczenia sumy kontrolnej. Polecamy to narzędzie jako pomocnik przy pisaniu własnej aplikacji. Link do wspomnianego programu dostępny jest na dole tego artykułu. ETHM-1 plus – ethernetowy moduł komunikacyjny Protokół integracyjny został stworzony … Czytaj więcej »