Dobrý den,
pro vyčítání M-Bus měřičů jste správně zvolil modul M-Bus (případně je možné zvoli modul M-Bus Ex, kde se některé parametry - zejména vif a dif - zadávají přímo v HEXu). Data z těchto měřičů se po vyčtení objeví na jeho výstupech val0 až val7 (lze zkontrolovat v režimu ladění).
Následně je tedy potřeba dostat tato data protokolem Modbus TCP. Komunikace probíhá po TCP, takže základem je TCPbuffer (obecný modul komunikace po TCP). Všechny Modbus moduly v knihovně jsou připraveny na protokol RTU, takže pokud bude po TCP probíhat komunikace Modbus TCP, je potřeba provést "překlad", tj. za TCPbuffer je potřeba napojit modul Modbus TCP - RTU, který tento převod provede. Na výstup tohoto modulu lze připojovat všechny slave Modbus moduly.
Pro přenos dat ze 2 měřičů je asi nejvhodnější použí dynamický modul Modbus Tx slave (dyn). Budeme přenášet 16 hodnot, tak si ho "natáhneme" na délku 16.
Tím je vlastně celý projekt hotový. Pokud chceme přenášt i Report Slave ID, tak přidáme modul Modbus slave. V případě, že OPC server bude generovat více požadavků na data najednou, tj. bude posílat více TCP paketů najednou, tak je nutné moduly TCPbuffer a Modbus TCP - RTU nahradit jedním modulem ModbusTCPbuffer, který provádí příjem a převod paketu na RTU najednou.
Nyní nastavíme parametry:
- v modulu TCPbuffer nastavím port pro Modbus TCP, tj. 502.
- v modulech M-Bus nastavím komunikační parametry (v obou stejné) např. COM2/300Bd/sudá parita a dále nastavíme modulům správnou adresu
- pokud nevíme vif a dif, tak necháme modul s měřiči zakomunikovat a z výsledku komunikace (na výstupním pinu out) můžeme vif a dif z odpovědi získat a následně zapíšeme do parametrů ty, jejichž hodnoty chceme znát
- v modulu Modbus Tx slave (dyn) nastavím adresu modulu (adresa jednotky na protokolu Modbus TCP) a dále offset, od kterého chceme, aby jednotka data poskytovala
- stejnou adresu případně nastavíme i v modulu Modbus slave
V příloze je obrázek se zapojením, projekt, který je rozdělen na 3 listy a ten samý projekt s modulem ModbusTCPbuffer.