Dobrý den,
nevíte proč při čtení registrů CP-1016 přes modbus dostávám nulové hodnoty ?
Možná mám jen zmatek v registrech a adresaci, nemáte k tomu prosím nějakou dokumentaci ?
Odpovědi 2
Dobrý den,
dotaz je položen příliš obecně, aby se na něj dalo rychle a jednoduše odpovědět. U CP-1016 jsou dvě možnosti, jak přistupovat k datům přes Modbus. Buď se využívá režim MDB, který zpřístupňuje celou paměť uživatelských registrů přes Modbus protokol nebo se použivá knihovna ModbusRTU, která zpřístupní pro komunikaci Modbusem pouze vymezenou část registrů a MDB režim blokuje.
Režim MDB je popsán v příručce Sériová komunikace PLC Tecomat v kapitole 2.6, str. 69 až 74. Je tam i tabulka, která ukazuje přiřazení adres registrů Foxtrotu pro Modbus. Protože v Modbusu jsou 16 bitové registry a Modbus adresuje od 1, kdežto Tecomaty mají adresy od 0, tak adresa v Modbusu je adresa vypočtená jako adresa registru ve Foxtrotu dělená dvěmi plus 1.
Pro případ, že používáte knihovnu ModbusRTU a její funkční bloky fbModbusRTUslave, resp. fbModbusTCPslave či jejich modifikace, pak pro vytvoření zóny Modbus holding registrů a input registrů nadefinujete pole nebo datovou strukturu, kam sdílená data umístíte. Modbusová adresa je pak určena jako offset od počátku tohoto pole nebo struktury, tzn. první položka má adresu 0, druhá položka adresu 1 atd. bez ohledu na to, kde v paměti Foxtrotu leží. Knihovna má rovněž svou dokumentaci a najdete ji např. pod tímto odkazem
Dobrý den,
děkuji za nasměrování.
Prosím o upřesnění, kde najdu v Mosaic adresy proměnných (vstupů, výstupů) pro čtení přes MDB ?
V nastavení V/V vidím třeba adresu AI0 ENG %XF48, jaká adresa je to pro modbus ?
Ještě bych se zeptal:
- v MDB je defaultně přístupné vše i pro zápis a nedá se to krom vypnutí na straně tecomatu nijak zabezpečit ?
- pokud potřebuju TCP master i slave, tak pro master blok musím pro každé zařízení se kterým komunikuji nastavit zvláštní ETH1_UNI kanál s IP protistrany, nebo stačí přidat v konfiguraci jeden a při různých IP se to řídí nastavení IP v ModbusCmdTCP ?
- při použití bloků fbModbusTCPmas i fbModbusTCPslave současně potřebuje každý svůj UNI kanál, nebo můžou jet přes jeden ?
Vaše odpověď
Pro vložení odpovědi je nezbytné být přihlášený. Pokračujte na přihlášení.
Čeština