Promotic

PmMBus - Driver do komunikacji poprzez protokół M-BUS

Niniejszy PROMOTIC driver służy do komunikacji z urządzeniami wyposażonymi w protokół M-BUS (Meter-Bus). Protokół ten jest przeznaczony głównie dla aplikacji odczytu danych z mierników poboru najróżniejszych mediów (ciepła, prądu elektrycznego ...).
- Przy pomocy protokołu M-BUS mierniki komunikują się poprzez specjalny interfejs fizyczny (36V) i dlatego jest konieczne konwerter sprzętowy (patrz M-BUS konwertery sprzętowe).


Przed zastosowaniem tego drivera w aplikacji PROMOTIC należy obejżeć "PROMOTIC wideo kurs 4 - Drivery komunikacyjne".

Podstawowe właściwości drivera

- Zastosowanie tego drivera wymaga zakup licencji PmMBus. Podczas wytwarzania aplikacji w trybie freeware PmFree lub z licencją deweloperską oraz podczas jej testowania w runtime element ten jest zawsze funkcjonalny.
- Komunikacja jest dla Ethernetu (aplikacja PROMOTIC jest klientem) lub dla łącza szeregowego (COM1, COM2 ...).
Przy komunikacji poprzez Ethernet jest wygląd transmitowanych danych taki sam jak dla M-BUS dla łącza szeregowego. Warunkiem takiej komunikacji jest, żeby konwerter M-BUS/Ethernet nie zmieniał transmitowanych danych.
- Aplikacja PROMOTIC jest z punktu widzenia tej komunikacji Master (to znaczy, że wywołuje transmisję danych).
- Driver jest wbudowany do systemu PROMOTIC przy pomocy obiektu PmaComm.
Driver wspiera zastosowanie obiektów PmaCommMsg oraz PmaCommGroup. Dla zwykłych przypadków transmisji danych dogodniejszym jest zastosowanie obiektu PmaCommGroup.
Dla łatwego dodania tego drivera do aplikacji jest dogodne zastosować: Konfiguracje wstępne w grupie "M-BUS"
- Komunikacja jset sieciowa, to znaczy, że jeden obiekt PmaComm potrafi komunikować się z kilkoma urządzeniami (protokół wspiera adresację urządzeń).


Driver w aplikacji PROMOTIC można konfigurować bardzo ogólnie:
- Adresacja: Każdy miernik można adresować. W obiekcie PmaCommGroup można określić adres miernika dla każdej zmiennej, w obiekcie PmaCommMsg adres miernika jest określany w karcie "Dane-wysłanie" w zmiennej Address. Wartości adresów:
- 0 do 250 = standardowy adres konkretnego miernika.
- 253 = adres "wybranego" miernika. Miernik można ustawić do stanu "wybrany" przy pomocy wiadomości "Miernik ogólny/Wybór stacji Slave według numeru identyfikacyjnego".
- 254 = adres uniwersalny. Zapotrzebowania odbierają wszystkie mierniki i wszystkie mierniki również odpowiadają. Ma to sens tylko jeżeli jest podłączony tylko jeden miernik.
- 255 = adres uniwersalny. Zapotrzebowania odbierają wszystkie mierniki lecz żaden nie odpowiada. Ma to sens na przykład dal wiadomości "Miernik ogólny/Inicjalizacja Slave (miernika)".
- Większa ilość mierników na jednym lini komunikacyjnej: Na jednym łączu szeregowym może być podłączona większa ilość typów mierników, można podłączyć mierniki na przykład Kamstrup, Landis, Danfoss, itd.
- Różne formaty danych: Wartości są transmitowane z mierników w różnych formatach (BCD lub kodowanie binarne, zapis na 2/4/6/8 bajtów ...). Driver automatycznie dekoduje te wartości.
- Przeliczenie jednostki fizycznej: Driver potrafi automatycznie przeliczać wartości odebranych danych do standardowych jednostek fizycznych. Mierniki bowiem takie wartości na bieżąco transmitują jako liczbę całkowitą z znacznikiem, że chodzi na przykład o jednostki 0.01C, 0.1kW, itd. Driver wartości przelicza do następujących jednostek:

Jednostka: Wartość fizyczna:
GJ Energia
W Moc
m3 Objętość
kg Waga
m3/h Przepływ objętościowy
kg/h Przepływ wagowy
C Temperatura (Forward, Return, Difference, External)
mbar Cisnienie
V Napięcie elektryczne
A Prąd elektryczny
ilość sekund Czas odpowiedziy (Averaging Duration), Czas aktualizacji (Actuality Duration) ..
ilość dni Czas biegu (On time), Operation time


Przeliczane są binarne formaty daty (TimePoint) do wartości typu Date. Pozostałe wartości (licznik, numer fabryczny ...) nie są przeliczane.
- Odczyt ogólny: Driver potrafi odczytywać dane również z nieznanych mierników M-BUS, dla których nie posiada konfiguracji wstępnej. Odczyt takich danych jest założony na tym, że wiadomość komunikacyjna M-BUS transmituje nie tylko same wartości, lecz również znaczniki o rodzaju danej wartości. Dlatego driver wie, co oznacza dana wartość w wiadomości i dalej z taką wartością pracuje. Odczyt takich wartości można zastosować zarówno w obiekcie PmaCommGroup jak równoeż w obiekcie PmaCommMsg:
W obiekcie PmaCommGroup pozycje danych należy konfigurować w taki sposób, że jest określany typ danej (Temperatura, Objętość ...). Wtedy driver w odebranej wiadomości odnajdzie wymaganą wartość (jeżeli taka wartość znajduje się w wiadomości) i zapisze na danej pozycji.
W obiekcie PmaCommMsg do ogólnego odczytu danych jest przeznaczona wiadomość "Miernik ogólny/Odczyt danych ustawionych ogólnie". Projektant może konfigurować dane obiektu PmaCommMsg dokładnie według danego miernika. Jeżeli projektant nie wie, jakie dane miernik oferuje, wtedy można w tej wiadomości ustawić, żeby informacje o odebranych danych zostały wypisane do INFO systemu. Według tego wypisu następnie projektant może ustawić dane obiektu.


Do odbioru wartości z mierników jest prostsze stosowanie obiektów PmaCommGroup. Do specjalnych, mniej standardowych komunikacji można zastosować obiekty PmaCommMsg, które posiadają następne właściwości:
- Nagłówek wiadomości M-BUS: Podczas odbioru danych standardowych miernik transmituje przed danymi nagłówek. Informacje pochodzące z tego nagłówka są dostępne, ponieważ driver dla każdej takiej wiadomości wytworzy w karcie "Dane-odbiór" następujące zmienne:

- Address: Adres miernika, transmitującego dane (dla protokołu M-BUS chodzi o pozycję A-Field). Jeżeli w karcie "Dane-wysłanie" jest zmienna Address ustawiona na 254 (adres uniwersalny), wtedy miernik odpowie swoim rzeczywistym adresem i w ten sposób można stwierdzić adres miernika z nieznanym adresem. Bezpośrednio od producenta miernik zazwyczaj ma adres ustawiony na 0.
- IdentNr: (Indentification Number) Numer klienta w zakresie od 00000000 do 99999999. Ustawione przez producenta na unikalny numer, może być zmieniony.
- Manufac: (Manufacturer) Identyfikator producenta.
- Version: Generacja lub wersja miernika. Określa producenta.
- Medium: Medium mierzone przez miernik: 0=pozostałe, 1=oliwa, 2=energia elektryczna, 3=gaz, 4=ciepło (mierzone z temperatury zwrotnej/return: wyjście), 5=para, 6=gorąca woda, 7=woda, 8=Heat Cost Allocator, 9=sPrężone powietrze, 10=Cooling load meter (mierzone z temperatury zwrotnej/return: wyjście), 11=Cooling load meter (mierzone z temperatury wlotowej/flow teploty: wejście), 12=ciepło (mierzone z temperatury wlotowej/flow: wejście), 13=Heat/Cooling load meter, 14=Bus/System, 15=Nieznane medium, 22=Zimna woda, 23=Dual woda, 24=Cisnienie, 25=A/D konwerter.
- AccessNr: (Access Number) Jest zwiększone o 1 po każdym odesłaniu danych z miernika.
- Status: Wskazuje błędy aplikacji. Statut bit1.bit0: 0.0=No Error, 0.1=Application Busy, 1.0=Any Application Error, 1.1=Zarezerwowane.


- Obsługa znacznika FCB: Opcjonalnie driver potrafi automatycznie zmienić licznik transmisji w poszczególnych miernikach (potrafi automatycznie obsługiwać tzw. znacznik FCB). Według tego znacznika miernik stwierdza, czy chodzi o nowy lub o stary (powtarzające się) wymóg. Niektóre mierniki nie wykorzystują tego znacznika, niektóre znów bez poprawnego ustawienia omawianego znacznika nie transmitowałyby poprawnych danych. Dla mierników i wiadomości, w których jest konieczne określenie tego faktu poprzez projektanta znajduje się w karcie "Dane-wysłanie" zmienna FcbAttr. Można ją ustawić na następujące wartości:

0 = nie zmieniać licznika (tzn. znacznik FCB nie jest wykorzystany)
1 = znacznik jest obsłużony automatycznie. Projektant nie musi się troszczyć o zmiany tego znacznika, driver zmienia go sam automatycznie.
4 = (tylko dla celów specjalnych) FCB=FCV=0
5 = (tylko dla celów specjalnych) FCB=0 oraz FCV=1
6 = (tylko dla celów specjalnych) FCB=1 oraz FCV=0
7 = (tylko dla celów specjalnych) FCB=FCV=1


- Wiadomości niestandardowe: Dla specjalnych wiadomości, które nie są przeznaczone do standardowego odczytu danych driver posiada wstępnie przygotowane wiadomości (wiadomości "Miernik ogólny/Inicjalizacja Slave (miernika)" oraz "Miernik ogólny/Zmiana Baud rate (szybkość transm.)") lub projektant może zdefiniować specjalną wiadomość na poziomie bajtów (wiadomość "Miernik ogólny/Wiadomość typu wysłanie/odbiór ustawialna bajtowo" - dla znawców protokołu M-BUS).

Zalecone wartości parametrów obiektu PmaComm:

Zalecane wartości dla pozycji Parametry łącza szeregowego:
Prędkość transmisji300 Bd. Taką szybkość trtansmisji powinny wspierać wszystkie mierniki. Według wykorzystanych mierników można następnie podnosić szybkość transmisji. Do następnie zalecanych szybkości transmisji należą:2400 Bd, 9600 Bd, 38400 Bd. Duża część mierników potrafi się dostosować do niektórych szybkości transmisji, nawet jeżeli zostały ustawione na szybkość inną. Uwaga: konwertery często wspierają tylko szybkość transmisji tylko do 9600 Bd.
Ilość bitów informacji8 (przepisane przez standard M-BUS)
ParzystośćEVEN (parzysty) (przepisane przez standard M-BUS)
Ilość bitów stopu1
Ilość powtórzeń przy nieudanej transmisji0.
Z powodu oszczędzania baterii mierniki często przełączają się do stanu uśpienia i przed rozpoczęciem komunikacji jest konieczne je obudzić. Obudzenie można najczęściej wykonać przez ustawienie konfiguratora "Ilość powtórzeń przy nieudanej transmisji" na wartość (lub więcej, najlepiej chyba na 2) oraz konfiguratora "Timeout odbioru odpowiedzi" na wartość od 500 do 1000 ms. Wtedy pierwsze wysłanie wiadomości spowoduje "obudzenie" miernika i kolejne powtórzenie wiadomości już przebiegnie poprawnie.
Timeout pomiędzy odbiorem 2 znaków100 ms (można zwiększać)
Zwłoka pomiędzy odbiorem-wysyłaniem0 ms (można zwiększać)
Filtrować znaki ECHONie. Zależne od konwertera M-BUS/RS232.
Zarządzanie działaniem RTSlog.0
Zarządzanie działaniem DTRlog.0
Zalecane wartości dla pozycji Parametry Ethernet-klient:
Numer zdalnego portu TCP/UDPwedług ustawienia konwertera M-BUS/Ethernet
Typ transmisji Ethernetwedług ustawienia konwertera M-BUS/Ethernet
Opis i zalecane wartości dla pozycji Parametry protokołu:
Timeout odbioru odpowiedzi1000 ms (można zwiększać). Wyłącznie dla łącza szeregowego. Okres czasu (w milisekundach) w którym driver będzie oczekiwać na odpowiedź po odesłaniu wiadomości.
Jeżeli do tego czasu nie zostanie odebrana żadna odpowiedź, wtedy transmisja wiadomości zostanie zakończona (zostanie wywołane zdarzenie onEndOfTransfer z błędem 24 lub 66).
Notatka:
Odczytywanie danych z mierników zazwyczaj z częstotliwością większą niż 1 minuta w eiększości nie ma sensu. Jeżeli dane są odczytywane częściej niż 4-30 sekundy (zależne od miernika), wtedy miernik nie odeśle danych.

Opis komunikacji przy pomocy obiektu PmaCommGroup

Dla niniejszego drivera komunikacyjnego można zastosować obiekty PmaCommGroup. Dla zwykłych transmisji danych jest to bardziej dogodne niż zastosowanie obiektu PmaCommMsg.
Zmiennych w obiekcie PmaCommGroup (lub jeszcze lepiej zmiennych w obiekcie PmaData z rozszerzeniem danych ExtComm) może być dowolna ilości, mogą być dowolnego typu danych i w dowolnej kolejności. Driver sam w zoptymalizowany sposób odczyta dane z urządzenia przy pomocy wewnętrznie wytworzonych wiadomości komunikacyjnych.
Odczytywane są wszystkie zmienne (jeżeli konfigurator "Odświeżanie danych zezwolone" jest zaznaczony). Dla tego drivera nie jest umożliwiony zapis zmiennych do urządzenia.
W jadnym obiekcie PmaCommGroup mogą znajdować się pozycje (zmienne w karcie "Dane" lub rozszerzenia danych ExtComm) dla kilku mierników równocześnie.
Jednak może okazać się bardziej stosowne, żeby jeden obiekt PmaCommGroup był przeznaczony tylko dla jednego miernika - wtedy można adres miernika wprowadzić w konfiguratorze "Domyślny adres miernika" i wtedy już nie jest konieczne okreżlanie adresu dla każdej pozycji danych (wystarczy wprowadzić tekst "saD.." - patrz dalej). W ten sposób można w prostszy sposób zmienić adres miernika na jednym miejscu.

Opis konfiguratora "ItemId":
ItemId jest identyfikator tekstowy pozycji, który służy do adresacji pozycji w urządzeniu. Z konfiguratora ItemId driver stwierdzi, w jaki sposób ma zostać wartość pozycji wczytana lub wysłana.
Tekst można wpisać ręcznie, lub ułożyć w oknie, które zostanie otwarte przy pomocy przycisku wprawo od konfiguratora.
Do wprowadzenia można zastosować Makro wyrażenie (wartość jest obliczana po uruchomieniu aplikacji).
Przykłady formy identyfikatora:
sa44.M1.TemperFor
sa254.M1.TemperFor.max.S3.T2.c0
saD.M1.MeterManufac
saD.B1.Index20
saD.B4.Index30
sa1.Ia2.Index3
sa3.Ia2.Index3.c0

Tekst rozpoczyna się zawsze skrótem "sa" (= Slave/Station Address), za którym następuje adres dziesiątkowy miernika. Zamiast adresu miernika można jednak wprowadzić znak "D" (=default) jako znacznik, że adres miernika ma zostać przejęty z konfiguratora "Domyślny adres miernika".
Następny identyfikator za kropką określa obszar wymaganych danych (określa typ wiadomości M-BUS, która spowoduje, że miernik wyśle dane z odpowiedniego obszaru). Możliwe są następujące wartości:
M1 = (Request UD2, FCB=0, FCV=1) Pierwszy standardowy obszar miernika.
Wspiera większość mierników.
W tym obszarze znajdują się zazwyczaj główne dane bieżące miernika.
M2 = (Request UD2, FCB=1, FCV=1) Drugi standardowy obszar miernika.
Mierniki zazwyczaj albo nie wspierają tego obszaru lub przesyłają takie same dane jak dla obszaru pierwszego.
B1 = (Send UD, CIField=B1) Żądanie odczytu pełnej zawartości pamięci RAM.
B4 = (Send UD, CIField=B4) Odczyt EEPROM.
Ia = (Danfoss-INFOCAL type) Ten typ jest stosowany w miernikach typu Danfoss (Ia=Indeksowanie typu a).
Miernik posiada dużo wartości, które wszystkie nie zmieszczą się w standardowym obszarze.
Do uzyskania takich dalszych danych jest nadawana "specjalna wiadomość" z indeksem obszaru (indeks określa się za tekstem "Ia") i w ten sposób miernik wyśle dane z tego wybranego obszaru. Patrz: Komunikacja z miernikami Danfoss INFOCAL-5
Ib = (Sontex-SUPERCAL type) Ten sam przypadek jak dla "Ia", tylko dla mierników typu Sontex.
Spacjalna wiadomość ma inny wygląd lecz zasada jest taka sama. Patrz: Komunikacja z miernikami Sontex SUPERCAL
Ic = (Scylar type) Ten sam przypadek jak dla "Ia", tylko dla mierników typu Scylar.
Spacjalna wiadomość ma inny wygląd lecz zasada jest taka sama. Patrz: Komunikacja z miernikami kalorymetryczny Scylar

Następny identyfikator za kropką określa wymaganą daną z danego obszaru. Miernik wysyła równocześnie wszystkie dane z wybranego obszaru. Wymaganą daną można określić albo indeksem (Index) lub określeniem znaczenia danej (pozostałe możliwości):

Index - Za tym identyfikatorem wprowadzany jest indeks danej (indeksowane od 0) w obszarze. W ten sposób można odnosić się do dowolnej standardowej danej w obszarze. Stosowne do wprowadzania danej, której nie można określić przy pomocy następujących specyfikacji znaczenia. Następujące specyfikacje znaczenia bowiem nie określają wszystkich możliwości komunikacji M-BUS (firma MICROSYS, spol. s r.o. jednak może do drivera dodać następne specyfikacje).
Energy - Energia [GJ]
Power - Moc [kW]
Pressure - Cisnienie [mbar]
Volume - Objętość [m3]
Mass - Waga [kg]
FlowVolume - Przepływ objętościowy [m3/h]
FlowMass - Przepływ wagowy [kg/h]
TemperFor - Temperatura wejścia [°C]
TemperRet - Temperatura wyjścia [°C]
TemperDif - Różnica temperatur [°C]
TemperExt - Temperatura zewnętrzna [°C]
Voltage - Napięcie elektryczne [V]
Current - Prąd elektryczny [A]
TimeOn - Czas biegu (On time) [day]
TimeOper - Operation time [day]
TimeDate - Data [date]
FabricNum - Numer fabryczny miernika
ErrorFlags - Znacznik błędu
ErrorMask - Maska błędu
CumulCount - Licznik kumulujący
MeterAddr - Adres miernika, transmitującego dane (dla protokołu M-BUS chodzi o pozycję A-Field).
MeterIdent - Numer klienta w zakresie od 00000000 do 99999999. Ustawione przez producenta na unikalny numer, może być zmieniony.
MeterManufac - Identyfikator producenta.
MeterVersion - Generacja lub wersja miernika. Określa producenta.
MeterMedium - Medium mierzone przez miernik: 0=pozostałe, 1=oliwa, 2=energia elektryczna, 3=gaz, 4=ciepło (mierzone z temperatury zwrotnej/return: wyjście), 5=para, 6=gorąca woda, 7=woda, 8=Heat Cost Allocator, 9=sPrężone powietrze, 10=Cooling load meter (mierzone z temperatury zwrotnej/return: wyjście), 11=Cooling load meter (mierzone z temperatury wlotowej/flow teploty: wejście), 12=ciepło (mierzone z temperatury wlotowej/flow: wejście), 13=Heat/Cooling load meter, 14=Bus/System, 15=Nieznane medium, 22=Zimna woda, 23=Dual woda, 24=Cisnienie, 25=A/D konwerter.


Następna identyfikatory za kropką określają dalsze sprecyzowanie danej i są opcjonalne.
max = Maksymalna wartość
min = Minimalna wartość
err = Wartość w stanie wadliwym
U = Pozycja o danym numerze Subunit (służy do odróżnienia dwu podobnych pozycji).
Jeżeli nie jest ustawione, wtedy w odebranej wiadomości będzie wyszukiwana pozycja bez względu na to, jaki posiada Subunit.
S = Pozycja o danym numerze pamięci (Storage) "S0" oznacza bieżącą wartość, "S1" jest wartością w storage1, co może być na przykład wartością z przeszłego miesiąca, itd.
Jeżeli pamięć (znak S) nie zostanie określony, wtedy w odebranej wiadomości zostanie wyszukane pierwsze pojawienie się danej pozycji bez względu na to, w której pamięci pozycja ta znajduje się.
T = Pozycja o danym numerze taryfy. "T0" oznacza taryfę bieżącą (lub "bez taryfy"), "T1" oznacza wartość według pierwszej taryfy, itd.
Jeżeli taryfa (znak T) nie zostanie określona, wtedy w odebranej wiadomości zostanie wyszukane pierwsze pojawienie się danej pozycji bez względu na taryfę.
c0 = Nie przeliczać do podstawowych jednostek fizycznych (patrz Przeliczenie jednostki fizycznej).


Opis konfiguratora "PmaCommGroup > Parametry > Parametry specjalne":
Domyślny adres miernikaW tym miejscu wprowadzony adres można zastosować przy ustawianiu konfiguratora "ItemId" w zmiennych w tym obiekcie (tzn. w zmiennych w karcie "Dane" lub w rozszerzeniu danych ExtComm). Adres można wprowadzić w ItemId:
- jako na przykład sa1... - wtedy wartość zmiennej będzie odczytywana z miernika pod adresem 1.
- lub saD... - znak "D" w tym miejscu oznacza default (to znaczy, że adres zostanie przejęty z niniejszego konfiguratora).

Parametr ten można w runtime zmienić i odczytać w skrypcie przy pomocy metod: SetSpecParam("SlaveAddr") oraz GetSpecParam("SlaveAddr").

Opis komunikacji przy pomocy obiektu PmaCommMsg

Obiekt PmaCommMsg można zastosować do specjalnych komunikacji, których nie można wykonać przy pomocy obiektu PmaCommGroup.
Opis konfiguratora "PmaCommMsg > Parametry > Parametry wiadomości":
Typ miernikaWybór rodzaju miernika. Tu należy wybrać tylko "Miernik ogólny". Następne wybory są przestarzałe i jest wskazanym ich zastąpienie obiektem PmaCommGroup.
Miernik ogólny - Ogólne wiadomości odpowiednie dla wszystkich typów M-BUS mierników.
Kamstrup MULTICAL - przestarzałe
ABB SVM - przestarzałe
Danfoss INFOCAL 5 - przestarzałe
Landis ULTRAHEAT - przestarzałe
Supercal SONTEX - przestarzałe
CALMEX VKP - przestarzałe
Typ wiadomościWymagany typ wiadomości dla danego miernika. Poniżej znajduje się lista wiadomości tylko dla Typ miernika = Miernik ogólny.
Lista typów wiadomości dla Typ miernika = Miernik ogólny:
- Inicjalizacja Slave (miernika):
Inicjalizacja miernika (wiadomość typu SND_NKE). Służy przede wszystkim do inicjalizacji sterowania tzw. znacznik FCB (patrz Obsługa znacznika FCB), który miernik wykorzystuje jako informację o poprawnej kolejności przesyłania wiadomości. Jest zalecane wywołanie tej wiadomości przy uruchamianiu aplikacji jak również przy powstaniu błędu transmisji (patrz parametr pEvent.Error w zdarzeniu PmaCommMsg.onEndOfTransfer).
Adres miernika można ustawić dokładnie (wartością od 0 do 250) - w tym przypadku każdy miernik potwierdzi (odpowie) czy przyjął polecenie do wiadomości.
Jest również przydatym wykorzystanie uniwerslanego adresu 255 - w tym przypadku zainicjalizowane zostaną wszystkie mierniki jednocześnie bez jakiegokolwiek potwierdzenia (patrz Adresacja).
W karcie "Dane-wysłanie" znajdują się zmienne:
Address (Byte) = Adres miernika
W karcie "Dane-odbiór" nie ma żadnej zmiennej.
- Reset warstwy aplikacyjnej Slave (miernika):
Wysłanie tej wiadomości do miernika zapewni reset aplikacyjnych zmiennych miernika (wiadomość typu SND_UD). Do czego dokładnie dojdzie w mierniku jest zależne wyłącznie od miernika. Większość następujących mierników nie wymaga stosowania tej wiadomości. Wiadomość tę wykorzystuje: Komunikacja z miernikami Sontex SUPERCAL.
W karcie "Dane-wysłanie" znajdują się zmienne:
Address (Byte) = Adres miernika
W karcie "Dane-odbiór" nie ma żadnej zmiennej.
- Wybór stacji Slave według numeru identyfikacyjnego:
Wiadomość ta wprowadzi Slave miernik do tzw. stanu wybranego (selected). Po wprowadzeniu do stanu wybranego stacja komunikuje tak, jak gdyby jej adres był ustawiony na 253 (patrz Adresacja), do tej chwili, kiedy do wybranego stanu jest wprowadzona inna stacja. Stacja jest wybierana według tzw. adresu wtórnego, który jest zdefiniowany następująco: IdentNr = numer identifikacyjny miernika, Manufac = numer identifikacyjny producenta, Version = wersja miernika, Medium = mierzone medium. Dane te są wprowadzane w karcie "Dane-wysłanie" i można je z miernika stwierdzić na przykład wiadomością "Miernik ogólny/Odczyt danych ustawionych ogólnie" przy wdrażaniu miernika do ekslpoatacji.
Adresacja stacji przy pomocy adresu wtórnego jest stosowna na przykład:
- dla bardzeij rozległych systemów, gdzie nie wystarcza 250 adresów podstawowych lub
- dla stacji, które są często zmieniane i nie można zapewnić że adresy podstawowe są unikalne.
W karcie "Dane-wysłanie" znajdują się zmienne:
IdentNr (Long)
Manufac (Integer)
Version (Byte)
Medium (Byte)
W karcie "Dane-odbiór" nie ma żadnej zmiennej.
- Zmiana Baud rate (szybkość transm.):
(wiadomość typu SND_UD). Wykorzystanie tej wiadomości zazwyczaj będzie zbędne, ponieważ szybkość można ustawić bezpośrednio w mierniku i nie jest stosowna zmiana szybkości podczas biegu aplikacji. Duża część mierników potrafi dostosować się do różnych szybkości transmisji nawet jeżeli są ustawiona na inną szybkość.
W karcie "Dane-wysłanie" znajdują się zmienne:
Address (Byte) = Adres miernika
BaudRate (Byte) = (B8h=184=300Bd, BBh=187=2400Bd ..)
W karcie "Dane-odbiór" nie ma żadnej zmiennej.
- Odczyt danych ustawionych ogólnie:
Wiadomość przeznaczona do odczytu danych z mierników (wiadomość typu REQ_UD2). Służy tylko w specjalnych przypadkach - w celu standardowego odczytu danych dogodniejszym jest zastosowanie obiektu PmaCommGroup - patrz Opis komunikacji przy pomocy obiektu PmaCommGroup.
W karcie "Dane-wysłanie" znajdują się zmienne:
Address = (Byte) Adres miernika
FcbAttr = (Byte) Wartość FCB znacznika. Patrz Obsługa znacznika FCB.
DataAttr = (Long) Znacznik, w jaki sposób w odebranej wiadomości są zapisane "dane specyficzne" (tzn. dane w końcowej części DIF=0f):
0 = są zapisane binarnie - tzn. nie jest wymagane przeliczenie
1 = są zapisane w BCD kodzie - driver przeliczy wartość do postaci binarnej.
W karcie "Dane-odbiór" znajdujuą się zmienne:
Na początku znajdują się zmienne uzyskane z nagłówka wiadomości - patrz Nagłówek wiadomości M-BUS.
Data1 = (Single) Pierwsza wartość danych w wiadomości. Taką zmienną można zmienić i można za nią wytworzyć następne zmienne. Zmienne mogą posiadać następujące typy danych:
- Single - w tym przypadku zapisywana wartość jest przeliczana na odpowiednią jednostkę technologiczną. Przeliczanie przebiega według tabeli - patrz Przeliczenie jednostki fizycznej.
- Date - wartość jest przeliczona na datę kalendarzową.
- Long - wartość nie jest przeliczana (dla wartości, które nie posiadają jednostki lub jeżeli przeliczanie nie jest pożądane).

Przy odczycie danych standardowych z miernika w odpowiedzi znajdują się nie tylko wartości, lecz również znaczniki typu wartości (czy chodzi o przepływ, energia, moc, itd.), znaczniki typu jednostki (np. czy chodzi o kWh,J,0.001kWh ...), znaczniki o numerze taryfy lub pamięci, itd. Jeżeli jest znane znaczenie wartości w odpowiedzi danego miernika, wtedy w karcie "Dane-odbiór" jest możliwa ręczna konfiguracja i nazwanie poszczególnych pozycji, do których będą zapisywane odebrane wartości. Jeżeli nie wiadomo co miernik wysyła, wtedy można zastosować typ wiadomości "Miernik ogólny/Uzyskanie pełnej listy mierzonych wartości miernika".
Poza danymi standardowymi może miernik tramsnitować dane specyficzne, które nie posiadają już znacznika o znaczeniu i jednostce. Dane te bywają ulokowane zawse za danymi standardowymi. Jeżeli znasz znaczenie omawianych danych (np. z dokumentacji miernika), wtedy również takie dane można odczytać w tej wiadomości. Wystarczy w karcie "Dane-odbiór" za uprzednio wytworzonymi zmiennymi definiować następne zmienne odpowiednich typów (Byte, Integer, Long) i artość w odebranej wiadomości zostanie bez jakichkolwiek przeliczeń do odpowiedniej zmiennej. Dokładniej powiedziawszy, można jeszcze określić, jeżeli dane specyficzne pozostaną w wiadomości w formie binarnej (tzn. przeliczanie nie jest konieczne) lub w kodzie BCD. Jeżeli dane specyficzne są w kodzie BCD, wtedy możesz uprzednio wymienioną zmienną "DataAttr" ustawić na 1 - w tym przypadku driver przeliczy wartość do formy binarnej (również byłoby możliwe nieprzeliczanie i wykorzystanie metody Pm.TransformValue, lecz ten sposób byłby trudniejszy).
Niektóre mierniki transmitują dane w kilku wiadomościach w dokładnej kolejności po sobie. Odbiór takich danych można zrealizować przy pomocy tego typu wiadomości. Jest konieczne ustawienie kilka obiektów PmaCommMsg dla poszczególnych wiadomości, odpowiednio ustawić dane i następnie wiadomości uruchamiać po sobie (przy pomocy metody PmaCommMsg.Run). W tego rodzajach transmisji danych miernik wykorzystuje znaczniki FCB (patrz Obsługa znacznika FCB), i dlatego jest konieczne ustawienie zmiennej "FcbAttr" na 1. Niektóre mierniki w ten sposób zapewniają odczyt historii. Jeżeli nie zostanie ustawione "FcbAttr" na 1, wtedy byłaby odczytywana bezustannie 1. wiadomość (w której zazwyczaj znajdują się wartości beżące). Jeżeli ustawiono "FcbAttr" na 1, wtedy miernik kolejno odsyła wszystkie wiadomości, które ma - w niektórych przypadkach ma tych wiadomości dużo. Na przykład miernik ABB SVM posiada dane historyczne zapisane w 128 wiadomościach (na szczęście tego samego typu więc można je odczytać przy pomocy jednego obiektu).
- Wiadomość typu wysłanie/odbiór ustawialna bajtowo:
Wiadomość ta jest przeznaczopna dla projektantów, którzy znają protokół M-BUS. Można tutaj ustawić wiadomość (osobno dla odbioru i osobno dla transmisji) typu "SingleCharacter", "ShortFrame", "ControlFrame" oraz "LongFrame", które oznaczają 4 możliwe typy wiadomości protokołu na najniższym poziomie z projektanckim ustawieniem wartości CField, AField oraz CIField i z ustawieniem danych użytkownika. Można również wybrać wiadomość typu Pure Bytes, kdzie można nadawać/odbierać dane bez jakiejkolwiek transformacji poprzez protokół.
Ten typ wiadomości będzie chyba wykorzystywany bardzo rzadko do celów specjalnych lub w celu testowania.
- Uzyskanie pełnej listy mierzonych wartości miernika:
Wiadomość ta wytworzy listę wszystkich pozycji, które można uzyskać o określonym typie wiadomości danych (z powiadomienia z znacznikiem FCB 0 lub 1).
W karcie "Dane-wysłanie" znajdują się zmienne:
Address = (Byte) Adres miernika
FcbAttr = (Byte) Wartość FCB znacznika. Patrz Obsługa znacznika FCB.
W karcie "Dane-odbiór" znajdujuą się zmienne:
Info = (String) Lista tekstowy opomiarowanych zmiennych miernika danego wiadomości.


  Meter: Address=6, Ident=2015597318, Manufac=11309, Version=15, Medium=4
  Index:0; Name:FabricationNumber; Value:6932378; Type:InstantenousValue; SubUnit:0; Storage:0; Tariff:0
  Index:1; Name:Energy; Value:311230720; Unit:10 MJ; RecalcValue:3112307.250000 GJ; Type:InstantenousValue; SubUnit:0; Storage:0; Tariff:0
  Index:2; Name:Volume; Value:1369178624; Unit:0.1 m3; RecalcValue:136917856.000000 m3; Type:InstantenousValue; SubUnit:0; Storage:0; Tariff:0
  Index:3; Name:TimeOn; Value:-1236336640; Unit:1 hour; RecalcValue:-51514028.000000 day; Type:InstantenousValue; SubUnit:0; Storage:0; Tariff:0
  Index:4; Name:ForwardTemperature; Value:-484573184; Unit:0.01 °C; RecalcValue:-4845732.000000 °C; Type:InstantenousValue; SubUnit:0; Storage:0; Tariff:0
  Index:5; Name:Power; Value:1241513984; Unit:100 W; RecalcValue:124151400.000000 kW; Type:InstantenousValue; SubUnit:0; Storage:0; Tariff:0
  Index:6; Name:Volume; Value:0; Unit:0.01 m3; RecalcValue:0.000000 m3; Type:InstantenousValue; SubUnit:1; Storage:0; Tariff:0
  Index:7; SpecData (DIF=Fh)

Historia:
Pm9.00.26: Uogólnienie dla odczytu danych z obszaru B1 (RAM) oraz B4 (EEPROM).
Pm8.03.19: Uogólnienie dla odczytu ujemnych wartości w kodzie BCD.
Pm8.03.17: Usunięty błąd: Podczas odczytu wartości w formacie 12 digit BCD wartość została niepoprawnie obloczona.
Pm8.03.12: Usunięty błąd:
Źle były odczytywane wartości typu 24bit Integer.
Podczas transmisji niektórych typów wiadomości dochodziło do ubytku pamięci (PmSNMP, PmMBus, PmIEC8705, PmElgas2).
Pm8.03.10: Udoskonalono opracowanie odczytu niektórych danych (np. danych o rozszerzeniu VIFE do stwierdzania czasu zmiany danej).
Pm8.03.02:
- Uogólnienie ItemId o możliwość wprowadzenia wymaganego Subunit.
- Wytworzono nowy typ wiadomości (w obiekcie PmaCommMsg) do odczytu informacji o tym, jakie wartości można uzyskać z miernika.
- Czasami "przeliczenie do jenostki fizykalnej" zostało wykonane niepoprawnie (dla rozszerzonego typu VIFE)
Pm8.02.15: Możliwość odczytu adresu urządzenia (MeterAddr) v ItemId.
Pm8.01.08: Usunięty błąd: Podczas transmisji wiadomości bez wymogu odbioru w niektórych przypadkach dochodziło do zbędnych timeoutów.
Pm8.00.09: Uogólnienie o uzyskiwanie danej z wartością definiowaną przez użytkownika VIF (stosuje miernik ACTARIS).
Pm8.00.07: Uogólnienie żeby było możliwe odczytywać dane z przemienną długością (dla mierników Actaris i Sensus).
Pm8.00.04: Uogólnienie o możliwość zastosowania obiektów PmaCommGroup oraz rozszerzenie danych ExtComm. To uogólnienie umożliwia również pozyskiwać podstawowe dane z mierników bez względu na jego typ. Driver w odebranej wiadomości sam znajdzie wymagane dane, które zostały określone w obiekcie PmaCommGroup lub w rozszerzeniu danych ExtComm.
Pm8.00.02: Przyśpieszono wysyłanie oraz odbiór danych poprzez Ethernet bez czekania na timeout.
Pm8.00.00: Uogólnienie dla odbioru 64-bitowych float wartości.
© MICROSYS, spol. s r.o.