Написание правила для реле MR3LV/1

Добрый день, пишу правило чтобы при нажатии на кнопку включалось реле:

defineRule("mr3-button-1", {
  whenChanged: "wb-mr3_13/Input 1 counter",
  then: function () {
    dev["wb-mr3_13/K1"] = true;
    }
  });

реле включается, но тут же отключается. Подскажите как сделать чтобы после включения оно оставалось в состоянии true
Настройки реле


Если отключить правила и поставить стандартный режим работы кнопки, то реле отрабатывает адекватно

Так же если сделать виртуальную кнопку, то реле тоже срабатывает хорошо.
Очевидно что происходит конфликт правила и сработки кнопки, возможно дело в её настройке.

Доброго дня.
По поводу скрипта:

defineRule("mr3-button-1", {
  whenChanged: "wb-mr3_13/Input 1",
  then: function () {
    dev["wb-mr3_13/K1"] = !dev["wb-mr3_13/K1"];
    }
  });

Изменения:

  1. В качестве триггера используется состояние входа, а не счетчик нажатий этого входа.
  2. В теле функции состояние выхода меняется на противоположное.

Я возможно не так понимаю вопрос. Попробуйте, пожалуйста, более подробно описать.
Что делаете?
Что ожидаете получить?
Что получаете по факту?

И для чего вам писать скрипт, если вход и выход модуля связаны на уровне прошивки? Вход 1 и так управляет выходом 1.

Попробовал Ваш скрипт (https://cloud.mail.ru/public/SaNr/auFzd8iQp), результат тот же - реле включается, затем переключается обратно. Очевидно дело не в скрипте. Скрипт отрабатывает так как нужно - включает реле, но затем сразу же происходит его отключение (задержки от дребезга выставлял).
Если сделать виртуальную кнопку и подключить к ней скрипт то реле работает адекватно, также если не использовать скрипт, а использовать стандартную прошивку то кнопка тоже отрабатывает адекватно. Проблемы начинаются при попытке использовать скрипт с реальной кнопкой.
Зачем мне это нужно - дело в том что мне нужно управлять реле 1 - кнопкой и выключателем, которые подключены к разным входам (например 1 и 2). При этом если выключатель замкнут и реле работает, должна быть возможность отключить реле через кнопку.
Ну и всё равно хотелось бы понять как управлять реле через кнопку + скрипт

Ну, у вас довольно странная реализация. Если управляете программно - то надо отключить аппаратное управление в настройках реле. И наоборот, собственно.

Подскажите пожалуйста как отключить аппаратное управление в настройках реле?

Здравствуйте! Можно с помощью WEB-интерфейса, настройки драйвера serial устройств настроить режим работы входов.

UPD: Возможно неправильно понимаю вопрос, т.к. вы это уже делали в своём первом сообщении.

Чтобы не было конфликта, лучше прописать весь нужный функционал с помощью правил.

Да, я делал это при помощи настройки “Режим работы” - “Отключить все выходы”. Я правильно понимаю что этой настройки достаточно?
Тогда давайте упростим запрос, мне нужно чтобы реле управлялось через физическую кнопку, но при помощи правила. В данный момент у меня это не получается даже с настройкой выше, правило отрабатывает но при этом отрабатывает и само реле будто оно находится в режиме “Кнопка без фиксации”. Другими словами правило при нажатии кнопки включает реле и затем оно тут же отключается

Тогда так правило пропишите.

defineRule("mr3-button-1", {
  whenChanged: "wb-mr3_13/Input 1",
  then: function (newValue, devName, cellName) {
    if (newValue) {
      dev["wb-mr3_13/K1"] = !dev["wb-mr3_13/K1"];
    }
  }
  });

“Отключить все выходы” - значит при замыкании данного входа, все выходы реле будут разомкнуты.

тогда как мне настроить реле чтобы правила заработали, в инструкции написано следующее:


но я не вижу такой опции в настройках

Режим “кнопка без фиксации”, если у вас кнопка без фиксации.

Тогда возникает другой интересный момент, если я в правиле настраиваю чтобы по нажатию первой кнопки включалось второе реле, при этом у меня настройка первого входа “Кнопка без фиксации” при нажатии кнопки срабатывает первое и второе реле))) Первое срабатывает по настройке “Кнопка без фиксации”, а второе по правилу. Есть ли действительно настройка Отключить реакцию на нажатия, так чтобы реле вообще работало только по правилам, считывало состояние входов и затем через правило управляло реле

Прошу прощения, моя ошибка. На стенде работает “Управление отключено, вход измеряет частоту”

Разобрался, если кому-то будет такое полезно то, вот как это можно сделать


для каждого входа отключить все действия на выходах

1 лайк