M-BUS

Nápověda k protokolu M-BUS

Referenční přehled rámců, polí a datových struktur v pořadí, ve kterém se čtou v telegramu M-BUS.

M-BUS

Telegramy

Podczas ręcznej diagnostyki najpierw trzeba rozpoznać typ wiadomości. Pierwszy bajt zwykle odróżnia krótką ramkę, długą ramkę oraz jednobajtowe potwierdzenie E5.

Pojedynczy znak Krótka ramka Ramka sterująca Długa ramka
E5h Start 10h Start 68h Start 68h
Pole C Pole L = 3 Pole L
Pole A Pole L = 3 Pole L
suma kontrolna Start 68h Start 68h
Stop 16h Pole C Pole C
Pole A Pole A
Pole CI Pole CI
suma kontrolna Dane użytkownika
Stop 16h (0-252 bajty)
suma kontrolna
Stop 16h

Pojedynczy znak

Pojedynczy bajt E5 oznacza potwierdzenie bez dodatkowych danych. W diagnostyce trzeba odróżnić go od odpowiedzi zawierającej rzeczywiste wartości pomiarowe.

Właściwość Wartość i znaczenie
Wartość E5h
Długość 1 Byte
Typowy kierunek Slave → Master jako potwierdzenie odebranego polecenia.
RX E5 Jednobajtowe potwierdzenie odbioru bez części danych.

Krótka ramka

Krótka ramka ma stałą długość i służy do prostych wiadomości sterujących. Typowa postać to 10 C A CS 16, gdzie C to pole sterujące, A adres, CS suma kontrolna, a 16 kończy ramkę.

Start C A CS Stop
10h kod sterujący adres (C+A)mod 256 16h
Element Kontrola przy dekodowaniu
10h Pierwszy bajt musi być bajtem startu krótkiej ramki. Inna wartość oznacza inny typ wiadomości albo błąd odbioru.
C Określa procedurę, na przykład SND_NKE, REQ_UD1 albo REQ_UD2. Znaczenie bitów ocenia się według kierunku master/slave.
A Musi odpowiadać docelowemu adresowi podstawowemu albo adresowi broadcast zgodnie z celem zapytania.
CS Najpierw sumuje się tylko bajty C i A, a następnie bierze dolne 8 bitów wyniku, czyli modulo 256. Bajty start i stop nie są wliczane.
TX 10 5B 01 5C 16 Zapytanie o dane z urządzenia o adresie podstawowym 01.

Ramka sterująca

Ramka sterująca używa bajtu startu 68h, ale ma stałą długość L = 3. Przenosi tylko pola C, A i CI, czyli informację sterującą bez danych użytkownika.

W diagnostyce pojawia się na przykład przy poleceniach ustawiających albo wybierających urządzenie, które nie przenoszą wartości pomiarowych.

Start L L Start C A CI CS Stop
68h 03h 03h 68h kod sterujący adres kod aplikacyjny (C+A+CI)mod 256 16h
Zastosowanie Znaczenie techniczne
Wybór urządzenia Master może użyć CI i powiązanych reguł do przygotowania slave do dalszej komunikacji bez wysyłania danych pomiarowych w tej ramce.
Polecenie aplikacyjne bez DATA Ramka niesie informację w polu CI. Gdy polecenie wymaga parametrów albo danych aplikacyjnych, używa się ramki długiej.
Walidacja Oba bajty L muszą mieć wartość 03h, drugi start musi być 68h, a suma kontrolna jest liczona tylko z C, A i CI jako modulo 256.
TX 68 03 03 68 53 01 51 A5 16 Ramka sterująca ze stałą długością L = 3.

Długa ramka

Długa ramka przenosi część danych. Typowa postać to 68 L L 68 C A CI DATA CS 16. Para L określa długość od C do końca danych, a CI identyfikuje typ danych aplikacyjnych.

Start L L Start C A CI DATA CS Stop
68h L L 68h sterowanie adres typ danych 0-252 Byte (C+A+CI+ΣDATA)mod 256 16h
Krok walidacji Reguła
Start i długość Pierwszy i czwarty bajt muszą mieć wartość 68h, a oba bajty L muszą być identyczne.
Zakres L L obejmuje C, A, CI i DATA. Dlatego minimalna długa ramka bez DATA ma L = 3, a każdy bajt DATA zwiększa L o 1.
Suma kontrolna CS liczy się jako modulo 256 z sumy bajtów C, A, CI oraz wszystkich bajtów DATA. Start, L, samo CS i stop nie są wliczane.
Interpretacja DATA DATA nie wolno czytać bez CI. Dopiero CI określa, czy ładunek jest strukturą zmienną, stałą, raportem błędu, alarmem albo innym znaczeniem aplikacyjnym.
RX 68 15 15 68 08 01 72 78 56 34 12 24 40 01 07 02 00 00 00 04 00 10 27 00 00 38 16 Odpowiedź urządzenia z nagłówkiem danych zmiennych i jednym rekordem danych.

Dekodowanie danych

Dekodowanie przebiega od ramki do danych: najpierw sprawdza się start, długość i sumę kontrolną, potem pole sterujące C, adres A, pole CI, a na końcu rekordy danych DIF/VIF.

Część Znaczenie
C Kierunek i typ zapytania albo odpowiedzi.
A Adres podstawowy urządzenia na magistrali.
CI Typ danych aplikacyjnych, na przykład odpowiedź zmienna z rekordami danych.
DIF/VIF Kodowanie wartości, funkcji, znaczenia i jednostki rekordu danych.

Pole L

Pole L określa długość zmiennej części ramki długiej albo sterującej. W długiej ramce po pierwszym bajcie startu 68h występują dwa identyczne bajty L, a po nich drugi bajt startu 68h.

Wartość L liczy się od pola C do ostatniego bajtu DATA włącznie. Nie obejmuje bajtów startu 68h, samych pól L, sumy kontrolnej CS ani bajtu stop 16h. Jeśli obie wartości L różnią się, ramka jest błędna.

Ramka Postać Znaczenie L
Ramka sterująca 68 03 03 68 C A CI CS 16 Stała długość 3, ponieważ ramka zawiera tylko C, A i CI.
Długa ramka 68 L L 68 C A CI DATA CS 16 Zmienna długość obszaru C, A, CI i DATA.
Przykład Obliczenie L
68 03 03 68 53 01 51 A5 16 L = 3, ponieważ liczą się tylko bajty 53h, 01h i 51h.
68 13 13 68 08 05 73 ... CS 16 L = 13h, czyli 19 bajtów od pola C 08h do ostatniego bajtu części danych.

Podczas ręcznego dekodowania pole L jest dobrym pierwszym filtrem błędów. Jeśli długość się nie zgadza, interpretowanie DIF/VIF nie ma sensu, ponieważ przesunięcie danych zwykle psuje resztę telegramu.

Pole C

Pole C, nazywane także Control Field albo Function Field, zawiera parametry sterujące ramki. Określa kierunek przepływu danych, a przez dolne bity funkcyjne także właściwy cel wiadomości.

W diagnostyce pole C szybko pokazuje, czy ramka jest inicjalizacją, zapisem do urządzenia, żądaniem danych albo odpowiedzią urządzenia slave. W krótkiej ramce znajduje się za bajtem startu 10h, a w ramce sterującej i długiej za drugim bajtem startu 68h. Wartość pola C wchodzi do sumy kontrolnej.

Kierunek 7 6 5 4 3 2 1 0
Master → Slave 0 1 FCB FCV F3 F2 F1 F0
Slave → Master 0 0 ACD DFC F3 F2 F1 F0
Bity Nazwa Dotyczy kierunku Znaczenie w komunikacji
7-6 wzorzec kierunku oba kierunki Wartość 01b oznacza master → slave, wartość 00b oznacza slave → master.
5 FCB / ACD według kierunku U mastera jest to bit zliczania ramki; u slave żądanie przekazania danych priorytetowych Class 1.
4 FCV / DFC według kierunku U mastera potwierdza ważność FCB; u slave steruje przepływem danych i informuje, że urządzenie nie jest gotowe przyjąć kolejnych danych.
3-0 F3-F0 oba kierunki Kod funkcji procedury, na przykład inicjalizacja, żądanie danych albo odpowiedź z danymi.

W kierunku master → slave bit FCB przy poprawnej komunikacji przełącza się między 0 i 1. Jeśli master nie otrzyma odpowiedzi na poprzednią ramkę, powtarza tę samą ramkę z tym samym FCB, a slave powinien ponownie zwrócić tę samą odpowiedź. Bit FCV wskazuje, czy FCB jest ważny; przy FCV = 0 bit FCB jest ignorowany.

W kierunku slave → master bity 5 i 4 mają inne znaczenie. ACD = 1 sygnalizuje, że slave chce przekazać dane priorytetowe klasy Class 1. DFC = 1 oznacza sterowanie przepływem danych: slave nie jest gotowy przyjąć kolejnych danych.

Bity F0 do F3 kodują właściwą funkcję wiadomości. Warstwa łącza M-BUS używa dwóch podstawowych procedur: wysłanie z potwierdzeniem SND/CON oraz żądanie z odpowiedzią REQ/RSP.

Nazwa Pole C bin. Pole C hex. Ramka Opis
SND_NKE 0100 0000 40 krótka Inicjalizacja stacji uczestniczącej.
SND_UD 01F1 0011 53/73 długa/sterująca Wysłanie danych ze stacji sterującej do stacji uczestniczącej.
REQ_UD2 01F1 1011 5B/7B krótka Żądanie zwykłych danych Class 2 od stacji uczestniczącej.
REQ_UD1 01F1 1010 5A/7A krótka Żądanie priorytetowych danych Class 1 od stacji uczestniczącej.
RSP_UD 00AD 1000 08/18/28/38 długa/sterująca Wysłanie danych ze stacji uczestniczącej do stacji sterującej po żądaniu.

Pole A

Pole A jest adresem urządzenia na magistrali M-BUS. Master używa go do określenia, do którego licznika albo konwertera jest skierowany telegram, a slave zwraca ten sam adres w odpowiedzi.

W diagnostyce serwisowej pole A jest pierwszym miejscem kontroli, czy ustawiony adres podstawowy zgadza się z odpowiedzią urządzenia. Jeśli adres się różni, może odpowiadać inne urządzenie albo w programie ustawiono zły adres.

HEX DEC Znaczenie Odpowiedź
00h 0 Domyślny albo nieprzypisany adres podstawowy urządzenia. Odpowiedź przyjdzie, jeśli urządzenie używa adresu 0.
01h-FAh 1-250 Typowe adresy podstawowe urządzeń w zakresie od 1 do 250. Odpowiada urządzenie ze zgodnym adresem podstawowym.
FDh 253 Broadcast dla adresowania wtórnego. Konkretne urządzenie wybiera się danymi aplikacyjnymi, a nie bezpośrednio polem A. Odpowiedź przyjdzie od urządzenia wybranego adresem wtórnym.
FEh 254 Broadcast testowy. Odpowiedzieć mogą wszystkie urządzenia, dlatego używa się go głównie przy jednym urządzeniu na magistrali. Odpowiedź może przyjść od wszystkich urządzeń; przy wielu urządzeniach grozi kolizja.
FFh 255 Adres rozgłoszeniowy dla wiadomości do wszystkich urządzeń bez zwykłej indywidualnej odpowiedzi. Odpowiedź nie przyjdzie.
Tryb adresowania Co sprawdzić Ryzyko serwisowe
Adres podstawowy 0-250 Zgodność pola A w zapytaniu i odpowiedzi, ustawienie adresu w urządzeniu oraz kolizję zduplikowanych adresów. Dwa urządzenia z tym samym adresem podstawowym mogą odpowiedzieć jednocześnie i uszkodzić odpowiedź.
Adresowanie wtórne przez FDh Wybór urządzenia nie znajduje się w samym polu A, lecz w danych aplikacyjnych telegramu wyboru. Bez poprawnego wyboru adresu wtórnego żadne urządzenie może nie odpowiedzieć, mimo że jest fizycznie podłączone.
Broadcast FEh i FFh FEh stosuj głównie do testu pojedynczego urządzenia; FFh jest wiadomością do wszystkich bez zwykłej indywidualnej odpowiedzi. Na magistrali z wieloma urządzeniami FEh może spowodować kolizję odpowiedzi.
TX 10 5B 01 5C 16 Pole A ma wartość 01h, więc telegram jest skierowany do urządzenia o adresie podstawowym 1.

Pole CI

Pole CI, czyli Control Information, określa typ danych aplikacyjnych w telegramie oraz kolejność danych w części aplikacyjnej.

Dla rekordów wielobajtowych EN1434-3 definiuje dwa możliwe porządki bajtów. Decyduje bit 2 pola CI, liczony od bitu 0, czyli wartość 4. Ten bit jest nazywany bitem M albo bitem trybu.

Tryb Bit M Kolejność bajtów Uwaga
Tryb 1 0 Najmniej znaczący bajt jest przesyłany jako pierwszy. Zalecany tryb dla nowych aplikacji.
Tryb 2 1 Najbardziej znaczący bajt jest przesyłany jako pierwszy. Zachowany ze względu na kompatybilność.
Co określa CI Skutek dla dekodera
Typ części aplikacyjnej Te same bajty DATA mogą znaczyć coś innego zależnie od CI. Dekoder po C i A musi najpierw ocenić CI, a dopiero potem wybrać następny parser.
Kolejność wartości wielobajtowych Bit trybu wybiera porządek little-endian albo big-endian w rekordach aplikacyjnych. W zwykłych nowych implementacjach oczekuje się Mode 1.
Kierunek użycia kodów Niektóre kody CI używa master przy zapisie albo wyborze urządzeń, inne używa slave w odpowiedziach RSP_UD. Dlatego CI zawsze czyta się razem z polem C.

Kody używane przez master

Mode 1 Mode 2 Zastosowanie Zdefiniowano w
51h55hWysłanie danych.EN1434-3
52h56hWybór urządzeń slave.Usergroup 07/1993
50hReset aplikacji.Usergroup 03/1994
54hAkcja synchronizacji.propozycja
B8hUstawienie prędkości 300 baud.Usergroup 07/1993
B9hUstawienie prędkości 600 baud.Usergroup 07/1993
BAhUstawienie prędkości 1200 baud.Usergroup 07/1993
BBhUstawienie prędkości 2400 baud.Usergroup 07/1993
BChUstawienie prędkości 4800 baud.Usergroup 07/1993
BDhUstawienie prędkości 9600 baud.Usergroup 07/1993
BEhUstawienie prędkości 19200 baud.propozycja
BFhUstawienie prędkości 38400 baud.propozycja
B1hŻądanie odczytu pełnej zawartości RAM.propozycja Techem
B2hWysłanie danych użytkownika, niestandardowy zapis do RAM.propozycja Techem
B3hUruchomienie testowego trybu kalibracji.Usergroup 07/1993
B4hOdczyt EEPROM.propozycja Techem
B6hUruchomienie testu oprogramowania.propozycja Techem
90h-97hKody używane do haszowania.przestarzałe, niezalecane

Reset aplikacji CI = 50h

Kod CI 50h pozwala masterowi zresetować warstwę aplikacyjną w urządzeniu slave. Po odebraniu slave sam decyduje, które parametry zmienić, na przykład domyślne dane wyjściowe. Reset wysłany jako SND_UD z CI = 50h jest odpowiednikiem resetu warstwy łącza SND_NKE.

Po CI = 50h mogą występować parametry opcjonalne. Pierwszy parametr to 8-bitowy subkod resetu aplikacji: górne cztery bity wybierają typ telegramu albo aplikację, a dolne cztery bity numer subtelegramu. Zero w dolnych czterech bitach oznacza żądanie wszystkich subtelegramów.

Slave obsługujący tylko jeden typ telegramu może zignorować reset aplikacji i dodane parametry, ale musi potwierdzić polecenie bajtem E5.

Górne 4 bity Opis Przykład
0000bWszystko
0001bDane użytkownikazużycie
0010bProste rozliczaniewartości bieżące i z ustaloną datą wraz z datami
0011bRozszerzone rozliczaniewartości historyczne
0100bRozliczanie wielotaryfowe
0101bWartości chwiloweregulacja
0110bWartości zarządzania obciążeniemzarządzanie
0111bZarezerwowane
1000bInstalacja i uruchomienieadres magistrali, stałe daty
1001bTestowaniewartości wysokiej rozdzielczości
1010bKalibracja
1011bProdukcja
1100bRozwój
1101bAutotest
1110bZarezerwowane
1111bZarezerwowane
TX 68 04 04 68 53 FE 50 10 B1 16 Master wysyła rozszerzony reset aplikacji do wszystkich urządzeń slave i żąda wszystkich telegramów typu dane użytkownika.
RX E5 Slave potwierdza reset pojedynczym bajtem E5.

Akcja synchronizacji CI = 54h

CI 54h służy do funkcji synchronizacji po stronie slave i mastera, na przykład do synchronizacji zegara. Pozostałe wymienione kody służą do zmiany prędkości, wysyłania danych i wyboru urządzeń slave.

Kody używane przez slave

CI M=0 CI M=1 Zastosowanie Zdefiniowano w
70hZgłoszenie ogólnych błędów aplikacyjnych.Usergroup 03/1994
71hZgłoszenie stanu alarmowego.Usergroup 03/1994
72h76hOdpowiedź z danymi zmiennymi.EN1434-3
73h77hOdpowiedź z danymi stałymi.EN1434-3

W praktyce kody te interpretuje się według kategorii odpowiedzi: dane stałe, dane zmienne, ogólny błąd aplikacji albo stan alarmowy.

Stała struktura danych CI = 73h/77h

Stała struktura danych jest używana w kierunku slave → master w długiej ramce RSP_UD. Wartości CI 73h i 77h informują dekoder, że za polem CI nie występują zmienne rekordy DIF/VIF, lecz stały blok z identyfikacją, statusem i dwoma licznikami.

Ponieważ stała struktura może przenosić tylko dwa liczniki o z góry określonej długości i jest mniej opisowa niż struktura zmienna, nie jest odpowiednia dla nowych rozszerzalnych aplikacji. W istniejących licznikach trzeba ją jednak poprawnie rozpoznawać i dekodować.

Nr ident. Access No. Status Medium/Jednostki Licznik 1 Licznik 2
4 Byte 1 Byte 1 Byte 2 Byte 4 Byte 4 Byte
Pole Kodowanie Znaczenie
Numer identyfikacyjny 8 cyfr packed BCD w 4 bajtach Numer fabryczny albo seryjny w zakresie od 00000000 do 99999999.
Access No. unsigned binary Licznik dostępu zwiększany po każdej odpowiedzi RSP_UD, pomagający odróżnić nowe dane od powtórzenia.
Status flagi bitowe Określa kodowanie liczników, wartości z ustaloną datą i błędy urządzenia.
Medium/Jednostki LSByte first Przenosi wspólne mierzone medium i jednostki obu liczników. Sześć dolnych bitów każdego bajtu określa jednostkę odpowiedniego licznika, a górne bity obu bajtów razem kodują medium.
Liczniki 1 i 2 4 Byte Wartości są kodowane jako BCD albo signed binary zgodnie z bitem 0 pola Status.
Bit Status Znaczenie przy 1 Znaczenie przy 0
0Liczniki są kodowane jako signed binary.Liczniki są kodowane jako BCD.
1Liczniki są zapisane na ustaloną datę.Liczniki są wartościami aktualnymi.
2Niskie zasilanie.Zasilanie nie jest zgłaszane jako niskie.
3Błąd trwały.Brak błędu trwałego.
4Błąd tymczasowy.Brak błędu tymczasowego.
5-7Znaczenie zależne od producenta.Znaczenie zależne od producenta.
RX 68 13 13 68 08 05 73 78 56 34 12 0A 00 E9 7E 01 00 00 00 35 01 00 00 3C 16 RSP_UD ze stałą strukturą danych: adres 5, CI 73h, numer identyfikacyjny 12345678, dwa liczniki.

Zmienna struktura danych

Kody CI 72h i 76h oznaczają w długiej ramce RSP_UD odpowiedź ze zmienną strukturą danych. Po polach C, A i CI część aplikacyjna zaczyna się stałym nagłówkiem danych, a dalej zawiera zmienną liczbę rekordów danych.

Stały nagłówek 12 Byte Identyfikacja urządzenia, producent, wersja, medium, numer dostępu, status i sygnatura.
Rekordy danych DIB + VIB + DATA Powtarzane standardowe rekordy z własną długością, funkcją, jednostką i wartością.
MDH 1 Byte Oznacza przejście do części specyficznej dla producenta, jeśli występuje.
Dane producenta zmienna długość Obszar, którego nie da się wiarygodnie interpretować bez dokumentacji konkretnego producenta.
Część Długość Znaczenie
Stały nagłówek danych 12 Byte Identyfikacja urządzenia i informacje statusowe obowiązujące dla całej odpowiedzi.
Zmienne bloki danych zmienna liczba Pojedyncze rekordy danych w postaci DIB, VIB i danych. Każdy rekord niesie własną długość, funkcję, jednostkę i znaczenie.
MDH 1 Byte Manufacturer Data Header oddziela standardowo opisane rekordy od części specyficznej dla producenta.
Dane producenta zmienna liczba Wolny obszar zdefiniowany przez producenta urządzenia. Bez dokumentacji producenta nie da się go ogólnie dekodować tak jak standardowych rekordów danych.

Stały nagłówek danych odpowiedzi zmiennej

Pierwsze dwanaście bajtów danych użytkownika tworzy blok o stałej długości i stałej kolejności pól. Dopiero za tym nagłówkiem następują zmienne rekordy danych.

Nr ident. Producent Wersja Medium Access No. Status Sygnatura
4 Byte 2 Byte 1 Byte 1 Byte 1 Byte 1 Byte 2 Byte
Pole Długość Znaczenie
Numer identyfikacyjny 4 Byte W zmiennej strukturze danych jest to numer klienta zakodowany jako osiem cyfr packed BCD, czyli w zakresie od 00000000 do 99999999. Może być ustawiony podczas produkcji, ale może też być później zmienny; jeśli potrzebny jest niezmienny numer fabryczny, przesyła się go jako oddzielny rekord, na przykład DIF = 0Ch i VIF = 78h.
Producent 2 Byte Dwubajtowa wartość unsigned binary wyliczona z trzyliterowego ID producenta według EN 61107. Używa się wielkich liter, a wartość składa się z pozycji liter w alfabecie.
ID = ([ASCII(1) - 64] * 32 * 32)
+ ([ASCII(2) - 64] * 32)
+ [ASCII(3) - 64]
Wersja 1 Byte Określa generację albo wersję licznika. Dokładne znaczenie zależy od producenta urządzenia.
Medium 1 Byte Typ mierzonego medium. W przeciwieństwie do stałej struktury danych medium w odpowiedzi zmiennej jest kodowane całym bajtem.
Access No. 1 Byte Numer dostępu jest beznakowym binarnym licznikiem odpowiedzi. Zwykle zwiększa się po każdej odpowiedzi RSP_UD i pomaga odróżnić nową odpowiedź od powtórzonej.
Status 1 Byte Status zawiera bity stanu urządzenia. W odpowiedzi zmiennej dwa najniższe bity służą do sygnalizacji błędów aplikacyjnych; pozostałe bity mają takie samo znaczenie jak flagi statusu znane ze stałej struktury danych.
Sygnatura 2 Byte Pole jest zarezerwowane dla przyszłych zastosowań szyfrowania. Gdy nie jest używane, zwykle ma wartość 00 00h.
Bit statusu Znaczenie w odpowiedzi zmiennej
0-1Błąd aplikacji albo stan według specyfikacji urządzenia i powiązanych reguł M-BUS.
2Niskie zasilanie urządzenia.
3Trwały błąd urządzenia.
4Tymczasowy błąd urządzenia.
5-7Flagi specyficzne dla producenta. Bez dokumentacji urządzenia nie należy ich interpretować jako standardowych błędów.
Bajty nagłówka Pole Znaczenie po dekodowaniu
78 56 34 12Numer identyfikacyjnyNumer packed BCD 12345678.
24 40ProducentDwubajtowy kod producenta EN 61107 przesyłany w nagłówku.
01WersjaWersja albo generacja licznika według producenta.
07MediumKod mierzonego medium.
02Access No.Drugi numer sekwencyjny odpowiedzi w cyklu urządzenia.
00StatusBrak standardowo sygnalizowanego błędu we flagach statusu.
00 00SygnaturaSygnatura nie jest użyta.

Rekordy DATA

Za stałym 12-bajtowym nagłówkiem następuje jeden albo więcej rekordów danych. Każdy rekord jest opisany własnym blokiem DIB i VIB; dopiero za nimi znajdują się właściwe bajty wartości.

DIB DIF + DIFE... Opisuje format wartości, funkcję wartości, numer pamięci, taryfę i opcjonalne dalsze rozszerzenie.
VIB VIF + VIFE... Opisuje wielkość, jednostkę, skalę i dodatkowe znaczenie wartości.
DATA 0 do n bajtów Zawiera właściwą wartość. Liczba bajtów i kodowanie wynikają z dolnego półbajtu DIF.
DIB VIB DATA
DIF + DIFE... VIF + VIFE... wartość według DIF
Część rekordu Długość Znaczenie
DIF 1 Byte Data Information Field określa długość i kodowanie wartości, funkcję wartości oraz kontynuację do DIFE.
DIFE 0 albo więcej bajtów Rozszerza DIB głównie o kolejne bity numeru pamięci i taryfy. Jeśli w poprzednim DIF albo DIFE ustawiony jest bit rozszerzenia, następuje kolejny DIFE.
VIF 1 Byte Value Information Field określa wielkość fizyczną, jednostkę i mnożnik wartości. Bit rozszerzenia wskazuje, czy następuje VIFE.
VIFE 0 albo więcej bajtów Rozszerza VIB o dodatkowe informacje o jednostce albo znaczeniu wartości. Kolejne bajty VIFE mogą występować zgodnie z bitami rozszerzenia.
DATA według DIF Właściwe bajty wartości. Liczbę bajtów i kodowanie określa dolny półbajt DIF. Kolejność bajtów wartości wielobajtowej zależy od trybu w polu CI; w nowych aplikacjach używa się Mode 1, czyli najmniej znaczący bajt jako pierwszy.

DIB i VIB szczegółowo

Rekordu danych nie odczytuje się według stałej długości całego rekordu, lecz krok po kroku. Najpierw składa się DIB, potem VIB, a dopiero potem właściwą wartość DATA zgodnie z dolnymi bitami DIF.

Skrót Pełna nazwa Zawartość
DIB Data Information Block Blok informacji o danych. Składa się z jednego DIF i opcjonalnych bajtów DIFE.
DIF Data Information Field Pierwszy bajt DIB. Określa kodowanie i długość DATA, funkcję wartości, najniższy bit numeru pamięci oraz czy następuje DIFE.
DIFE Data Information Field Extension Rozszerzenie DIF. Dodaje kolejne bity numeru pamięci, taryfę, podjednostkę i ewentualnie wskazuje następny DIFE.
VIB Value Information Block Blok informacji o znaczeniu wartości. Składa się z jednego VIF i opcjonalnych bajtów VIFE.
VIF Value Information Field Pierwszy bajt VIB. Określa wielkość, jednostkę, skalę wartości oraz czy następuje VIFE.
VIFE Value Information Field Extension Rozszerzenie VIF. Doprecyzowuje jednostkę albo znaczenie wartości i może być kontynuowane kolejnym VIFE.

Kolejność odczytu rekordu danych

Krok Czytana część Reguła
1DIFOdczytuje się pierwszy bajt rekordu. Wartości specjalne 0Fh, 1Fh i 2Fh obsługuje się przed zwykłym dekodowaniem.
2DIFE...Jeśli w DIF ustawiony jest bit 7, następuje DIFE. Jeśli ten DIFE także ma ustawiony bit 7, odczytuje się kolejny DIFE.
3VIFPo zakończeniu DIB odczytuje się VIF, który określa jednostkę i skalę wartości.
4VIFE...Jeśli w VIF ustawiony jest bit 7, następuje VIFE. Łańcuch trwa, aż ostatni VIFE ma bit 7 wyzerowany.
5DATANa końcu odczytuje się liczbę bajtów DATA zgodnie z dolnymi czterema bitami DIF.

Układ bitów DIF

7 6 5 4 3 2 1 0
DIFE Storage 0 Funkcja Pole danych
Bity Nazwa Znaczenie
7bit rozszerzeniaWartość 1 oznacza, że za DIF następuje co najmniej jeden DIFE.
6numer pamięci bit 0Najniższy bit numeru pamięci, czyli pierwsze rozróżnienie wartości aktualnej albo historycznej.
5-4funkcja wartościOkreśla, czy jest to wartość chwilowa, maksymalna, minimalna albo wartość w stanie błędu.
3-0pole danychOkreśla liczbę bajtów DATA i ich kodowanie.

Układ bitów DIFE

7 6 5 4 3 2 1 0
DIFE Podjednostka Taryfa Storage
Bity Nazwa Znaczenie
7bit rozszerzeniaWartość 1 oznacza, że następuje kolejny DIFE.
6podjednostkaRozróżnia podjednostkę albo kanał licznika, jeśli urządzenie z tego korzysta.
5-4taryfaBity taryfy dla wartości wielotaryfowych.
3-0numer pamięciKolejne bity numeru pamięci. Każdy następny DIFE dodaje kolejne cztery bity.
Wynik z DIB Składanie Użycie przy dekodowaniu
Numer pamięci DIF bit 6 + DIFE bity 3-0... Rozróżnia wartości aktualne, historyczne i inne zapisane zestawy wartości.
Funkcja wartości DIF bity 5-4 Określa wartość chwilową, maksymalną, minimalną albo w stanie błędu.
Taryfa DIFE bity 5-4... Rozróżnia rejestry taryfowe w licznikach wielotaryfowych.
Podjednostka DIFE bit 6... Rozróżnia kanał, część licznika albo podjednostkę, jeśli urządzenie jej używa.

Układ bitów VIF i VIFE

Pole 7 6 5 4 3 2 1 0
VIF VIFE Kod wielkości, jednostki i skali
VIFE VIFE Kod uzupełniający VIF
Pole Bity Znaczenie
VIF7Bit rozszerzenia. Wartość 1 oznacza, że za VIF następuje VIFE.
VIF6-0Kod wielkości, jednostki i skali wartości, na przykład energia, objętość, przepływ, temperatura albo data.
VIFE7Bit rozszerzenia. Wartość 1 oznacza, że następuje kolejny VIFE.
VIFE6-0Kod uzupełniający do VIF. Doprecyzowuje jednostkę, skalę, znaczenie czasowe albo specyficzne dla producenta znaczenie wartości.

Podstawowy VIF - główne grupy jednostek

Bity VIF 6-0 Wielkość Podstawa jednostki Skala
00h-07hEnergiaWhwedług kodu w zakresie
08h-0FhEnergiaJwedług kodu w zakresie
10h-17hObjętośćm3według kodu w zakresie
18h-1FhMasakgwedług kodu w zakresie
20h-23hCzas włączenias / min / h / djednostka wybierana kodem
24h-27hCzas pracys / min / h / djednostka wybierana kodem
28h-2FhMocWwedług kodu w zakresie
30h-37hMocJ/hwedług kodu w zakresie
38h-3FhPrzepływ objętościowym3/hwedług kodu w zakresie
40h-47hPrzepływ objętościowym3/minwedług kodu w zakresie
48h-4FhPrzepływ objętościowym3/swedług kodu w zakresie
50h-57hPrzepływ masowykg/hwedług kodu w zakresie
58h-5BhTemperatura zasilania°Cwedług kodu w zakresie
5Ch-5FhTemperatura powrotu°Cwedług kodu w zakresie
60h-63hRóżnica temperaturKwedług kodu w zakresie
64h-67hTemperatura zewnętrzna°Cwedług kodu w zakresie
68h-6BhCiśnieniebarwedług kodu w zakresie
6ChDataspecjalne kodowanie daty
6DhData i czasspecjalne kodowanie daty i czasu
6EhJednostki HCAbez jednostki fizycznej
70h-73hCzas uśrednianias / min / h / djednostka wybierana kodem
74h-77hCzas aktualnościs / min / h / djednostka wybierana kodem
78hNumer fabrycznywartość identyfikacyjna
7AhAdres magistraliadres w danych

Specjalne wartości DIF

DIF Znaczenie
0FhPoczątek danych specyficznych dla producenta; reszty telegramu nie czyta się już jako standardowych rekordów DIF/VIF.
1FhZnacznik, że następują kolejne rekordy, zwykle w następnym telegramie albo bloku.
2FhBajt wypełniający. Podczas dekodowania jest pomijany i nie stanowi rekordu danych.

DIF i długość DATA

Pole danych DIF Długość DATA Kodowanie
0000b / 0h0 Bytebez danych
0001b / 1h1 Byte8-bitowa liczba całkowita
0010b / 2h2 Byte16-bitowa liczba całkowita
0011b / 3h3 Byte24-bitowa liczba całkowita
0100b / 4h4 Byte32-bitowa liczba całkowita
0101b / 5h4 Byte32-bitowa liczba rzeczywista
0110b / 6h6 Byte48-bitowa liczba całkowita
0111b / 7h8 Byte64-bitowa liczba całkowita
1000b / 8h0 Bytewybór do odczytu
1001b / 9h1 Byte2 cyfry BCD
1010b / Ah2 Byte4 cyfry BCD
1011b / Bh3 Byte6 cyfr BCD
1100b / Ch4 Byte8 cyfr BCD
1101b / Dhzmiennazmienna długość
1110b / Eh6 Byte12 cyfr BCD
1111b / Fhspecjalnafunkcje specjalne

Funkcja wartości w DIF

Bity 5-4 Funkcja Znaczenie
00bwartość chwilowazwykła aktualna wartość mierzona
01bwartość maksymalnazapisane maksimum dla danego okresu albo pamięci
10bwartość minimalnazapisane minimum dla danego okresu albo pamięci
11bwartość podczas błęduwartość obowiązująca albo zapisana podczas stanu błędu