Elektronika Laboratoryjna - Monitoring temperatury i wilgotności
www.label.pl | LAB-EL Logo | tel. +48 22 753 61 30 | fax +48 22 753 61 35
LAB-EL » Dokumenty » Protokoły komunikacji » LB-706 » LB-706

PANEL LB-706: OPIS KOMUNIKACJI

-----------------------------------------------------------------------------
f/v: 1.3
-----------------------------------------------------------------------------
Paramerty komunikacji: 9600 bps, 8N1. Uruchomienie komunikacji nastepuje po
podaniu sygnalu RTS.

Komunikacja polega na wymianie komunikatow: zapytanie - odpowiedz.
Komunikaty maja nastepujaca strukture:

        <ff><ss><ii><blok><cc><eol>

<ff> - numer funkcji (dwie cyfry hex)
<ss> - numer podfunkcji (dwie cyfry hex)
<ii> - numer identyfikacyjny (dwie cyfry hex)
<cc> - suma kontrolna (dwie cyfry hex)
<blok> - blok danych o zawartosci zaleznej od rodzaju komunikatu
<eol> - ciag znakow: CR LF (znak CR moze byc pominiety przez strone pytajaca)

Istnieje mozliwosc wlaczenia trybu w ktorym komunikaty odpowiedzi beda
wysylane automatycznie bez zapytania - dotyczy to komunikatow informujacych
o parametrach podlegajacych zmianie (np. wyniki pomiarow).

Blok danych <blok> w przypadku pytania zawiera parzysta liczbe cyfr
hexadecymalnych. W przypadku odpowiedzi <blok> sklada sie z sekwencji pol
rozdzielanych dwukropkami, kazde pole zawiera parzysta liczbe cyfr
hexadecymalnych, pierwszy i ostatni znak w <bloku> to dwukropek.

Numer identyfikacyjny komunikatu <ii> nie ma wplywu na przebieg polecenia
zawartego w komunikacie. Komunikat odpowiedzi zawsze zawiera identyczne
<ii> jak komunikat adekwatnego zapytania. W komunikatach generowanych
automatycznie pole <ii> ma wartosc 0x00.

Przy obliczaniu sumy kontrolnej <cc> nalezy uwzglednic wszystkie znaki
komunikatu, ktore sa cyframi (hex). Kazde kolejne 2 znaki, poczawszy od
poczatku komunikatu, tworza oktet (dwie cyfry hex w kolejnosci MS, LS).
Suma wartosci wszystkich oktetow (z <cc> wlacznie) komunikatu modulo 0x100
powinna byc rowna 0x00.

Ponizej opisane sa szczegolowo komunikaty. W formalnym opisie uzyto
nastepujacych symboli:
        <nazwa> - metasymbol, ktorego znaczenie jest opisane gdzie indziej,
        [<dane>] - oznacza opcjonalne wystapienie bloku <dane>,
        {<dane>}(<x>) - oznacza <x>-krotne wystapienie bloku <dane>.
Pozostale symbole sa uzyte literalnie.

Jako pierwszy podano komunikat zapytania, jako drugi komunikat odpowiedzi.
Przy nazwie komunikatu podano jego klase:
        S - komunikat serwisowy - nie nalezy uzywac w programch uzytkownika
        U - komunikat do uzytku w programach uzytkownika

W opisie komunikatow pominieto pole <cc>. W opisie wystepuja nazwy flag -
ich znaczenie jest opisane w osobnym punkcie.

-----------------------------------------------------------------------------
ROZKAZY SONDY LB-701 [#01]
-----------------------------------------------------------------------------
** dane o sondzie [U]
    0101<ii><eol>
    0101<ii>:<ss>[:<ffff>:<wersja>[:<numer>:<czujniki>:<data_kalibracji>]]<eol>

    <ss> - status (2 cyfry hex rozpisane na bity):
        0    - obciecie komunikatu (== FlagNoProbe || !Opt701Flag)
        1..5 - zero
        6    - Opt701Flag
        7    - FlagNoProbe

    <wersja> - wersja sondy LB-701 (2 cyfry hex):
        mozliwe wartosci: 02,03,04 (p2,p3,p4)

    <ffff> - flagi (4 cyfry hex rozpisane na bity):
        0    - obciecie komunikatu (== FlagCaliburErr || FlagCalibHwErr)
        1..7 - zero
        8    - FlagCaliburErr              12 - DisRhChann
        9    - FlagCalibHwErr              13 - DisTaChann
        10   - zero                        14 - FullTaRng
        11   - FlagCalibDiag               15 - HiResTempFlag

    <numer> - numer seryjny sondy (4 cyfry hex)

    <czujniki> - typy czujnikow (2 cyfry hex rozpisane na bity):
        0..3 - czujnik wilgotnosci
            0 - nieznany
            1 - typ 1
            2 - typ 2
        4..7 - czujnik temperatury
            0 - nieznany
            1 - pt100
            2 - pt1000

    uwagi: w sondzie p2 czujniki zawsze maja typ 'nieznany'

           niezaleznie od zawartosci tego pola

    <data_kalibracji> (2 cyfry hex rozpisane na bity):
        0..3 - miesiac (0 == styczen)
        4..7 - rok (0 == 1993)
-----------------------------------------------------------------------------

-----------------------------------------------------------------------------
ROZKAZY PANELU LB-706 [#02]
-----------------------------------------------------------------------------
** odczyt pomiarow zwiazanych z sonda LB-701 [U]
    0200<ii><eol>
    0200<ii>:<ffff>:<tttttttt>:<hhhhhhhh>:<dddd>:<mmmmmmmm><eol>

** odczyt pomiarow zwiazanych z barometrem [U]
    0201<ii><eol>
    0201<ii>:<ffff>:<pppp><eol>

** odczyt pomiarow zwiazanych z sonda LB-754 [U]
    0202<ii><eol>
    0202<ii>:<ffff>:<tttttttt>:<uuuuuuuu>:<hhhh>:<dddd>:<mmmmmmmm><eol>

    <tttttttt> - temperatura (8 cyfr hex kodowanie U2) z rozdz. 0.01 degC
    <uuuuuuuu> - temperatura2 (8 cyfr hex kodowanie U2) z rozdz. 0.01 degC
    <hhhh>     - wilg. wzgledna (8 cyfr hex) z rozdz. 0.01 %
    <dddd>     - punkt rosy (8 cyfr hex kodowanie U2) z rozdz. 0.01 degC
    <mmmmmmmm> - wilg. absolutna [ppm_obj] (8 cyfr hex) z rozdz. 1ppm
    <pppp>     - cisnienie (4 cyfry hex) z rozdz. 0.1 hPa

    <ffff> - flagi (4 cyfry hex):
        0    - TaErrFlag            (komunikat: 0200 i 0202)
        1    - RhErrFlag            (komunikat: 0200 i 0202)
        2    - DpErrFlag            (komunikat: 0200 i 0202)
        3    - HpErrFlag            (komunikat: 0200 i 0202)
        4    - PrErrFlag            (komunikat: 0201)
        5    - Ta2ErrFlag           (komunikat: 0202)
        6    - PrDefault            (komunikat: 0201)
        7    - zero

        8    - DisRhChann           (komunikat: 0200)
        9    - DisTaChann           (komunikat: 0200)
        10   - FullTaRng            (komunikat: 0200 i 0202)
        11   - HiResTempFlag        (komunikat: 0200 i 0202)
        12   - zero
        13   - DispTaHiRes          (komunikat: 0200 i 0202)
        14   - DispTaAutoRes        (komunikat: 0200 i 0202)
        15   - DispPrMmUnit         (komunikat: 0201)

    uwagi:
        # wyswietlanie temperatury i temperatury2:
          Flaga 'HiResTempDisp' pochodzi z konfiguracji sondy i oznacza,
          ze sonda jest precyzyjnie skalibrowana i jest sens wyswietlania
          wyniku temperatury z rozdz. 0.01 degC. Flagi 'DispTaHiRes' i
          'DispTaAutoRes' naleza do konfiguracji uzytkownika i nalezy je
          rozumiec nastepujco:
          DispTaHiRes     DispTaAutoRes     rozdz. wyswietlania
              0               0                 0.1
              0               1                 decyduje 'DispTaHiRes'
              1               0                 0.01
              1               1                 decyduje 'DispTaHiRes'
          Jesli wyswietlana jest temperatura z rozdz. 0.1, to wynik
          nalezy zaokraglic.
          Flaga 'FullTaRng' oznacza, ze zakres zmiennosci temperatury
          wynosi -200.00..+550.00 degC, normalnie -40.00..+100.00 degC
        # wyswietlanie wilgotnosci wzgl.:
          Zaokraglic do 0.1 %, zakres zmiennosci 0.0..99.99 %
        # wyswietlanie temperatury pktu rosy:
          Zaokraglic do 0.1 degC, zakres zmiennosci -40.00..+100.00 degC
        # wyswietlanie wilgotnosci absol.:
          Rozdzielczosc 1 ppm, zakres zmiennosci 0..99999 ppm.
        # wyswietlanie cisnienia:
          Rozdzielczosc 0.1 hPa albo 0.1 mmHg, zakres zmiennosci
          0.0..6553.5 hPa. Flaga 'DispPrMmUnit' decyduje o przyjeciu
          mmHg jako jednostki cisnienia, wartosc bedzie wysylana
          w 0.1*hPa (nalezy przeliczyc: 1 hPa = 0.75006 mmHg)
        # ustawiona flaga 'PrDefault' oznacza (mimo ustawionej flagi
          'PrErrFlag') ze wartosc cisnienia jest poprawna, ale jest
          to cisnienie domyslne albo tymczasowe (wystepuje jesli
          w panelu nie ma zainstalowanego barometru)
        # flagi 'DisRhChann' i 'DisTaChann' obowiazuja dla sondy LB-701
          i oznaczaja wylaczony tor pomiarowy RH, TA - program uzytkownia
          nie powinien wtedy sygnalizowac bledu wartosci (mimo ustawionych
          bitow bledu) ale wygasic odpowiedni wyswietlacz
-----------------------------------------------------------------------------
** odczyt informacji o panelu [U]
    020A<ii><eol>
    020A<ii>:0706:<wersja>:<zgodnosc>:<ss>[:<numer>:<opcje>]<eol>

    <wersja> - wersja panelu/firmware (6 cyfr hex)
        3 oktety po 2 cyfry hex, koduja (w kolejnosci odczytu):
            1 oktet - wersja panelu (0 - wersja podstawowa)
            2 oktet - wersja firmware
            3 oktet - rewizja firmware

    <zgodnosc> - wersja.rewizja firmware (4 cyfry hex) z ktora zgodna
               jest biezaca wersja firmware.

    <ss> - status operacji (2 cyfry hex rozpisane na bity):
        0    - blad operacji (== FlagConfHwErr || FlagConfDevErr)
        1..2 - zero
        3    - FlagConfDevDiag
        4    - FlagConfHwErr
        5    - FlagConfUsrErr
        6    - FlagConfDevErr
        7    - FlagConfUsrDiag

    <numer> - numer seryjny panelu (4 cyfry hex) w zakr. 0..65535

    <opcje> - opcje wyposazenia panelu (4 cyfry hex rozpisane na bity):
        0     - Opt701Flag
        1     - OptBaroFlag
        2     - OptThermoFlag
        3..14 - zero
        15    - PanelGVer       (uproszczona klawiatura)

    Uwagi:
        # wersje firmware zwyczjowo nalezy przedstawiac jako 'x.y', gdzie
          x jest wersja a y rewizja (2 i 3 oktet)
        # pierwsza wersja firmware jest 1.0
        # wersja panelu inna niz zero bedzie zdefiniowana w razie
          koniecznosci
        # jesli program uzytkownika przeznaczony dla wersji podstawowej
          zdetekuje inna wersje panelu niz 0 (podstawowa) to powinien
          poinformowac o niezgodnosci wersji i nie obslugiwac tego panelu
        # Przyklad wykorzystania informacji 'zgodnosc': jesli wersja
          firmware jest 2.12 a zgodnosc 2.10, to program napisany dla
          wersji 2.10 moze obslugiwac ten panel.
          To, ze nowsza wersja firmware (vn) podaje zgodnosc ze starsza (vm),
          nie oznacza, ze flagi opisane jako 'zero' dla wersji (vm) beda
          skasowane w wersji vn. Jesli program na mocy 'zgodnosci' podejmuje
          sie obslugiwac nowsza wersje firmware vn a zna specyfikacje
          firmware vm, to w operacjach odczyt/modyfikacja/zapis powinien
          zachowywac stan nieznanych sobie flag (tych, ktore w specyfikacji
          vm opisane sa jako 'zero').
-----------------------------------------------------------------------------
** odczyt dodatkowych informacji o panelu [U] (LB-706 f/v >= 1.24)
    020B<ii><eol>
    020B<ii>:<ss>[:<rr>]<eol>

    <ss> - status operacji (2 cyfry hex rozpisane na bity):
        0    - blad operacji (== FlagConfHwErr || FlagConfDevErr)
        1..2 - zero
        3    - FlagConfDevDiag
        4    - FlagConfHwErr
        5    - FlagConfUsrErr
        6    - FlagConfDevErr
        7    - FlagConfUsrDiag
    <rr> - opcje zewn.rejestratora (2 cyfry hex rozpisane na bity):
        0    - obsluga drukarki Kafka
        1    - obsluga modemu LB-430
        2..7 - zero
-----------------------------------------------------------------------------
** ustawienia autowysylania [U]
    0230<ii><vvvv><eol>
    0230<ii>:<vvvv><eol>

    <vvvv> - dane do autowysylania:
        15..7 - zero                3 - AutoSendAdcTherm
        6 - AutoSendPid708          2 - AutoSendAdcBaro
        5 - AutoSendFlags           1 - AutoSendFreqs701
        4 - AutoSendTime            0 - AutoSendMsr
    uwagi:
    # komunikaty autowysylane pojawiaja sie z nastepujaca czestoscia:
        - komunikaty z danymi pomiarowymi - po wykonanym pomiarze
        - komunikaty z czasem i flagami - co 1 sek
    # komunikaty wysylane automatycznie maja pole <ii> == 0
    # AutoSendMsr - powoduje wyslanie danych po kazdym cyklu pomiarowym
      i w zaleznosci od opcji panelu beda to komunikaty typu: 0200, 0201, 0202
    # AutoSendFreqs701 - komunikat typu 0100
    # AutoSendAdcBaro - komunikat typu (TBD)
    # AutoSendAdcTherm - komunikat typu 0500
    # AutoSendTime - komunikat typu 0300
    # AutoSendFlags - komunikat typu 0207
    # AUtoSendPid708 - komunikaty typu: 0280, 0283
-----------------------------------------------------------------------------
** odczytanie czasu autowylaczania [U]
    0234<ii><eol>
    0234<ii>:<ss>[:<vv>]<eol>

    <ss> - status (2 cyfry hex rozpisane na bity):
        0    - obciecie komunikatu (== FlagConfHwErr || FlagConfUsrErr)
        1..3 - zero
        4    - FlagConfHwErr
        5    - FlagConfUsrErr
        6    - zero
        7    - FlagConfUsrDiag
    <vv> - czas autowylaczania (2 cyfry hex) - rozdzielczosc 5 sek
        0    - nieaktywne
        1    - 5 sek
        ...
        251  - 20 min 55 sek
        252..255 - wartosci niedozwolone

    uwagi: czas autowylaczania to czas po ktorym panel wylaczy sie samoczynnie
           liczony od ostatniego nacisniecia klawisza
    uwagi:
        # FlagConfHwErr - ozn. blad magistrali pamieci konfiguracji,
          blad ten jest w zasadzie nieodwracalny, ale mozna zasugerowac
          uzytkownikowi, aby wylaczyl na jakis czas panel i sprobowal
          ponownie
        # FlagConfUsrErr - ozn. ze obszar pamieci uzytkownika nie posiada
          poprawnej sumy kontrolnej i nalezy najpierw zainicjowac ten obszar
          rozkazem typu 021A
-----------------------------------------------------------------------------
** ustawienie czasu auto-wylaczania [U]
    0235<ii><vv><eol>
    0235<ii>:<vv>:<ss><eol>

    <vv> - czas autowylaczania (2 cyfry hex) (jak w 0234)
    <ss> - status (2 cyfry hex rozpisane na bity):
        0    - blad operacji (== blad zapisu || FlagConfHwErr || FlagConfUsrErr)
        1    - blad zapisu
        2..3 - zero
        4    - FlagConfHwErr
        5    - FlagConfUsrErr
        6    - zero
        7    - FlagConfUsrDiag

    uwagi:
        # blad zapisu - ozn. blad zapisu do pamieci konfiguracji uzytkownika
          program moze sprobowac powtorzyc te operacje, jesli sie nie powiedzie,
          to postepowanie takie jak w wypadku 'FlagConfHwErr'
        # FlagConfHwErr - ozn. blad magistrali pamieci konfiguracji,
          blad ten jest w zasadzie nieodwracalny, ale mozna zasugerowac
          uzytkownikowi, aby wylaczyl na jakis czas panel i sprobowal
          ponownie
        # FlagConfUsrErr - ozn. ze obszar pamieci uzytkownika nie posiada
          poprawnej sumy kontrolnej i nalezy najpierw zainicjowac ten obszar
          rozkazem typu 021A
-----------------------------------------------------------------------------
** odczyt flag wyswietlania [U]
    0238<ii><eol>
    0238<ii>:<ss>[:<ffff>]<eol>

    <ss> - status (2 cyfry hex rozpisane na bity):
        0    - obciecie komunikatu (== FlagConfHwErr || FlagConfUsrErr)
        1..3 - zero
        4    - FlagConfHwErr
        5    - FlagConfUsrErr
        6    - zero
        7    - FlagConfUsrDiag
    <ffff> - flagi (4 cyfry hex):
        15..6 - zero                3 - DispF3Press
        5 - DispF4Bit1              2 - DispPrMmUnit
        4 - DispF4Bit0              1 - DispTaAutoRes
                                    0 - DispTaHiRes
    uwagi:
        # 'FlagConfHwErr' - ozn. blad magistrali pamieci konfiguracji,
          blad ten jest w zasadzie nieodwracalny, ale mozna zasugerowac
          uzytkownikowi, aby wylaczyl na jakis czas panel i sprobowal
          ponownie
        # 'FlagConfUsrErr' - ozn. ze obszar pamieci uzytkownika nie posiada
          poprawnej sumy kontrolnej i nalezy najpierw zainicjowac ten obszar
          rozkazem typu 021A
        # interpretacja flag 'DispF4Bit0' i 'DispF4Bit1' (okreslaja one
          parametr wyswietlany na 4. polu wyswietlacza):
                DispF4Bit0      DispF4Bit1      parametr
                    0               0              wilg.absol. [ppm]
                    0               1              punkt rosy
                    1               0              zegar
                    1               1              jedn. cisnienia
        # ustawiona flaga 'DispF3Press' oznacza wyswietlanie wartosci
          cisnienia na 3. polu wyswietlacza
        # ustawiona flaga 'DispTaAutoRes' oznacza, ze przyrzad bedzie
          automatycznie dobieral rozdzielczosc wyswietlania temperatury,
          przy skasowanej 'DispTaAutoRes' o rozdzielczosci decyduje
          'DispTaHiRes': ustawiona dla rozdz. 0.01, skasowana dla 0.1 degC.
-----------------------------------------------------------------------------
** ustawienie flag wyswietlania [U]
    0239<ii><ffff><eol>
    0239<ii>:<ffff>:<ss><eol>

    <ffff> - flagi (4 cyfry hex) (jak w 0238)
    <ss> - status (2 cyfry hex rozpisane na bity):
        0    - blad operacji (== blad zapisu || FlagConfHwErr || FlagConfUsrErr)
        1    - blad zapisu
        2..3 - zero
        4    - FlagConfHwErr
        5    - FlagConfUsrErr
        6    - zero
        7    - FlagConfUsrDiag

    uwagi:
        # blad zapisu - ozn. blad zapisu do pamieci konfiguracji uzytkownika
          program moze sprobowac powtorzyc te operacje, jesli sie nie powiedzie,
          to postepowanie takie jak w wypadku 'FlagConfHwErr'
        # FlagConfHwErr - ozn. blad magistrali pamieci konfiguracji,
          blad ten jest w zasadzie nieodwracalny, ale mozna zasugerowac
          uzytkownikowi, aby wylaczyl na jakis czas panel i sprobowal
          ponownie
        # FlagConfUsrErr - ozn. ze obszar pamieci uzytkownika nie posiada
          poprawnej sumy kontrolnej i nalezy najpierw zainicjowac ten obszar
          rozkazem typu 021A
-----------------------------------------------------------------------------
** odczytanie domyslnego cisnienia [U]
    0240<ii><eol>
    0240<ii>:<ss>[:<pppp>]<eol>

    <ss> - status (2 cyfry hex rozpisane na bity):
        0    - obciecie komunikatu (== FlagConfHwErr || FlagConfUsrErr ||
                                    blad odczytu)
        1    - blad odczytu
        2..3 - zero
        4    - FlagConfHwErr
        5    - FlagConfUsrErr
        6    - DispPrMmUnit
        7    - FlagConfUsrDiag

    <pppp> - domyslne cisnienie (4 cyfry hex) w zakresie 690..1200 hPa
           z rozdz. 2 hPa

    uwagi:
        # blad odczytu - ozn. blad odczytu z pamieci konfiguracji uzytkownika
          program moze sprobowac powtorzyc te operacje, jesli sie nie powiedzie,
          to postepowanie takie jak w wypadku 'FlagConfHwErr'
        # FlagConfHwErr - ozn. blad magistrali pamieci konfiguracji,
          blad ten jest w zasadzie nieodwracalny, ale mozna zasugerowac
          uzytkownikowi, aby wylaczyl na jakis czas panel i sprobowal
          ponownie
        # FlagConfUsrErr - ozn. ze obszar pamieci uzytkownika nie posiada
          poprawnej sumy kontrolnej i nalezy najpierw zainicjowac ten obszar
          rozkazem typu 021A
-----------------------------------------------------------------------------
** zapisanie domyslnego cisnienia [U]
    0241<ii><pppp><eol>
    0241<ii>:<pppp>:<ss><eol>

    <ss> - status (2 cyfry hex rozpisane na bity):
        0    - blad operacji (== blad zapisu || FlagConfHwErr || FlagConfUsrErr)
        1    - blad zapisu
        2..3 - zero
        4    - FlagConfHwErr
        5    - FlagConfUsrErr
        6    - zero
        7    - FlagConfUsrDiag
    <pppp> - domyslne cisnienie (4 cyfry hex) w zakresie 690..1200 hPa
           z rozdz. 2 hPa

    uwagi:
        # blad zapisu - ozn. blad zapisu do pamieci konfiguracji uzytkownika
          program moze sprobowac powtorzyc te operacje, jesli sie nie powiedzie,
          to postepowanie takie jak w wypadku 'FlagConfHwErr'
        # FlagConfHwErr - ozn. blad magistrali pamieci konfiguracji,
          blad ten jest w zasadzie nieodwracalny, ale mozna zasugerowac
          uzytkownikowi, aby wylaczyl na jakis czas panel i sprobowal
          ponownie
        # FlagConfUsrErr - ozn. ze obszar pamieci uzytkownika nie posiada
          poprawnej sumy kontrolnej i nalezy najpierw zainicjowac ten obszar
          rozkazem typu 021A
-----------------------------------------------------------------------------
** zapisanie tymczasowego cisnienia [U]
    0242<ii><pppp><eol>
    0242<ii>:<pppp><eol>

    <pppp> - tymczasowe cisnienie (4 cyfry hex) w zakresie 750.0..1200.0 hPa
           z rozdzielczoscia 0.1 hPa:
              7500 - 750.0 hPa
              ...
              12000 - 1200.0 hPa
              pozostale wartosci niedozwolone
-----------------------------------------------------------------------------
** odczytanie opcji drukowania [U] (LB-706 f/v >= 1.22)
    0244<ii><eol>
    0244<ii>:<ss>:[<oooo>]<eol>

    <ss> - status (2 cyfry hex rozpisane na bity):
        0    - obciecie komunikatu (== blad zapisu || FlagConfHwErr ||
                                       FlagConfUsrErr || !PrintEnable)
        1    - blad odczytu
        2..3 - zero
        4    - FlagConfHwErr
        5    - FlagConfUsrErr
        6    - !PrintEnable (ustawiony jesli !PrintEnable)
        7    - FlagConfUsrDiag
    <oooo> - opcje drukowania (4 cyfry hex rozpisane na bity):
        0   - rodzaj drukarki: 0:kafka 1:kafka-r
        2,1 - rozmiar interlinii (wartosci: 0,1,2,3)
        3   - dodanie symbolu i nr-u czujnika do linii wydruku
        5,4 - wybrane urzadzenie rejestrujace (0,1,2):
                0 - pamiec+drukarka
                1 - pamiec
                2 - drukarka
                3 - wartosc zabroniona
        7,6 - format daty (0,1,2,3):
                0 - dd-mm-rrrr
                1 - rrrr-mm-dd
                2 - dd-mm-rr
                3 - rr-mm-dd
        15..8 - zero

    uwaga: rozmiar interlinii powinien byc przedstawiony uzytkownikowi
    jako 1,2,3,4 (czyli wartosc odczytana + 1)
-----------------------------------------------------------------------------
** zapisanie opcji drukowania [U] (LB-706 f/v >= 1.22)
    0245<ii><oooo><eol>
    0245<ii>:<oooo>:<ss><eol>

    <ss> - status (2 cyfry hex rozpisane na bity):
        0    - blad operacji (== blad zapisu || FlagConfHwErr ||
                                 FlagConfUsrErr || !PrintEnable)
        1    - blad zapisu
        2..3 - zero
        4    - FlagConfHwErr
        5    - FlagConfUsrErr
        6    - !PrintEnable (ustawiony jesli !PrintEnable)
        7    - FlagConfUsrDiag
    <oooo> - jak 0244
-----------------------------------------------------------------------------
** odczyt flag aktywnosci parametrow historii w przegladzie [U]
** (LB-706 f/v >= 1.28)
    0248<ii><eol>
    0248<ii>:<ss>[:<ffff>]<eol>

    <ss> - status (2 cyfry hex rozpisane na bity):
        0    - obciecie komunikatu (== FlagConfHwErr || FlagConfUsrErr)
        1..3 - zero
        4    - FlagConfHwErr
        5    - FlagConfUsrErr
        6    - zero
        7    - FlagConfUsrDiag
    <ffff> - flagi (4 cyfry hex):
        15..8 - zero
        7     - wylacza znaczenie bitow 0..3 - aktywne sa te parametry
                ktore sa wybrane aktualnie do rejestracji (opcja auto)
        6..4  - zero
        3     - aktywny przeglad ta2
        2     - aktywny przeglad pr
        1     - aktywny przeglad ta
        0     - aktywny przeglad rh
-----------------------------------------------------------------------------
** odczyt flag aktywnosci parametrow historii w przegladzie [U]
** (LB-706 f/v >= 1.28)
    0249<ii><ffff><eol>
    0249<ii>:<ffff>:<ss><eol>

    <ffff> - flagi (4 cyfry hex) (jak w 0248)
    <ss> - status (2 cyfry hex rozpisane na bity):
        0    - blad operacji (== blad zapisu || FlagConfHwErr || FlagConfUsrErr)
        1    - blad zapisu
        2..3 - zero
        4    - FlagConfHwErr
        5    - FlagConfUsrErr
        6    - zero
        7    - FlagConfUsrDiag
-----------------------------------------------------------------------------
** odczytanie opcji modemu [U] (LB-706 f/v >= 1.24)
    0250<ii><eol>
    0250<ii>:<ss>:[<oooo>]<eol>

    <ss> - status (2 cyfry hex rozpisane na bity):
        0    - obciecie komunikatu (== blad odczytu || FlagConfHwErr ||
                                       FlagConfUsrErr || !ModemEnable)
        1    - blad odczytu
        2..3 - zero
        4    - FlagConfHwErr
        5    - FlagConfUsrErr
        6    - !ModemEnable (ustawiony jesli !ModemEnable)
        7    - FlagConfUsrDiag
    <oooo> - opcje modemu (4 cyfry hex rozpisane na bity):
        0    - wlaczone alarmowanie przez sms
        1    - wlaczone alarmowanie przez siec
        2,3  - zero
        5,4  - wybrane urzadzenie rejestrujace (0,1,2):
                0 - pamiec+modem
                1 - pamiec
                2 - modem
                3 - wartosc zabroniona
        6    - proto:
                0 - tcp
                1 - udp
        7    - ciaglosc polaczenia ppp
                0 - rozlaczane
                1 - ciagle
        15..8 - zero
-----------------------------------------------------------------------------
** zapisanie opcji modemu [U] (LB-706 f/v >= 1.24)
    0251<ii><oooo><eol>
    0251<ii>:<oooo>:<ss><eol>

    <ss> - status (2 cyfry hex rozpisane na bity):
        0    - blad operacji (== blad zapisu || FlagConfHwErr ||
                                 FlagConfUsrErr || !ModemEnable)
        1    - blad zapisu
        2..3 - zero
        4    - FlagConfHwErr
        5    - FlagConfUsrErr
        6    - !ModemEnable (ustawiony jesli !ModemEnable)
        7    - FlagConfUsrDiag
    <oooo> - patrz 0250
-----------------------------------------------------------------------------
** odczytanie czasu powtarzania alarmu [U] (LB-706 f/v >= 1.24)
    0252<ii><eol>
    0252<ii>:<ss>[:<tttt>]<eol>

    <ss> - status (2 cyfry hex rozpisane na bity):
        0    - blad operacji (blad odczytu || !ModemEnable)
        1    - blad odczytu
        2..5 - zero
        6    - !ModemEnable (ustawiony jesli !ModemEnable)
        7    - zero
    <tttt> - czas powtarzania w zakresie 0..149 (zapisany jako 4 cyfry hex)
        gdzie kodowanie jest nastepujace:
        0    - 0 min
        1    - 10 min
        2    - 20 min
        ...
        149  - 24h 50min
-----------------------------------------------------------------------------
** zapisanie czasu powtarzania alarmu [U] (LB-706 f/v >= 1.24)
    0253<ii><tttt><eol>
    0253<ii>:<tttt>:<ss><eol>

    <tttt> - patrz 0252
    <ss> - status (2 cyfry hex rozpisane na bity):
        0    - blad operacji (== blad zapisu || blad wartosci || !ModemEnable)
        1    - blad zapisu
        2    - blad wartosci
        3..5 - zero
        6    - !ModemEnable (ustawiony jesli !ModemEnable)
        7    - zero
-----------------------------------------------------------------------------
** odczyt numeru telefonu alarmowania sms [U] (LB-706 f/v >= 1.24)
    0254<ii><xx><eol>
    0254<ii>:<xx>:<ss>[:{<nn>}(14)]<eol>

    <xx> - numer wpisu (2 cyfry hex) w zakresie 0..3,
           0 - dla numeru centrali sms
           1,2,3 - numery docelowych abonentow smsowania
    <ss> - status (2 cyfry hex rozpisane na bity):
        0    - blad operacji (blad odczytu || blad wartosci || !ModemEnable)
        1    - blad odczytu
        2    - blad wartosci
        3..5 - zero
        6    - !ModemEnable (ustawiony jesli !ModemEnable)
        7    - zero
    <nn> - numer telefonu (28 cyfr hex), gdzie kazda para cyfr koduje
           jeden znak ascii numeru telefonu, numer jest terminowany
           spacja (0x20)
-----------------------------------------------------------------------------
** zapis fragmentu numeru telefonu alarmowania sms [U] (LB-706 f/v >= 1.24)
    0255<ii><xf><nnnnnn><eol>
    0255<ii>:<xf>:<nnnnnn>:<ss><eol>

    <xf> - (2 cyfry hex), kodowanie
        x   - numer wpisu w zakresie 0..3 - patrz 0254
        f   - numer fragmentu w zakresie 0..4
    <nnnnnn> - fragment numeru telefonu, kodowanie patrz 0254
    <ss> - status (2 cyfry hex rozpisane na bity):
        0    - blad operacji (== blad zapisu || blad wartosci || !ModemEnable)
        1    - blad zapisu
        2    - blad wartosci
        3..5 - zero
        6    - !ModemEnable (ustawiony jesli !ModemEnable)
        7    - zero

    uwagi: ze wzgledu na ograniczenie dlugosci ramki wysylanej do LB-706
           do 8 znakow (4 oktetow) w bloku danych ramki numer telefonu
           musi byc przeslany z pomoca fragmentow, z ktorych kazdy
           zawiera 3 znaki numeru
-----------------------------------------------------------------------------
** zapis pinu karty sim [U] (LB-706 f/v >= 1.24)
    0256<ii><nnnnnnnn><eol>
    0256<ii>:<nnnnnnnn>:<ss><eol>

    <nnnnnnnn> - (8 cyfr hex) pin zakodowany jako ascii, gdzie kazdy
        znak kodowany jest za pomoca 2 cyfr hex, dozwolone znaki
        to cyfry decymalne
    <ss> - status (2 cyfry hex rozpisane na bity):
        0    - blad operacji (== blad zapisu || blad wartosci || !ModemEnable)
        1    - blad zapisu
        2    - blad wartosci
        3..5 - zero
        6    - !ModemEnable (ustawiony jesli !ModemEnable)
        7    - zero
-----------------------------------------------------------------------------
USUNIETE
** odczyt liczby powtorzen pakietow udp [U] (LB-706 f/v >= 1.24)
    0257<ii><eol>
    0257<ii>:<ss>[:<nnnn>]<eol>

    <ss> - status (2 cyfry hex rozpisane na bity):
        0    - blad operacji (== blad odczytu || !ModemEnable)
        1    - blad odczytu
        2..5 - zero
        6    - !ModemEnable (ustawiony jesli !ModemEnable)
        7    - zero
    <nnnn> - (4 cyfry hex) liczba powtorzen 1..10
-----------------------------------------------------------------------------
USUNIETE
** zapis liczby powtorzen pakietow udp [U] (LB-706 f/v >= 1.24)
    0258<ii><nnnn><eol>
    0258<ii>:<nnnn>:<ss><eol>

    <nnnn> - (4 cyfry hex) liczba powtorzen 1..10
    <ss> - status (2 cyfry hex rozpisane na bity):
        0    - blad operacji (== blad zapisu || blad wartosci || !ModemEnable)
        1    - blad zapisu
        2    - blad wartosci
        3..5 - zero
        6    - !ModemEnable (ustawiony jesli !ModemEnable)
        7    - zero
-----------------------------------------------------------------------------
** odczyt nr IP serwera danych [U] (LB-706 f/v >= 1.24)
    0259<ii><eol>
    0259<ii>:<ss>[:<ipipipip>]<eol>

    <ss> - status (2 cyfry hex rozpisane na bity):
        0    - blad operacji (== blad odczytu || !ModemEnable)
        1    - blad odczytu
        2..5 - zero
        6    - !ModemEnable (ustawiony jesli !ModemEnable)
        7    - zero
    <ipipipip> - (8 cyfr hex) - nr IP hosta, oktety w kolejnosci big endian
-----------------------------------------------------------------------------
** zapis nr IP serwera danych [U] (LB-706 f/v >= 1.24)
    025a<ii><ipipipip><eol>
    025a<ii>:<ipipipip>:<ss><eol>

    <ipipipip> - (8 cyfr hex) - nr IP hosta, oktety w kolejnosci big endian
    <ss> - status (2 cyfry hex rozpisane na bity):
        0    - blad operacji (== blad zapisu || !ModemEnable)
        1    - blad zapisu
        2..5 - zero
        6    - !ModemEnable (ustawiony jesli !ModemEnable)
        7    - zero
-----------------------------------------------------------------------------
** odczyt nr portu tcp/udp serwera danych [U] (LB-706 f/v >= 1.24)
    025b<ii><eol>
    025b<ii>:<ss>[:<pppp>]<eol>

    <ss> - status (2 cyfry hex rozpisane na bity):
        0    - blad operacji (== blad odczytu || !ModemEnable)
        1    - blad odczytu
        2..5 - zero
        6    - !ModemEnable (ustawiony jesli !ModemEnable)
        7    - zero
    <pppp> - (4 cyfry hex) - nr portu hosta w zakresie 1..65535
-----------------------------------------------------------------------------
** zapis nr portu tcp/udp serwera danych [U] (LB-706 f/v >= 1.24)
    025c<ii><pppp><eol>
    025c<ii>:<pppp>:<ss><eol>

    <pppp> - (4 cyfry hex) - nr portu hosta w zakresie 1..65535
    <ss> - status (2 cyfry hex rozpisane na bity):
        0    - blad operacji (== blad zapisu || blad wartosci || !ModemEnable)
        1    - blad zapisu

        2    - blad wartosci
        3..5 - zero
        6    - !ModemEnable (ustawiony jesli !ModemEnable)
        7    - zero
-----------------------------------------------------------------------------
** odczyt progu alarmowania [U] (LB-706 f/v >= 1.24)
    025d<ii><nn><eol>
    025d<ii>:<nn>:<ss>[:<vvvvvv>]<eol>

    <nn> - (2 cyfry hex) numer progu w zakresie 0..7, gdzie:
        0x00 - dolny prog T1
        0x01 - gorny prog T1
        0x02 - dolny prog T2
        0x03 - gorny prog T2
        0x04 - dolny prog RH
        0x05 - gorny prog RH
        0x06 - dolny prog PR
        0x07 - gorny prog PR
        0x40 - histereza alarmu T1
        0x41 - histereza alarmu T2
        0x42 - histereza alarmu RH
        0x43 - histereza alarmu PR
    <ss> - status (2 cyfry hex rozpisane na bity):
        0    - blad operacji (blad odczytu || blad wartosci || !ModemEnable)
        1    - blad odczytu
        2    - blad wartosci
        3..5 - zero
        6    - !ModemEnable (ustawiony jesli !ModemEnable)
        7    - zero
    <vvvvvv> - (6 cyfr hex) wartosc progu:
        progi:
                dla T1,T2 zapis U2 w degC/10 w zakresie -2000..+5500
                dla RH zapis unipolarny w %/10 w zakresie 0..999
                dla PR zapis unipolarny w hPa/10 w zakresie 5000..12000
        histereza:
                T1,T2,PR - 0..1000
                RH - 0..999
-----------------------------------------------------------------------------
** zapis progu alarmowania [U] (LB-706 f/v >= 1.24)
    025e<ii><nn><vvvvvv><eol>
    025e<ii>:<nn>:<vvvvvv>:<ss><eol>

    <nn> - patrz 025d
    <vvvvvv> - patrz 025d
    <ss> - status (2 cyfry hex rozpisane na bity):
        0    - blad operacji (== blad zapisu || blad wartosci || !ModemEnable)
        1    - blad zapisu
        2    - blad wartosci
        3..5 - zero
        6    - !ModemEnable (ustawiony jesli !ModemEnable)
        7    - zero
-----------------------------------------------------------------------------
** odczyt flag aktywnosci alarmow [U] (LB-706 f/v >= 1.24)
    0260<ii><eol>
    0260<ii>:<ss>[:<ffff>]<eol>

    <ss> - status (2 cyfry hex rozpisane na bity):
        0    - blad operacji (blad odczytu || !ModemEnable)
        1    - blad odczytu
        2..5 - zero
        6    - !ModemEnable (ustawiony jesli !ModemEnable)
        7    - zero
    <ffff> - (4 cyfry hex) - w zakresie 0..255, kolejne bity oktetow
        od najmlodszego koduja aktywnosc kolejnych progow:
        bit 0 - aktywnosc dolnego progu T1 (0:nieaktywny 1:aktywny)
        ...   - kolejnosc progow patrz 025d
-----------------------------------------------------------------------------
** zapis flag aktywnosci alarmow [U] (LB-706 f/v >= 1.24)
    0261<ii><ffff><eol>
    0261<ii>:<ffff>:<ss><eol>

    <ffff> - patrz 0260
    <ss> - status (2 cyfry hex rozpisane na bity):
        0    - blad operacji (== blad zapisu || blad wartosci || !ModemEnable)
        1    - blad zapisu
        2    - blad wartosci
        3..5 - zero
        6    - !ModemEnable (ustawiony jesli !ModemEnable)
        7    - zero
-----------------------------------------------------------------------------
** odczyt stringu konfiguracji polaczenia [U] (LB-706 f/v >= 1.24)
    0262<ii><xx><eol>
    0262<ii>:<xx>:<ss>[:{<nn>}(32)]<eol>

    <xx> - (2 cyfry hex) w zakresie 0..1, typ stringu:
        0    - nazwa sieci APN
        1    - nazwa uzytkownika PAP
        2    - haslo uzytkownika PAP (odczytu zabroniony)
    <ss> - status (2 cyfry hex rozpisane na bity):
        0    - blad operacji (blad odczytu || !ModemEnable)
        1    - blad odczytu
        2..5 - zero
        6    - !ModemEnable (ustawiony jesli !ModemEnable)
        7    - zero
    <nn> - (64 cyfry hex) - kazda para cyfr koduje znak ascii, string
        terminowany spacja (0x20)

    uwaga: jezeli string 'nazwa uzytkownika PAP' jest pusty, to
           autoryzacja PAP nie bedzie uzywana
-----------------------------------------------------------------------------
** zapis fragmentu stringu konfiguracji polaczenia [U] (LB-706 f/v >= 1.24)
    0263<ii><xf><nnnnnn><eol>
    0263<ii>:<xf>:<nnnnnn>:<ss><eol>

    <xf> - (2 cyfry hex), koduja:
        x - typ stingu (0..2), patrz 0262
        f - numer fragmentu stringu z zakresu 0..10
    <nnnnnn> - fragment stringu (6 cyfr hex)
    <ss> - status (2 cyfry hex rozpisane na bity):
        0    - blad operacji (== blad zapisu || blad wartosci || !ModemEnable)
        1    - blad zapisu
        2    - blad wartosci
        3..5 - zero
        6    - !ModemEnable (ustawiony jesli !ModemEnable)
        7    - zero
-----------------------------------------------------------------------------
** odczyt nazwy stacji [U] (LB-706 f/v >= 1.24)
    0264<ii><xx><eol>
    0264<ii>:<xx>:<ss>[:{<nn>}(14)]<eol>

    <xx> - 00
    <ss> - status (2 cyfry hex rozpisane na bity):
        0    - blad operacji (blad odczytu || blad wartosci || !ModemEnable)
        1    - blad odczytu
        2    - blad wartosci
        3..5 - zero
        6    - !ModemEnable (ustawiony jesli !ModemEnable)
        7    - zero
    <nn> - nazwa stacji terminowana znakiem o kodzie 0 albo spacja albo
           zawierajaca max 14 znakow
-----------------------------------------------------------------------------
** zapis fragmentu nazwy stacji [U] (LB-706 f/v >= 1.24)
    0265<ii><xf><nnnnnn><eol>
    0265<ii>:<xf>:<nnnnnn>:<ss><eol>

    <xf> - (2 cyfry hex), kodowanie
        x   - 0
        f   - numer fragmentu w zakresie 0..4
    <nnnnnn> - fragment stringu nazwy stacji
    <ss> - status (2 cyfry hex rozpisane na bity):
        0    - blad operacji (== blad zapisu || blad wartosci || !ModemEnable)
        1    - blad zapisu
        2    - blad wartosci
        3..5 - zero
        6    - !ModemEnable (ustawiony jesli !ModemEnable)
        7    - zero
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
** odczyt wartosci zadanej regulatora [U] (LB-708)
    0280<ii><eol>
    0280<ii>:<ss>[:<tttttttt>]<eol>

    <ss> - status operacji (2 cyfry hex rozpisane na bity):
        0    - obciecie komunikatu (== FlagConfHwErr || FlagConfDevErr || bit3)
        1    - zero
        2    - P708AnalogSet
        3    - przyrzad nie obsluguje sterowania
        4    - FlagConfHwErr
        5    - zero
        6    - FlagConfDevErr
        7    - zero
    <tttttttt> - wartosc zadana (8 cyfr hex kodowanie U2) z rozdz. 0.01 degC
-----------------------------------------------------------------------------
** ustawienie wartosci zadanej regulatora [U] (LB-708)
    0281<ii><tttttttt><eol>
    0281<ii>:<tttttttt>:<ss><eol>

    <ss> - status (2 cyfry hex rozpisane na bity):
        0    - blad operacji (== blad zapisu || FlagConfHwErr ||
                                 FlagConfDevErr || P708AnalogSet ||
                                 bit3)
        1    - blad zapisu
        2    - P708AnalogSet
        3    - przyrzad nie obsluguje sterowania
        4    - FlagConfHwErr
        5    - zero
        6    - FlagConfDevErr
        7    - zero
    <tttttttt> - wartosc zadana (8 cyfr hex kodowanie U2) z rozdz. 0.01 degC
-----------------------------------------------------------------------------

-----------------------------------------------------------------------------
ROZKAZY ZEGARA RTC [#03]
-----------------------------------------------------------------------------
** odczyt czasu systemowego [U]
    0300<ii><eol>
    0300<ii>:<ss>[:<tttttttt>]<eol>

    <ss> - status (2 cyfry hex rozpisane na bity):
        0    - obciecie komunikatu (== FlagRtcErr || FlagRtcSync)
        1..5 - zero
        6    - FlagRtcErr
        7    - FlagRtcSync
    <tttttttt> - czas (8 cyfr hex) zapisany jako liczba sekund od
               1 sycznia 2000 godz. 0:00:00
-----------------------------------------------------------------------------
** zapis zegara rtc i systemowego [U]
    0310<ii><tttttttt><eol>
    0310<ii>:<tttttttt>:<ss><eol>

    <ss> - status (2 cyfry hex rozpisane na bity):
        0    - blad operacji (== FlagRtcErr || blad zapisu)
        1    - blad zapisu
        2..5 - zero
        6    - FlagRtcErr
        7    - FlagRtcSync
    <tttttttt> - czas (8 cyfr hex) zapisany jako liczba sekund od
               1 sycznia 2000 godz. 0:00:00
-----------------------------------------------------------------------------

-----------------------------------------------------------------------------
ROZKAZY PAMIECI REJESTRUJACEJ [#04]
-----------------------------------------------------------------------------
** odczyt informacji o pamieci rejestrujacej [U]
    0400<ii><eol>
    0400<ii>:<ss>[:<typ>:<tt>[:<interwal>:<flagi>]]<eol>

    <ss> - status (2 cyfry hex rozpisane na bity):
        0    - obciecie komunikatu (== FlagMemoHwErr)
        1..6 - zero
        7    - FlagMemoHwErr
    <typ> - liczba stron pamieci (4 cyfry hex)
    <tt> - status 2 (2 cyfry hex rozpisane na bity):
        0    - obciecie komunikatu (== FlagConfHwErr || FlagConfUsrErr)
        1    - zero
        2    - FlagMemoOperErr
        3    - MemoActiveFlag
        4    - FlagConfHwErr
        5    - FlagConfUsrErr
        6    - zero
        7    - FlagConfUsrDiag
    <interwal> - interwal zapisu do pamieci (4 cyfry hex) w minutach
        0 - rejestracja wylaczona
        1..64799 (od 1min  do 44dni 23h 59min)
        pozostale wartosci zabronione
    <flagi> - (4 cyfry hex rozpisane na bity)
        0    - MemoTaHiRes          9..15 - zero
        1    - MemoTaFullRng
        2    - MemoDisTa
        3    - MemoDisRh
        4    - MemoDisPr
        5    - MemoContFlag
        6    - MemoTaResAuto
        7    - MemoTaRngAuto
-----------------------------------------------------------------------------
** ustawienie interwalu rejestracji [U]
    0401<ii><vvvv><eol>
    0401<ii>:<vvvv>:<ss><eol>

    <vvvv> - wartosc interwalu (4 cyfry hex) kodowanie jak w rozkazie 0400
    <ss> - status (2 cyfry hex rozpisane na bity):
        0    - blad operacji (== FlagConfHwErr || FlagConfUsrErr ||
                                 blad zapisu)
        1    - blad zapisu
        1..3 - zero
        4    - FlagConfHwErr
        5    - FlagConfUsrErr
        6    - zero
        7    - FlagConfUsrDiag
    uwagi: Po wykonaniu tego rozkazu wartosc interwalu zostaje zapisana
           do pamieci konfiguracji uzytkownika ale nie jest obowiazujaca
           az do wykonania rozkazu 0403 albo reinicjacji panelu.
           Zmiane interwalu nalezy zblokowac ze zmiana flag rejestracji
           (rozkaz 0402) i dopiero wtedy wysylac rozkaz 0403, co
           zapobiegnie generowaniu nadmiernej liczby naglowkow rejestracji.
-----------------------------------------------------------------------------
** ustawienie flag rejestracji [U]
    0402<ii><ffff><eol>
    0402<ii>:<ffff>:<ss><eol>

    <ffff> - flagi rejestracji (4 cyfry hex rozpisane na bity):
        0    - MemoTaHiRes          8..15 - zero
        1    - MemoTaFullRng
        2    - MemoDisTa
        3    - MemoDisRh
        4    - MemoDisPr
        5    - MemoContFlag
        6    - MemoTaResAuto
        7    - MemoTaRngAuto

    <ss> - status (2 cyfry hex rozpisane na bity):
        0    - blad operacji (== FlagConfHwErr || FlagConfUsrErr ||
                                 blad zapisu)
        1    - blad zapisu
        1..3 - zero
        4    - FlagConfHwErr
        5    - FlagConfUsrErr
        6    - zero
        7    - FlagConfUsrDiag
-----------------------------------------------------------------------------
** wpisanie nastaw rozkazow 0401 i 0402 do pamieci konfiguracji [U]
    0403<ii><eol>
    0403<ii>:<ss><eol>

    <ss> - status (2 cyfry hex rozpisane na bity):
        0    - blad operacji (== FlagConfHwErr || FlagConfUsrErr ||
                                 blad odczytu)
        1    - blad odczytu
        1..3 - zero
        4    - FlagConfHwErr
        5    - FlagConfUsrErr
        6    - zero
        7    - FlagConfUsrDiag
-----------------------------------------------------------------------------
** odczyt bajtu z obszru pamieci rejestrujacej [U]
    0410<ii><vv><aa><eol>
    0410<ii>:<vv><aa>:<ss>[:<xx>]<eol>

    <vv> - numer strony do odczytu (2 cyfry hex) - strony numerowane od 0
    <ss> - status (2 cyfry hex rozpisane na bity):
        0    - obciecie komunikatu (== FlagMemoHwErr || blad odczytu)
        1    - blad odczytu
        2..6 - zero
        7    - FlagMemoHwErr
    <xx> - naglowek strony (2 cyfry hex)
-----------------------------------------------------------------------------
** odczyt strony pamieci rejestrujacej [U]
    0411<ii><vv><eol>
    0411<ii>:<vv>:<ss>[{:<bb>}(256)]<eol>

    <vv> - numer strony do odczytu (2 cyfry hex) - strony numerowane od 0
    <ss> - status (2 cyfry hex rozpisane na bity):
        0    - obciecie komunikatu (== FlagMemoHwErr || blad odczytu)
        1    - blad odczytu
        2..6 - zero
        7    - FlagMemoHwErr
    <bb> - kolejne wartosci zapisane w pamieci rejestracji
-----------------------------------------------------------------------------
** kasowanie calosci pamieci [U]
    0415<ii><eol>
    0415<ii>:<ss><eol>

    ss - status (2 cyfry hex rozpisane na bity):
        0    - obciecie komunikatu (== FlagMemoHwErr || blad zapisu)
        1    - blad zapisu
        2..6 - zero
        7    - FlagMemoHwErr
-----------------------------------------------------------------------------

-----------------------------------------------------------------------------
ROZKAZY SONDY LB-754 [#05]
-----------------------------------------------------------------------------
** dane o sondzie [U]
    0501<ii><eol>
    0501<ii>:<ss>[:<ffff>:[<wersja>:<numer>:<czujniki>:<data_kalibracji>]]<eol>

    <ss> - status (2 cyfry hex rozpisane na bity):
        0     - obciecie komunikatu (== FlagNoProbe || !Use754Flag)
        1..2  - zero
        3     - FlagNoSuplMod
        4..5  - zero
        6     - Use754Flag
        7     - FlagNoProbe

    <ffff> - flagi (4 cyfry hex rozpisane na bity):
        0     - obciecie komunikatu (== FlagCaliburErr || FlagCalibHwErr)
                                        8    - FlagCaliburErr
        1     - zero                    9    - FlagCalibHwErr
        2     - PsychroFlag             10   - zero
        3     - DedicatedFlag           11   - FlagCalibDiag

        4..7  - zero                    12   - Therm0Flag
                                        13   - Therm1Flag
                                        14   - FullTaRng
                                        15   - HiResTempFlag

    <wersja> - numer wersji sondy (2 cyfry hex) - na razie jedyna wersja
             jest oznaczana nr 1.
    <numer> - numer seryjny sondy (4 cyfry hex)

    <czujniki> - typy czujnikow (2 cyfry hex rozpisane na bity):
        0 - wzorzec
        1 - pt1000
        2 - pt100
        3 - pt10

    <data_kalibracji> (2 cyfry hex rozpisane na bity):
        0..3 - miesiac (0 == styczen)
        4..7 - rok (0 == 2001)
-----------------------------------------------------------------------------

-----------------------------------------------------------------------------
ROZKAZY BAROMETRU LB-706B [#06]
-----------------------------------------------------------------------------
** dane o barometrze [U]
    0601<ii><eol>
    0601<ii>:<ss>[<flags>:<czujnik>:<data_kalibracji>]<eol>

    <ss> - status (2 cyfry hex rozpisane na bity):
        0     - obciecie komunikatu (== !OptBaroFlag || FlagNoSuplMod ||
                                        FlagConfHwErr || FlagConfDevErr)
        1     - FlagConfHwErr
        2     - FlagConfDevErr
        3     - FlagNoSuplMod
        4..5  - zero
        6     - OptBaroFlag
        7     - zero

    <ffff> - flagi (4 cyfry hex rozpisane na bity):
        0     - zero
        1..3  - zero

        4     - FlagBaroTComp (czujnik kompensowany)
        5     - zero
        6,7   - koduje sposob kalibracji barometru:
                bit7   bit6     sposob
                  0      0        0-punktowy
                  0      1        1-punktowy
                  1      0        2-punktowy
                  1      1        3-punktowy

        8..15 - zero

    <czujnik> - rodzaj czujnika (2 cyfry hex)
        0 - nieznany
        1 - XCX-BARO
        2 - PXM-1000
        3 - XCX-15
        pozostale wartosci - nieznany

    <data_kalibracji> (2 cyfry hex rozpisane na bity):
        0..3 - miesiac (0 == styczen)
        4..7 - rok (0 == 2001)
-----------------------------------------------------------------------------

-----------------------------------------------------------------------------
OPIS FLAG
-----------------------------------------------------------------------------
FlagConfHwErr
        ozn. blad hardware-owy pamieci i2c konfiguracji przyrzadu
        - blad fatalny
FlagConfUsrErr
        ozn. blad logiczny obszaru konfiguracji uzytkownika - w tym
        obszarze zapisane sa informacje o: sposobie wyswietlania,
        interwale i trybach rejestracji, ...
        - blad naprawialny przez uzytkownika jesli nie wystepuje
        'FlagConfHwErr'
FlagConfDevErr
        ozn. blad logiczny obszaru konfiguracji przyrzadu (danych
        producenta)
        - blad fatalny
FlagConfUsrDiag
        ozn. wykonanie autodiagnostyki obszaru konfiguracji uzytkownika
        - flaga informacyjna
FlagConfDevDiag
        ozn. wykonanie autodiagnostyki obszaru konfiguracji przyrzadu
        - flaga informacyjna

Opt701Flag
        ozn. wlaczona obsluge sondy LB-701 - ustawienie pochodzi z
        obszaru konfiguracji przyrzadu
OptBaroFlag
        ozn. wlaczona obsluge modulu baro - ustawienie pochodzi z
        obszaru konfiguracji przyrzadu
OptThermoFlag
        ozn. wlaczona obsluge modulu termo - ustawienie pochodzi z
        obszaru konfiguracji przyrzadu

DispTaHiRes
DispTaAutoRes
        ustawienia uzytkownika dotyczace sposobu formatowania wyniku
        pomiaru temperatury - rozdzielczosc 0.1 albo 0.01; przy
        ustawionej fladze 'DispTaAutoRes' przyrzad wyswietla temperature
        z rozdzielczoscia okreslona przez zapisany w sondzie parametr
        'HiResTempFlag', przy skasowanej fladze 'DispTaAutoRes' o
        rozdzielczosci wyswietlania decyduje flaga 'DispTaHiRes'
DispPrMmUnit
        ustawienie uzytkownika dotyczace jednostki z ktora prezentowne
        jest cisnienie, przy ustawionej fladze jednostka jest mmHg,
        przy skasowanej hPa
DispF3Press
        ustawienie uzytkownika dotyczace parametru prezentowanego
        na 3. polu wyswietlacza, przy ustawionej fladze wyswietlane jest
        cisnienie, przy skasowanej punkt rosy
DispF4Bit0
DispF4Bit1
        ustawienie uzytkownika dotyczace parametru prezentowanego
        na 4. polu wyswietlacza, mozliwe kombinacje:
            DispF4Bit0   DispF4Bit1   parametr
                0            0          wilg.absol. [ppm]
                0            1          punkt rosy
                1            0          zegar
                1            1          jedn. cisnienia

MemoDisTa
        ustawienie uzytkownika wylaczajace temperature z rekordu
        rejestracji do wewnetrznej pamieci
MemoDisRh
        ustawienie uzytkownika wylaczajace wilgotnosc z rekordu
        rejestracji do wewnetrznej pamieci
MemoDisPr
        ustawienie uzytkownika wylaczajace cisnienie z rekordu
        rejestracji do wewnetrznej pamieci
MemoEnaT2
        ustawienie uzytkownika wlaczajace 2. temperature do
        rekordu rejestracji do wewnetrznej pamieci
MemoContFlag
        ustawienie uzytkownika wlaczajace tryb rejestracji z kontynuacja
        (nadpisywaniem najstarszych rekordow), przy skasowanej fladze
        rejestracja zostanie zakonczona po zapelnieniu pamieci
MemoTaHiRes
MemoTaResAuto
        para flag z ustawien uzytkownika pelniaca analogiczna do
        'DispTaHiRes'/'DispTaAutoRes' funkcje w odniesieniu do
        rejestracji - ustalenie rozdzielczosci zapisu temperatury
        w pamieci rejestrujacej
MemoTaFullRng
MemoTaRngAuto
        para flag z ustawien uzytkownika sterujaca zakresem rejestracji
        temperatury: -40..+85 albo -200..+550 degC; przy ustawionej
        fladze 'MemoTaRngAuto' wybierany ten jest zakres jakim opisana
        zostala sonda: jesli ustawiona jest flaga 'FullTaRng', to
        wybrany zostaje szeroki zakres; przy skasowanej fladze
        'MemoTaRngAuto' wybierany jest szeroki zakres rejestracji jesli
        ustawiono 'MemoTaFullRng'

FlagCaliburErr
        ozn. blad logiczny kalibracji sondy
        - blad fatalny
FlagCalibHwErr
        ozn. blad hardware-owy pamieci kalibracji sondy
        - blad fatalny (jezeli nie wystepuje wraz z 'FlagNoProbe')
FlagNoProbe
        ozn. brak podlaczonej sondy
FlagCalibDiag
        ozn. wykonanie autodiagnostyki kalibracji sondy
        - flaga informacyjna

ProbeAdcGain0
ProbeAdcGain1
ProbeAdcGainUp
ProbeAdcGainDn
        flagi sterujace wzmocnieniem toru adc
        - flagi informacyjne
        - na razie nie sa wykorzystane

StartByAlarm
        ozn. ze wlaczenie przyrzadu nastapilo na skutek zgloszenia
        alarmu przez rtc
        - flaga informacyjna
StartByKeyb
        ozn. ze wlaczenie przyrzadu nastapilo na skutek nacisniecia
        klawisza
        - flaga informacyjna
StartByDsr
        ozn. ze wlaczenie przyrzadu nastapilo na skutek pojawienia sie
        sygnalu aktywnosci portu komunikacyjnego
        - flaga informacyjna

TaErrFlag
        ozn. blad wartosci temperatury
RhErrFlag
        ozn. blad wartosci wilgotnosci
DpErrFlag
        ozn. blad wartosci temperatury punktu rosy
HpErrFlag
        ozn. blad wartosci zawartosci pary wodnej
PrErrFlag
        ozn. blad wartosci cisnienia
Ta2ErrFlag
        ozn. blad wartosci temperatury2/temp.wilgotnego termometru
PrDefault
        ozn. ze podawana wartosc cisnienia jest wartoscia domyslna albo
        tymczasowa, mimo ze ustawiono flage 'PrErrFlag'

FlagRtcErr
        ozn. blad hardware-owy zegara rtc
        - blad fatalny
FlagRtcSync
        ozn. ze rtc nie zostalo ustawione

MemoActiveFlag
        ozn. aktywnosc rejestracji - tzn., ustawiono niezerowy interwal
        i pamiec nie jest zapelniona albo wybrano tryb z kontynuacja
FlagMemoHwErr
        ozn. blad hardware-owy pamieci rejestrujacej albo brak
        zainstalowanej pamieci rejestrujacej

AutoSendMsr
        ozn. wlaczenie autowysylania wynikow pomiarowych - panel po
        kazdym cyklu pomiarowym wysyla komunikat odpowiedniego typu
        zawierajacy aktualne wyniki
AutoSendFreqs701
        ozn. wlaczenie autowysylania surowych danych z sondy LB-701
AutoSendAdcBaro
        ozn. wlaczenie autowysylania surowych danych z barometru
AutoSendAdcTherm
        ozn. wlaczenie autowysylania surowych danych z sondy LB-754
AutoSendTime
        ozn. wlaczenie autowysylania czasu systemowago
AutoSendFlags
        ozn. wlaczenie autowysylania flag statusowych

DisRhChann
        ozn. wylaczenie toru pomiaru wilgotnosci sondy LB-701
DisTaChann
        ozn. wylaczenie toru pomiaru temperatury sondy LB-701
FullTaRng
        ozn. ze podlaczona sonda temperaturowa jest szerokozakresowa
        -200..+550 degC
HiResTempFlag
        ozn. ze klasa sondy jest na tyle wysoka, ze jest sens
        przetwarzac wartosci temperatury z rozdzielczoscia 0.01 degC
FlagNoSuplMod
        ozn. ze nie zdetekowano modulu dodatk. mimo, ze ustawiona jest
        flaga 'OptBaroFlag' albo 'OptThermoFlag'
        - blad fatalny

PsychroFlag
        ozn. ze podlaczona sonda LB-754 jest psychrometrem
DedicatedFlag
        ozn. ze podlaczona sonda byla kalibrowana za pomoca panelu,
        ktory nie posiadal uniwersalnej kalibracji - taka sonda nie
        powinna byc wykorzystywana z innym panelem niz ten z ktorym byla
        kalibrowana

PrintEnable
        ozn. ze panel moze obslugiwac drukarke termiczna Kafka albo Kafka-R
ModemEnable
        ozn. ze panel moze obslugiwac modem LB-430
-----------------------------------------------------------------------------

-----------------------------------------------------------------------------
PAMIEC REJESTRUJACA
-----------------------------------------------------------------------------
** organizacja pamieci rejestrujacej

# pamiec rejestrujaca jest stronnicowana, 1 strona == 256 bajtow
# strona ma nastepujaca strukture:
      - header_strony - 1 bajt
      - obszar danych
      - trailer - 1 bajt (0xff)
# obszar danych jest zapelniany rekordami danych, bezposrednio za
  ostatnim rekordem wystepuje trailer
# header_strony opisuje strone w nastepujacy sposob:
      - 0x00 - strona otwarta do zapisu
      - 0x01 - strona zamknieta (w pelni zapisana)
      - 0xff - strona nie zapisana (wolna)
# wystepuja dwa rodzaje rekordow danych:
      - rekordy kontrolne
      - rekordy pomiarowe
# struktura rekordu kontrolnego
      - header - 1 bajt
      - time - 4 bajty w formacie 'time' (big endian)
               (liczba sekund od 0:00:00 1 sty 2000)
      - interval - 2 bajty w minutach (big endian)
# header rekordu kontrolnego opisuje strukture (typ) nastepujacych po
  rekordzie kontrolnym rekordow pomiarowych, jego wartosc
  jest z zakresu <0x80;0xfe>, po rozpisaniu na bity:
        7 - jeden
        6 - zero
        5 - zero
        4 - wylaczenie zapisu cisnienia (PR)
        3 - wylaczenie zapisu wilgotnosci (RH)
        2 - wylaczenie zapisu temperatury (TA)
        1 - zapis temperatury w szerokim zakresie (jezeli bit 2 == 0)
        0 - zapis temperatury z rozdz. 0.01 (jezeli bit 2 == 0)
# rekordy danych pomiarowych sa tak skonstruowane, ze nigdy pierwszy
  bajt rekordu nie przyjmie charakterystycznej wartosci 0xff ani
  innej z zakresu <0x80;0xff> -- (najstarszy bit == 0)
# pierwszy rekord pomiarowy wystepujacy bezposrednio po rekordzie
  kontrolnym jest zapisany z czasem wystepujcym w rekordzie kontrolnym,
  nastepne rekordy pomiarowe sa zapisywane w odstepach okreslonych przez
  interwal zapisany w rekordzie kontrolnym
# na jednej stronie moze wystapic wiele rekordow kontrolnych
# nie ma gwarancji, ze strony sa zapisywane chronologicznie
# nie ma gwarancji, ze rekordy kontrolne w obrebie jednej strony beda
  mialy rosnacy czas
# w trybie z kontynuacja po zapelnieniu pamieci do zapisu wybierana
  najstarsza strona - jej stara zawartosc jest kasowana w calosci
# rekordy pomiarowe sa pakowane bitowo poczawszy od 6.bitu pierwszego
  bajtu rekordu pomiarowego (7.bit jest zerowany) przez nastepne bajty
  (wykorzystane w calosci), pakowanie odbywa sie w kolejnosci: RH, PR,
  TA, jezeli ktorys z pomiarow jest wylaczony z rejestracji tu zostaje
  pominiety
# kazdy rekord pomiarowy rozpoczyna sie na granicy bajtu
# wilgotnosc jest zapisywana w promilach na 11 bitach - pierwszy bit
  koduje status pomiaru (jesli ustawiony, to blad pomiaru), nastepne 10
  bitow koduje wartosc
# cisnienie jest zapisywane w hPa/10 na 15 bitach - pierszy bit statusu
  i 14 bitow wyniku
# temperatura moze byc zapisana w 4 wariantach:
  - waski zakres (-40..+85 degC), niska rozdz. (0.1):
        bit statusu + 11 bitow wartosci kodowane U2
  - waski zakres (-40..+85), wysoka rozdz. (0.01):
        bit statusu + 14 bitow wartosci kodowane unipolarnie
        z offsetem 4000
  - szeroki zakres (-200..+550), niska rozdz. (0.1):
        bit statusu + 14 bitow wartosci kodowane U2
  - szeroki zakres (-200..+550), wysoka rozdz. (0.01):
        bit statusu + 17 bitow wartosci kodowane U2
-----------------------------------------------------------------------------
Zmiany od wersji 1.8
-----------------------------------------------------------------------------
** odczyt informacji o panelu [U]
    020A<ii><eol>
    020A<ii>:0706:<wersja>:<zgodnosc>:<ss>[:<numer>:<opcje>]<eol>

    <opcje> - opcje wyposazenia panelu (4 cyfry hex rozpisane na bity):
        0     - Opt701Flag
        1     - OptBaroFlag
        2     - OptThermoFlag
        3     - Use701Flag
        4     - Use754Flag
        5..14 - zero
        15    - PanelGVer       (uproszczona klawiatura)

    uwagi:
        Od wersji 1.8 wprowadzono mozliwosc konfiguracji Opt701Flag i
        jednoczesnie OptThermoFlag. Panel przeprowadza detekcje podlaczonej
        sondy. Ustawienie flag Use*Flag oznacza pomyslna detekcje obecnosci
        sondy.
-----------------------------------------------------------------------------
Zmiany od wersji 1.28
-----------------------------------------------------------------------------
** odczyt informacji o pamieci rejestrujacej [U]
    0400<ii><eol>
    0400<ii>:<ss>[:<typ>:<tt>[:<interwal>:<flagi>]]<eol>

    <ss> - status (2 cyfry hex rozpisane na bity):
        0    - obciecie komunikatu (== FlagMemoHwErr)
        1..6 - zero
        7    - FlagMemoHwErr
    <typ> - liczba stron pamieci (4 cyfry hex)
    <tt> - status 2 (2 cyfry hex rozpisane na bity):
        0    - obciecie komunikatu (== FlagConfHwErr || FlagConfUsrErr)
        1    - zero
        2    - FlagMemoOperErr
        3    - MemoActiveFlag
        4    - FlagConfHwErr
        5    - FlagConfUsrErr
        6    - zero
        7    - FlagConfUsrDiag
    <interwal> - interwal zapisu do pamieci (4 cyfry hex) w minutach
        0 - rejestracja wylaczona
        1..64799 (od 1min  do 44dni 23h 59min)
        pozostale wartosci zabronione
    <flagi> - (4 cyfry hex rozpisane na bity)
        0    - MemoTaHiRes          9..15 - zero
        1    - MemoTaFullRng
        2    - MemoDisTa
        3    - MemoDisRh
        4    - MemoDisPr
        5    - MemoContFlag
        6    - MemoTaResAuto
        7    - MemoTaRngAuto
        8    - MemoEnaT2
-----------------------------------------------------------------------------
** ustawienie flag rejestracji [U]
    0402<ii><ffff><eol>
    0402<ii>:<ffff>:<ss><eol>

    <ffff> - flagi rejestracji (4 cyfry hex rozpisane na bity):
        0    - MemoTaHiRes          9..15 - zero
        1    - MemoTaFullRng
        2    - MemoDisTa
        3    - MemoDisRh
        4    - MemoDisPr
        5    - MemoContFlag
        6    - MemoTaResAuto
        7    - MemoTaRngAuto
        8    - MemoEnaT2

    <ss> - status (2 cyfry hex rozpisane na bity):
        0    - blad operacji (== FlagConfHwErr || FlagConfUsrErr ||
                                 blad zapisu)
        1    - blad zapisu
        1..3 - zero
        4    - FlagConfHwErr
        5    - FlagConfUsrErr
        6    - zero
        7    - FlagConfUsrDiag
-----------------------------------------------------------------------------
** organizacja pamieci rejestrujacej (ponizej opisano zmiany w stosunku
   do poprzedniej wersji)

# header rekordu kontrolnego opisuje strukture (typ) nastepujacych po
  rekordzie kontrolnym rekordow pomiarowych, jego wartosc
  jest z zakresu <0x80;0xfe>, po rozpisaniu na bity:
        7 - jeden
        6 - zero
        5 - wlaczenie zapisu drugiej temperatury (TA2)
        4 - wylaczenie zapisu cisnienia (PR)
        3 - wylaczenie zapisu wilgotnosci (RH)
        2 - wylaczenie zapisu temperatury (TA)
        1 - zapis temperatury w szerokim zakresie (jezeli bit 2 == 0)
        0 - zapis temperatury z rozdz. 0.01 (jezeli bit 2 == 0)
# bity opisujace zakres i rozdzielczosc temperatury obowiazuja dla
  oby temperatur
# druga temperatura (TA2) jest kodowana identycznie jak TA
# rekordy pomiarowe sa pakowane bitowo poczawszy od 6.bitu pierwszego
  bajtu rekordu pomiarowego (7.bit jest zerowany) przez nastepne bajty
  (wykorzystane w calosci), pakowanie odbywa sie w kolejnosci: RH, PR,
  TA, TA2 jezeli ktorys z pomiarow jest wylaczony z rejestracji tu zostaje
  pominiety
# najdluzszy rekord ma 8 bajtow
-----------------------------------------------------------------------------