Команда запись 0х10


#1

как правильно реализовать команду? (WB-6)


#2

Добрый день!

Напишите, пожалуйста, подробнее, что вы имеете в виду.


#3

прибор воспринимает команды 0х10 для задания режима работы, регистры “holding” с типом “range”, приводят к генерации команды 0х03


#4

И эти регистры только “w”, “r” приводит к ошибке обмена


#5

Alex1960, добрый день! Вы можете дать ссылку на файл с описанием регистров вашего устройства? На сайте производителя достаточно скудная документация.
Я порекомендовал бы вам для отладки использовать утилиту командной строки modbus-client, подробнее о ней в документации: https://wirenboard.com/wiki/index.php/Modbus-client


#6

modbus-client пользуюсь, все проходит нормально


#7

Отлично! Тогда жду от вас описание регистров.


#8

могу переслать файл с описанием регистров, фирма SEAK Energetic(Словакия)


#9

Да, будьте добры, на info@contactless.ru


#10

Спасибо, принял файл. Скажите, а на команды Write Singe Register 0x06 при записи в один регистр из нескольких с помощью modbus-client вы получаете ошибку?


#11

устройство не понимает команд, кроме 0х03 и 0х10


#12

Алексей, смотрите, для записи командой 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",

#13

пробовал, пока не получилось (((


#14

“reg_type” : “input” - это к чему???


#15

Получается следующая последовательность по регистру mulli: команда 0х03 - ошибка по тайм-ауту, выбирается следующий регистр из списка List of channel, команду 0х10 в логе не увидел!


#16

А вы что-то записывали?
“reg_type” : “input” - это фрагмент описания, ван не нужен такой тип регистров. Полностью прочесть можно по приведенной ссылке.
Смотрите, у вас довольно-таки нестандартное устройство. Если команда на чтение не поддерживается, то ошибки будут возникать, ничего плохого в этом нет. Можно увеличить интервал опроса регистров, чтобы они появлялись реже.


#17

с “input” понятно, увеличиваю интервал опроса, но кроме команд чтения больше ничего нет (((


#18

статус регистра в который пытаюсь записать имеет в Settings атрибут (ro), с чего бы ? галка, ессно, не выставлена!


#19

кусок шаблона:
“channels”: [
{
“name”: “Broadcast”,
“reg_type”: “holding_multi”,
“address”: 0,
“format”: “s16”,
“type”: “range”
// “value”: 0
// “max”: 100
},


#20

Простите, где имеет атрибут “только чтение”?