Триггер с таймером
Здравствуйте! Чего-то не соображу как реализовать такую функцию.
Есть массив переменных (приходит с модбаса) - данные о состоянии датчиков. В реальном времени все четко считывается. Но надо чтобы при сработке любого из этих датчиков, его состояние некоторое время висело как "замкнуто". Чтобы не городить журнал и в то же время не пропустить сработку.
Например сработал датчик1 на пару секунд и разомкнулся - сразу запустился таймер (2 минуты). В это время произошла сработка датчика2 также на несколько секунд - таймер перезапустился и опять отсчитывает эти 2 минуты ( датчик1 и датчик2 при этом отображаются как замкнутые). И если в течение этих 2 минут новых сработок не было, то по истечении времени датчики уже отображаются как разомкнутые.
Надеюсь понятно описала))
Проект на i3.
Заранее спасибо!
PS можно даже в новый массив "триггернутые" состояния записывать
Customer support service by UserEcho
Добрый день.
В фидбэки нативного драйвера такие состояния записывать смысла нет, т. к. они будут перезаписываться следующим успешным опросом. Варианты: создать 2 виртуальных фидбэка и записывать в них, либо записывать в пользовательскую БД. Если хранить значения в скриптовых переменных, то после рестарта сервера значения будут потеряны.
Допустим, выбран вариант с виртуальными фидбэками. В слушателе с EVENT_TAG_CHANGE брать значения из нативного драйвера и записывать в одноимённые виртуальные фидбэки и сразу стартовать SetTimout с нужной задержкой, который будет принудительно отправлять 0 в эти фидбэки. Если EVENT_TAG_CHANGE сработал раньше выставленной задержки, то в виртуальный фидбэк будет записано новое значение.