P.B. Různé 30. 12. 2025 8:40 30. 12. 2025 14:06

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 1

Luboš Urban 30. 12. 2025 14:06

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

Vaše odpověď

Pro vložení odpovědi je nezbytné být přihlášený. Pokračujte na přihlášení.