Wiren board и BOLID С2000-ПП

Доброго времени суток. Помогите пожалуйста, в программировании чайник, хотелось бы научиться, но что то не могу понять ничего, может посоветуете что почитать или посмотреть про MODBUS RTU, MQTT и т.д.

Теперь по теме: задача такая, есть система ОПС, ОС, СКУД на Болиде, есть С2000-ПП, необходимо от WB подавать команду по MOSDBUS RTU в С2000-ПП на постановку шлейфов на охрану и блокировку дверей например: (при нажатии кнопки “Ушёл из дома” выключать весь свет и розетки и отправить команду в С2000-ПП поставть на охрану 1,2,5,10 шлейфы, заблокировать доступ в дверь 1,2,3) и соответственно наоборот (при снятии с охраны шлейфов 1,2,5,10 картой и открытии двери 1 от С2000-ПП в WB приходит команда на запуск сценария “Включить свет в коридоре, включить музыку, приготовить кофе”)

Подскажите пожалуйста, что нужно для воплощения в жизнь такой и подобных идей, если не затруднит распишите пожалуйста по пунктам, на живых примерах (практике) мне проще учиться нежели читать кучу литературы и т.п. Интересует только программная часть, с железом проблем нет, по образованию электромонтёр, про профессии инженер слаботочных систем, так что с этим всё ок!))) Буду благодарен за любую помощь.

Неужели никто не может ничего подсказать и ничем помочь?(
Понял, что для С2000-ПП нужно написать шаблон, подскажите пожалуйста хотя бы как его написать. Честно говоря есть очень интересная задумка с интеграцией всех систем управления, безопасности и жизнеобеспечения в одно целое, как это осуществить на уровне железа понимания более чем достаточно, всё упёрлось в программирование (написание шаблонов, правил и т.д.). Может у кого нибудь есть возможность показать на примере как это сделать или что то подобное. Буду благодарен за любую помощь.

Приветствую всех…у кого нибудь получилось подружить С2000-ПП и WB?

Добрый день!

Собственно, вот так: https://wirenboard.com/wiki/index.php?title=Драйвер_wb-mqtt-serial:Примеры_написания_шаблонов
Краткий план по подключению новых Modbus-устройств к Wiren Board такой:

  1. У устройства находите документацию, где написаны параметры подключения RS-485 (скорость, чётность, стоп-биты) и описание его регистров Modbus и и содержимого.
  2. Подключаете, пытаетесь хоть что-то из него прочитать через modbus_client.
  3. Потом вручную читаете все нужные регистры, проверяете и работу.
  4. Потом пишете шаблон.

Приветствую!) Спасибо, становиться более менее понятно. Если не затруднит, подскажите пожалуйста какие именно данные из таблицы нужно использовать, тут их очень много, а т.к. я новичок, ещё не разобрался до конца, без Вашей помощи не обойтись. Для примера возьмём функцию которая обведена красным. Если есть возможность написать шаблон с этой функцией (для наглядного примера) буду очень благодарен.

Я бы советовал пока не писать шаблон, а читать и писать регистры через modbus_client.

Судя по номерам регистров, в документации используется https://wirenboard.com/wiki/index.php/Протокол_Modbus#.D0.9D.D0.B5.D1.81.D1.82.D0.B0.D0.BD.D0.B4.D0.B0.D1.80.D1.82.D0.BD.D0.B0.D1.8F_.D0.B0.D0.B4.D1.80.D0.B5.D1.81.D0.B0.D1.86.D0.B8.D1.8F

То есть если документация говорит, что вам нужно работать с регистром 44096 для “установки состояния раздела 1”, то на самом деле вам вычитать из номера регистра 40001, и работать с Регистром хранения (Holding Register) под номером 4095.

Попытайтесь его прочитать через modbus_client.

Как запустить разобрался, как я понимаю, нужно остановить mqtt и записать команду в моём случае: modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a35(адрес С2000-ПП) -t0x03 -r4095 (или это число нужно перевести во что-то?)?

Да, всё так. Бита чётности точно нет, а стоп-битов два?

С командами на чтение (например, -t3) можно свободно экспериментировать, ими вы ничего не сломаете.

“Бита чётности точно нет, а стоп-битов два?” Не уверен, что 2, как узнать?

Прочитать документацию на устройство, которое подключаете, там это должно быть написано.
У некоторых устройств это далеко запрятано, тогда проще загуглить. Пишут это обычно рядом со скоростью (которая обычно 9600).

Отправляй 24 или 109 констант ой в регистр где шлейф поибора

Добрый день.
Возникла необходимость управлять Болидом через С-2000-ПП. В Болиде создал тестовую зону, прописал управление ей в С2000-ПП. Сейчас она в регистре 40000. Когда меняю ей значения на 24 через веб интерфейс WB, то шлейф на охрану ставится. На С2000М сообщение отображается, но в регистре 40000 возвращается значение 6144. Затем оправляю 109 в этот же регистр. Шлейф с охраны снимается, в регистр возвращается значение 27904. Получается, что в регистре оказываются значения 24 и 109 умноженные на 256.
Если меняю значения топиков через стороннюю программу, MQTT Explorer или Иридиум, то значения топиков в веб интерфейсе WB меняются, оборудование Болида не снимается и не ставится на охрану.


Разобрался. Отправлял 24 и 109 в топик /devices/S2000-PP/controls/Zone1 то есть в тот, в котором были значения умноженные на 256.
Попробовал отправить в /devices/S2000-PP/controls/Zone1/on и все заработало. Но в основной топик все равно приходят значения умноженные на 256. В принципе это не проблема. В поле Scale записал формулу для пересчета.

1 лайк

Если есть желание, предлагаю разобраться, почему приходит умноженное значение.
Для этого предлагаю сделать следующее: попробовать отправить, а затем прочитать значение не через веб-интерфейс, а через Утилита «modbus_client» — Wiren Board
И потом покажите вывод, пожалуйста.

Интересно, а почему у меня другое число в регистре лежит? Вот два варианта чтения регистра (второй как у вас на скрине):


В итоге читается вот так:

image

6344 на 256 не делится :thinking:

Здравствуйте.
Есть программа для опроса прибора С2000-ПП, называется HUB-C2000PP. Я автор этой программы. Программа бесплатная, с открытым исходным кодом, работает в linux и предоставляет MQTT и OPC UA. Если бы разработчики WB сделали сборку этой программы для контроллера WB, то это здорово облегчило бы интеграцию. Я бы сам сделал, но для этого нужно купить контроллер WB, а у меня пока нет задач для него, будет пылиться на полке.

Есть инструкция по сборке в linux. Получившийся исполняемый файл нужно только запустить, не нужно его как-то настраивать или связывать с базой данных. Главное, чтобы были нужные зависимости (про них написано в инструкции, в основном библиотеки Qt).

Программа настраивается по сети при помощи программы-конфигуратора с графическим интерфейсом, который есть под windows.

Еще из возможностей, которые могут понравиться - отправка кадра от IP видеокамеры в Telegram, отправка в Telegram графика АЦП (например температуры/влажности) за 1…7 дней.

2 лайка

Добавлю, что программа учитывает очень много особенностей прибора С2000-ПП, которые не так просто реализовать простым опросом modbus штатными средствами WB. Например если в базе данных С2000-ПП много входов, а их там может быть до 512, то последовательный опрос занял бы очень много времени и сработка пришла бы с большой задержкой. Программа при запуске один раз опрашивает все входы, а потом ждет от них событий и после поступления события опрашивает конкретный вход, который указан в событии. Это сильно ускоряет время реакции. С АЦП и счетчиками импульсов тоже не все так просто.

@Kuzminov_Sergey Здравствуйте. Спасибо за предложение.

Сборка стороннего ПО под наш контролер с целью использовать как драйвер мы не считаем правильным — это потом придётся много лет поддерживать и таскать между ревизиями софта.

Особенности мы обязательно подсмотрим и добавим в будущем в наш драйвер — это надёжный, понятный и поддерживаемый путь.

1 лайк

Ну если по особенностям будет что-то непонятно, помогу чем могу.

1 лайк

Я собрал очень компактные Docker контейнеры с программой HUB-C2000PP, по идее это должно облегчить интеграцию, т.к. не нужно устанавливать зависимости, которые в Debian тянут всю графическую подсистему linux.

1 лайк