Protokół transmisji LB486
wersja 1.11 - 29.12.2000
0. Spis treści
1. Opis ogólny
2. Warstwa fizyczna
3. Warstwa łącza
3.1. Nagłówek ramki
3.2. Blok danych
4. Warstwa aplikacji
4.1. Odczyt informacji identyfikacyjnej
4.2. Odczyt bieżącego czasu
4.3. Ustawienie bieżącego czasu
4.4. Odczyt aktualnie ustawionego okresu rejestracji danych (wersje 1.0-1.1)
4.4.1. Odczyt okresu rejestracji - wersje 1.0-1.1
4.4.2. Odczyt okresu rejestracji - wersje 1.2-1.11
4.5. Ustawienie okresu rejestracji danych (wersje 1.0-1.1)
4.5.1. Ustawienie okresu rejestracji - wersje 1.0-1.1
4.5.2. Ustawienie okresu rejestracji - wersje 1.2-1.11
4.6. Odczyt aktualnych wyników pomiarów z dołączonych przyrządów pomiarowych
4.6.1. Odczyt wyników - wersje 1.0-1.4
4.6.2. Odczyt wyników - wersje 1.5-1.11
4.7. Odczyt pamięci rejestracji okresowej danych
4.7.1. Odczyt pamięci - wersje 1.0-1.4
4.7.2. Odczyt pamięci - wersje 1.5-1.11
4.8.Wyzerowanie licznika deszczomierza
4.9. Odczyt adresu
4.10. Ustawienie adresu
5. Uwagi
5.1 Format danych deszczomierza
5.2. Format danych z LB711
1. Opis ogólny
W komunikacji biorą udział dwie strony, z której jedną jest LB486, drugą natomiast urządzenie nadrzędne, np. komputer PC. Komunikacja odbywa się na zasadzie polecenie-odpowiedź, gdzie urządzenie nadrzędne występuje w roli odpytującego, wysyłając polecenia, natomiast LB486 wysyła dane wyłącznie jako odpowiedź na otrzymane zapytanie. Ramki zawierające niezidentyfikowane dane, wliczając w to ramki mające niewłaściwy adres, typ, lub sumę kontrolną są przez LB486 ignorowane. W przypadku odebrania takiej ramki przez urządzenie nadrzędne jako odpowiedź na uprzednie polecenie, należy dokonać powtórki ostatniego cyklu polecenie-odpowiedź. LB486 nie wysyła ramek bez polecenia.
2. Warstwa fizyczna
W warstwie fizycznej LB486 wykorzystuje łącze RS232 lub RS485. W obydwu przypadkach parametry transmisji są takie same:
- prędkość transmisji 9600 bps
- 8 bitów danych
- brak bitu parzystości/nieparzystości
- 1 bit stopu.
W przypadku łącza RS232 nie jest wykorzystywany mechanizm potwierdzeń sprzętowych (RTS/CTS, DSR/DTR).
3. Warstwa łącza
Ramii wykorzystywane w warstwie łącza są identyczne, niezależnie od zastosowanej warstwy fizycznej (RS232 lub RS485). Ramka danych składa się z nagłówka i bloku danych, następujących po sobie.
+----------+
| Nagłówek |
+----------+
| Dane |
+----------+
Pierwszym bajtem nagłówka jest bajt synchronizacji o wartości unikalnej w całej ramce, wynoszącej 0x7e. Ponieważ możliwe jest wystąpienie bajtu o takiej wartości w treści ramki, należy zapewnić unikalność bajtu synchronizacji - w tym celu każde wystąpienie bajtu o wartości 0x7e jest zastępowane parą dwóch bajtów: 0x7f i ~0x7e. Bajt 0x7f jest tym samym bajtem sygnalizującym parę dwóch bajtów, które należy zamienić na jeden. Stwarza to konieczność wprowadzenia jeszcze jednego podstawienia, służącego do reprezentowania bajtu 0x7f w treści ramki. Jest on zastępowany parą dwóch bajtów: 0x7f i 0x7f. Bajty 0x7e i 0x7f stanowią tzw. bajty charakterystyczne. W związku z powyższym mechanizmem, wprowadzić należy pojęcie ramki fizycznej i ramki logicznej. Ramka logiczna jest to ramka zawierająca faktyczne dane. Ramka fizyczna natomiast powstaje z ramki logicznej przez zamianę podanych bajtów charakterystycznych na pary innych bajtów, tym samym wydłużając długość ramki - ramka fizyczna ma długość taką samą lub większą niż ramka logiczna. Podany poniżej opis odnosi się do treści ramki logicznej. Przy transmisji ramki należy dokonać odpowiednich podstawień. W ekstremalnym przypadku ramki logicznej składającej się wyłącznie z bajtów
charakterystycznych, jej długość fizyczna będzie dwukrotnie większa.
3.1. Nagłówek ramki
Nagłówek ramki jest stałej wielkości, i składa się z następujących pól:
+-------------+
| Sync |
+-------------+
| AddressTo |
+-------------+
| AddressFrom |
+-------------+
| Type |
+-------------+
| Length |
+-------------+
| ControlSum |
+-------------+
Poszczególne pola mają następujące znaczenie:
Sync (1 bajt)
Jest to bajt synchronizacji, służący do wykrycia i synchronizacji początku ramki danych. Jego wartość jest niepowtarzalna w całej ramce. Wynosi ona 0x7e. Jeżeli w dalszej części ramki miałby wystąpić bajt o takiej wartości, jest on zastępowany przez parę innych wartości, zgodnie z opisem wcześniej.
AddressTo (1 bajt)
Jest to adres odbiorcy danych. W przypadku LB486 w wersjach 1.0-1.7, wartość ta nie była sprawdzana (sugerowaną wartością było 0x00). W wersji 1.8, LB486 odpowiadało na adres 0x04 i adres broadcast 0x00. Począwszy od wersji 1.9, LB486 odpowiada na adres broadcast 0x00, oraz dodatkowo na adres, który można zaprogramować przy pomocy jednego z poleceń, pozwalając tym samym na ustalenie adresu, co ma znaczenie w przypadku połączenia kilku LB486 przy pomocy jednego, wspólnego łącza RS485 z komputerem. W takim przypadku sugerowany adres dla komputera to 0xff (taki adres używany jest przez oprogramowanie firmy LAB-EL), natomiast adresy z zakresu 0x01-0xfe mogą być dowolnie przyznawane poszczególnym LB486.
AddressFrom (1 bajt)
Jest to adres nadawcy danych, w przypadku transmisji do LB486 jest on przepisywany do pola AddressTo w odpowiedzi. Przy wysyłaniu danych do LB486 adres ten może być dowolny (nie zalecane jest użycie adresu 0x00, w przypadku współpracy z kilkoma LB486 na jednej magistrali RS485 wręcz wykluczone jest użycie adresu 0x00). Ramki wysyłane przez LB486 w wersjach 1.0-1.7 mają adres nadawcy równy 0x00, w wersji 1.8 adres ten wynosi 0x04, natomiast począwszy od wersji 1.9 w polu tym wysyłany jest rzeczywisty adres LB486, zaprogramowany przy pomocy jednego z poleceń.
Type (1 bajt)
Jest to bajt oznaczający typ ramki. Na podstawie typu ramki ustalane jest jej znaczenie w wyższej warstwie protokołu.
Length (1 bajt)
Bajt ten określa długość bloku danych, następującego za nagłówkiem ramki. Jego zakres określa dopuszczalną ilość danych możliwych do przesłania w jednej ramce: od 0 (brak danych), do 255 bajtów. Tym samym długość całkowita ramki może wynosić od 6 bajtów (6 bajtów nagłówka + 0 bajtów danych), do 261 bajtów (6 bajtów nagłówka + 255 bajtów danych) - chodzi o ramkę logiczną, nie wliczając dodatkowych bajtów służących do zastępowania bajtów o wartościach charakterystycznych.
ControlSum (1 bajt)
Jest to suma kontrolna całej ramki, łącznie z blokiem danych, z wyłączeniem bajtu synchronizacji (Sync). Jej wartość jest taka, żeby suma wszystkich bajtów w całej ramce wynosiła zero (wliczając w to 5 bajtów nagłówka (bez Sync), razem z bajtem sumy, oraz każdy bajt z bloku danych). Do sumy wliczane są bajty ramki logicznej, nie fizycznej. Oznacza to że jeżeli w treści ramki wystąpi np. bajt 0x7e, to on jest wliczany do sumy, a nie bajty 0x7f i ~0x7e występujące w ramce fizycznej.
3.2. Blok danych
Bezpośrednio za nagłówkiem ramki następuje blok danych, o długości określonej przez jedno z pól nagłówka. Długość danych może wynosić od 0 (nie ma bloku
danych), do 255 bajtów. Jeżeli w treści danych występują bajty o wartościach charakterystycznych, są one zastępowane parami innych bajtów, wydłużając tym samym fizyczną długość bloku danych. Blok danych jest obejmowany sumą kontrolną, która jest jednym z pól nagłówka ramki.
4. Warstwa aplikacji
W warstwie aplikacji LB486 udostępnia kilka usług, z których każda obsługiwana jest oddzielnym typem ramki. W kolejnych wersjach LB486 wprowadzane były różne zmiany - przy opisie każdej ramki znajdują się informacje na temat wersji.
W każdym przypadku ramka wysyłana do LB486 musi mieć następujący nagłówek:
AddressTo - adres LB486, lub 0x00 (broadcast - każde LB486 odpowiada na ten adres)
AddressFrom - bez znaczenia, sugerowany adres nadawcy danych to 0xff
Type - zależnie od wywoływanej usługi
Length - zależnie od wywoływanej usługi
ControlSum - w/g danych ramki
Ramki odbierane z LB486 mają następujący nagłówek:
AddressTo - AddressFrom z ramki polecenia
AddressFrom - rzeczywisty adres LB486
Type - zależnie od wywoływanej usługi
Length - zależnie od wywoływanej usługi
ControlSum - w/g danych ramki
4.1. Odczyt informacji identyfikacyjnej (wersje 1.0 - 1.11)
Ramka polecenia:
Type = 0
Length = 0
Dane: brak
Ramka odpowiedzi:
Type = 0
Length = 11
Dane:
offset długość wartość
------ ------- -------
0 1 bajt wersja sprzętowa
1 1 bajt wersja oprogramowania
2 1 bajt rewizja oprogramowania
3 1 bajt dzień wydania
4 1 bajt miesiąc wydania
5 2 bajty rok wydania (big endian)
7 2 bajty numer seryjny (big endian)
9 2 bajty opcje sprzętowe (big endian)
4.2. Odczyt bieżącego czasu (wersje 1.0 - 1.11)
Ramka polecenia:
Type = 3
Length = 0
Dane: brak
Ramka odpowiedzi:
Type = 0
Length = 6
Dane:
offset długość wartość
------ ------- -------
0 1 bajt setne (BCD)
1 1 bajt sekundy (BCD)
2 1 bajt minuty (BCD)
3 1 bajt godziny (BCD)
4 1 bajt dzień (BCD)
5 1 bajt miesiąc (BCD)
4.3. Ustawienie bieżącego czasu (wersje 1.0 - 1.11)
Ramka polecenia:
Type = 4
Length = 6
Dane:
offset długość wartość
------ ------- -------
0 1 bajt setne (BCD)
1 1 bajt sekundy (BCD)
2 1 bajt minuty (BCD)
3 1 bajt godziny (BCD)
4 1 bajt dzień (BCD)
5 1 bajt miesiąc (BCD)
Ramka odpowiedzi:
Type = 4
Length = 0
Dane: brak
4.4. Odczyt aktualnie ustawionego okresu rejestracji danych
4.4.1. Odczyt okresu rejestracji - wersje 1.0-1.1
UWAGA:polecenie istnieje nadal w późniejszych wersjach oprogramowania, jednak korzystanie z niego nie jest zalecane. Zamiast niego należy używać polecenia opisanego w p. 4.4.2. W przypadku użycia w wersjach >= 1.2, aktualnie ustawiony okres rejestracji zostanie podany jako zaokrąglony w dół do pełnych minut, jeśli zaś ustawiony okres jest większy niż 60*255, to wynik jest młodszym bajtem wyniku po podzieleniu aktualnego okresu przez 60.
Ramka polecenia:
Type = 5
Length = 0
Dane: brak
Ramka odpowiedzi:
Type = 5
Length = 1
Dane:
offset długość wartość
------ ------- -------
0 1 bajt okres rejestracji w minutach (0-255, binarnie)
4.4.2. Odczyt okresu rejestracji - wersje 1.2-1.11
Ramka polecenia:
Type = 9
Length = 0
Dane: brak
Ramka odpowiedzi:
Type = 9
Length = 2
Dane:
offset długość wartość
------ ------- -------
0 2 bajty okres rejestracji w sekundach (1-65535, binarnie, big endian)
4.5. Ustawienie okresu rejestracji danych
4.5.1. Ustawienie okresu rejestracji - wersje 1.0-1.1
UWAGA:polecenie istnieje nadal w późniejszych wersjach oprogramowania, jednak korzystanie z niego nie jest zalecane. Zamiast niego należy używać polecenia opisanego w p. 4.5.2. W przypadku użycia w wersjach >= 1.2, ustawiony zostanie okres w postaci wielkorotności 60 sekund.
Ramka polecenia:
Type = 6
Length = 1
Dane:
offset długość wartość
------ ------- -------
0 1 bajt okres rejestracji w minutach (1-255, binarnie)
wartość = 0 jest niedozwolona !
Ramka odpowiedzi:
Type = 6
Length = 0
Dane: brak
4.5.2. Ustawienie okresu rejestracji - wersje 1.2-1.11
Ramka polecenia:
Type = 10
Length = 2
Dane:
offset długość wartość
------ ------- -------
0 2 bajty okres rejestracji w sekundach (1-65535, binarnie, big endian)
wartość = 0 jest niedozwolona !
Ramka odpowiedzi:
Type = 10
Length = 0
Dane: brak
4.6. Odczyt aktualnych wyników pomiarów z dołączonych przyrządów pomiarowych
4.6.1. Odczyt wyników - wersje 1.0-1.4
Ramka polecenia:
Type = 7
Length = 0
Dane: brak
Ramka odpowiedzi:
Type = 7
Length - faktyczna długość bloku danych (minimum 5)
Dane:
offset długość wartość
------ ------- -------
0 1 bajt długość bloku danych (5 bajtów opisu długości + bajty danych)
1 1 bajt długość bloku danych z przyrządu na wejściu nr 1
2 1 bajt długość bloku danych z przyrządu na wejściu nr 2
3 1 bajt długość bloku danych z przyrządu na wejściu nr 3
4 1 bajt długość bloku danych z przyrządu na wejściu nr 4
Za tymi 5 bajtami występują kolejno dane odczytane z wejść 1..4, zgodnie z opisem formatu danych odpowiednich przyrządów, w/g osobnego opisu. Z tych danych obcinany jest nagłówek rekordu i terminator, tym samym rekord jest krótszy o 2 bajty w stosunku do danych wysyłanych przez dołączone przyrządy. Bit parzystości jest także w każdym bajcie wycinany - każdy bajt zawiera 6 bitów danych, 2 najstarsze bity są wyzerowane. Format danych z LB711 i deszczomierza został zmodyfikowany - jest on opisany w dalszej części.
Przykład:do wejścia 1 dołączony jest LB710, a do wejścia 3 - LB715. Do wejść 2 i 4 nie jest dołączony żaden przyrząd.
Type = 7
Length = 34
Dane:
offset wartość
------ -------
=== 5 bajtów opisu rekordów ===
0 34 (12 bajtów z LB710 + 17 bajtów z LB715 + 5 bajtów opisu długości)
1 12 (rekord danych z LB710 na wejściu 1)
2 0 (brak danych z wejścia 2)
3 17 (rekord danych z LB715 na wejściu 3)
4 0 (brak danych z wejścia 2)
=== rekord danych z wejścia 1 ===
5 (12 bajtów danych z LB710 na wejściu 1)
=== rekord danych z wejścia 2 ===
(0 bajtów danych z wejścia 2)
=== rekord danych z wejścia 1 ===
17 (17 bajtów danych z LB715 na wejściu 3)
=== rekord danych z wejścia 2 ===
(0 bajtów danych z wejścia 4)
=== koniec bloku danych ===
4.6.2. Odczyt wyników - wersje 1.5-1.11
Ramka polecenia:
Type = 7
Length = 0
Dane: brak
Ramka odpowiedzi:
Type = 7
Length - faktyczna długość bloku danych (minimum 6)
Dane:
offset długość wartość
------ ------- -------
0 1 bajt długość bloku danych (6 bajtów opisu długości + bajty danych)
1 1 bajt długość bloku danych z przyrządu na wejściu nr 0
2 1 bajt długość bloku danych z przyrządu na wejściu nr 1
3 1 bajt długość bloku danych z przyrządu na wejściu nr 2
4 1 bajt długość bloku danych z przyrządu na wejściu nr 3
5 1 bajt długość bloku danych z przyrządu na wejściu nr 4
Za tymi 6 bajtami występują kolejno dane odczytane z wejść 0..4, zgodnie z opisem formatu danych odpowiednich przyrządów, w/g osobnego opisu. Z tych danych obcinany jest nagłówek rekordu i terminator, tym samym rekord jest krótszy o 2 bajty w stosunku do danych wysyłanych przez dołączone przyrządy. Bit parzystości jest także w każdym bajcie wycinany - każdy bajt zawiera 6 bitów danych, 2 najstarsze bity są wyzerowane. Format danych z LB711 i deszczomierza został zmodyfikowany - jest on opisany w dalszej części.
Przykład: do wejścia 0 dołączony jest deszczomierz, do wejścia 1 dołączony jest LB710, a do wejścia 3 - LB715. Do wejść 2 i 4 nie jest dołączony żaden przyrząd.
Type = 7
Length = 39
Dane:
offset wartość
------ -------
=== 6 bajtów opisu rekordów ===
0 39 (4 bajty z deszczomierza + 12 bajtów z LB710 + 17 bajtów z LB715 + 6 bajtów opisu długości)
1 4 (rekord danych z deszczomierza na wejściu 0)
2 12 (rekord danych z LB710 na wejściu 1)
3 0 (brak danych z wejścia 2)
4 17 (rekord danych z LB715 na wejściu 3)
5 0 (brak danych z wejścia 2)
=== rekord danych z wejścia 0 ===
6 (4 bajty danych z deszczomierza na wejściu 0)
=== rekord danych z wejścia 1 ===
10 (12 bajtów danych z LB710 na wejściu 1)
=== rekord danych z wejścia 2 ===
(0 bajtów danych z wejścia 2)
=== rekord danych z wejścia 1 ===
22 (17 bajtów danych z LB715 na wejściu 3)
=== rekord danych z wejścia 2 ===
(0 bajtów danych z wejścia 4)
=== koniec bloku danych ===
4.7. Odczyt pamięci rejestracji okresowej danych
4.7.1. Odczyt pamięci - wersje 1.0-1.4
Ramka polecenia:
Type = 8
Length = 0
Dane: brak
Odpowiedź składa się ze zmiennej ilości ramek, zależnie od liczby zgromadzonych w pamięci LB486 rekordów.
Jako pierwsza przysyłana jest ramka określająca ilość zgromadzonych danych:
Type = 8
Length = 4
Dane:
offset długość wartość
------ ------- -------
0 2 bajty ilość zgromadzonych rekordów (big endian)
2 2 bajty pojemność pamięci LB486 liczona w rekordach (big endian)
Piersze słowo określa ile będzie następnych ramek zawierających rekordy z danymi (może być 0, jeśli pamięć jest pusta, w takim przypadku powyższa ramka jest odebrana jako ostatnia - nie będzie ramek z rekordami danych). Drugie słowo określa pojemność pamięci LB486, i ma wartość wyłącznie informacyjną. Pojemność wyrażona jest w liczbie rekordów, które można maksymalnie zgromadzić. Jeżeli ilość zgromadzonych rekordów jest większa niż 0, to jako następne przesyłane są ramki zawierające dane, w ilości określonej w poprzedniej ramce. Każda z ramek ma następującą postać:
Type = 8
Length = 213
Dane:
offset długość wartość
------ ------- -------
0 2 bajty numer rekordu (big endian)
2 1 bajt setne sekundy (BCD)
3 1 bajt sekundy (BCD)
4 1 bajt minuty (BCD)
5 1 bajt godziny (BCD)
6 1 bajt dzień (BCD)
7 1 bajt miesiąc (BCD)
8 205 b. rekord danych
Numer rekordu liczony jest od 0 do wartości (ilość rekordów - 1). Wartość tego pola zwiększana jest o 1 w każdej kolejno transmitowanej ramce. Następne 6 bajtów określa czas rejestracji danego rekordu. Następne 205 bajtów zawiera rekord danych, zgodny formatem z opisem przy poleceniu odczytu aktualnych wyników, tylko określający wyniki pomiarów w chwili rejestracji. Długość tego rekordu wynosi minimum 5 bajtów, gdy brak jest dołączonych przyrządów; faktyczna długość zależna jest ilości i rodzaju dołączonych przyrządów. Na ten blok danych przeznaczone jest 205 bajtów, zwykle wykorzystane jest mniej - np. tak jak w przykładzie podanym przy opisie polecenia odczytu aktualnych danych - 34 bajty. Pozostałe niewykorzystane bajty mają wartość przypadkową i nie należy ich w żaden sposób interpretować.
4.7.2. Odczyt pamięci - wersje 1.5-1.11
Ramka polecenia:
Type = 8
Length = 0
Dane: brak
Odpowiedź składa się ze zmiennej ilości ramek, zależnie od liczby zgromadzonych w pamięci LB486 rekordów.
Jako pierwsza przysyłana jest ramka określająca ilość zgromadzonych danych:
Type = 8
Length = 4
Dane:
offset długość wartość
------ ------- -------
0 2 bajty ilość zgromadzonych rekordów (big endian)
2 2 bajty pojemność pamięci LB486 liczona w rekordach (big endian)
Piersze słowo określa ile będzie następnych ramek zawierających rekordy z danymi (może być 0, jeśli pamięć jest pusta, w takim przypadku powyższa ramka jest odebrana jako ostatnia - nie będzie ramek z rekordami danych). Drugie słowo określa pojemność pamięci LB486, i ma wartość wyłącznie informacyjną. Pojemność wyrażona jest w liczbie rekordów, które można maksymalnie zgromadzić. Jeżeli ilość zgromadzonych rekordów jest większa niż 0, to jako następne przesyłane są ramki zawierające dane, w ilości określonej w poprzedniej ramce. Każda z ramek ma następującą postać:
Type = 8
Length = faktyczna długość bloku danych (minimum 8 + 6)
Dane:
offset długość wartość
------ ------- -------
0 2 bajty numer rekordu (big endian)
2 1 bajt setne sekundy (BCD)
3 1 bajt sekundy (BCD)
4 1 bajt minuty (BCD)
5 1 bajt godziny (BCD)
6 1 bajt dzień (BCD)
7 1 bajt miesiąc (BCD)
8 ? rekord danych, długość minumum 6 bajtów
Numer rekordu liczony jest od 0 do wartości (ilość rekordów - 1). Wartość tego pola zwiększana jest o 1 w każdej kolejno transmitowanej ramce. Następne 6 bajtów określa czas rejestracji danego rekordu. Następne bajty to rekord danych, zgodny formatem z opisem przy poleceniu odczytu aktualnych wyników, tylko określający wyniki pomiarów w chwili rejestracji. Długość tego rekordu wynosi minimum 6 bajtów, gdy brak jest dołączonych przyrządów; faktyczna długość zależna jest ilości i rodzaju dołączonych przyrządów. Na ten rekord danych przeznaczone jest maksymalnie 210 bajtów, zwykle wykorzystane jest mniej - np. tak jak w przykładzie podanym przy opisie polecenia odczytu aktualnych danych jest to 39 bajtów.
4.8. Wyzerowanie licznika deszczomierza (wersje 1.5-1.11)
Dotyczy wyłącznie deszczomierza dołączonego do wejścia 0, na żadnym innym wejściu dołączenie desczomierza nie jest możliwe.
Ramka polecenia:
Type = 11
Length = 0
Dane: brak
Ramka odpowiedzi:
Type = 11
Length = 0
Dane: brak
4.9. Odczyt adresu LB486 (od wersji 1.9)
UWAGA:wysyłanie tego zapytania ma praktyczny sens tylko przy adresowaniu LB486 przy pomocy adresu broadcast 0x00, wtedy w odpowiedzi podawany jest rzeczywisty adres.
Ramka polecenia:
Type = 12
Length = 0
Dane: brak
Ramka odpowiedzi:
Type = 12
Length = 1
Dane:
offset długość wartość
------ ------- -------
0 1 bajt adres LB486
4.10. Ustawienie adresu LB486 (od wersji 1.9)
Ramka polecenia:
Type = 13
Length = 1
Dane:
offset długość wartość
------ ------- -------
0 1 bajt adres LB486
Ramka odpowiedzi:
Type = 13
Length = 0
Dane: brak
Ustawiany adres może mieć dowolną wartość. W przypadku ustawienia adresu 0x00, LB486 można zaadresować tylko i wyłącznie przy pomocy adresu broadcast 0x00, a w odpowiedzi ramki będą miały ustawiony adres nadawcy również 0x00. Jest to całkowicie dopuszczalna kombinacja, w sytuacji gdy LB486 nie wymaga specyficznego adresu (np. jest to jedyne LB486 dołączone do komputera - w przypadku interfejsu RS232 zawsze tak będzie, w przypadku RS485 jest to jedna z możliwości). Wszystkie LB486 mają początkowo (fabrycznie) adres ustawiony na 0x00.
Ustawienie adresu z zakresu 1-255 pozwala na adresowanie kilku LB486 na jednej magistrali RS485. Sugerowane jest użycie adresu 0xff dla urządzenia odpytującego (komputer), natomiast adresów 0x01-0xfe dla poszczególnych LB486 (adres 0xff jest używany przez oprogramowanie firmy LAB-EL). Nie jest to niezbędny warunek - urządzenie odpytujące może mieć dowolny adres, pod warunkiem że jest unikalny (co wyklucza adres broadcast 0x00 dla urządzenia odpytującego w przypadku współpracy z kilkoma LB486, natomiast adres taki jest dopuszczalny przy współpracy z pojedynczym LB486, aczkolwiek nie zalecany).
5. Uwagi
5.1. Format danych deszczomierza (począwszy od wersji 1.5)
Deszczomierz może być dołączony wyłącznie na wejściu 0. Ciągłe zwarcie na tym wejściu sygnalizuje brak dołączonego deszczomierza. Ciągłe rozwarcie natomiast jest sygnalizacją dołączenia deszczomierza, a krótkie impulsy zwierające wejście są zliczane przez LB486. Dane z deszczomierza to stan licznika zliczającego te impulsy. Licznik może w każdej chwili zostać wyzerowany odpowiednim poleceniem. Rekord danych składa się z jednej liczby 4-bajtowej, okeślającej stan licznika. Kolejność bajtów to little-endian (młodszy pierwszy). Tym samym wielkość rekordu to 4 bajty.
5.2. Format danych z LB711 (począwszy od wersji 1.3)
Format danych z LB711 jest modyfikowany przez LB486. LB711 przesyła dane z poszczególnych kanałów w postaci oddzielnych rekordów, natomiast LB486
zbiera je razem, i tworzy jeden rekord o następującej postaci:
S nnnn t0 t1 t2 t3 t4 t5 t6 t7 t8
S - status LB711 (1 bajt)
nnnn - numer seryjny LB711 (4 bajty)
t0..8 - temperatury (9 * 5 bajtów)
t0 - srednia
t1..8 - temperatury z poszczegolnych kanalow
Długość rekordu = 50 bajtów.
Format statusu i numeru seryjnego są zgodne z opisem LB711. Format temperatury jest następujący: stttt, i jest on zgodny z opisem LB711, z jednym dodatkiem: gdy s = '?' to wynik pomiaru jest nieznany.