Forum

Forum

Notifications
Clear all

LOXONE - MODBUS

426 Posts
46 Users
39 Likes
57.7 K Views
(@pjotrsn)
Active Member
Joined: 3 years ago
Posts: 11
 

Kdyby někdo chtěl mám dva Modbus extensiony. Kdyžtak PM.


   
ReplyQuote
koubek
(@koubek)
Active Member
Joined: 6 years ago
Posts: 13
 

@pjotrsn

za kolik ?


   
ReplyQuote
(@killeriq)
Prominent Member
Joined: 7 years ago
Posts: 816
 
Posted by: @pjotrsn

Kdyby někdo chtěl mám dva Modbus extensiony. Kdyžtak PM.

mas PM


   
ReplyQuote
(@budulinek)
Reputable Member
Joined: 7 years ago
Posts: 355
 

Loxone Modbus Extension je zbytečnost.

 

Tady máte Modbus RTU -> Modbus TCP/UDP gateway postavenou na Arduinu. Přidal jsem webové rozhraní na nastavení parametrů Modbus protokolu. Funkčně srovnatelná s komerčními řešeními. Ve webovém rozhraní máte i jednoduchý skener Modbus RTU otroků.

modbus1

https://github.com/budulinek/arduino-modbus-rtu-tcp-gateway

Modbus gateway je lepší řešení než Loxone Modbus Extension, protože s gateway si můžete vybrat, jestli na komunikaci s Loxone použijete Modbus TCP (tj. "Modbusserver" v Loxone Config) nebo Modbus UDP (pomocí standardních Virtuálních UDP vstupů a výstupů - ideální pokud máte problém s parsováním a potřebujete monitorovat co vám vlastně váš otrok přes Modbus posílá...).

Návod na integraci s Loxone:

https://www.vodnici.net/wiki/modbus-rtu-modbus-tcp-udp-gateway-postavena-na-arduinu/


   
msk and L reacted
ReplyQuote
(@killeriq)
Prominent Member
Joined: 7 years ago
Posts: 816
 

Dik, som mu pisal , raz odpisal a uz nic...takze som nevyriesil :/

 

Pojde to skombinovat aj s 1wire/arduino? ze to bude mat na 1 doske alebo musim dalsiu?


   
ReplyQuote
(@budulinek)
Reputable Member
Joined: 7 years ago
Posts: 355
 

@killeriq

Modbus gateway s web interface zabere celou flash paměť Arduina Nano/Uno. Přičemž zhruba polovinu zabírá webserver (pokud se nepletu). Můžeš zkusit vyhodit web interface, tj. zakomentovat v loop() tyto funkce:

recvWeb(); maintainCounters(); maintainUptime();

Pokud chceš web interface zachovat, musíš použít samostatné Uno/Nano, nebo na kombinaci 1-wire + Modbus použít Mega, které má víc flash paměti.


   
ReplyQuote
(@budulinek)
Reputable Member
Joined: 7 years ago
Posts: 355
 

Z programu na Modbus Gateway jsem povyhazoval nějaké knihovny, aby byl použitelný na různých typech Arduin a různých typech ethernet čipů:

Arduino desky: Nano, Uno, Mega (a možná další)

Ethernet shieldy postavené na: W5100 (= ty nejběžnější ethernet shieldy pro Uno), W5200, W5500. Ethenet čip ENC28J60 není a nebude podporovaný.

Pokud byste chtěli program použít na jiných strojích (ESP32 atd), můžete to zkusit, ale vězte, že tam jsou dvě místa, která jsou Arduino (AVR) specific (viz readme na github).

Vrátil jsem se zpátky k defaultní knihovně Ethernet.h, která je větší (tj. na Nano se mi už nevejde ta diagnostika na jednotlivé sockety) a hlavně z nějakého mě nepochopitelného důvodu určuje Ethernet.h počet použitých socketů podle RAM dostupné na MCU (nikoliv podle typu eth. čipu). Tj. pokud máte Nano s W5500, tak knihovna použije jen 4 místo 8 dostupných socketů. Vzhledem k tomu, že samotné připojení na web UI si vezme většinou 2 sockety, tak je to poznat.... Více na github.

https://github.com/budulinek/arduino-modbus-rtu-tcp-gateway

 


   
jimyjims and killeriq reacted
ReplyQuote
jimyjims
(@jimyjims)
Trusted Member
Joined: 4 years ago
Posts: 97
 

Jelikož jsem dřevák a s modbusem se snažím skamarádit (což on evidentně se mnou nechce), tak bych Vás rád poprosil o kontrolu, zda správně generuju UDP požadavek, zda jsem to vůbec pochopil správně. Snažím se rozchodit Arduino modbus dle @budulinek s Enika elektroměrem:

Když se budeme bavit konkrétně o tomto případě

Výstřižek modbus elektroměr

vytvořil jsem na to požadavek:

\xOO\xOO\xOO\xOO\xOO\xO6\xOO\xO3\xOO\xOO\xOO\xO2 (místo nul, jsem musel dát O, nešlo to nahrát)

Je to prosím správně, nebo jsem úplně vedle?

Já totiž vůbec v Loxone při spuštění UDP monitoru nic neregistruju. Při použití https://packetsender.com/ doporučené od budulinka, mi při odeslání na IP adresu arduino reaguje pouze když nevyplním ACII a HEX (nevím co přesně ych tam měl vyplnit).

Výstřižek elektroměr

Pokud by měl prosím někdo chuť mě trochu poposunout, budu vděčen. 

 

Děkuji!


   
ReplyQuote
(@budulinek)
Reputable Member
Joined: 7 years ago
Posts: 355
 

@jimyjims

1. krok: scan ve web interface arduina. Jakou adresu ti to ukáže? Pokud ti to neukáže žádného Modbus RTU otroka, tak musíš zkontrolovat dráty nebo upravit RS485 settings.

2. krok: packetsender. Sedmý bajt máš špatně. Máš tam 00, správně by tam měla být adresa, kterou zjistíš podle výsledku scanu v Arduinu. Pokud ti scan vyhodí adresu 0x01, tak do packet senderu dej do pole ASCII toto:

\OO\OO\OO\OO\OO\O6\O1\O3\OO\OO\OO\O2

(nuly místo O)


   
ReplyQuote
jimyjims
(@jimyjims)
Trusted Member
Joined: 4 years ago
Posts: 97
 

@budulinek

1. krok: špatě nastavená Parita

2. krok Packetsender už něco odpovídá, ale v Loxonu jsem pořád mrtvej s UDP monitorem, přepnuto na HEX mám a když jsem řešil vrátného, tak jsem normálně příchozí volání v monitoru viděl

Díky moc!


   
ReplyQuote
(@budulinek)
Reputable Member
Joined: 7 years ago
Posts: 355
 

@jimyjims

1. krok: no jo, Modbus default je even (takto to mají ve standardu), většina zařízení ale pracuje na "none".

2. krok: jakou v packetsenderu vidíš odpověď? Modbus chybu nebo data? Pokud vidíš reálná data, jdi na krok 3

3. krok: V Loxone UDP výstup

\xOO\xOO\xOO\xOO\xOO\xO6\xO1\xO3\xOO\xOO\xOO\xO2

(nuly místo O)

a napojit na generátor  impulsů

4. krok Loxone UDP vstup,

viz návod na

https://www.vodnici.net/wiki/modbus-rtu-modbus-tcp-udp-gateway-postavena-na-arduinu/

vem si k roce manuál Eniky a sleduj UDP monitor, aby jsi správně nastavil parsování


   
ReplyQuote
jimyjims
(@jimyjims)
Trusted Member
Joined: 4 years ago
Posts: 97
 

@budulinek

2. krok: já bych řekl, že právě odesílá data, pro kontrolu přidávám screen

Elektroměr odpověď

3. krok: to jsem udělal už před tím (každých 5 sekund)

4. krok: zatím nemám co chytat. Přidávám screen jak to mám nastavené, zkoušel jsem i vypnout digitální výstup (jako je to u DMX), ale zatím bez výsledně a UDP monitor mi nic nedává

Loxone eektroměr

   
ReplyQuote
(@budulinek)
Reputable Member
Joined: 7 years ago
Posts: 355
 

@jimyjims

2. krok: OK, to jsou reálná data. Posílal jsi to přes TCP, pro jistotu zkus ještě ověřit komunikaci přes UDP.

3. krok: vypadá to OK, nevím, co se Loxonu nelíbí.... Máš správně IP adresu a port? Pokud se podíváš zpátky do Arduina web interface, vidíš IP adresu Loxonu mezi Modbus TCP/UDP masters? Pokud tam adresu Loxone nevidíš, tak zkontroluj dráty mezi Loxone a Arduinem, resp. nastavení IP a portu. Za další, ve web UI Arduina jsou čítače příchozích a odchozích bytů. Pokud je správně nastavená komunikace mezi Arduinem a Lox (a pokud je spuštěný generátor impulsů), měly by ti naskakovat Rx byty (tj. příchozí) na eth. interface.


   
ReplyQuote
jimyjims
(@jimyjims)
Trusted Member
Joined: 4 years ago
Posts: 97
 

@budulinek

2.krok: funguje!

3. krok: nabíhají mi data jen u RS485, u ethernet to stojí. V Modbus TCP/UDP masters mám ip adresu Loxonu, ale je u ní TCP, nemůže být v tomto problém?

Nastavení u virtuálního výstupu: /dev/udp/192.168.x.xxx/502 (místo x normálně čísla - ping funguje), zaškrtnuto po odeslání ukončit spojení (zkoušel jsem i bez)

Nastavení příkazu si viděl předchozí post. Tak já nevím proč si nepovídáme


   
ReplyQuote
(@budulinek)
Reputable Member
Joined: 7 years ago
Posts: 355
 

@jimyjims

divný. Hlavně je divný, že Packet Sender jede v pohodě a Loxone ne.

Trochu je divný, že v Arduinu ti nabíhají čítače RS485  a ethernet stojí (pokud teda ještě nedobíhá skener...).

Napadá mě:

  • v Arduinu si pro jistotu přehodit Modbus UDP na separátní port, aby byl jiný než Modbus TCP. Na Modbus UDP port pak napojit Loxone UDP výstup.
  • v Loxone si zapni LiveView s manuální změnou hodnot a pak ten UDP výstup vypínat a zapínat myší.

V Arduinu vidíš IP Loxonu jako TCP? Koukám, že v Lox configu jsi zkoušel nakonfigurovat i Modbus TCP (tj. modbusserver "Modbus Arduino" a "Elektroměr Enika"). Možná ta komunikace přes Modbus TCP už jede.


   
ReplyQuote
Page 11 / 29
Share: