К тому порту, к которому подключен C2000-ПП, больше ничего не подключено? Или С2000-КДЛ подключены к этому же порту? Нарисуйте, пожалуйста, электрическую схему или эскиз, чтобы не ошибиться, что нам воспроизводить.
Если отключить от С2000М все, кроме С2000-ПП и Wirenboard, то проблемы с чтением регистров тоже есть?
Не стоит путать RS485 Ориона и RS485 модбаса. К выходу Modbus на С2000ПП подключен только Wirenboard, кроме С2000-ПП на этом порту вайрена никого нет. Провод длиной полтора метра, профибас. С2000-ПП, С2000М и С2000-КДЛ подключены последовательно по шине RS485 системы Орион, модбаса там и в помине нет, как и вайрена.
Я имел в виду порт модуля С2000М. Попробуйте отключить все остальные устройства, кроме преобразователя C2000-ПП от порта RS485 модуля С2000М для теста. Бывает так, что другие устройства мешают связи контроллера Wirenboard и целевого устройства. Читаются ли регистры модуля С2000М при таком подключении?
Ещё раз: у С2000-ПП есть контакты для подключения RS485 ориона, а с другой стороны контакты для Modbus. В эти самые контакты для модбаса ничего кроме вайрена не подключено.
Также, как я понял, у вас на преобразователе С2000-ПП установлены все три джампера XP1, 2 и 4. Думаю, что XP1 должен быть снят, чтобы преобразователь работал в режиме “Орион-Slave” (тогда преобразователь будет выступать шлюзом между сетями). Также можно попробовать снять джамперы XP1 и 2 (для теста).
Дальше надо пробовать изменять таймауты и интервалы в настройках драйвера wb-mqtt-serial. Вот было несколько тем:
Попробовал. Как и ожидалось, ничего не поменялось, и вряд ли могло. Как вообще шина RS485 Ориона может влиять на Modbus?) Мне в голову не приходит ни одной идеи. Могу ошибаться.
Он и снят, иначе бы ничего не работало. Напомню, софтиной болида через USB свисток по Modbus всё восхитительно читается с ПК. Следовательно, настройки и джамперы на стороне болида правильные.
Я уже перепробовал разные вариации pool_interval, device_timeout_ms, frame_timeout_ms, guard_interval. Возможно, недостаточно много вариантов перебрал, но тут уже жду Вашего совета, какие стоит поставить и поэкспериментировать. То, что точно пробовал, указано в шапке темы.
На фото я вижу, что все три джампера установлены. Я ошибаюсь?
Попробуйте в настройках порта в веб-интерфейсе добавить через кнопку 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.