Есть контроллер WB8, к которому подключены несколько WB-MR6C v.2 и WB-MCM8. К обоим модулям подключены свои клавиши. Необходимо обрабатывать события нажатий на данные клавиши в nodered.
С обработкой нажатий модуля MCM8 никаких проблем - реакция очень быстрая и ни одного пропуска не замечено. А нажатия на модуле MR6C v.2 иногда пропускаются, обработка не такая шустрая.
Если я правильно понимаю, то в процессе опроса других устройств, нажатие может успеть завершиться, а модуль реле сохраняет их количество, но не сохраняет некоторый флаг события, о том что оно обнаружено. Почему так не происходит с модулем MCM8? Какие есть пути решения данной проблемы?
Добрый день.
Пожалуйста опишите что значит “пропускаются”?
Для проверки: создайте на контроллере правило из примеров, укажите топик счетчика нажатий модуля реле и проверьте.
Добрый день!
Под словом “пропускается” я имел ввиду, что контроллер не успевает заметить кратковременного переключение состояния входа. В интерфейсе не переключается состояние Вход n, но при этом счетчик растёт (переключения поля “Вход n” в web интерфейсе, конечно, не показатель, но они совпадали с обработкой события на nodered нодой button) . Т.е. если следить именно за состоянием счетчика, то, думаю, событие будет обработано. Но мне все равно не понятно, почему такого пропуска не возникает на счетном модуле с такими же настройками опроса и тем же кодом на nodered? Может, надо иначе модуль настроить? Или он просто изначально не так заточен под обработку нажатий, как счетный модуль?
Да, для этого они и предназначены.
Версия прошивки на реле - какая?
версия 1.21.7
Актуальная. Но, если нажатие было между опросами (в том числе и быстрого Modbus) - то да, оно может быть пропущено. Анализировать следует изменения счетчиков.
Обратил внимание в логах, что события для дискретных входов реле не инициализировались, только для выходов.
Строка 67187: Jul 25 13:39:47 wirenboard-A4S2V5YR wb-mqtt-serial[700911]: INFO: [serial client] Events are enabled for <modbus:21:coil: 1> | |
---|---|
Строка 67188: Jul 25 13:39:47 wirenboard-A4S2V5YR wb-mqtt-serial[700911]: INFO: [serial client] Events are enabled for <modbus:21:coil: 2> | |
Строка 67189: Jul 25 13:39:47 wirenboard-A4S2V5YR wb-mqtt-serial[700911]: INFO: [serial client] Events are enabled for <modbus:21:coil: 3> | |
Строка 67190: Jul 25 13:39:47 wirenboard-A4S2V5YR wb-mqtt-serial[700911]: INFO: [serial client] Events are enabled for <modbus:21:coil: 4> | |
Строка 67191: Jul 25 13:39:47 wirenboard-A4S2V5YR wb-mqtt-serial[700911]: INFO: [serial client] Events are enabled for <modbus:21:coil: 5> | |
Строка 68114: Jul 25 13:52:43 wirenboard-A4S2V5YR wb-mqtt-serial[707922]: INFO: [serial client] Events are enabled for <modbus:21:coil: 0> | |
Строка 68115: Jul 25 13:52:43 wirenboard-A4S2V5YR wb-mqtt-serial[707922]: INFO: [serial client] Events are enabled for <modbus:21:coil: 1> | |
Строка 68116: Jul 25 13:52:43 wirenboard-A4S2V5YR wb-mqtt-serial[707922]: INFO: [serial client] Events are enabled for <modbus:21:coil: 2> | |
Строка 68117: Jul 25 13:52:43 wirenboard-A4S2V5YR wb-mqtt-serial[707922]: INFO: [serial client] Events are enabled for <modbus:21:coil: 3> | |
Строка 68118: Jul 25 13:52:43 wirenboard-A4S2V5YR wb-mqtt-serial[707922]: INFO: [serial client] Events are enabled for <modbus:21:coil: 4> | |
Строка 68119: Jul 25 13:52:43 wirenboard-A4S2V5YR wb-mqtt-serial[707922]: INFO: [serial client] Events are enabled for <modbus:21:coil: 5> |
В шаблоне config-wb-mr6c.json параметр sporadic выставлен false, если выбран режим “Управление отключено/вход измеряет частоту”, именно как у меня. Полагаю, что быстрый модбас у меня отключен для входов реле. А для входов счетного модуля активен и поэтому он обрабатывает все гораздо шустрее. Поменяю параметр на mapping-матрицу без управления и попробую пощёлкать.
А как часто быстрый модбас опрашивает события? Это можно как-то настроить?
Логично, если измеряете частоту - то незачем генерировать событие на каждый период сигнала.