WB5 очень долго считывает состояние модулей RS485

Даже и не знаю как сформулировать вопрос, как то из разряда “Шарик поздравляю …”
вроде все работает. в смысле контроллер и с десяток распределенных реле, RGB, термодатчиков,
ошибок на шине нет
выставили Desired poll interval по шине для всех модулей в соответствие с приоритетом,
скрипты тоже работают
но почему то реакция выключателей подключенных через реле и RGB-модули составляет секунд 30. Там где выключатели управляют реле напрямик внутри модуля и незаметно даже. Ну считал контроллер потом и ладно. Но если кнопка на соседнем модуле … то жать на кнопку надо очень долго.
Вообщем мы в тупике …

Уберите все скрипты, напишите самый простой для одного выключателя и проверьте будет ли с ним задержка.

sasa, добрый день! Еще рекомендую посмотреть на наличие ошибок в файле /var/log/messages. Но для начала проверьте с простым скриптом, как написал Flagman.

в файле /var/log/messages ошибок нет
отключение скриптов ни к чему не приводит.
отключение всех модулей кроме одного снизило время реакции до приемлемых, но подключение модулей к шине (программное) увеличивает время и при 5-6 модулей это уже 2-3 секунды . вообщем как то так получается что при скорости 9600 это 0,5 секунды на каждый модуль на шине

Поняли. Тормозит из за низкой скорости и большого количества устройств на шине.
Есть смысл распределить сеть на два имеющихся у контроллера порта. На один повесить критические устройства, а на второй остальные?

Да, именно так и сделайте!
Также поможет увеличение скорости обмена шины до 115200 (если модули поддерживают).

1 лайк

Поменяли/сделали/разделили.
всю отработку отключили. Но радикально не поменялось.
Но се равно как то не серьезно выходит. на 57k при 6 модулях время опроса около 1 секунды. Это 0,2 сек на модуль. КАКИЕ 10мс?
на длинном шлейфе с 20 модулями секунд 5 опрос занимает. При 9600 было секунд 20, в 5 раз подняли скорость в 5 раз сократили время.
и это без алгоритмов. На чистом контроллере.
Вчера поставили новый WB6.Ничего не изменилось. Такого же не может быть.
Ранее строили на Инсайтовском контроллере, он без проблем отрабатывал 20 модулей с периодом 100мс.
Может все таки мы где то не правы? Или это нормальная скорость опроса?

sasa, смотрите, аналогом SM-BUS-устройств, как в инсайтовских решениях, у нас являются боковые модули WBIO. Они шлют прерывания в контроллер и отработка происходит практически мгновенно.
Шина RS-485 имеет один мастер, который по очереди опрашивает все сконфигурированные устройства.
Чтобы сократить скорость, попробуйте оставить в шаблонах устройств только нужные вам регистры, не опрашивайте напряжение питания (или опрашивайте его реже) и т.п.
В реальных измерениях скорость обмена данными на 115200 составила порятка 1500 байт/с. Считайте, что опрос одного холдинг-регистра – это 8 байт запроса и 6 и более байт ответа.

Прошу тогда пояснить :slight_smile:
На Дин линейку входит не очень много модулей. Каким образом перенести правильно перенести на другую линейку или в другой шкаф.
с помощью Преобразователь интерфейсов WB-MIO-E?
А Преобразователь интерфейсов WB-MIO превращает модули контроллера в обычные ModBus устройства с теми же проблемами со временем опроса?

да

Это не проблемы, это, к сожалению, особенности того, как устроен RS-485. Выше предложили два варианта того, как получить быструю реакцию по Modbus: повысить скорость порта и/или оставить только нужные регистры. Что не так?

По исходному вопросу в принципе да, решение есть.
Но если строить домашнюю автоматизацию на базе WB то необходимо что бы проблем задержек для критичных решений не было -т.е. использовать модули контроллера. Они подключаются к контроллеру сбоку, но ширина шкафа обычно не превышает 18 модулей.
Исходя из вышесказанного необходим механизм подключения модулей контроллера с размещением на другой ДИН рейке. У Вас в номенклатуре есть потенциальные решения для этого. И я пытаюсь выяснить какое из предлагаемых Вамb решений поможет решить проблему с задержками. Что не так?

Рекомендованный способ для опроса дискретных входов, когда важна скорость реакции: использовать наши устройства с Modbus RTU (WB-MR6C например) или модули WBIO через WB-MIO, но при этом:

  • делать кастомный шаблон, в котором есть только регистры входов (типа discrete) и всё
  • увеличивать скорость опроса до 115200

когда руки дойдут, напишем пошаговую инструкцию.

А есть возможность, с целью сокращения времени опроса, оставить в шаблоне только регистры входов, а к выходным обращаться напрямик? Или сделать два шаблона , один с регистрами входов, а второй с регистрами выходов. И к регистрам выходов обращаться только когда надо, без непрерывного опроса шины.

sasa, вы можете задать разное время обращения к регистрам: смотрите тут https://wirenboard.com/wiki/index.php/RS-485:Configuration_via_Web_Interface
(последний раздел “Настройка периода опроса”)

Про опрос я читал.
я могу просто записать данные в какой нибудь регистр устройства, если я исключил этот регистр из шаблона?
У меня есть частотник с сотней регистров и если их все читать по кругу в соответствии с шаблоном то RS485 толком не работает. Я хочу оставить в шаблоне один регистр статуса аварии, а писать в остальные тогда когда этого захочет контроллер.
контроллер такое умеет?

Почему бы и нет.
Здесь даже описано как это сделать.