Стартовая страница › Форумы › Понять, как работает ПО › Формулы › Как использовать формулы ?
- В этой теме 86 ответов, 12 участников, последнее обновление 5 лет, 5 месяцев назад сделано
Mikhail.
-
АвторЗаписи
-
26.07.2018 в 08:29 #9964
serg4
УчастникСпасибо, Михаил, помогло.
А есть доступ к данным конкретного канала по дате и часу?26.07.2018 в 12:53 #9967
MikhailМодераторТакой доступ есть, если разрабатывать свой модуль. Из формул сейчас нет.
21.09.2018 в 21:29 #10267
pistoletovУчастникМне нужно выдавать команду если значение канала быстро изменяется. Например на 100 в минуту. Модуль автоматического управления есть. Но как правильно сделать триггер и как такое событие сформировать?
22.09.2018 в 11:40 #10269Romiros
УчастникМожно по разному. Например с модулем автоуправления:
Ваш входной канал допустим 201
Создайте канал 202 тип Митутный ТИ. Поставьте использовать формулу и запишите в поле формула следующее: Abs(Cnl-Val(201)). Это будет разница между текущими показаниями и показаниями минуту назад. В модуле автоуправления добавьте триггер на данные канала 202 и условие значение >=100 и назначьте Ваш канал управления.22.09.2018 в 18:15 #10270
pistoletovУчастникСпасибо большое. А при инициализации канала начальное значение канала 202 нулевое а 201 к примеру уже 100 и первое значение будет 100 и может сработать триггер. Как такую ситуацию избежать? Например что бы 202 при инициализации имел значение равное 201 канала.
22.09.2018 в 19:39 #10271
MikhailМодераторПервоначально статус канала 202 равен 0. Можно использовать статус для определения канала 202.
Примерно так в формуле канала 202: Stat() > 0 ? Math.Abs(Val() — Val(201)) : Val(201)24.09.2018 в 14:42 #10275
pistoletovУчастникПопробовал так сделать. Не совсем корректно работает. Значения изменения могут быть как в + так и в минус а могут и не измениться за минуту вообще. Проблема все равно как правильно проинициализировать значение канала. Формула у меня стоит сейчас такая: канал 777 = Stat() > 0 ? Math.Abs(Val()-Val(603)) : Val(603). Мне получается нужно вычитать значение канала 603 и канала 603 минуту назад и этот канал и будет скоростью изменения. а в данной формуле я вычитаю из значения разницы минуту назад текущее значение канала.
24.09.2018 в 17:24 #10276
MikhailМодераторДа, наверное понадобится ещё один минутный канал, который будет хранить значение минуту назад. Просто Val(603)
24.09.2018 в 18:16 #10279
pistoletovУчастникА как брать из него данные текущее и предыдущие?
24.09.2018 в 20:29 #10280Romiros
УчастникИмеется ввиду, что Вам нужно всего три канала.
Канал 603 получает текущее значение.
Канал 604 — Минутный ТИ с формулой: Val(603)
Канал 777 = Stat() > 0 ? Math.Abs(Val(603)-Val(604)) : Val(603).24.09.2018 в 21:48 #10281
pistoletovУчастникХорошо. Попробую так. Но тут все равно вопрос инициализации не решён. Значение канала 777 может быть как отрицательным так и нулевым. Abs не подходит. Действие производить надо только при резком отрицательно изменении величины. Например упало за минуту на 200. Но не выросло за минуту на 200
24.09.2018 в 22:26 #10282Romiros
УчастникНу тогда уберите Abs. Оставьте Val(604)-Val(603).
24.09.2018 в 22:41 #10283
manjey73Участникне проще сделать счетчик и сбрасывать его каждую минуту ?
25.09.2018 в 07:30 #10288Romiros
Участникmanjey73, поясните пожалуйста.
25.09.2018 в 09:25 #10289
pistoletovУчастникМожет стоит добавить свойство канала. Начальное значение для таких случаев. Или свойство у канала инициализации. Ну типа
If(канал) == инициализация то канал = 123
Но лучше наверное поле добавить «начальное значение» -
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.