Przejdź do treści

Własna aplikacja do INTEGRY – liczymy sumę kontrolną CRC i testujemy (część 2)

Jak niestandardowo wykorzystać RS-232 w manipulatorze INT-KLCD?

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.

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ć.

integra crc lcd
Program do szybkiego obliczania sumy kontrolnej CRC dla INT-KLCD. Nowsza wersja dodatkowo posiada wbudowany generator ramek. Wystarczy wybrać funkcję i podać parametry, a program sam zaprojektuje pełną ramkę.

Ok, skoro już wiemy, jak pozyskać 2 bajtową sumę kontrolną dla naszej ramki, to czas na testy.

Czas na testy

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.

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.

Poprzez poniższy przycisk 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).

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.

lcd rs integra
Domyślnie port RS-232 w manipulatorze INT-KLCD jest włączony (opcja: Komunikacja RS). Jeżeli jednak opcja zostanie wyłączona, to nie będzie możliwości skorzystania z tego protokołu integracji jak również z programu GuardX. Dla naszych potrzeb, opcja musi pozostać włączona.

W ramach eksperymentu korzystamy z konwertera USB-RS, ale w docelowym projekcie integrator może użyć przewodu skonstruowanego specjalnie na tą okoliczność.

satel int-klcd rs-232 schemat
Alternatywny sposób podłączenia portu RS-232 manipulatora do komputera (zamiast konwertera USB-RS). Źródło: www.satel.pl

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.

Oceń
Dodaj poradę do ulubionych

Dodaj komentarz

Możliwość komentowania dostępna jest dla zalogowanych użytkowników