WB-MR6C v.2 контроль канала связи

Добрый день. Столкнулся с такой проблемой: при обесточивании реле не сразу появляется информация об ошибке записи/чтения реле . Есть правило:

var timeout_error;
defineRule("check-relay", {
  whenChanged: "wb-mr6c_104/K1#error",
   then: function (newValue, devName, cellName) { 
    log (newValue)
   if(newValue  == "w") {
       timeout_error = setTimeout(function () {
         SendTelegramMsg('Ошибка связи с реле:  ' +devName); 
       }, 10000);
     } else {
       clearTimeout(timer_error);
     }
 }
});

При отключении питания реле ни чего не происходит. Как только пробую из интерфейса контролера переключить реле к1 (надпись краснеет), сразу прилетает значение w в лог.
После подачи питания на реле, в лог попадает пустое значение. Может нужно что то настроить в самом реле? Помогите разобраться. Мне нужно, чтоб после отключения питания, сразу была реакция на ошибку.


И где можно почитать, что настраивается в этом меню?
После вызова данного меню, его можно убрать с экрана только перезагрузкой страницы.

Добрый день.
Как опрашивается модуль реле? Есть ли каналы с явно указанным периодическим опросом?
Собственно ответ описан в документации.
Значение “r” выставляется только при отсутствии ответа запроса на чтение регистра.

Все каналы опрашиваются в порядки очереди. Всмысле реле и несколко входов. Конкретно реле - к1, опрашивается в порядке очереди. Если r выставляется только в отсутсвии ответа, то каким образом можно контролировать отсутствие (присутсвие) связи с устройством? У меня на rs485 два устройства: оба - WB-MR6C v.2. Меня интерисует только, как контролировать связь с устройством ( на связи оно или нет)?

Тут дело в том что в (актуальных) прошивках модулей уже используется быстрый modbus.
В документации регистры отмечены молнией.
И, естественно, они опрашиваются широковещанием, что не позволяет отличить отсутствие ответа по причине отсутствия связи от отсутствия событий.
Советую включить в опрос какой-либо из классических регистров. Ну хотя бы напряжение питания.

Хорошо, если я правильно понял, тогда нужно в моем правиле опрашивать не к1, а напряжение питания модуля? Или виртуальное устройство с текстом? Напишите как правильнее сделать? Опрос напряжения на модуле я могу включить, это не проблема.

Нет, не совсем верно. Должен быть включен опрос хотя бы одного “классического” канала. И да, по появлению для него meta/error - можно судить о отсутствии связи.

ок, попробую

 var timeout_error;

defineRule("check-relay", {
  whenChanged: "wb-mr6c_104/Supply Voltage#error",
  then: function (newValue, devName, cellName) { 
   if(newValue  == "r") {
      timeout_error = setTimeout(function () {
        SendTelegramMsg('Ошибка связи с реле:  +devName'); 
      }, 10000);
    } else {
        SendTelegramMsg('Связь с реле восстановлена: +devName');
     clearTimeout(timer_error);
    }
  }
});

Вот так работает отлично, спасибо.

2 лайка