Vítejte na Elektro Bastlírn?
Nuke - Elektro Bastlirna
  Vytvořit účet Hlavní · Fórum · DDump · Profil · Zprávy · Hledat na fóru · Příspěvky na provoz EB

Vlákno na téma KORONAVIRUS - nutná registrace


Nuke - Elektro Bastlirna: Diskuzní fórum

 FAQFAQ   HledatHledat   Uživatelské skupinyUživatelské skupiny   ProfilProfil   Soukromé zprávySoukromé zprávy   PřihlášeníPřihlášení 

modbus RS485 --> modbus TCP
Jdi na stránku 1, 2  Další
 
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Měření, regulace a automatizace
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
mikollar



Založen: Dec 26, 2004
Příspěvky: 1461
Bydliště: Košice - okolie

PříspěvekZaslal: so březen 08 2025, 9:22    Předmět: modbus RS485 --> modbus TCP Citovat

Zdravim

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.

Je vobec mozna komunikacia tymto smerom? Resp aky iny prevodnik pouzit?

Dakujem
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
dj_Paul



Založen: Sep 19, 2004
Příspěvky: 2548
Bydliště: Laškov

PříspěvekZaslal: so březen 08 2025, 10:04    Předmět: Citovat

neměl by to být spíše server?
já používám toto: https://vi.aliexpress.com/item/1005006848590441.html
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
mikollar



Založen: Dec 26, 2004
Příspěvky: 1461
Bydliště: Košice - okolie

PříspěvekZaslal: so březen 08 2025, 10:34    Předmět: Citovat

Ak som som to spravne pochopil tak by to mal byt ako client, ktory sa napaja na server odkial chcem citat udaje.

Prevodnik sa napojoi na node red modbus server kde mam udaje a menic si cita tieto udaje.

Komunikacia inicializuje menic ako master
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
dj_Paul



Založen: Sep 19, 2004
Příspěvky: 2548
Bydliště: Laškov

PříspěvekZaslal: so březen 08 2025, 10:46    Předmět: Citovat

já mám vše jako server, můžu zapisovat i číst
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
mikollar



Založen: Dec 26, 2004
Příspěvky: 1461
Bydliště: Košice - okolie

PříspěvekZaslal: so březen 08 2025, 10:50    Předmět: Citovat

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?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
dj_Paul



Založen: Sep 19, 2004
Příspěvky: 2548
Bydliště: Laškov

PříspěvekZaslal: so březen 08 2025, 11:08    Předmět: Citovat

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.

Já jen čtu data ze senzorů
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
Valdano



Založen: Jan 01, 2023
Příspěvky: 2341
Bydliště: Česká Lípa

PříspěvekZaslal: so březen 08 2025, 21:09    Předmět: Citovat

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.

1. Datový paket v protokolu Modbus RTU nepoužívá hlavičku 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.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
mikollar



Založen: Dec 26, 2004
Příspěvky: 1461
Bydliště: Košice - okolie

PříspěvekZaslal: so březen 08 2025, 21:22    Předmět: Citovat

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.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Valdano



Založen: Jan 01, 2023
Příspěvky: 2341
Bydliště: Česká Lípa

PříspěvekZaslal: so březen 08 2025, 21:57    Předmět: Citovat

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
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
mikollar



Založen: Dec 26, 2004
Příspěvky: 1461
Bydliště: Košice - okolie

PříspěvekZaslal: so březen 08 2025, 22:09    Předmět: Citovat

Pouzivatm USB -> RS485 prevodnik a cez terminal
modbus -b 9600 -v /dev/ttyUSB0 h@2126/I
Vypis z terminalu + timeout chyba
01 03 08 4e 00 02 a6 7c

Rovanky prikaz priamo na ESP32 presiel v pohode s odpovedou.

Ale inak skusal som to napojit aj priamo na menic, ci nahodou nerobim nejaku somarinu ale tam sa to chova rovnako.

Ako stale dufam ze robim ja nejaku somarinu, bol by som velmi rad aby to slo Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Valdano



Založen: Jan 01, 2023
Příspěvky: 2341
Bydliště: Česká Lípa

PříspěvekZaslal: so březen 08 2025, 23:00    Předmět: Citovat

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é.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
mikollar



Založen: Dec 26, 2004
Příspěvky: 1461
Bydliště: Košice - okolie

PříspěvekZaslal: ne březen 09 2025, 6:42    Předmět: Citovat

Dakujem,

Skusim objednat este nejkay iny a uvidim ci to pomoze.

Dovod nahradenia je rychlost akou sa aktualizuju udaje v ESP z home assistenta. Je to cca 2x pomalise ako si pyta udaje menic.

Do noveho modbus servera dokazem tlacit udaje castejsie ako si ich pyta menic.

Ak su caste velke zmeny odberu tak mu trva dlshi cas kym to zrovna, ako nejak extra to nevadi, pretoky mam povolene , ale chcel som to mat tip top Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Valdano



Založen: Jan 01, 2023
Příspěvky: 2341
Bydliště: Česká Lípa

PříspěvekZaslal: ne březen 09 2025, 7:55    Předmět: Citovat

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.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
mikollar



Založen: Dec 26, 2004
Příspěvky: 1461
Bydliště: Košice - okolie

PříspěvekZaslal: ne březen 09 2025, 10:09    Předmět: Citovat

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.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Valdano



Založen: Jan 01, 2023
Příspěvky: 2341
Bydliště: Česká Lípa

PříspěvekZaslal: ne březen 09 2025, 10:43    Předmět: Citovat

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.


blokove_schema.png
 Komentář:
 Velikost:  26.8 kB
 Zobrazeno:  6 krát

blokove_schema.png


Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Měření, regulace a automatizace Časy uváděny v GMT + 1 hodina
Jdi na stránku 1, 2  Další
Strana 1 z 2

 
Přejdi na:  
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

Powered by phpBB © 2001, 2005 phpBB Group
Forums ©
Nuke - Elektro Bastlirna

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.


PHP-Nuke Copyright © 2005 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Čas potřebný ke zpracování stránky 0.31 sekund