Стартовая страница › Форумы › Понять, как работает ПО › Использование формул › Формула таймера 1 сек
- В этой теме 77 ответов, 10 участников, последнее обновление 8 месяцев, 3 недели назад сделано
alexandr1803.
-
АвторСообщения
-
22.11.2022 в 07:59 #26171
fergus2022
УчастникЗдравствуйте, подскажите пожалуйста формулу, чтобы допустим каждую секунду проверять, изменилось ли значение тега, и если изменилось, присвоить значение +1 к текущему другого тега
22.11.2022 в 09:08 #26172
manjey73УчастникТаймер тут немного не подойдет. Так как значение может измениться в пределах работы самого таймера и он свято будет сравнивать одно с тем же…
22.11.2022 в 09:33 #26173fergus2022
УчастникА что могло бы подойти ?
Суть в том, что есть расходомер, есть мокса. Нужно узнавать интервал обновления счетчика расходомера (к примеру 1 секунда, потом данные обновились через 2 секунды, потом снова через 1 сек.) Как то возможно это сделать в скаде ?22.11.2022 в 10:02 #26175fergus2022
УчастникСможет ли скада каждые 2-4мс выполнять такой скрипт ?
22.11.2022 в 11:07 #26177
manjey73Участник2-4мс это маловато будет, чтобы Scada успела перебрать формулы всех каналов…
И чем больше канало, тем больше цикл.Дело в том, что когда у вас выполняется все в цикле и цикл больше секунды к примеру, то тот же Таймер будет выполняться по времени равный циклу и никак иначе если в простом варианте объяснения. Далее это уже задачи по прерываниям, но это немного не про Scada.
В идеале надо считать время между срабатываниями таймера или некой формулы и учитывать это время при расчетах.
Опять же, у вас Moxa — добавьте сюда время опроса через Moxa расходомера…Что вы считываете с расходомера через Moxa? начинать надо с этого. То есть что это за значения?
22.11.2022 в 11:22 #26178fergus2022
УчастникС расходомера берется счетчик импульсов. Т.е счетчик скаждым импульсом увеличивается. Но нам нужно знать период между импульсами
22.11.2022 в 11:30 #26179
manjey73УчастникТо есть вы получаете просто нарастающее значение счетчика?
Вот тогда вам и надо плясать от времени, но не от 1 сек, 2 сек а от момента срабатывания, до момента срабатывания, а это может быть и 1,5 и 0,9 секунды и так далее.
Ну и уже потом приводить разницу полученных импульсов к какому-то итогу.
Вам надо сохранять Тики, количество прошедших миллисекунд между измененными значениями из расходомера.
В принципе можно и таймер с фиксированным временем применить (скажем та же секунда), но простой таймер не подойдет, так как вам нужен не факт его срабатывания а именно значение PT (времени) между срабатыванием. Ну и соответственно когда сработал таймер, проверять старое значение из расходомера с текущим и если они отличаются, использовать полученный PT таймера при расчете.22.11.2022 в 12:37 #26181fergus2022
УчастникА есть ли примеры скриптов ?
22.11.2022 в 13:36 #26184
manjey73УчастникНет к сожалению.
22.11.2022 в 17:13 #26207
MikhailМодераторДобрый день!
В Rapid SCADA 6 для канала можно использовать формулуEverySec(MyFunc), где MyFunc — это Ваша функция, которая выполняет проверку и увеличение счётчика.Также в 6-й версии в формулах есть доступ к предыдущему значению канала.
-
Ответ изменён 3 года, 1 месяц назад пользователем
Mikhail.
11.12.2022 в 18:10 #26591a_l_e_x
УчастникПодскажите где почитать про доступ к предыдущему значению
12.12.2022 в 10:02 #26594
MikhailМодераторФормулы PrevVal() и PrevStat() возвращают предыдущее значение и статус. Пока справка по новой версии не готова, встроенные формулы можно посмотреть здесь.
20.06.2024 в 22:06 #33142Z_h_e
УчастникВот входная формула (Val(804)+1) — это расчетный канал сам себя инкрементирует.
Попробовал вот так EverySec(Val(804)+1) — ошибка error CS0030: Cannot convert type ‘double’ to ‘Scada.Data.Models.CnlData’Как правильно сделать секундный инкремент канала?
Заодно, я так и не понял что представляет собой тип данных CnlData. В хелпе написано: «CnlData Значение и статус канала». Это какая-то структура?20.06.2024 в 22:07 #33143Z_h_e
УчастникРапид V6.2
20.06.2024 в 23:25 #33144
manjey73УчастникEverySec(() => Val(804)+1)
Наверное как-то так
-
Ответ изменён 3 года, 1 месяц назад пользователем
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.