22.11.2024

Komunikácia – M-Bus

Minulý týždeň nás s kolegom Romanom Peřichom čakala jedna drobnosť – rozbehať komunikáciu s priemyselným prietokomerom Sensus MeiStream 150. Prietokomer bol osadený dátovým rozhraním HRI-Mei (konkrétne typ HRI-Mei B4/100L/500ms/40-125/50°C) komunikujúcim protokolom M-Bus. Na pripojenie do D2000 sme použili M-Bus/Ethernet prevodník EthMBus-5  od firmy Juraj Čaplický Elektronika (http://www.prevodniky.sk/product-EthMBus-5.html). Tento článok popisuje skúsenosti s rozbehávaním komunikácie v tejto konfigurácii.

Komponenty a konfigurácia

U zákazníka sa nachádzal prevodník EthMBus-5, ktorý sa pripojí k M-Bus zbernici a k Ethernet sieti. Toto zariadenie podporuje komunikáciu až s piatimi M-Bus zariadeniami a má zaujímavé komunikačné schopnosti:

  • Režim transparentnej brány: v ňom podporuje komunikáciu v UDP móde, TCP móde (server aj klient) alebo v móde virtuálneho COM portu. V týchto módoch funguje ako klasický prevodník, t.j. preposiela požiadavky prijaté od nadradeného systému na M-Bus zbernicu, počúva odpovede a preposiela ich hore.
  • Režim Smart M-Bus aplikácia: je schopné samostatnej komunikácie na M-Bus zbernici, pričom namerané údaje spracúva a sprístupňuje vo viacerých formátoch:
  • webová tabuľka
  • xml, csv
  • komunikácia M-Bus protokolom (v UDP alebo server/klient TCP móde)
  • e-mailom
  • ukladaním na FTP server

 

MBus-1.jpg
Obr. 1: EthMBus-5  od firmy Juraj Čaplický Elektronika..
MBus-2.jpg
Obr. 2: .. a priemyselný vodomer Sensus MeiStream 150

O M-Bus protokole

Protokol M-Bus je európsky štandard (EN 13757-2 fyzická a linková vrstva, EN 13757-3 aplikačná) na vyčítavanie údajov z meračov plynu, elektriny a iných prietokomerov. Na M-Bus zbernici môže byť jeden master a až 250 slave zariadení (meračov) pripojených paralelne.

Fyzicky tvorí M-Bus rozhranie dvojvodičová zbernica, ktorá okrem prenosu údajov môže aj zabezpečovať napájanie slave zariadení. Preto je logická 1 vo výzve  (v smere od mastra k slave zariadeniam) reprezentovaná napätím +36V a logická 0 napätím +24V. Slave zariadenia odpovedajú modulovaním spotreby prúdu – logická 1 je konštantný prúd do veľkosti 1.5 mA, logická 0 je prúd zvýšený o 11-20 mA. 

MBus-3.gif
Obr 3: reprezentácia bitov na M-Bus zbernici v smere  od mastra (horný graf) a od slave zariadenia (dolný graf)

Aktuálna verzia protokolu M-Bus je 4.8 a je voľne dostupná na http://www.m-bus.com/mbusdoc/default.php. Komunikáciu začína master poslaním výzvy SEND_NKE (inicializácia komunikácie) na broadcast adresu  255 (alternatívou, v D2000 konfigurovateľnou v parametroch linky, je posielanie výzvy SEND_NKE vždy na konkrétnu stanicu). Nasleduje voliteľne výzva SND_UD (poslanie užívateľských dát) – povel na zmenu komunikačnej rýchlosti (štandardná rýchlosť pre M-Bus je 300 baudov, je možná zmena až na rýchlosť 38400 baudov). Pokračuje sa – opäť voliteľne, v závislosti od nastavení parametrov stanice – poslaním výzvy SND_UD na aplikačný reset.

Zariadenie odpovedá na tieto výzvy (pokiaľ sa nejedná o broadcast) jednoznakovým potvrdením 0xE5.

Nakoniec master posiela výzvu REQ_UD2 na užívateľské dáta triedy 2. Odpoveďou sú dáta so štruktúrou definovanou M-Bus protokolom a príznakom, či sú k dispozícii ešte ďalšie.

Odpoveď môže byť fixná alebo variabilná.

Fixná odpoveď je jednoduchšia a obsahuje polia:

  • Identification No. - 4-bajtové výrobné číslo (BCD kódovanie)
  • Access No. – počet prístupov na zariadenie (inkrementované každým čítaním, binárne kódovanie)
  • Status – rôzne stavové informácie
  • Medium /Unit – dvojbajtový kód udávajúci médium a jednotky pre počítadlo 1 a 2
  • Counter 1 - 4-bajtová hodnota počítadla 1 (BCD/binárne kódovanie podľa poľa Status)
  • Counter 2 - 4-bajtová hodnota počítadla 2 (BCD/binárne kódovanie podľa poľa Status)

Variabilná odpoveď obsahuje fixnú hlavičku a variabilné dátové bloky.

Fixná hlavička obsahuje polia:

  • Identification No. - 4-bajtové číslo zákazníka (BCD kódovanie)
  • Manufacturer – 2-bajtové číslo kódujúce tri veľké písmená tvoriace kód výrobcu
  • Version – 1-bajtové číslo udávajúce generáciu alebo verziu merača
  • Medium – 1-bajtové číslo udávajúce merané médium
  • Access No. - počet prístupov na zariadenie (inkrementované každým čítaním, binárne kódovanie)
  • Status – rôzne stavové informácie
  • Signature – rezervované pre budúce použitie, zatiaľ hodnota 0

Variabilné dátové bloky obsahujú informáciu o kódovaní, dĺžke a type dát ako aj samotné dáta. Jeden variabilný blok môže mať dĺžku až 240 bajtov, aby celková dĺžka dát nepresiahla 255 bajtov.

Variabilný dátový blok obsahuje aj informáciu, či je posledný alebo či nasledujú ďalšie dáta (v tom prípade je nutné poslať novú výzvu REQ_UD2). Pokiaľ master nechce čítať ďalší dátový blok, môže začať nový cyklus komunikácie výzvou SEND_NKE.

Ako na prevodník?

Prevodník EthMBus-5 sme najskôr nakonfigurovali cez webové rozhranie v režime Smart M-Bus aplikácie. V tomto režime bol schopný samostatne vyčítavať hodnoty prietokomera, takže sme si overili, že pripojenie k M-Bus zbernici je v poriadku.

Problém vznikol, keď sme nakonfigurovali v aplikácii D2000 komunikáciu na TCP/IP-UDP linke. Komunikácia sa nerozbehla – nepomohol ani reštart KOM procesu a rôzne nastavovania parametrov. Čo teraz?

Pomocou nástroja Wireshark sme overili, že KOM posiela UDP pakety, ktoré odchádzajú cez sieťové rozhranie komunikačného počítača a že žiadne odpovede neprichádzajú. Ale prečo?

Kolega Roman vyskúšal poslať výzvy SND_NKE a REQ_UD2 pomocou freeware utility Hercules (www.HW-group.com), ktorá umožňuje pracovať aj ako UDP klient.

 

MBus-4.png
Obr 4: utilita Hercules a výzvy SND_NKE a REQ_UD2 (v dolnej časti okna) zadané v hexadecimálnom tvare a pripravené na odoslanie

Prekvapením pre nás bolo, že Hercules na výzvy dostal aj odpovede!  Po chvíli hľadenia na logy Wiresharku sme pochopili aj dôvod. Hercules odosielal UDP pakety z nastaveného portu (4601) a odpovede na tomto porte aj prijímal. D2000 KOM používa na posielanie UDP paketov náhodný port a odpovede prijíma na nastavenom porte. Toto správanie je kompatibilné s Moxa NPort prevodníkmi (tie prijímajú pakety z ľubovolného portu, pričom povoľujú iba pakety z nakonfigurovaných IP adries), ale EthMBus-5 mal prísnejšie obmedzenia.  Čo teraz?

Jednoduchšie ako prerábať logiku TCP/IP-UDP linky bolo podporiť TCP mód prevodníka, tj. komunikáciu cez TCP/IP-TCP linku. Úprava KOM procesu a nástroja CNF trvala aj so zapracovaním zmien do podporovanej verzie 9.2.34 cca 2 hodiny a po tomto čase sme nadviazali komunikáciu.

Alternatívou by bolo nakonfigurovať prevodník do módu virtuálneho COM portu a použiť na strane D2000 sériovú linku, ale moja skúsenosť je, že najlepší COM ovládač je žiaden (už som zažil aj Moxa virtuálne porty, ktoré po dlhšom čase prestali fungovať – asi chybou ovládačov).

Informáciu o odlišnosti chovania prevodníka  EthMBus-5  od Moxa N-Port prevodníkov sme posunuli aj pánovi Čaplickému, od ktorého sme dostali prísľub, že budúca verzia firmware bude podporovať aj správanie kompatibilné s N-Port prevodníkmi.

Identifikácia hodnôt a optimalizácie

V helpe D2000 sa nachádza užitočná informácia, že po aktivovaní parametra FULL_DEBUG je možné získať informácie o neznámom zariadení. Takže sme to spravili a tu sú logy: 

MBus-5.png
Obr 5: logy komunikácie v D2000 so zapnutým parametrom FULL_DEBUG.

Vidieť, že vodomer Sensus posiela variabilné dáta s hlavičkou (kód výrobcu ‘SEN‘). Zároveň vidieť, že zaujímavé dáta sú na adrese 1 (celkový objem 19.18 m3) a na adrese 3 (prietok 0.24 m3/hod).

Z vodomera bolo možné vyčítať až 11 blokov variabilných dát, ktoré ale neobsahovali žiadne pre nás zaujímavé informácie.  Preto sme nastavením parametra stanice ‘Accept following records’ na hodnotu 1 obmedzili vyčítavanie dát iba na relevantný blok 1 (čo cca desaťnásobne skrátilo vyčítavací cyklus). Následne sme ešte zmenšili časové parametre – oneskorenie po SND_NKE z 8 sekúnd na 0.5 sekundy a oneskorenie pred poslaním REQ_UD2 z 4 sekúnd tiež na 0.5 sekundy. Takto sme sa dostali na cca. 5-sekundový vyčítavací cyklus (pri 300 baudovej rýchlosti).

 

MBus-6.png
Obr 6: konfigurácia parametrov a protokolu M-Bus na komunikačnej stanici. Parametre zmenené voči prednastaveným hodnotám sú farebne odlíšené.

Záver

Komunikácia s vodomerom Sensus MeiStream 150 je už od piatka funkčná a dáta chodia do MES systému postaveného na aplikačnom serveri reálneho času D2000. Počas ladenia komunikácie sme rozšírili implementáciu M-Bus protokolu o podporu TCP/IP-TCP linky. Táto podpora sa bude nachádzať vo všetkých patchoch procesu D2000 KOM verzie 9.2.34 a novších.

MBus-7.png
Obr 7: Graf priebehu nameraných dát za tri dni.

 

28.8.2017, Ing. Peter Humaj, www.ipesoft.com

Iné blogy