Najprv popisem o co mi ide.
Momentlane mam spraveny emulator RS485 elektromera k menicu, ktoremu podstrkavam udaje, ktore citam z roznych elektromerov (shelly) - podla toho aku cast spotreby chcem pokryvat menicom.
Momentalne mam tento emulator spraveny cez ESP32 s ESPhome a home assistant, kde mam modbus server a odtial si menic cita cez RS485 RTU modbus udaje.
Toto vsetko mi funguje.
Ale chcel by som vynechat ESP32, a pouzit rovno prevodnik RS485/Modbus RTU na Modbus/TCP (ospravedlnujem sa ak som doplietol presne oznacenia)
Na PC mam rozbehnuty cez node red Modbus server, na ktory sa s PC bezproblem pripojim a viem citat registre.
Ked vsak pouzijem prevodnik, ten sa na server pripoji, ale ked si cez RS485 chcem precitat hodnotu registra tak nedostanem ziadnu odpoved. (pouzivam USB -> RS485 prevodnik)
Skusal som spravit cisty TCP server a pozerat aky request pride z prevodnika, ale ziadny dotaz nedojde (TCP pripojenie si to drzi stale)
Pouzivam prevodnik waveshare RS485 to POE ETH (B). Nastaveny ako TCP client. Skusal som v nom uz vsekty nastavenia co ma napadli ale nedokazal som rozbehat kmunikaciu.
Založen: Dec 26, 2004 Příspěvky: 1461 Bydliště: Košice - okolie
Zaslal: so březen 08 2025, 10:50 Předmět:
Ak prepnem prevodnik na TCP server, ako bude prevodnik vediet ze dotaz na vycitanie registra, ktory poslal menic ma ist na modbus server, kde mam udaje?
jo takhle, už jsem to pochopil. ty chceš tím měničem na RS485 řídit komunikaci.
To asi neporadím. Tady musíš asi tomu převodníku nějak říci, na jakou IP adresu serveru se má dívat.
Založen: Jan 01, 2023 Příspěvky: 2341 Bydliště: Česká Lípa
Zaslal: so březen 08 2025, 21:09 Předmět:
mikollar napsal(a):
Pouzivam prevodnik waveshare RS485 to POE ETH (B). Nastaveny ako TCP client. Skusal som v nom uz vsekty nastavenia co ma napadli ale nedokazal som rozbehat kmunikaciu.
Jestli jsem to správně pochopil tak měnič (zřejmě k FVE), který má komunikovat přes svůj sériový port RS485 posílá dotazy protokolem Modbus RTU a vy chcete, aby se tyto dotazy přes zmíněný převodník waveshare převáděly na protokol Modbus TCP a přenášely přes ethernet na zařízení, které plní funkci Modbus TCP serveru (tj. poskytuje data na vyžádání). Odpověď z Modbus TCP serveru by měla být převodníkem waveshare zase zpět převedena na protokol Modbus RTU a přenesena na port RS485 do měniče.
Problém bude zřejmě v nesprávném nastavení zmíněného převodníku waveshare.
Primárně musí být v převodníku waveshare nakonfigurována správná IP adresa zařízení Modbus TCP serveru ať už je to PC nebo cokoli jiného. Modbus TCP server musí podporovat na ethernetu komunikaci datovým protokolem ve formátu Modbus TCP (POZOR formát datových paketů Modbus TCP se liší od Modbus RTU). Pro spojení se implicitně používá TCP port 502. Zařízení, které plní funkci Modbus TCP serveru by tedy mělo přijímat spojení na TCP portu 502. Převodník waveshare by měl být nastaven v režimu TCP client.
Network
IP mode: static
IP Address: IP adresa převodníku waveshare v síti ethernet (žádné jiné zařízení v síti nesmí mít stejnou IP adresu)
Port: 502
Work mode: TCP client
Net mask: maska v podsíti ethernet, ve které je připojen převodník waveshare
Gateway: IP adresa brány v podsíti ethernet, ve které je připojen převodník waveshare
Dest IP: IP adresa zařízení, které plní funkci Modbus TCP serveru tj. poskytuje data na vyžádání (žádné jiné zařízení v síti ethernet nesmí mít stejnou IP adresu)
Dest Port: 502
Na straně portu RS485 musí být správně nakonfigurovány parametry tak, aby odpovídaly parametrům komunikace, které používá měnič při komunikaci přes svůj port RS485 viz v sekci Serial položky Baud Rate, Data Bits, Parity, Stop Bits a Flow Control. Pokud toto nebude správně tak převodník waveshare data od měniče na straně sériového portu RS485 vůbec nepřijme.
Podle tohoto popisu v sekci MODBUS TCP Test přenáší převodník waveshare implicitně data mezi sériovým portem RS485 a ethernetovým portem transparentně.
citace:
MODBUS TCP Test
By default, the data between the serial port and the Ethernet port is transparently transmitted.
Transparentně znamená, že data, která převodník waveshare obdrží na straně svého sériového portu RS485 bez jakékoli změny předá na příslušnou IP adresu na straně ethernetu, a to je problém, protože formát datových paketů protokolu Modbus RTU se liší od formátu datových paketů Modbus TCP.
2. Datový paket v protokolu Modbus RTU používá na konci zprávy kontrolní součet, který se však v protokolu Modbus TCP vůbec nepoužívá.
Takže, aby to správně fungovalo musí převodník waveshare provádět konverzi datových paketů mezi protokoly Modbus RTU a Modbus TCP. To by měl dělat pokud je nastaveno níže uvedené.
Advanced Settings
Transfer protokol: Modbus TCP protokol
Když převodník přijme datový paket na straně sériového portu RS485 je ve formátu Modbus RTU. Převodník musí pro převod mít celý datový paket tj. nemůže začít provádět převod dokud nemá celý datový paket ve formátu Modbus RTU. Poté musí převodník z datového paketu Modbus RTU odstranit kontrolní součet a na začátek musí vložit hlavičku ve formátu Modbus TCP. Takto upravený datový paket už je převeden do formátu Modbus TCP a tak ho převodník pošle do sítě ethernet na příslušnou IP adresu Modbus TCP serveru.
Odpověď ze sítě ethernet od Modbus TCP serveru je datový paket ve formátu Modbus TCP. Z něj musí převodník nejprve odstranit hlavičku, která se používá jen v Modbus TCP a na konec zbylé části datového paketu musí vypočítat a vložit kontrolní součet, který se používá v Modbus RTU. Takto upravený datový paket už je převeden do formátu Modbus RTU a tak ho pošle na sériový port RS485 převodníku, kterým je připojen k měniči.
Založen: Dec 26, 2004 Příspěvky: 1461 Bydliště: Košice - okolie
Zaslal: so březen 08 2025, 21:22 Předmět:
Dakujem za potvrdenie. Ano presne tak ako pisete.
Takto to mam nastavene.
Prevodnik indikuje ledkou pripojenie k serveru. Teda pripojenie k serveru funguje.
Skusal som menit rozne parametre v prevodniku. Zapnut konverziu, bez konverzie, asi vsetky klikatka ktore su dostupne (windwos config appka ma viac moznosti ako web rozhranie)
Nakoniec som skusal vytvorit TCP server, kde sa tiez prevodnik pripojil.
Na TCP serveri som si dal vypisovat vsetky dotazy ktore na neho pridu.
Ziadne dotazy ale prevodnik na server neposiela, ked som poslal dotaz z RS485 (ledka aktivity RS485 blikne).
Kontroloval som zapojenie A B liniek, baudrate paritu, vsetko xkrat.
Ak zhodim server tak ledka na prevodniku zhasne, teda pripojenie tam realne prvodnik robi a detekuje ho, aj na serveri vidim pocet aktivnych pripojeni.
Založen: Jan 01, 2023 Příspěvky: 2341 Bydliště: Česká Lípa
Zaslal: so březen 08 2025, 21:57 Předmět:
mikollar napsal(a):
Nakoniec som skusal vytvorit TCP server, kde sa tiez prevodnik pripojil. Na TCP serveri som si dal vypisovat vsetky dotazy ktore na neho pridu. Ziadne dotazy ale prevodnik na server neposiela, ked som poslal dotaz z RS485 (ledka aktivity RS485 blikne).
To, že LEDka pro RS485 na převodníku waveshare blikne ještě nemusí znamenat, že data převodník přijal ve správné podobě.
Při tom posílání dat na sériový port RS485 převodníku waveshare jste použil převodník USB/RS485 a z PC jste na něj z nějakého svého programu poslal binární data paketu ve formátu Modbus RTU a nebo jste to dělal jinak?
Můžete sem uvést hexa výpis jednotlivých bajtů toho datového paket Modbus RTU, který jste se snažil poslat na RS485 port převodníku waveshare?
Příklad:
Datový paket Modbus RTU dotazu pro čtení jednoho holding registru z adresy 100 ve slave 1.
kód:
SL FU AH AL PH PL CH CL
01 03 00 64 00 01 C5 D5
SL = 1 tj. slave adresa Modbus TCP serveru
FU = 3 tj. modbus funkce Read Holding Registers
AH = 0 horní bajt adresy holding registru 100
AL = 64 hexa tj. dolní bajt adresy holding registru 100
PH = 0 horní bajt počtu čtených registrů
PL = 1 dolní bajt počtu čtených registrů
C5 = hexa horní bajt kontrolního součtu pro tento datový paket
D5 = hexa dolní bajt kontrolního součtu pro tento datový paket
Založen: Jan 01, 2023 Příspěvky: 2341 Bydliště: Česká Lípa
Zaslal: so březen 08 2025, 23:00 Předmět:
Váš datový paket Modbus RTU je dotaz na čtení dvou holding registrů počínaje adresou 2126 ze slave 1. Kontrolní součet je v pořádku. Problém je asi někde v tom převodníku waweshare, protože to přes něj neprochází, ale jaký konkrétně to opravdu nevím.
Jak zmiňujete pokud to uděláte mimo převodník waweshare tak to funguje, ale přes něj to prostě nefunguje i když dle vašich dosavadních popisů to vypadá, že máte vše nastaveno správně.
Pro podrobnější sledování by to chtělo, aby webové rozhraní toho převodníku waweshare poskytovalo nahlížení na příchozí data na portu RS485 s případnou diagnostikou toho zda je něco špatně a co konkrétně a zda vůbec byla provedena konverze RTU > TCP nebo ne a také proč případně nebyla data odeslána na cílovou IP adresu. Neznám diagnostické možnosti toho převodníku. Pokud tam však nějaké takové možnosti nejsou tak se obávám, že bude velký problém přijít na to proč to nefunguje.
Dost se divím proč chcete nahradit vlastní převodník realizovaný s ESP32, který vám funguje nějakým cizím převodníkem, který bude vždy do nějaké míry pro vás "černou skříňkou", nad kterou prostě nemusíte mít plnou kontrolu.
V práci pokud potřebuji realizovat převody mezi Modbus RTU a TCP tak to vždy řeším uvnitř PLC tj. v takovém případě je převodníkem PLC se specifickým programem pro daný účel, který zrovna potřebuji což je v podstatě také vlastní forma převodníku. Takže nemám doporučení na žádný ověřený hotový převodník vhodný pro váš účel.
Popravdě nejlepší bude když se na žádný cizí převodník spoléhat nebudete a použijete vlastní realizovaný třeba s tím ESP32, který vám ostatně už funguje jak jste zmínil. Proč tedy měnit něco co funguje?
Pokud potřebujete něco na profi úrovni a z toho důvodu pro vaše účely řešení s převodníkem ESP32 nevyhovuje pak použijte nějaké pro daný účel vhodné PLC s ethernet portem a RS485 portem a převod mezi Modbus RTU a TCP vyřešte vhodným naprogramováním toho PLC. Nicméně použít PLC je obvykle dost drahé řešení.
Můžete také zkoušet jiné převodníky, ale jak už jsem zmínil výše žádný pro daný účel vyzkoušený doporučit nemohu a tak to bude asi zkoušení jen formou pokus/omyl a může se tedy stát, že i další převodníky, které vyzkoušíte se mohou ukázat pro váš účel nevhodné.
Založen: Jan 01, 2023 Příspěvky: 2341 Bydliště: Česká Lípa
Zaslal: ne březen 09 2025, 7:55 Předmět:
Na čem provozujete Home Assistant?
Ideální by bylo, pokud by na stejném zařízení, na kterém provozujete Home Assistant běžel současně váš program, který by fungoval jako Modbus TCP server a zároveň také jako Modbus RTU server s vazbou na pro něj vyhrazený RS485 port, který by se doplnil k tomu zařízení, na kterém běží Home Assistant.
Home Assistant, který funguje jen jako Modbus klient by zapisoval data do Modbus TCP serveru, ale vzhledem k tomu, že by to běželo na stejném zařízení tak by to šlo jen přes interní paměť tj. vůbec by to nešlo přes síť. To, že by ten váš program fungoval nejen jako Modbus TCP server, ale současně i jako Modbus RTU server by bylo výhodou pro rychlost, protože by nebylo potřeba používat žádný převodník a data, která by byla zapsána Home Assistantem do Modbus TCP serveru by byla bez zpoždění okamžitě k dispozici v rámci Modbus RTU serveru, který by na svém vyhrazeném portu RS485 přímo reagoval na požadavky od měniče.
Založen: Dec 26, 2004 Příspěvky: 1461 Bydliště: Košice - okolie
Zaslal: ne březen 09 2025, 10:09 Předmět:
HA mi bezi na virtualke vykonovo az az. Pod HA mam spusteny node red doplnik kde mam rozbehany modbus server v ktorom cez flow do neho zapisujem zo senzorov HA. To je ten novy sposob, o ktory sa pokusam.
Probelm je ze od servera k menicu neviem natiahnut zvlast kabel pre RS485. Preto to potrebujem prehnat cez siet, ktoru tam mam.
Teraz riesenie ktore mam tak esphome v esp32 cita data zo senzorov cez Home assistant API a bezi to cez wifi co nie je idealne.
Ak este je posledna moznost ze si to nakodim cele od zakladu, ale chcel som vyuzit uz nieco existujuce.
Data "musia" pretekat cez home assitant lebo tam sa mi zbiehaju vsetky informacie z elektromerov shelly, spotreby, vyroby, podla ktoreho sa rozhoduje, ake hodnoty poslem menicu.
Objednal som ine prevodniky, jeden z nich je aj tu spomminany, tak uvidim ci to bude k niecomu ci nie.
Este mozno skusim pouzit prevodniky waveshare rs232 na eth (lezia mi v sufliku), ktore by som pouzil 2 jeden ako klient druhy ako server - transparentny most. Pripojim na nich prevodniky RS485 a tym budem mat k dispozicii pri serveri MODBUS RTU z menica a mozem skusit spravit to co navrhujete.
Založen: Jan 01, 2023 Příspěvky: 2341 Bydliště: Česká Lípa
Zaslal: ne březen 09 2025, 10:43 Předmět:
Nějak takto by to mohlo fungovat v tom virtuálu, ve kterém běží Home Assistant viz přiložený obrázek. Protokol Modbus RTU je použitelný i na rozhraní RS232. Takže namísto portu RS485 pro ten Modbus RTU server by stačilo použít k virtuálu RS232 port, na který by mohla být přímo připojena strana RS232 z toho převodníku RS232/ETH u serveru. Převodník RS232/RS485 navíc k převodníku RS232/ETH by se tak použil jen na straně měniče.
Časy uváděny v GMT + 1 hodina Jdi na stránku 1, 2Další
Strana 1 z 2
Nemůžete odesílat nové téma do tohoto fóra. Nemůžete odpovídat na témata v tomto fóru. Nemůžete upravovat své příspěvky v tomto fóru. Nemůžete mazat své příspěvky v tomto fóru. Nemůžete hlasovat v tomto fóru. Nemůžete připojovat soubory k příspěvkům Můžete stahovat a prohlížet přiložené soubory
Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.