Promotic
WikipediaLinkedInYoutubeTwitterFacebook

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

Niniejszy driver służy do omunikacji z urządzeniami wyposażonymi w protokół M-BUS (Meter-Bus). Protokół ten jest przeznaczony głównie do 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 z tego powodu jest konieczny konwerter sprzętowy (patrz M-BUS Konwerter sprzętowy).
 
Przed zastosowaniem tego drivera w aplikacji PROMOTIC należy zaznajomić się z rozdziałem: Komunikacja przy pomocy driverów PROMOTIC.
 

Podstawowe właściwości drivera

- Wykorzystanie tego drivera jest powiązane z zakupem licencji: PmMBus. Z wersją freeeware PmFree lub przy opracowywaniu aplikacji (z licencją deweloperską w celach testowania) element ten zawsze funkcjonuje.
- Komunikacja przebiega poprzez Ethernet lub po łączu szeregowym komputera (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 (tzn. wywołuje transmisję danych).
- Driver jest wbudowany do systemu PROMOTIC przy pomocy obiektu PmComm.

Driver umożliwia stosowanie obiektów PmCommMsg i PmCommData. Dla zwykłych przypadków transmisji danych jest bardziej dogodne zastosowanie obiektu PmCommData.

Dla łatwego dodania tego drivera do aplikacji jest dogodne zastosować: Konfiguracje wstępne w grupie "M-BUS protokół komunikacyjny"

- Komunikacja jset sieciowa, tzn. przy pomocy jednego obiektu PmComm można komunikować się z kilkoma urządzeniami (protokół umożliwia adresację urządzeń).
 
Driver w aplikacji PROMOTIC można konfigurować bardzo ogólnie:
- Adresacja: Każdy miernik można adresować. W obiekcie PmCommData można określić adres miernika dla każdej zmiennej, w obiekcie PmCommMsg adres miernika jest określany w zakładce 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 sens tylko jeżeli jest podłączony tylko jeden miernik.
- 255 = adres uniwersalny. Zapotrzebowania odbierają wszystkie mierniki lecz żaden nie odpowiada. Ma 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 albo 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 ustawionym 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) na typ danych 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 stosować zarówno w obiekcie PmCommData jak równoeż w obiekcie PmCommMsg:

W obiekcie PmCommData 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ę we wiadomości) i zapisze na danej pozycji.

W obiekcie PmCommMsg do ogólnego odczytu danych z miernika jest przeznaczona wiadomość "Miernik ogólny/Odczyt danych ustawionych ogólnie". Projektant może konfigurować dane obiektu PmCommMsg 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 objektu.

 
Do odbioru wartości z mierników jest prostsze stosowanie obiektów PmCommData. Do specjalnych, mniej standardowych komunikacji można jednak zastosować obiekty PmCommMsg, które posiadają następne właściwości:
- Nagłówek wiadomości M-BUS: Podczas odbioru danych standardowych miernik transmituje przed danymi tzw. nagłówek. Informacje pochodzące z tego nagłówka są dostępne, ponieważ driver dla każdej takiej wiadomości wytworzy w zakładce Dane-odbiór następujące zmienne:
 
- Address: Adres miernika, transmitującego dane (wg protokołuM-BUS chodzi o pozycję A-Field). Jeżeli w zakładce 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 w większości 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 producent.
- Medium: Medium mierzone przez miernik: 0=pozostałe, 1=oliwa, 2=elektryczność, 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: Oznacza błędy aplikacji. Statut bit1.bit0: 0.0=No Error, 0.1=Application Busy, 1.0=Any Application Error, 1.1=Reserved.
 
- Obsługa znacznika FCB: Opcjonalnie driver potrafi automatycznie zmienić licznik transmisji w poszczególnych miernikach (potrafi automatycznie obsługiwać znacznik FCB). Według tego znacznika miernik stwierdza, czy chodzi o nowe lub o stare (powtarzające się) zapotrzebowanie. 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 zakładce 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 autmoatycznie. 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 i FCV=1
6 = (tylko dla celów specjalnych) FCB=1 i 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)" i "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:

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 (można zwiększać).

Z powodu oszczędzania baterii mierniki często przełączają się do stanu uśpienia i przed rozpoczęciem komunikacji należy je obudzić. Obudzenie można najczęściej wykonać przez ustawienie konfiguratora "Ilość powtórzeń przy nieudanej transmisji" na wartość 1 (lub więcej, najlepiej chyba na 2) i "Limit czasu 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.

Limit czasu 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.
Sterowanie działaniem RTSlog.0
Sterowanie działaniem DTRlog.0
Zalecane wartości dla pozycji Parametry Ethernet:
Numer 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:
Limit czasu 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 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 obiektów PmCommData

Dla niniejszego drivera komunikacyjnego można stosować obiekty PmCommData. Dla zwykłych transmisji danych jest to bardziej dogodne niż zastosowanie obiektu PmCommMsg.

Zmiennych w obiekcie PmCommData (albo jeszcze lepiej zmiennych w obiekcie PmData 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 jest włączony konfigurator Odświeżanie danych zezwolone). Dla tego drivera nie jest umożliwiony zapis do urządzenia.

W jadnym obiekcie PmCommData mogą znajdować się pozycje (zmienne w zakładce Dane lub rozszerzenia danych ExtComm) dla kilku mierników jednocześnie.

Jednak może okazać się bardziej stosowne, żeby jeden obiekt PmCommData 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 identyfikatorem tekstowym pozycji, który służy do adresacji parametru 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ć przy pomocy okna, które zostanie otwarte przy pomocy przycisku wprawo od konfiguratora. Do wprowadzenia można wykorzystać Makro wyrażenie (wartość jest obliczana przy uruchomieniu aplikacji).

Przykłady formy identyfikatora:

sa1.Ia2.Index3
sa3.Ia2.Index3.c0
sa44.M1.TemperFor
sa254.M1.TemperFor.max.S3.T2.c0
saD.M1.MeterManufac

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ą oznacza obszar wymaganych danych (określa rodzaj 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ę przede wszystkim główne dane bieżące miernika.
M2 = (Request UD2, FCB=1, FCV=1) Drugi standardowy obszar miernika. Mierniki przeważnie albo nie wspierają tego obszaru lub przesyłają takie same dane jak dla obszaru pierwszego.
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. W celu uzyskania takich dalszych danych jest nadawana "specjalna wiadomość" z indeksem obszaru (indeks jest wprowadzany 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 jednocześnie wszystkie dane z wybranego obszaru. Wymaganą daną można określić albo indeksem (Index) albo 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 określenia 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 (wg protokołuM-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 producent.
MeterMedium - Medium mierzone przez miernik: 0=pozostałe, 1=oliwa, 2=elektryczność, 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ą nieobowiązkowe.

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 odczytanej 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ść wg. 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 PmCommData > Parametry > Parametry specjalne:
Domyślny adres miernikaW tym miejscu wprowadzony adres można wykorzystać przy ustawianiu konfiguratora ItemID w zmiennych w danym obiekcie (tzn. w zmiennych w zakładce Dane lub rozszerzeniach danych ExtComm). Adres amożna wprowadzić w ItemID:
- jako na przykład sa1... - wtedy wartość zmiennej będzie odczytywana z miernika o adresie 1.
- lub saD... - znak "D" w tym miejscu oznacza default, a oznacza to, że adres zostanie przejęty z niniejszego konfiguratora.

Ten parametr można podczas biegu aplikacji zmienić i odczytać w skrypcie przy pomocy metod: SetSpecParam("SlaveAddr") i GetSpecParam("SlaveAddr").

Opis komunikacji przy pomocy obiektów PmCommMsg

Obiekty PmCommMsg można wykorzystać do specjalnych komunikacji, których nie można wykonać przy pomocy obiektu PmCommData.
Opis konfiguratora PmCommMsg > 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 PmCommData.
Miernik ogólny - Ogólne powiadomienia 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 powiadomień tylko dla Typ miernika = Miernik ogólny.
Lista typów powiadomień dla Typ miernika = Miernik ogólny:
- Inicjalizacja Slave (miernika):

Inicjalizacja miernika (komunikat typu SND_NKE). Służy przede wszystkim do inicjalizacji sterowania tzw. znak FCB (patrz Obsługa znacznika FCB), który miernik wykorzystuje jako informację o poprawnej kolejności przesyłania wiadomości. Jest zalecone wywołanie tej wiadomości podczas startu aplikacji jak również przy powstaniu błędu transmisji (patrz parametr pEvent.Error w zdarzeniu PmCommMsg.onEndOfTransfer).

Adres miernika można określić dokładnie (wartością od 0 do 250) - w tej sytuacji każdy miernik potwierdzi (odpowie) że przyjął polecenie do wiadomości. Jest również przydatym wykorzystanie uniwerslanego adresu 255. W tym przypadku zainicjalizowane zostaną wszystkie mierniki jednocześnie bez jakiegokolwiek potwierdzania (patrz Adresacja).

W zakładce Dane-wysłanie znajdują się zmienne:
Address (Byte) = Adres miernika
W zakładce Dane-odbiór nie ma żadnej zmiennej.
- Reset warstwy aplikacyjnej Slave (miernika):

Przesłanie takiej wiadomości do miernika zapewni reset aplikacyjnych zmiennych miernika (komunikat 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 zakładce Dane-wysłanie znajdują się zmienne:
Address (Byte) = Adres miernika
W zakładce Dane-odbiór nie ma żadnej zmiennej.
- Wybór stacji slave według numeru identyfikacyjnego:

Opisywana wiadomość wprowadzi miernik do tzw. stanu wybranego (selected). Po wprowadzeniu do stanu wybranego stacja komunikuje się 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 zakładce 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 zakładce Dane-wysłanie znajdują się zmienne:
IdentNr (Long)
Manufac (Integer)
Version (Byte)
Medium (Byte)
W zakładce Dane-odbiór nie ma żadnej zmiennej.
- Zmiana Baud rate (szybkość transm.):

(komunikat typu SND_UD). Wykorzystanie tej wiadomości w większości przypadków 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 zakładce Dane-wysłanie znajdują się zmienne:
Address (Byte) = Adres miernika
BaudRate (Byte) = (B8h=184=300Bd, BBh=187=2400Bd ..)
W zakładce Dane-odbiór nie ma żadnej zmiennej.
- Odczyt danych ustawionych ogólnie:

Wiadomość przeznaczona do odczytu danych z mierników (komunikat typu REQ_UD2). Stosowana jest tylko w specjalnych przypadkach - w celu standardowego odczytu danychlepiej zastosować obiekt PmCommData - patrz Opis komunikacji przy pomocy obiektów PmCommData.

W zakładce Dane-wysłanie znajdują się zmienne:
Address = (Byte) Adres miernika
FcbAttr = (Byte) Wartość flagi FCB. Patrz Obsługa znacznika FCB.
DataAttr = (Long) Atrybut, w jaki sposób w odczytanej 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 zakładce 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 tabelki - 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).

Podczas odczytu danych standardowych z miernika w odpowiedzi znajdują się nie tylko wartości, lecz również znaczniki typu wartości (czy chodzi o przepływ, energię, 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 zakładce 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 powiadomienia "Miernik ogólny/Uzyskanie pełnej listy mierzonych wartości miernika".

Poza danymi standardowymi może miernik tramsnitować dane specyficzne, którenie posiadają już atrybutu 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 takiej wiadomości. Wystarczy w zakładce Dane-odbiór za uprzednio wytworzonymi zmiennymi definiować następne zmienne odpowiednich typów (Byte, Integer, Long) i artość w odczytanej 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, i 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 większej ilości obiektów PmCommMsg dla poszczególnych wiadomości, odpowiednio ustawić dane i następnie wiadomości uruchamiać po sobie (przy pomocy metody PmCommMsg.Run). W tego rodzajach transmisji danych miernik wykorzystuje znaczniki FCB (patrz Obsługa znacznika FCB), i z tego powodu 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:

Niniejsza wiadomość 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" i "LongFrame", które oznaczają 4 możliwe typy wiadomości na najniższym poziomie z projektanckim ustawieniem wartości CField, AField i CIField i z ustawieniem danych użytkownika. Można także wybrać wiadomość typu "Pure Bytes", dzie można nadawać/odbierać dane bez jakiejkolwiek transformacji przez 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:

To powiadomienie wytworzy listę wszystkich pozycji, które można uzyskać o określonym typie powiadomienia danych (z powiadomienia z FCB flagą 0 lub 1).

W zakładce Dane-wysłanie znajdują się zmienne:
Address = (Byte) Adres miernika
FcbAttr = (Byte) Wartość flagi FCB. Patrz Obsługa znacznika FCB.
W zakładce Dane-odbiór znajdujuą się zmienne:
Info = (String) Lista opomiarowanych zmiennych miernika danego powiadomienia.
© MICROSYS, spol. s r. o.Tavičská 845/21 703 00 Ostrava-Vítkovice