Nejnavštěvovanější odborný web
pro stavebnictví a technická zařízení budov
estav.tvnový videoportál

Instalace komunikační sběrnice M-Bus, 3. část – M-Bus v Merbon IDE

M-Bus je standard, který definuje fyzickou sběrnici i popis protokolu pro odečítání měřičů energií a médií. Sepsali jsme pro vás několik praktických pravidel pro projektování, montáž a uvádění do provozu systémů, které sběrnici M-Bus využívají. První dvě části se týkaly základů a převodníků. Do třetice jsme se věnovali M-Bus v Merbon IDE.

V budovách jsou měřiče s M-Busem standardně nasazovány a často je vyžadována jejich integrace do systému měření a regulace.V předchozích dvou částech jsme se soustředili na projektování a oživování hardwaru. Nyní se podíváme na práci aplikačního programátora. Jeho úkolem je zkontrolovat, jestli na sběrnici jsou připojeny všechny měřiče, které obsahuje projekt, a zadefinovat v programu jejich měřené hodnoty.

Lze k tomu přistoupit dvěma způsoby.

První z nich je vložit do projektu prototypy měřičů z knihoven, vyplnit u nich jejich primární nebo sekundární adresy poskytnuté dodavateli měřidel (profese topení, chlazení, sanita či elektro) a zkontrolovat, zda všechny měřiče na lince komunikují. Tato metoda ale většinou ztroskotá na tom, že dodavatelé měřičů nejsou schopni dodat podklady úplné a včas, případně nemáme k dispozici prototypy měřičů.

Proto je efektivnější postupovat jinak: měřiče rovnou načíst a importovat do Merbon IDE. Vývojové prostředí zároveň rozebere M-Busový telegram a připraví seznam dostupných měřených hodnot, z nichž si vybereme ty, které chceme v programu zpracovávat. Výhodou je i to, že rozebraný telegram je vždy aktuální (nestane se, že bychom použili starý knihovní prototyp, přičemž dodavatel měřiče mezitím vyvinul novou verzi) a nedojde k situaci, kdy bychom použitý typ měřiče v knihovně nenašli.

Merbon IDE totiž obsahuje několik užitečných funkcí pro detekci a integraci M-Busových měřičů. V dalším textu si ukážeme, jak z Merbon IDE měřiče detekovat, adresovat, načítat jejich vlastnosti a vyrábět tzv. prototypy, neboli softwarové modely, které pak už jen v projektu kopírujeme a adresujeme podle reálně detekovaných měřičů.

Hardwarové zapojení pro oživování může být v podstatě dvojí:


Vlevo je jednodušší situace, kdy nemáme k dispozici PLC (nebo ho nechceme pro detekci využívat, protože technologie je již v ostrém provozu a při detekci v Commissioning modu by PLC nevykonávalo program): na počítači s Merbon IDE zároveň běží Merbon Runtime (Merbon RT), který je součástí instalace a dočasně simuluje funkci PLC. Merbon RT využívá periferie počítače, takže pro připojení sběrnice M-Bus potřebujeme kabel s redukcí USB – RS232 a převodník RS232 – M-Bus (např. Domat R095). Pro práci s jediným měřičem („na stole“) můžeme použít i převodníky USB – M-Bus (např. Relay Mikro-Master), které ovšem mívají omezený výkon zdroje a tak umožňují připojit pouze malý počet měřičů.

V pravé části obrázku je topologie s využitím PLC, které je připojeno po síti Ethernet. Pro komunikaci s převodníkem RS232 – M-Bus je použit RS232 port PLC. Toto zapojení je praktičtější v prvních fázích oživování, kdy PLC ještě nemusí být trvale v provozu (resp. nemusí na něm trvale běžet aplikační program). Zároveň máme možnost dálkového přístupu, protože síť Ethernet může být propojena přes VPN až na stůl technika, takže nově přidané měřiče lze kdykoli detekovat a doplnit bez cestování na stavbu a přepojování kabelů.

V Merbon IDE založíme projekt, přiřadíme Merbon RT nebo PLC a na příslušném sériovém portu založíme komunikační kanál s protokolem M-Bus. Nezapomeňme na nastavení parametrů sériové komunikace: M-Bus používá sudou paritu, rychlost bude 2400 nebo 9600 bps, podle výchozího nastavení měřičů. Některé typy měřičů mají tzv. autobaud, tedy samy detekují komunikační rychlost dotazu a stejnou rychlostí i odpovídají. Projekt nahrajeme do runtime nebo PLC, aby program měl ke komunikačnímu kanálu přístup.

V kontextovém menu kanálu s protokolem M-Bus je funkce Hledat M-Bus měřiče v síti.


Po jejím spuštění se runtime přepne do módu oživování a můžeme si vybrat, jestli se měřiče mají hledat podle primárních nebo sekundárních adres.

Hledání podle primárních adres

To má smysl, jsou-li na měřičích nastaveny unikátní primární adresy (v rozsahu 1…250). Měřiče mají z výroby obvykle výchozí adresu 1. Pokud tedy nebyly při montáži nebo před ní přeadresovány, detekce podle primárních adres nebude fungovat – došlo by ke kolizi odpovědí. Některé měřiče, jako např. Kamstrup Multical, mají jako výchozí primární adresu poslední dvojčíslí sériového čísla (sekundární adresy). V menších sítích je tak vysoce pravděpodobné, že primární adresy na jedné sběrnici budou unikátní a ke kolizi nedojde. Merbon IDE se postupně dotazuje na všechny adresy v zadaném rozsahu a pokud měřič s příslušnou adresou odpoví, objeví se v seznamu detekovaných měřičů.

Podle standardu M-Bus by každý měřič – bez ohledu na to, jakou primární adresu má nastavenou – měl odpovědět na dotaz vznesený na adresu 254. Pokud tedy máme na sběrnici jen jeden měřič a neznáme jeho primární adresu, můžeme sběrnici „prohledat“ pouze na adrese 254, čímž se šetří čas, potřebný ke skenování: nemusíme čekat na desítky timeoutů.

Hledání podle sekundárních adres

Sekundární adresa by měla být pro každý měřič unikátní a na rozdíl od adresy primární se nedá (jednoduše) změnit. Jde o osmimístné dekadické číslo, tedy v rozsahu 00000000 až 99999999. Je zřejmé, že při skenování celého tohoto adresního rozsahu by detekce trvala neúměrně dlouho. Proto Merbon IDE používá kombinaci prohledávání po skupinách adres a detekce kolizí. Nedotazuje se jen na konkrétní adresy, ale může používat tzv. masky. Průběh detekce pak vypadá např. takto:

Dotaz: Je na sběrnici měřič, jehož sekundární adresa začíná 0…?
Odpověď: (žádná – vyprší timeout)
Dotaz: Je na sběrnici měřič, jehož sekundární adresa začíná 1…?
Odpověď: (nečitelná – odpovědělo více měřičů najednou a mezi jejich telegramy došlo ke kolizi)
Dotaz: Je tedy na sběrnici měřič, jehož sekundární adresa začíná 10…?
Odpověď: (žádná – vyprší timeout)
Dotaz: Je na sběrnici měřič, jehož sekundární adresa začíná 11…?
Odpověď: (žádná – vyprší timeout)
Dotaz: Je na sběrnici měřič, jehož sekundární adresa začíná 12…?
Odpověď: Odpoví jediný měřič a nahlásí sekundární adresu 12345678.
Na sběrnici ale mohou ještě být i další měřiče s adresami 13…, 14…, atd. až 19… Program tedy pokračuje dále:
Dotaz: Je na sběrnici měřič, jehož sekundární adresa začíná 13…?

Atd. Vidíme, že při kolizi se dotaz postupně „zjemňuje“ a prohledává se všech deset pozic v příslušném řádu. Vždy nastane jeden ze tří výsledků:

  • žádná odpověď – v dotazovaném rozsahu není žádný měřič, pokračuje se další číslicí v řádu až do 9,
  • jediná odpověď – v dotazovaném rozsahu je právě jeden měřič, který v odpovědi uvádí i svou plnou sekundární adresu a je tedy zaznamenán do tabulky nalezených měřičů,
  • kolize více odpovědí – v dotazovaném rozsahu jsou dva nebo více měřičů, jejichž sekundární adresy začínají stejným řetězcem: pak je prohledán postupně celý nejbližší nižší řád od 0 a rekurzivně se pokračuje až do pokrytí celého osmimístného rozsahu.

Tento algoritmus zajistí, že i v případě sekundárních adres rozptýlených po celém adresním rozsahu je sběrnice kompletně proskenována během asi 10–15 minut (záleží na délce timeoutu a počtu pokusů, obvykle se každý dotaz pro jistotu zkouší třikrát za sebou). Průběh procesu indikuje zelený progress bar, komunikaci můžeme sledovat i přes LED pro vysílání a příjem na M-Bus převodníku.

Pokud využijeme Merbon RT, můžeme průběh hledání sledovat i v okně programu:


Údaj vpravo, např. 0x03ffffff, je maska, která určuje rozsah dotazovaných adres, tedy v tomto případě „… jehož sekundární adresa začíná 03…“. Vidíme, že u vodoměrů, které mají adresy těsně vedle sebe, tedy lišící se jen o 1, bylo nutné s maskou dojít až do maximální hloubky – na poslední, nejnižší pozici. Byla proto skenována čísla 05468560 až 05468569.

Po skončení detekce vidíme v Merbon IDE tabulku s nalezenými měřiči.


První z nich má primární adresu 2, další dva ji mají 0 (nejspíše výchozí). Pomocí detekce primárních adres bychom tedy takto úspěšní nebyli, u vodoměrů by nastala kolize. Identifikační číslo je adresa sekundární, do osmimístného tvaru ji můžeme zleva doplnit nulami.

Pozor, u některých měřičů sekundární adresa nemusí být totožná se sériovým číslem! Jde zejména o vodoměry s externími M-Busovými adaptéry, které se na měřiče upevňují až po montáži. Sériové číslo (sekundární adresa) adaptéru nemá žádný vztah k sériovému číslu vodoměru. Pokud instalatéři dodají půdorysy s vepsanými sériovými čísly vodoměrů, toto značení nemusí odpovídat naskenovaným sekundárním adresám. Pak je nutné vodoměry znovu obejít a opsat si sériová čísla M-Busových adaptérů.

V tabulce s výsledky můžeme rovnou nastavit nebo změnit primární adresy, aniž bychom potřebovali speciální software. Postupujeme takto:

  • vybereme řádek s měřičem, jehož primární adresu chceme změnit,
  • v okénku dole nastavíme novou adresu,
  • stiskneme tlačítko Nastavit,
  • pro kontrolu stiskneme Zpět a sběrnici znovu oskenujeme.

Nyní k tomu nejzajímavějšímu: vložení nalezeného měřiče jako zařízení do komunikačního kanálu.

Pokud nalezený typ měřiče již existuje v knihovně hardwaru jako prototyp, označíme ho ve sloupci Importovat. Pravděpodobnější ale je, že měřič zatím v knihovně není, takže pro jeden nebo více měřičů zaškrtneme Vytvořit. Pokud je na sběrnici více měřičů stejného typu, je účelnější vložit do kanálu jen jeden měřič, u něho vybrat (a případně přejmenovat) proměnné, které nás zajímají, a toto zařízení pak kopírovat a novému měřiči jen změnit adresu. Počítáme-li s nasazením připraveného prototypu na dalších projektech, můžeme si ovšem měřič uložit jako knihovní prototyp.

Rozdíl je v tom, že nakopírované měřiče představují vzájemně nezávislá zařízení a při úpravě (např. odebrání některých proměnných) jednoho z nich nejsou ostatní měřiče ovlivněny. Naopak při použití prototypu z knihovny se při jeho případných úpravách změny projeví u všech instancí měřičů, které byly jako tento prototyp vloženy.

Pro každý měřič, který jsme vybrali jako Vytvořit, se v dalších krocích zobrazí tabulka s nalezenými proměnnými. Všechny tyto údaje jsou obsaženy v odpovědi měřiče na obecný dotaz, Merbon IDE odpověď rozebere podle standardu M-Bus a zobrazí názvy proměnných, jejich formáty, jednotky atd.


U elektroměru na obrázku jsme vybrali náměry energie pro dva tarify a aktuální výkon. Po importu se v kanálu objeví zařízení s proměnnými, vygenerují se i příslušné globální proměnné. Generický název (Meter_2) bude vhodné změnit na skutečné označení měřiče, např. Nabijecka_stani_312.


Takto upravený projekt můžeme rovnou nahrát do PLC a spustit Start ladění. Ve sloupečku PLC Hodnota se objeví náměry a aktuální výkon.

Všimněme si, že při vygenerování zařízení v projektu je u něj jako výchozí vybrána možnost Použít sekundární adresu. Pokud chceme pro komunikaci používat adresy primární, je nutné to zde změnit (lze i hromadně u více měřičů).


Máme-li sběrnici již předem připravenou a oživenou, nemusíme se zdržovat detekcí, ale můžeme v kontextovém menu kanálu Vytvořit M-Bus měřič z reálného zařízení. Funkce výběru proměnných je stejná, jen se rovnou zadává primární nebo sekundární adresa měřiče.

Pro pojmenovávání měřičů a proměnných platí následující pravidla:

  • Název měřiče by měl identifikovat odběrné místo, a to tak, aby označení bylo srozumitelné pro uživatele. Typicky jde o číslo bytu, nájemní jednotky, zásobovaného okruhu atd.
  • Název proměnné by měl vyjadřovat měřenou veličinu.
  • Jednotku u proměnné je vhodné doplnit v tabulce globálních proměnných.
  • Případnou transformaci nastavíme ve vlastnostech datového bodu v zařízení. Např. u energie v příkladu výše je spotřeba ve Wh kvůli rozlišení; praktičtější by bylo ji odečítat v kWh – pak zvolíme lineární transformaci s koeficientem K = 0.001. Odečet pak numericky souhlasí s hodnotou na displeji měřiče.
  • Někdy se jako proměnná pro kontrolu odečítá i sériové číslo (sekundární adresa) měřiče, je-li k dispozici jako proměnná, abychom měli přehled o tom, jestli pozice měřiče v softwaru odpovídá odběrnému místu v půdorysech.

Možné problémy a jejich řešení:

Nelze detekovat žádný měřič, převodník při detekci nevysílá (LED Tx nebliká)
Chybné číslo COM portu v softwaru, špatně zapojený nebo poškozený kabel

U převodníku svítí červená LED
Zkrat na sběrnici M-Bus nebo příliš velký počet měřičů. Zkontrolujte proud na sběrnici, případně použijte převodník pro větší počet měřičů

Převodník při detekci vysílá, ale nevrací se odpovědi
Přerušená sběrnice, špatně nastavené komunikační parametry v Merbon IDE (pozor na sudou paritu), měřiče mají jinou komunikační rychlost než jaká je nastavena v kanálu

Převodník při detekci vysílá – blikne, při odpovědi svítí červená alarmová LED
Přetížená sběrnice (počet měřičů je těsně nad hranicí) – zkuste použít silnější převodník nebo skenovat jen část sběrnice; kolize adres při detekci podle primárních adres (měřiče mají nastaveny výchozí adresy) – detekujte podle sekundárních adres

Při analýze měřiče se v tabulce neobjeví očekávané proměnné
Měřič může vyžadovat speciální komunikaci, problémy mohou nastat např. při segmentaci telegramů. Pošlete výpis komunikace (port monitor) a typ měřiče na technickou podporu Domat Control System, support@domat.cz.

Chci si připravit projekt předem, detekci nechci využívat, ale nemám knihovnu prototypů
Aktuální prototypy na požádání pošleme mailem – pište na support@domat.cz.

Více o základech zde.

Více o převodnících zde.

Odkaz na všechny díly zde: https://www.domat-int.com/cs/instalace-komunikacni-sbernice-m-bus


Domat Control System s.r.o.
logo Domat Control System s.r.o.

Domat Control System s.r.o. patří k evropské špičce dodavatelů řídicích systémů a regulací pro inteligentní budovy, průmysl a energetiku. Cílem této ryze české společnosti je vyvíjet, vyrábět a dodávat řídící systémy v mezinárodním měřítku.