Мне нужно выдавать команду если значение канала быстро изменяется. Например на 100 в минуту. Модуль автоматического управления есть. Но как правильно сделать триггер и как такое событие сформировать?
Можно по разному. Например с модулем автоуправления:
Ваш входной канал допустим 201
Создайте канал 202 тип Митутный ТИ. Поставьте использовать формулу и запишите в поле формула следующее: Abs(Cnl-Val(201)). Это будет разница между текущими показаниями и показаниями минуту назад. В модуле автоуправления добавьте триггер на данные канала 202 и условие значение >=100 и назначьте Ваш канал управления.
Спасибо большое. А при инициализации канала начальное значение канала 202 нулевое а 201 к примеру уже 100 и первое значение будет 100 и может сработать триггер. Как такую ситуацию избежать? Например что бы 202 при инициализации имел значение равное 201 канала.
Первоначально статус канала 202 равен 0. Можно использовать статус для определения канала 202.
Примерно так в формуле канала 202: Stat() > 0 ? Math.Abs(Val() — Val(201)) : Val(201)
Попробовал так сделать. Не совсем корректно работает. Значения изменения могут быть как в + так и в минус а могут и не измениться за минуту вообще. Проблема все равно как правильно проинициализировать значение канала. Формула у меня стоит сейчас такая: канал 777 = Stat() > 0 ? Math.Abs(Val()-Val(603)) : Val(603). Мне получается нужно вычитать значение канала 603 и канала 603 минуту назад и этот канал и будет скоростью изменения. а в данной формуле я вычитаю из значения разницы минуту назад текущее значение канала.
Имеется ввиду, что Вам нужно всего три канала.
Канал 603 получает текущее значение.
Канал 604 — Минутный ТИ с формулой: Val(603)
Канал 777 = Stat() > 0 ? Math.Abs(Val(603)-Val(604)) : Val(603).
Хорошо. Попробую так. Но тут все равно вопрос инициализации не решён. Значение канала 777 может быть как отрицательным так и нулевым. Abs не подходит. Действие производить надо только при резком отрицательно изменении величины. Например упало за минуту на 200. Но не выросло за минуту на 200
Может стоит добавить свойство канала. Начальное значение для таких случаев. Или свойство у канала инициализации. Ну типа
If(канал) == инициализация то канал = 123
Но лучше наверное поле добавить «начальное значение»