выполните пожалуйста modbus_client без параметров и внимательно прочитайте справку. Вы даёте команде случайные числа в качестве аргументов случайных параметров и ожидаете, что оно будет работать.
ну вот enabled, значит не только вы из консоли с портом общаетесь, но ещё и wb-mqtt-serial. А так нельзя. Опустите его перед работой
В мурзилке адреса регистров неверные оказались. Начальный адрес, действительно, 40001, но только это 40001hex, а все последующие адреса идут как десятичные (40010, 40011…40125), а на самом деле - 4000a, 4000b…4007d. Ну да ладно.
Вопрос. Какой параметр в веб-интерфейсе и/или в JSON-темплейте соответствует параметру -0 команды modbus_client? А то приходится еще и на единицу сдвигать адреса.
Я не знаю, как это объяснить по умному. У меня адрес первого регистра - 40001, но если я к нему обращаюсь по адресу 40001, в ответ получаю данные из регистра 40002. В хелпе команды modbux_client есть параметр “-0” (“NOTE: if first reference address starts at 0, set -0”), с которым я обращаюсь к регистру 40001 и получаю данные из 40001. В веб-интерфейсе, чтобы обратиться к регистру, например, 40020, мне нужно вписывать в конфиг 4001F - сбивает с толку.
-0 - это видимо опция для девайсов вроде того, с которым вы работаете, создатели которых странно поняли стандарт. Она из адреса, который вы ей даёте, просто вычитает единичку.
Поэтому если в вашем устройстве регистры сдвинуты на один, то вычитайте единичку сами, когда пишете конфиг и всё будет работать.
Цитата: Data Addresses in Modbus Messages
All data addresses in Modbus messages are referenced to zero. The first
occurrence of a data item is addressed as item number zero. For example:
The coil known as ‘coil 1’ in a programmable controller is addressed as coil
0000 in the data address field of a Modbus message.
Coil 127 decimal is addressed as coil 007E hex (126 decimal).
Holding register 40001 is addressed as register 0000 in the data address field
of the message. The function code field already specifies a ‘holding register’
operation. Therefore the ‘4XXXX’ reference is implicit.
Holding register 40108 is addressed as register 006B hex (107 decimal).