Kontaktné údaje
- info@ipesoft.com
- +421 907 703 854
- Obchodná 9076/3D
010 08 Žilina
Slovensko
© Copyright IPESOFT 2023
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.
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:
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.
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:
Variabilná odpoveď obsahuje fixnú hlavičku a variabilné dátové bloky.
Fixná hlavička obsahuje polia:
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.
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.
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.
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:
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).
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.
28.8.2017, Ing. Peter Humaj, www.ipesoft.com