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.
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čů.
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.
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ů.
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ů:
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:
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.
Chybné číslo COM portu v softwaru, špatně zapojený nebo poškozený kabel
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ř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ř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
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.
Aktuální prototypy na požádání pošleme mailem – pište na support@domat.cz.
Nejspíše nesouhlasí datový typ. Výchozí, automaticky přiřazovaný celočíselný datový typ je DINT, jehož rozsah někdy nemusí stačit a navíc je se znaménkem (může nabývat i záporných hodnot, což u kumulovaných veličin nedává smysl). Změňte typ ST ve Vlastnostech datového bodu na UDINT nebo ULINT.