J.K. Programování Mosaic 12. 6. 2024 11:51 17. 8. 2022 20:21

Dobrý den, 

mám v aplikaci použitý blok fbModbusTCPSlave. Blok komunikuje s regulací Loxone, kdy jsme schopni do holding registrů získat požadované údaje, ale přes jiné čísla holding registrů nebo coils nejsme schopni informaci ven předávat. Loxone nedokáže přečíst příslušné adresy hoding registru.

Je monžné, že mám někde chybně nakonfigurovanou komunikaci jen pro čtení?

Děkuji,

JIří Koudela

J A K tech s.r.o. 

Odpovědi 3

M.B. 17. 8. 2022 14:20

Dobrý den,

nevím zda přesně rozumím dotazu. Funkční blok fbModbusTCPSlave zajišťuje komunikaci v roli podřízené stanice (serveru). Nadřízené stanici (klientovy) nabízí inputs, input registry, coils a holding registry. Coils a holding registry je možné číst a zapisovat, inputs a input registry je možné pouze číst (zápisové funkce nejsou modbusem definovány).

Pokud se některé čtení nebo zápis nedaří, mělo by na výstupech bloku fbModbusTCPSlave vidět k jaké chybě dochází. Pokud nelze některá z hodnot coils nebo holding registru přepsat ačkoli blok fbModbusTCPSlave nehlásí problém s komunikací, je možné, že do toho samého místa zapisuje uživatelský program a hodnotu přijatou z Modbusu přepíše.

 

J.K. 17. 8. 2022 14:59

Dobrý den,

přes tento funkční blok nabízím nadřazené regulaci v Hoding registrech údaje o teplotách. Dále do jiných mi nadřazená regulace hodnoty zapisuje. V mosaicu vidím správné hodnoty nabízené přes tento blok ven a dostanu zapsány správně hodnoty z nadřazené regulace.

nadřazená regulace ale nepřečtě nabízené hodnoty. V uvedených registrech má stále hodnoty 0. Blok žádnou chybu nehlásí.

V nadřazené regulaci je stejným systémem komunikace přes RS485 (tedy jiné rozhraní) s rekuperací a tam oboustraná komunikace funguje. Dle vyjádření technika Loxone mají oni vše nastaveno správně.

Jakým způsobem mohu zvenku ověřit funkci moji Modbus komunikace (nějakým softwarem na počitači), abych měl jistotu, že na TCP protokolu to v síti mohu vidět.

Děkuji za radu.

 

M.B. 17. 8. 2022 20:21

Pokud jsou výstupy errCnt a excCnt bloku fbModbusTCPslave nulové, tedy všechny přijaté zprávy jsou úspěšně zpracované a přesto se nadřízenému systému nedaří číst hodnoty jen zapisovat, existuje ještě možnost, že čtecí komunikace chce realizovat jiným TCP spojením. V takovém případě by bylo potřeba mít dvě UNI spojení a dva bloky fbModbusTCPslave.

K odladění komunikace lze použít logování komunikace. Ve Foxtrotu řady CP-2xxx je možné logování spustit u UNI spojení vytvořených I/O configurátorem nastavením proměnné LOG_ON ve struktuře r0_p0_Control_ETHX_UNIX. Pro spojení otevřené pomocí funkce OpenUniSocket je možné log aktivovat zavoláním funkce SetUniLog. V obou případech jsou výsledné záznamy uložené v adresáři WWW/LOGS v souborovém systému PLC. U Foxtrotů řady CP-1xxx je možné využít knihovnu DebugComLib, která umožňuje záznam na paměťovou kartu.

K otestování komunikace ze strany PC je možné použít některý z free programů, například http://easymodbustcp.net/en/.

Tento dotaz je vyřešený.