На фото я вижу, что все три джампера установлены. Я ошибаюсь?
Попробуйте в настройках порта в веб-интерфейсе добавить через кнопку Properties параметр guard_interval_us и установить его значение в 3000, а если не поможет, то увеличить до 50000.
Если регистр читается нормально, результат совпадает с результатом чтения утилитой modbus_client, то тут, наверное, надо изучать документацию на приборы.
Почему вы считаете, что что-то не так?
Как я понял из документации надо действовать следующим образом. Берем число 6344, переводим его в двоичный формат: 00011000 11001000 (старший и младший байты соответственно). В десятичной системе счисления байты будут иметь значения: 24 и 200
Затем по таблице 1.1.5.12.1 (стр. 25 документации на С2000-ПП) определяем состояния:
вход взят на охрану (24)
напряжение системной батареи пришло в норму (200).
address — адрес регистра. Можно читать отдельные биты регистра, для этого запишите адрес в формате: "address":"reg:shift:width", где reg — адрес регистра, shift — смещение от начала, а width — количество считываемых битов. Например, "address":"109:1:2" — прочитать второй и третий биты регистра, расположенного по адресу 109.
Решил тоже поиграться с с2000-ПП.
Мой опыт.
Мне не удалось прочитать 4096, 4112 и 4128. Возможно нужны еще какие-то настройки в самом с2000-ПП. Шаблон конфига использовал выше.
Состояние/Управление регистры 40000+ читаются, изменяются успешно.
“address”: “40000:8:8” и “address”: “40000:0:8”.
Дальше захотелось поиграться с функцией для работы с буфером событий.
root@wirenboard-A4O3NNVO:~# modbus_client --debug -mrtu -pnone -s1 /dev/ttyRS485-1 -a3 -t0x03 -r46264
Opening /dev/ttyRS485-1 at 9600 bauds (N, 8, 1)
[03][03][B4][B8][00][01][22][3D]
Waiting for a confirmation…
<03><03><02><04><05><03><47>
SUCCESS: read 1 of elements:
Data: 0x0405
root@wirenboard-A4O3NNVO:~#
Штатная болидовская выдает программа выдает:
Адрес ПП: 3
Событие #1029: (Код: 24) Взятие входа на охрану
Данные: [Раздел: 1] [Зона: 1] [Дата/Время: 22.09.21 - 20:48:29] [ID Раздела: 1]
Полный ответ: [3.3.28.4.5.21.24.3.2.0.1.2.2.0.1.24.2.0.1.11.6.20.48.29.22.9.21.0.0.0.0.227.6]
Мне нужно прочитать 7 байт.
Как правильно написать в шаблоне “address”: “46264:Х:Х” ?
address — адрес регистра. Можно читать отдельные биты регистра, для этого запишите адрес в формате: "address":"reg:shift:width", где reg — адрес регистра, shift — смещение от начала, а width — количество считываемых битов. Например, "address":"109:1:2" — прочитать второй и третий биты регистра, расположенного по адресу 109.
Это, видимо, особенность Болида. Думаю, что в этом случае сам код события средствами шаблонов не получить. Попробуйте считать два 16-битных регистра как один 32-битный регистр. Для этого в шаблоне его канал пропишите так:
А потом средствами правил (wb-rules) уже выделять младший байт из полученного 32-разрядного числа, например, с помощью побитовых операций, как показано здесь:
Сейчас wb-mqtt-serial не может корректно читать события (регистр 46264). Там надо читать сразу 14 регистров, а у нас такой опции нет. Если читать по одному регистру, начиная с 46264 (или по два, или еще как) - результат некорректный. В пожелания внесли, но когда реализуем, сказать не можем.