Lista rozkazów rozpoznawanych przez barometr LB-750
---------------------------------------------------
# dotyczy baromertu LB-750 o wersji 2.0 .. 2.10
1. Komunikacja: 9600bps ; 1 bit startu + 8 bitów danych + 1 bit stopu
- bez synchronizacji
2. Konwencja języka komend:
rozkaz: [ [] ]
odpowiedź: <:> - mnemonik rozkazu w postaci 2..4 znaków
- spacja - znak o kodzie 0x20
- argument rozkazu
- znak końca linii LF o kodzie 0x0a albo ciąg CR LF o kodach
0x0d 0x0a, w odpowiedzi wysyłany jest ciąg CR LF
<:> - dwukropek - znak o kodzie 0x3a
- odpowiedź urządzenia zależna od rozkazu
- na nierozpoznany rozkaz barometr odpowiada: error
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
3. Rozkazy użytkownika
-------------------------------------------------------------------------------
3a. identyfikacja przyrządu
rozkaz: id
odpowiedź: id:Barometr Lb-750 Lab-El v./
gdzie: - bardziej znacząca część numeru wersji
- decymalnie
- mniej znacząca część numeru wersji
- decymalnie
przykład: id:Barometr Lb-750 Lab-El v2.3/
- oznacza barometr LB-750 w wersji 2.3
-------------------------------------------------------------------------------
3a-1. rozszerzona identyfikacja przyrządu (dla wer. >= 2.9)
rozkaz: idx
odpowiedź: idx::
gdzie: - wersja z ktora bieżaca wersja jest w
pełni zgdona
- wersja z ktora bieżaca wersja jest zgodna
na poziomie rozkazow użytkowniak
uwagi: Format zapisu wersji tak jak opisano w 3a.
-------------------------------------------------------------------------------
3b. odczyt aktualnej wartości ciśnienia
rozkaz: prs
odpowiedź: prs:
gdzie: - wartość ciśnienia podana decymalnie
w dziesiątych częściach hPa
przykład: prs:10706
- oznacza, że wartość ciśnienia wynosi 1070.6 hPa
-------------------------------------------------------------------------------
3b-1. odczyt aktualnej wartości ciśnienia w [mmHg] (dla wer. >= 2.8)
rozkaz: prh
odpowiedź: prh:
gdzie: - wartość ciśnienia podana decymalnie
w dziesiątych częściach mmHg
-------------------------------------------------------------------------------
3c. odczyt komórki (lokacji) pamięci konfiguracji/kalibracji eeprom
rozkaz: erd
odpowiedź: erd:
gdzie: - adres lokacji z zakresu 0..127
- decymalnie
- zawartość lokacji z zakrsu 0..255
- decymalnie
-------------------------------------------------------------------------------
3c-1. odczyt bloku pamięci konfiguracji/kalibracji eeprom (dla wer. >= 2.9)
rozkaz: ebl
odpowiedź: ebl::..:
gdzie: - adres lokacji z zakresu 0..127
- decymalnie
- długość bloku z zakresu 0..128-
- decymalnie
- zawartość kolejnych lokacji ( wartości)
- hexadecymalnie
-------------------------------------------------------------------------------
3d. odczyt lokacji zegara rtc (dla wer. >= 2.1)
rozkaz: rtc
odpowiedź rtc:
gdzie: - adres lokacji z zakresu 0..4:
- decymalnie
- zawartość lokacji
- decymalnie
-------------------------------------------------------------------------------
3e. zapis lokacji do zegara rtc (dla wer. >= 2.1)
rozkaz: rtc
odpowiedź rtc:
gdzie: - adres lokacji z zakresu 0..4:
- decymalnie
- zawartość lokacji
- decymalnie
-------------------------------------------------------------------------------
3f. odczyt czasu z zegara rtc
rozkaz: tim
odpowiedź: tim:::::
gdzie: - numer dnia miesiąca 1..31 - decymalnie
- numer miesiąca 1..12 - decymalnie
- godzina 0..23 - decymalnie
- liczba minut 0..59 - decymalnie
- liczba sekund 0..59 - decymalnie
-------------------------------------------------------------------------------
komentarz do pp 3d., 3e., 3f.:
Z lokacjami zegara związane są następujące wielkości:
zakres
0 - godzina 0..23
1 - minuty 0..59
2 - numer dnia miesiąca 1..31
3 - numer miesiąca 1..12
4 - liczba sekund 0..59 - wszysyko decymalnie
Zapis do zegara powinien odbywać się wg. następującej sekwencji:
- zapis do lokacji sekund wartości 0
- zapis numeru dnia, miesiąca
- zapis liczby minut
- zapis liczby godzin
- zapis liczby sekund
Odczyt z rtc w programie użytkownika najlepiej przeprowadzać rozkazem
`tim', gdyż gwarantuje on integralność odczytanej zawartości zegara.
-------------------------------------------------------------------------------
3g. inicjacja barometru
rozkaz: rst
brak odpowiedzi
-------------------------------------------------------------------------------
3h. odczyt numeru cyklu pomiarowego
rozkaz: ady
odpowedź: ady:
gdzie: - numer cyklu z zakresu 0..FFFF
- hexadecymalnie
W skład jednego cyklu pomiarowego wchodzą pomiary w trzech
kanałach oraz obliczenie wartości ciśnienia - cykl trwa średnio
ok. 1 sekundy.
-------------------------------------------------------------------------------
3i. odczyt informacji o rejestracji
rozkaz: sts
odpowiedź: sts:
gdzie: - liczba z zakresu 0..FFFF reprezentująca
informacje o rejestracji
- hexadecymalnie
znaczenie poszczególnych bitów informacji:
0 - włączona rejestracja - bit ustawiony
1 - rejestracja z kontynuacją - jeśli bit ustawiony, to następny
zapis po zapisaniu danych do ostatniego rekordu odbędzie się
do rekordu pierwszego - jeśli bit skasowany, to po zapisaniu
danych do ostatniego rekordu rejestracja jest blokowana
14 - stan ostatniego rekordu rejestracji - jeśli bit ustawiony
to ostatni rekord zawiera dane z rejestracji - co oznacza
wypełnienie pamięci rejestrującej w 100%
15 - ustawiony oznacza, że wystąpił nieusuwalny błąd danych
w pamięci rejestrującej - dane z pamięci można tylko skasować
i nie są one wiarygodne
-------------------------------------------------------------------------------
3j. ustawienia parametrów rejestracji
rozkaz: sts
odpowiedź: sts:
gdzie: - liczba z zakresu 0..3
- decymalnie, znaczenie bitów jak w
poprzednim punkcie
- liczba z zakresu 0..0003 - powtórzenie
wysłanego parametru
- hexadecymalnie
-------------------------------------------------------------------------------
3k. odczyt strony pamięci rejestrującej
rozkaz: mem
odpowiedź: mem:
gdzie: - numer strony pamięci rejestrującej
z zakresu 0..127 - decymalnie
- blok danych strony w postaci:
...
gdzie: to zapisana heksadecymalnie 16-bitowa
lokacja za strony pamięci - strona zawiera
96[decymalnie] lokacji
to suma po wszystkich modulo
65536 zapisana heksadecymalnie -
suma ta jest wyliczana w przyrządzie
w czasie transmitowania strony
i służy do weryfikacji poprawności
danych odebranych
-------------------------------------------------------------------------------
3l. odczyt interwału rejestracji
rozkaz: ime
odpowiedź: ime:
gdzie: - interwał rejestracji w minutach
z zakresu 0..05A0
- heksadecymalnie
-------------------------------------------------------------------------------
3m. ustawienie interwału rejestracji
rozkaz: ime
odpowiedź: ime:
gdzie: - nowy interwał rejestracji w minutach
z zakresu 1..1440
- decymalnie
- nowy interwał rejestracji w minutach
z zakresu 0..05A0
- heksadecymalnie
-------------------------------------------------------------------------------
3n. odczyt wartości wskaźnika rejestracji
rozkaz: xme
odpowiedź: xme:
gdzie: - wartość wskaźnika z zakresu 0..0FFF
- heksadecymalnie
-------------------------------------------------------------------------------
3o. kasowanie pamięci rejestrującej
rozkaz: xme 2750
odpowieź: xme:done
-------------------------------------------------------------------------------
komentarz do pp 3i..3o:
- rejestracja może być aktywna albo zablokowana
- rejestracja może odbywać się w trybie `z kontynuacją' albo `z blokowaniem'
co oznacza odpowiednio: rejestrację ciągłą z nadpisywaniem najstarszych
rekordów po zapełnieniu pamięci, albo rejestrację do momentu wypełnienia
pamięci
- aktywację/dezaktywację oraz tryb rejestracji ustawia/odczytuje się przy
pomocy rozkazu `sts'
- pamięć rejestrująca zorganizowana jest w 128 stron po 32 rekordy po
3 lokacje po 16 bitów
- z punktu widzenia barometru pamięć rejestrująca jest ciągłą tablicą
o 4096 rekordach
- wskaźnik rejestracji pokazuje na następny rekord przeznaczony do zapisania
- kodowanie rekordu rejestracji rozpisane na bity
lokacja 0:
P.15 P.14 P.13 P.12 P.11 P.10 P.09 P.08 <- bajt 0
P.07 P.06 P.05 P.04 P.03 P.02 P.01 P.00 <- bajt 1
lokacja 1:
D.04 H.06 H.05 H.04 H.03 H.02 H.01 H.00 <- bajt 2
M.07 M.06 M.05 M.04 M.03 M.02 M.01 M.00 <- bajt 3
lokacja 2:
D.03 D.02 D.01 D.00 O.03 O.02 O.01 O.00 <- bajt 4
S.07 S.06 S.05 S.04 S.03 S.02 S.01 S.00 <- bajt 5
gdzie: P - ciśnienie wyrażone w [hPa*10]
H - godzina czasu rejstracji 0..23
M - minuty czasu rejestacji 0..59
D - numer dnia miesiąca 1..31
O - numer miesiąca 1..12
S - suma kontrolna rekordu liczona jako:
negacja bitowa (
(sumy zawartości bajtów rekordu od 0 do 4) modulo 256 )
-------------------------------------------------------------------------------
3p. odczyt wartości z tablicy historii pomiarów
rozkaz: his
odpowiedź: prs:
gdzie: - wiek pomiaru w minutach z zakresu 0..180
- decymalnie
- wartość ciśnienia podana decymalnie
w dziesiątych częściach hPa
Barometr prowadzi rejestrację pomiarów z ostatnich 180 minut z rozdzielczością
1 minuty. Przy pomocy tego rozkazu można odczytać wartość ciśnienia zmierzoną
przed x minutami, gdzie 0 <= x <= 180. Jeżeli w odpowiedzi otrzyma się wartość
0 to należy interpretować ją jako wartość niedostępną. Ta rejestracja jest
niezależna od prowadzenia pamięci rejestrującej. Wyłączenie zasilania powoduje
wyzerowanie całej tablicy historii pomiarów.
-------------------------------------------------------------------------------
3r. odczyt statusu przyrządu
rozkaz: err
odpowiedź: err:
gdzie: - bitowa reprezentacja błędów
- podana heksadecymalnie
znaczenie bitów (jeśli są ustawione):
0 - brak/uszkodzenie zegara rtc
1 - błąd ustawienia czasu rtc
2 - przekroczenie zakresu pomiaru
3 - błąd kalibracji
4 - błąd czujnika #0
5 - błąd czujnika #1
6 - błąd czujnika #2
7 - brak/uszkodzenie pamięci eeprom
Interpretacja błędów
- ustawienie bitu 0 niekoniecznie oznacza uszkodzenie przyrządu, może
być zinterpretowane jako brak zegara rtc na wyposażeniu barometru,
jednak w takim wypadku niemożliwa jest rejestracja wyników
- błąd ustawienia czasu rtc uniemożliwia prowadzenie rejestracji wyników
- błędy 3,4,5,6,7 powinny być traktowane jako krytyczne - uniemożliwiające
korzystanie z barometru
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
4. Rozkazy serwisowe
-------------------------------------------------------------------------------
4a. zapis do komórki (lokacji) pamięci konfiguracji/kalibracji eeprom
rozkaz: ewr
odpowiedź: ewr:
gdzie: - adres lokacji z zakresu 0..255
- decymalnie
- zawartość lokacji z zakrsu 0..255
- decymalnie
-------------------------------------------------------------------------------
4b. odczyt wartości napięcia na czujniku ciśnienia (kanale pomiarowym)
rozkaz: adc
odpowiedź: adc:
gdzie: - numer czujnika z zakresu 0..2
- wartość napięcia z zakresu 0..FFFF
- hexadecymalnie
-------------------------------------------------------------------------------
4c-1. odczyt współczynnika czułości kanału pomiarowego
rozkaz: crs
odpowiedź: crs:
gdzie: - numer czujnika z zakresu 0..2
- wartość współczynnika z zakresu 0..FFFF
- hexadecymalnie
-------------------------------------------------------------------------------
4c-2. odczyt współczynnika offsetu kanału pomiarowego
rozkaz: cro
odpowiedź: cro:
gdzie: - numer czujnika z zakresu 0..2
- wartość współczynnika z zakresu 0..FFFF
- hexadecymalnie
-------------------------------------------------------------------------------
4d. odczyt współczynnika korekcji kanału pomiarowego
rozkaz: cor
odpowiedź: cor:
gdzie: - numer czujnika z zakresu 0..2
- wartość współczynnika z zakresu 0..FFFF
- hexadecymalnie
-------------------------------------------------------------------------------
4e. zblokowany odczyt pomiarów (wygodny przy kalibracji)
rozkaz: deb
odpowiedź: deb::::
gdzie: - bieżąca wartość adc kanału ?
- hexadecymalnie
- ciśnienie obliczone przez barometr
w [0.1*hPa]
- hexadecymalnie
-------------------------------------------------------------------------------
4e-1. zapis wartości pomiarowych adc
rozkaz: deb
odpowiedź: deb:
gdzie: - numer kanału adc 0..2
- wartość do zapisu
- decymalnie
Rozkaz ustawia wartość pomiaru adc i wyłącza odświeżanie pomiarów adc
do resetu przyrządu. Rozkaz jest przeznaczony do wykorzystania tylko
w programach serwisowych.
-------------------------------------------------------------------------------
4e-2. odczyt wartości pomiarowych adc - rzeczywistych (od wer. 2.9)
rozkaz: raw
odpowiedź: raw::::
gdzie: - bieżąca wartość adc kanału ?
(3 - kanał temperaturowy)
- hexadecymalnie
Od wersji 2.9 wartosci podawane na rozkazy: 'adc' i 'deb' są wartosciami
skompensowanymi temperaturowo. Rzeczywiste wartości pomiarów adc można
uzyskać tym rozkazem.
-------------------------------------------------------------------------------
4e-3. zapis rzeczywistych wartości pomiarowych adc (od wer. 2.9)
rozkaz: raw
odpowiedź: raw:
gdzie: - numer kanału adc 0..3
- wartość do zapisu
(3 - kanał temperaturowy)
- decymalnie
Uwagi jak w punkcie 4e-2.
-------------------------------------------------------------------------------
4f. przejście w tryb kalibracji
(dotyczy wer. 2.6, 2.7 - rozpoznawany w trybie pomiaru)
rozkaz: calibur
brak odpowiedzi
Wersje 2.6, 2.7 nie stosują opisanegu tu języka rozkazów podczas normalnej
pracy (pomiar). Rozpoznawany jest tylko ten rozkaz i powoduje `miękki' reset
urządzenia, po czym przechodzi ono w tryb kalibracji i powraca do normalnego
trybu komunikacji. Rzeczony rozkaz należy wysyłać do skutku, tzn. aż uzyskamy
odpowiedź `error' oznaczającą, że barometr przeszedł w mod kalibracji.
W trybie pomiaru barometr wysyła (bez odpytywania) dużą ilość danych, które
nie przystają do opisywanego tu języka.
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
5. Rozkazy testowe - ważne tylko ze zworą testową
-------------------------------------------------------------------------------
srv - strojenie pętli 15/25 mA
help - wyświetlenie krótkiej pomocy na terminalu
trim - strojenie rtc
eep - test eeprom
ram - test ram
rom - test rom
wdt - test watchdoga
pfl - test powerfaila
sta - test stosu
sum - obliczenie sumy kontr. kalibracji
deba - procedura wykorzystana do debugingu
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
6. Mapa pamięci kalibracji/konfiguracji (eeprom)
-------------------------------------------------------------------------------
odczyt bajtu: rozkazem `erd'
zapis bajtu: rozkazm `ewr'
- w zapisie obowiazuje konwencja `big endian': MSB...LSB
- jeśli nie zaznaczono inaczej to zmienne są kodowane binarnie, bez znaku
0,1: numer seryjny przyrządu
2,3: nachylenie (czułość) ch-ki czujnika #0
4,5: nachylenie (czułość) ch-ki czujnika #1
6,7: nachylenie (czułość) ch-ki czujnika #2
8,9: offset ch-ki czujnika #0 (ze znakiem: U2)
10,11: offset ch-ki czujnika #1 (ze znakiem: U2)
12,13: offset ch-ki czujnika #2 (ze znakiem: U2)
14: flagi
15: typ barometru (rodzaj czujników, zakres pomiarowy)
16,17: współczynnik kompensacji nieliniowości czujnika #0 (ze znakiem: U2)
18,19: współczynnik kompensacji nieliniowości czujnika #1 (ze znakiem: U2)
20,21: współczynnik kompensacji nieliniowości czujnika #2 (ze znakiem: U2)
22,23: suma kontrolna kalibracji
- do wer.2.7 flagi nie mają znaczenia
- od wer.2.8
0x01 - flaga oznacza tryb wyświetlania w [hPa] i [mmHg]
- numer seryjny == 0 jest nieważny (traktować jako błąd)
- wersja barometru:
- 0: nieważny (traktować jako błąd)
- 1: typ W
- 2: typ B (ważne od wer.2.1)
- 3: typ V (ważne od wer.2.6)
zachodzi następująca nieregularność:
- jeżeli wersja barometru == 2.0 to niezależnie od zawartości
lokacji `typ barometru' jest to typ W.
-------------------------------------------------------------------------------