Скорость rs-485 для различных устройств WB

https://contactless.ru/wiki/index.php/RS-485:Настройка_через_веб-интерфейс

В конце страницы

Спасибо. Так получилось. Собственно, этот вопрос я и задавал полгода назад. Жаль, мне не ответили на него тогда…
Скорость реакции заметно возросла, но все равно не устраивает. Видимо, придется все-таки везти перепрошивать реле на 115200…

А ещё такой вопрос: Наверное, опрос будет быстрее, если 2 реле WB-MR14 повесить на разные порты RS-485? Судя по документации, второй порт мультиплексирован c CAN-шиной. Нужны какие-то действия по переводу его в режим RS-485 (кроме включения в wb-mqtt-serial.conf, разумеется), или все будет распознано автоматически?

Добрый день!
Второй порт по умолчанию как раз RS-485, ничего дополнительного, кроме настройеи параметров, делать не придется.

Я хочу увеличить скорость работы связки DI-DR-16 - rules- MR6CLV. Понимаю, что дело может быть и в скриптах, в скорости их обработки, потому хочу попробовать сделать все, что можно настройками и принять результат как есть.
У меня на модулях входы, а на одном из 485 3 реле. Меня интересует одно из них.
Пробовал поднять скорость до 115200 на порт и все реле настроить на эту скорость - не помогло. Уменьшил поллинг порта - не помогло.
Что остается? В шаблоне отдельно на интересующие меня реле выставить поллинг на 1?

Как я понял, скорость работы входов-модулей не регулируется? Читал, что модули на отдельных прерываниях и, вроде как работают максимально быстро.

Консоль москито показывает изменения быстро, а само реле клацает с небольшой задержкой. Но, если работать с прямыми входами на реле, то отрабатывает идеально, хотелось бы приблизиться к такой скорости. Лагающие выключатели - штука раздражающая…

Добрый день!

Время WBIO-DI-DR-16 -> wb-rules должно быть примерно равным нулю. То, что сообщения MQTT появляются мгновенно, это подтверждает.
Вся задержка остаётся на части wb-rules -> WB-MR6. Убедитесь в этом: нажимайте кнопку в веб-интерфейсе и следите, сколько времени проходит до звука переключения реле.
Как понять теоретический максимум этой скорости: остановите wb-mqtt-serial и отправляйте команду на переключение реле через modbus_client. Если это время будет для вас достаточно маленьким (а должно быть именно так), нужно будет разбираться, какие именно настройки wb-mqtt-serial его ухудшают.

Здравствуйте!
А их там много? Я думал поллинг и скорость и все. Я и хотел просто покрутить и понять - есть результат или нет, глубоко лезть не стану, страшно вообще все заломать)
Ну и, если честно, я не знаю, как отправить команду на модбас клиент) Может на самом wb есть такой клиент и консольной командой это можно сделать?

https://www.google.com/search?client=ubuntu&channel=fs&q=modbus_client+wiren+board&ie=utf-8&oe=utf-8

я и не догадался бы таким простым способом искать. Не смог бы сформулировать запрос. Спасибо большое!

Я сделал, как Вы посоветовали. С морды небольшая задержка есть, но меня бы устроило, если бы так работало через правила.
Через клиент - молниеносно - идеально!
Остаются либо мои правила, либо настройки serial.
Я првильно понял, что настройки serial, это помимо скорости и поллинга в морде, добавить в шаблон реле
“poll_interval”: 1 у интересующего меня канала.
Все? на этом настройки будут исчерпаны?

Самое полное описание настроек драйвера - внизу страницы https://github.com/contactless/wb-mqtt-serial
Как проверить, что правила работают достаточно быстро: вместо инструкции, которая подразумевает передачу/приём команды, поставьте инструкцию log(), и в веб-интерфейсе включите режим отладки (гаечный ключ) - тогда увидите, как быстро доходят до нужного места ваши правила.
Как бы оптимизировал скорость я:

  1. Поднял скорость устройств до 115200.
  2. Удалил ненужные регистры из шаблонов.
  3. Больше бы ничего не трогал, потому что wb-mqtt-serial сам пытается опрашивать максимально быстро. Ещё точно нужно посмотреть, все ли ответы приходят корректно:
    tail -f /var/log/messages
    и смотреть, есть ли какие-то ошибки при опросе.

Про регистры понял. Про логи из консоли тоже понял. Спасибо! Буду экспериментировать

Добрый день! Возникла ситуация, когда с модулей WB-MR6C на контроллер WB6 нужно оперативно получать информацию о нажатии кнопок со входов. И если кнопка нажата и отжата в промежутке времени между опросом, то в системе этот момент не отследить. В линию RS485-1 подключены следующие модули:
WB-M1W2 - 3 шт
WB-MR6C - 11 шт
WB-MRGBW-D - 5 шт
WB-MRPS6/S - 1 шт
WB-MAP6S - 1 шт
WB-MCM16 - 1 шт
WB-MSW - 7 шт
Скорость по этой линии установлена 115200, из шаблонов удалены неиспользуемые регистры, “tail -f /var/log/messages” ошибок модулей не показывает.
На линию RS485-2 подключены 3 модуля WB-MR6C, параметры установлены такие же как у RS485-1. Там нормально с временем опроса, но как только подключить 4-й модуль, то скорость существенно падает, поэтому подключены модули наиболее критичные по времени опроса.
Возможно ли что-то еще сделать, чтобы увеличить скорость опроса на линии RS485-1 ?
Или можно ли тогда взять, например, такой модуль WBIO-DI-WD-14 и переключить кнопки на него ? Правильно ли понимаю, что по шине WBIO скорость значительно выше ?

Arti-san, добрый день!
Есть разные подходы, чтобы получать оперативную информацию о входах, кроме увеличения скорости передачи данных и уменьшения опрашиваемых регистров, которые вы перечислили
:

  1. Подключать релейные модули к разным портам, в том числе создать дополнительные с использованием преобразователей Преобразователь интерфейсов WB-MGE.
  2. Ориентироваться не на состояние входов, а на счетчики замыкания. Тогда даже если не удалось “отловить” момент нажатия, мы будем располагать информацией постфактум.
  3. Использовать боковые модули входов, подключенные непосредственно к контроллеру. Каждое изменение входа генерирует прерывание, которое гарантированно отрабатывается и отправляется в MQTT-очередь.

я на DI-DR не увидел полей-счетчиков. Они есть, но не вынесены в шаблон? У меня кнопки к ним подключены…

Добрый день! Счетчики есть в шаблоне, когда вы подключаете модуль через MIO(-E). При подключении непосредственно к контроллеру счетчиков нет. Можно считать движком правил по изменению состояния.

если движком, то смысл теряется. Понял, спасибо.

Импульсы считает MIO-E, в самом DR такого функционала нет.

Подскажите пожалуйста, как по пт2 удалить ненужные регистры из шаблонов?
Искал и в вики и здесь - не нашел.
Открываю конфиг как JSON, в нем вижу только, что указаны устройства с адресами, ргистров нет. Откуда взять шаблоны устройств со всеми регистрами и выкинуть оттуда ненужные?

Прошивка от 20 января 2021, все прошивски всех устройств актуальные.

Все шаблоны лежат на контроллере в папке /usr/share/wb-mqtt-serial/templates/

Ещё они хранятся на нашем Github: wb-mqtt-serial/wb-mqtt-serial-templates at master · wirenboard/wb-mqtt-serial · GitHub
Можете скопировать любой из них, изменить название, отредактировать и сложить в ту же папку на контроллере. После этого удалите устройство со старым шаблоном и добавьте с новым.

Также можете посмотреть статью Драйвер wb-mqtt-serial:Примеры написания шаблонов — Wiren Board

2 лайка