как правильно реализовать команду? (WB-6)
Добрый день!
Напишите, пожалуйста, подробнее, что вы имеете в виду.
прибор воспринимает команды 0х10 для задания режима работы, регистры “holding” с типом “range”, приводят к генерации команды 0х03
И эти регистры только “w”, “r” приводит к ошибке обмена
Alex1960, добрый день! Вы можете дать ссылку на файл с описанием регистров вашего устройства? На сайте производителя достаточно скудная документация.
Я порекомендовал бы вам для отладки использовать утилиту командной строки modbus-client, подробнее о ней в документации: https://wirenboard.com/wiki/index.php/Modbus-client
modbus-client пользуюсь, все проходит нормально
Отлично! Тогда жду от вас описание регистров.
могу переслать файл с описанием регистров, фирма SEAK Energetic(Словакия)
Да, будьте добры, на info@contactless.ru
Спасибо, принял файл. Скажите, а на команды Write Singe Register 0x06 при записи в один регистр из нескольких с помощью modbus-client вы получаете ошибку?
устройство не понимает команд, кроме 0х03 и 0х10
Алексей, смотрите, для записи командой 0x10 есть тип регистра holding_multi. Ей можно записывать и один регистр.
См. https://github.com/contactless/wb-mqtt-serial
// тип регистра
// возможные значения для Modbus:
// "coil" - 1 бит, чтение/запись
// "discrete" - 1 бит, только чтение
// "holding" - 16 бит, чтение/запись, код функции на запись выбирается автоматически, в зависимости от размера
// "input" - 16 бит, только чтение
// "holding_single" - то же что и holding однако регистры записываются всегда по одному, кодом 06
// "holding_multi" - то же что и holding однако регистры записываются всегда кодом 16
"reg_type" : "input",
пробовал, пока не получилось (((
“reg_type” : “input” - это к чему???
Получается следующая последовательность по регистру mulli: команда 0х03 - ошибка по тайм-ауту, выбирается следующий регистр из списка List of channel, команду 0х10 в логе не увидел!
А вы что-то записывали?
“reg_type” : “input” - это фрагмент описания, ван не нужен такой тип регистров. Полностью прочесть можно по приведенной ссылке.
Смотрите, у вас довольно-таки нестандартное устройство. Если команда на чтение не поддерживается, то ошибки будут возникать, ничего плохого в этом нет. Можно увеличить интервал опроса регистров, чтобы они появлялись реже.
с “input” понятно, увеличиваю интервал опроса, но кроме команд чтения больше ничего нет (((
статус регистра в который пытаюсь записать имеет в Settings атрибут (ro), с чего бы ? галка, ессно, не выставлена!
кусок шаблона:
“channels”: [
{
“name”: “Broadcast”,
“reg_type”: “holding_multi”,
“address”: 0,
“format”: “s16”,
“type”: “range”
// “value”: 0
// “max”: 100
},
…
Простите, где имеет атрибут “только чтение”?