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.
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).
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.
Dodaj komentarz
Możliwość komentowania dostępna jest dla zalogowanych użytkowników