Projekt EasyModbusTCP
Celý projekt EasyModbus, který naleznete na webu www.easymodbustcp.net, přestavuje zajímavý prostředek jak pro vložení hotové Modbus komunikace v jazyce C do libovolného vytvářeného programu, tak i pro přímé použití dvou jednoduchých již hotových prográmků ve formě přímo spustitelných EXE souborů. Ty lze snadno bez instalace spustit z disku libovolného PC s OS Windows (vyzkoušel jsem bezproblémovou funkci na Win7 SP1 64bit. i WinXP SP3 32 bit.).
Celý projekt se pak dále dělí na dvě části:
- Modbus client - program typu Master realizující komunikaci s podřízenými Modbus jednotkami typu Slave (server).
- Modbus server - program simulující Modbus jednotku typu Slave a tím např. umožňuje simulovat funkci snímačů pro testování PLC.
Obě části se společně v podobě zdrojových kódů i v podobě hotových ukázkových plně funkčních spustitelných prográmků nacházejí v ZIP souboru EasyModbusPackage.zip. Ke stažení není potřeba žádná registrace, ani se s programy nestahuje žádný malware či jiné nežádoucí svinstvo. Vše je volně k použití bez nějakého časového či funkčnostního omezení.
Software EasyModbus Client
Prográmek EasyModbus Client tvořený jen jedním oknem je spustitelný kliknutím na soubor "EasyModbusClientExample.exe", představuje velmi jednoduchý prostředek pro čtení hodnot a stavů libovolných registrů Modbus slave (server) jednotek. Škoda je, že je podporováno pouze čtení a ne zápis do slave jednotek, i když zdrojový kód v projektu tytu funkce podporuje. Zde v prográmku jsou nicméně podporovány jen čtecí funkce:
- FC1 - Read Coils - pro čtení stavu spínaných výstupů zařízení.
- FC2 - Read Discrete Inputs - pro čtení stavů dvoustavových binárních vstupů zařízení.
- FC3 - Read Holding Registers - pro čtení řídích a naměřených hodnot zařízení.
- FC4 - Read Input Registers - pro čtení naměřených hodnot snímačů.
Na druhou stranu funkce je triviální a velmi spolehlivá. Stačí jen v levé horní části vybrat Modbus-TCP nebo Modbus-RTU a pak podle této volby buď zadat IP adresu slave jednotky (Modbus-TCP) nebo zvolit COM port a Modbus adresu cílové jednotky (Modbus-RTU). Pak to je již stejné a stačí jen v zadávacím políčku "Starting Address" zadat číslo počátečního čteného registru a do políčka "Number of Values" pak počet za ním následujících registrů, které jejichž obsah se má vypsat v největším okně "Answer from Modbus-Server" vpravo. Volbou čtecí funkce se definuje o jaká data jde, zda binární (funkce FC1 a FC2) nebo číselné 16bitové (funkce FC3 a FC4).
Zobrazené hodnoty jsou zobrazeny aktuálně v době stisku tlačítka příslušné funkce a s časem se sami neupdatují. Tedy vždy pokud chcete nové hodnoty, musíte tlačítko požadované funkce stisknout znovu. A to je vše...
Praktický test jsem vyzkoušel s měřící centrálou HWgroup Poseidon2 4002 (bližší info viz TEST - Poseidon2 a komunikace Modbus-TCP), který se svým ethernetovým rozhraním umožňuje pracovat jako Modbus slave (server). Hodnoty v jeho "Input Registers" a "Discrete Inputs" bylo možné bez problému číst prostřednictvím EasyModbus Clientu.
Ukázka funkce čtení Hodnoty "Input Registers" a "Discrete Inputs" registrů měřící ústředny Poseidon2.
Software EasyModbus Server TCP
Software EasyModbus Server TCP, spustitelný přes soubor "EasyModbusServerSimulator.exe", pracuje jako slave, tedy jako zdroj informací pro nějakou Modbus Client/Master jednotku, kterou může být PLC, HMI panel či jiný počítač například s běžícím programem EasyModbus Client.
EasyModbus TCP Server je též tvořen jen jedním programovým oknem, ale obsahuje více "políček" a "záložek". Nejdříve jen nutné upozornit, že tento software je pouze pro Modbus-TCP, tedy ethernetovou verzi a nepodporuje sériovou komunikaci Modbus-RTU. Protože jednotky typu server je přístupná všem, nevyplňuje se zadání žádné IP adresy a z pohledu Modbus klientů platí adresa daného počítače, na kterém tento program běží.
Zaškrtávací položky "Activated Function codes" povolují/blokují použití funkcí ze strany klientu, tedy nezaškrtnuté Modbus funkce nebude klient použít. Tím se také definují o oblasti dat, které jsou z vnějšku přístupné.
Co budou Modbus klienti získávat / číst za data se definuje v záložkách:
- Discrete Inputs - binární stavy určené pouze pro čtení funkcí FC02 (Read Discrete Inputs).
- Coils - binární stavy, které lze strany Modbus klientu nejen číst funkcí FC01 (Read Coils), ale i zapisovat funkcemi FC05 a FC15.
- Input Registers - 16bitové číselné hodnoty určené pouze pro čtení funkcí FC04 (Read Input Registers).
- Holding Registers - 16bitové číselné hodnoty, které lze číst funkcemi FC03 a zapisovat do nich funkcemi FC06, FC16 a FC23.
Na jednotlivé pozice "Address" v rozsahu 0 až 20 lze do políček "Values" zapisovat z klávesnice hodnoty, které jsou vidět ze strany Modbus klienta.
Praktický test jsem vyzkoušel v komunikaci s dalším notebookem, který pracoval s programem EasyModbus Client, zatímco v PC s EasyModbusTCP Serverem fungovalo jako zdroj informací (slave). Komunikace probíhala spolehlivě a bez jakýkoliv komplikací.
Závěr
Oba EXE prográmky projektu EasyModbus zde uvedené jsou sice svojí funkcí a výbavou až triviální, ale na druhé straně zcela bezproblémové na užívání. Každý servisní technik je může mít snadno u sebe v PC nebo na USBFlash a kdykoliv je operativně použít i například na zapůjčeném počítači. Z tohoto pohledu je hodnotím jako užitečnou základní pracovní pomůcku k Modbus sběrnicím.
Odkazy:
- Stránky projektu EasyModbusTCP: www.easymodbustcp.net
- Přímý odkaz na stažení programů EasyModbusTCP: http://sourceforge.net/projects/easymodbustcp/
- Článek TEST - Poseidon2 a komunikace Modbus-TCP