Jste zde

TEST - Modbus TCP terminály zdarma pro OS Android

Jak snadno kontrolovat i měnit stavy proměnných v PLC či měřicích a řídicích zařízení z telefonu nebo tabletu s OS Android? Pomocí komunikace Modbus TCP a jednoduchých softwarových aplikací běžících bez problémů i na telefonech, které jsou volně ke stažení v obchodě "Google Play". 

Modbus TCP komunikaci umožňuje dnes většina průmyslová zařízení, které mají ethernetové rozhraní. Narozdíl například od hlavního konkurenta Profinetu společnosti Siemens, je mnoho aplikací pro Modbus TCP zcela zdarma či pouze za "pár babek".

Základní informace k protokolu Modbus TCP

Komunikační průmyslový protokol Modbus TCP je z praktického pohledu ethernetová verze známější verze pro sériovou linku Modbus RTU. Hlavní rozdíl je však pouze na tzv. nižších vrstvách komunikační struktury (OSI modelu komunikačního rámce) a samotná data, řídící funkce (příkazy), adresování vnitřních proměnných (registrů) v komunikujících jednotkách je však zcela totožný s Modbus RTU.

Komunikace tedy stále probíhá v komunikačním stylu nadřízený - podřízený (Master - Slave), přičemž v případě TCP komunikace se to častěji označuje jako Klient - Server. Zde je však nutné si správně uvědomit, že Klient = Master (Nadřízený) a Server = Slave (Podřízený), což může být pro někoho trošku matoucí. Osobně proto raději používám raději výrazy Master-Slave. Na LAN ethernetové síti (je jedno zda reprezentované drátovým LAN či bezdrátovým WLAN - WiFi přenosovým médiem) tak vždy musí být alespoň jeden master (klient), který řídí komunikaci a vysílá dotazy jednotlivým slave jednotkám (servery). Každá jednotka (master i slave) má svou IP adresu, kterou jsou přímo na LAN síti adresovány. V tomto směru je zde odlišná situace o proti protokolu Modbus RTU, kde k adresování jednotek na sériové lince RS-485 slouží tzv. ID identifikační číslo. To u Modbus TCP jako takovém, nemá smysl a "pravé Modbus TCP jednotky" jej ignorují. V protokolu je však ID zahrnuto pro případ kompatibility s Modbus RTU pro situaci, kdy je Modbus RTU sériová sběrnice připojena na LAN přes nějakou ethernet-RS485 bránu (převodník) a Modbus TCP jednotky potřebují komunikovat po LAN i s těmito Modbus RTU jednotkami. Při čisté LAN komunikaci s Modbus TCP jednotkami tak lze na pozici hodnoty ID nepsat prakticky cokoliv (obvykle se ponechává  ID  0 či 1).

Porovnání složení paketů protokolů Modbus RTU a Modbus TCP - zelená část (tzv. PDU sekce) je shodná pro oba protokoly.

Jinak se dále shodně s Modbus RTU přenáší za sebou v paketu v tzv. PDU sekci číslo funkce FCode (tedy číslo příkazu, co má slave jednotka provést, co se od ní žádá), adresa a počet registrů od dané adresy (číslo registru v slave jednotce, na kterou má být funkce aplikována) a v případně zápisové funkce ještě zapisovaná data. Této PDU části pak ještě v případě Modbus TCP předchází tzv. MBAP hlavička (MBAP Header). Dohromady pak vytváří ADU paket.

Bližší popis částí paketů obou protokolů Modbus - Modbus RTU (nahoře) a Modbus TCP (dole).

MBAP hlavička obsahuje pořadové číslo transakce (Transaction ID), což je prostě jen pořadové číslo daného paketu, které vygeneruje master jednotka před odesláním a pak ještě informaci o celkovém počtu bajtů (délka ADU - Lenght). Pořadové číslo prostě slouží masteru při zpětném obdržení odpovědi od slave jednotky si ji správně přiřadit (identifikovat) k vyslané zprávě, aby master vlastně věděl, na jaký dotaz danou přijatou odpověď dostal. V ethernetu totiž může na směrovačích dojít k různému pozdržení paketu, takže odpověď může přijít zpět masteru až po vyslání jiné další zprávy.

Celý tento paket je pak zabalen (obalen) do klasického paketu ethernetu, a proto lze Modbus TCP komunikace provádět na stejné LAN síti s běžnou TCP/IP komunikací.

Složení celého ethernetového paketu, kde Modbus TCP protokol zaujímá část uvedenou v  úrovni "Level 5" jako ADU (Application User Data).

Modbus Monitor pro OS Android

Program Modbus Monitor pro operační systém Android je zdarma ke stažení v Google Play obchodě z každého Android zařízení. Já jsem je osobně zkoušel na chytrém telefonu s OS Android 2.3.

Program slouží jako Modbus TCP master (klient), kterým je možné přes WLAN (WiFi) na telefonu provádět čtení nebo i zápis hodnot do Modbus registrů v cílovém zařízení s definovanou IP adresou. Protože telefony ani tablety nemají klasické drátové ethernetové rozhraní s konektorem RJ-45, ale jen bezdrátovou WiFi komunikaci a naopak průmyslová zařízení naopak obvykle nemají WiFi, ale jen drátový konektor RJ-45, je nutné slave Modbus TCP zařízení připojit na WiFi (WLAN) router. Na telefonu či tabletu je pak nutné nastavit a připojit se na WiFi síť vytvářenou právě daným WiFi routerem. Spolu s nainstalování softwaru Modbus Monitor jsou to základní dva obecné úkony pro zahájení každé Modbus TCP komunikace.

Po prvním zapnutí programu Modbus Monitor se objeví téměř jen černá obrazovka, kde jen zcela nahoře se vyskytuje nápis programu a pak informace "Add", na kterou když se ťukne, otevře se nabídka pro nastavení parametrů "komunikačních kanálů". Tedy konkrétní parametry ohledně čtených či zapisovaných adres registrů slave jednotky, nastavení funkcí. Naštěstí zde je možné nastavit a současně monitorovat  / zapisovat více různých registrů tak, že lze vytvořit více odlišných nastavení. Například lze současně číst hodnoty 3 registrů zařazených do kategorie "Holding Registres" od adresy 15 (40015), které mají hodnoty ve formátu "Signed Integer" a pak v dalším nastavení číst hodnoty 2 registrů kategorie "Holding Registres" stejné slave jednotky, ale od adresy 26 (40026), které mají hodnoty ve formátu "Unsigned Integer". Dále třeba lze současně číst bitové stavy registrů zařazených do kategorie "Input Status" v např. registrech 10 (10010). Zde také lze nastavit "umělý" offset či násobení hodnoty koeficientem "Gain" a tedy hodnoty před zobrazením přepočítat. Bohužel nelze provádět volbu čísla funkce ani provádět zápis do registrů. Prostě jen ze slave jednotky hodnoty číst a zobrazovat, tedy prostě jen Modbus monitor.

   

Obrazovky přidání / nadefinování parametrů registru, který má být zařazen do komunikace a zobrazován na základní obrazovce.

Také je však nutné provést nastavení obecných parametrů Modbus TCP komunikace, jakými jsou IP adresa cílové slave jednotky, se kterou budeme chtít komunikovat , TCP kanál, který však pro Modbus TCP má standardně hodnotu 502, a pak ještě případně množství doplňkových nastavení, jako jsou limitní časy čekání na odpověď "Time Out", limitní čas spojení "Link Timeout" atd. Z toho je také patrný fakt, že nelze najednou současně monitorovat více slave Modbus TCP jednotek, ale vždy si musíme vybrat a nastavit jen jednu. To není při existenci a potřebě monitorovat více slave jednotek na síti zrovna ideální.

  

Skutečné obrazovky programu Modbus Monitor - zleva: základní obrazovka s vyvolaným menu, nastavení IP adresy a komunikačních parametrů.

Pak již stačí jen v menu ťuknout na tlačítku "Connect" a po chvilce se u funkcí čtení začnou průběžně v reálném čase zobrazovat hodnoty zvolených registrů slave jednotky a také lze realizovat zápis hodnot. Správný chod komunikace indikují na obrazovce zobrazená počítadla vyslaných a obdržených paketů Tx a Rx.

Mě osobně celá funkce programu pracovala bez sebemenších problémů a velmi spolehlivě. Všechna provedená nastavení se uloží a zůstanou platná i po vypnutí a novém zapnutí programu, takže při opakované práci se stejným Modbus zařízením není nutné vše znovu nastavovat a vše se při zapnutí načte stejně jako to bylo před vypnutím programu.

Modbus Droid pro OS Android

Program Modbus Droid je dalším bezplatným programem pro OS Android, který se nachází v Google Play obchodě. O proti programu Modbus Monitor má ještě trošku více zjednodušenou koncepci a funkci.

Také se po prvním zapnutí objeví jen černá obrazovka a je nutné nejdříve nastavit parametry Modbus TCP komunikace. Zde však je z pohledu obecných parametrů výrazně menší počet možných nastavení, prakticky se jen nastavuje IP adresa slave jednotky a TCP kanál, který však pro Modbus TCP má standardně hodnotu 502. Podobně jako u programu Modbus Monitor však lze vždy nastavit komunikační parametry na jednu slave jednotku a při následném požadavku komunikace s jinou je minimálně nutné změnit nastavení IP adresy.

O proti Modbus Monitoru zde však ani nelze současně nastavit více prováděcích funkcí, tedy lze například jen nastavit čtení funkcí č. 3 hodnoty 3 registrů od adresy 15 (40015), které mají hodnoty ve formátu "Signed Integer", ale již nic dále. Pokud tedy dle výše uvedeného příkladu u programu Modbus Monitor budete chtít dále i třeba číst hodnoty 2 registrů "Holding Registers" stejné slave jednotky, ale od adresy 26 (40026), které mají hodnoty ve formátu "Unsigned Integer", je nutné změnit nastavení.

Na druhou stranu jsou pak hodnoty na zobrazovací obrazovce uváděny pěkně velkými fonty a hlavně je možné u zapisovatelných registrů vyvolat funkci zápisu hodnoty "Write" po kliknutí na příslušnou hodnotu. To naopak Modbus Monitor neumí.

Samozřejmě pro navázání komunikace je nutné v menu přes položku "Settings" provést nastavení IP adresy slave jednotky a komunikaci následně zapnout tlačítkem "Connect".

Program Modbus Droid tak je tím, že nabízí menší množství voleb, i jednodušší na ovládání, ale zase navíc i funkci zápisu. Z pohledu spolehlivosti provozu jsem však někdy řešil záhadné vypnutí komunikace či naopak neschopnost navázání komunikace po stisku tlačítka "Connect", kdy mi místo navázání komunikace byla hlášena různá divná chybová hlášení "Error", která však nebyla zapříčiněna WiFi přenosem ani samotným slave zařízením (Modbus Monitor tyto chyby nevykazoval)...

  

Obrazovky programu Modbus Droid - zleva: základní obrazovka se zobrazením hodnot nastavených registrů, obrazovka nastavení, obrazovka zápisu hodnoty.

Závěrem...

Při porovnání obou výše uvedených Modbus TCP terminálů pro OS Android mi z pohledu spolehlivosti funkce jako lepší vyšel program Modbus Monitor. Také má větší možnosti nastavení komunikace. Jeho velkou nevýhodou je však nemožnost provádět zápis hodnot, kterou umí Modbus Droid. To je však jeho jediná výhoda. Proto je ve výsledku nejlepší si nainstalovat oba programy a prostě vždy použít ten vhodnější pro danou aktuální potřebu.

Odkazy:

Hodnocení článku: