“1:2:16” а точно длина 16 бит? Если значение bool, то надо “1:2:1” написать. Т.е. берем значение бита из адреса 1, бит №2 длинной 1 бит. У вас сейчас указана длина 16 бит.
Добрый день.
Совершенно верно.
Вот инструкция:
сделал как вы написали, но канал по прежнему красный
{
"id" : "MAN_mode",
"name": "Режим - Ручной",
"reg_type": "input",
"address": "1:2:1",
"format" : "u16",
"type": "switch",
"readonly" : true
}
пробовал писать 1:2:1, 0:2:1 и т.д., не получается…
А читается ли этот регистр с помощью modbus_client&
не совсем понимаю, так как на все запросы один и тот же ответ
root@wirenboard-ASOI7OWQ:~# modbus_client --debug -mrtu -b9600 -pnone -s1 /dev/ttyMOD1 -a2 -t3 -r1:2:1
Opening /dev/ttyMOD1 at 9600 bauds (N, 8, 1)
[02][03][00][01][00][01][D5][F9]
Waiting for a confirmation...
<02><03><02><00><10><FD><88>
SUCCESS: read 1 of elements:
Data: 0x0010
root@wirenboard-ASOI7OWQ:~# modbus_client --debug -mrtu -b9600 -pnone -s1 /dev/ttyMOD1 -a2 -t3 -r1:2:2
Opening /dev/ttyMOD1 at 9600 bauds (N, 8, 1)
[02][03][00][01][00][01][D5][F9]
Waiting for a confirmation...
<02><03><02><00><10><FD><88>
SUCCESS: read 1 of elements:
Data: 0x0010
root@wirenboard-ASOI7OWQ:~# modbus_client --debug -mrtu -b9600 -pnone -s1 /dev/ttyMOD1 -a2 -t3 -r1:3:1
Opening /dev/ttyMOD1 at 9600 bauds (N, 8, 1)
[02][03][00][01][00][01][D5][F9]
Waiting for a confirmation...
<02><03><02><00><10><FD><88>
SUCCESS: read 1 of elements:
Data: 0x0010
root@wirenboard-ASOI7OWQ:~#
я думаю это просто чтение 1 регистра, так как там тоже самое значение. а как вот именно с этими битами разобраться - непонятно
Я бы для начала попробовал читать все регистры сторонней утилитой. RilhevaModbusPoll например очень удобная. Т.к. в описании на данное устройство в основном используются битовые маски, то получаемые значения переводить в двоичное представление. Тем же калькулятором Windows в режиме “Программист”. На основе полученной двоичной информации уже сопоставлять полученные нули и единицы с реальным состоянием устройства. И только уже убедившись, что все верно считал, то уже мучать шаблоны.
А почему в шаблоне пытаетесь читать командой 0x4?
Но для целей проверки практически бесполезная - не видно что отправляется и что получается…
знаний очень мало по этой теме
гпт тоже не помогает
а как надо?
установил, но пока не пойму как через контроллер wb подключиться к устройству. напрямую к устройству нет возможности подключиться
Ну тут да, надо напрямую к устройству подключаться для удобства. Через преобразователь USB-RS485
Точно так же как читаете с помощью modbus_client. Получается что в шаблоне укажываете input а читать нужно как holding. Нет тут магии.
я пробовал разные варианты, но всегда получаю значения обычных регистров. может вместо 1 в 1:2:2 нужно что-то другое написать?
было бы здорово в modbus статью добавить информацию о том как с битами работать
Тут не очень понятно. Лучше описать - что делаете, какой результат получаете, чем он отличается от ожидаемоего.
Биты регистров - они не имеют отношения к протоколу, в общем.