Стартовая страница › Форумы › Понять, как работает ПО › Использование формул › Формула таймера 1 сек
- В этой теме 77 ответов, 10 участников, последнее обновление 6 месяцев, 2 недели назад сделано
alexandr1803.
-
АвторСообщения
-
21.06.2024 в 03:08 #33145
Z_h_e
УчастникСпасибо. Вечером постараюсь попробовать.
21.06.2024 в 06:19 #33146Romiros
УчастникEverySec(() => NewData(Val(804)+1),Stat(804))
Что-то типа этого. Аргумент у функции должен быть CnlData — сущность из сочетания значения и статуса канала. Посмотрите в документации, там хорошая обновленная статья по формулам для шестой версии.
21.06.2024 в 12:33 #3315121.06.2024 в 12:38 #33154Z_h_e
УчастникБлагодарю, друзья. Сегодня видимо не попробую.
На самом деле мне нужен не инкрементный канал, а интегрирующий некое живое значение с другого канала.
Но инкрементный заработает, значит и интегрировать тоже не проблема.21.06.2024 в 17:12 #33177Z_h_e
УчастникПопробовал. Все работает. Погрызу еще литературу.
Спасибо еще раз.24.06.2024 в 14:02 #33207alteke
УчастникВсем доброго дня! у меня примерно такая же проблема. Нужна чтобы чтобы считал как счетчик каждую минуту, и прибавлял каждую минуту +1 если канал больше 1.
Вроде все правильно и ошибок нет, но не прибавляет, просто выводит значение как равно 1.EveryMin(() => DayStarted() ? 0 : Val()>1?Cnl + 1:Cnl)
24.06.2024 в 14:30 #33208
manjey73Участник@alteke вероятно одно из ваших условий постоянно возвращает одно значение и вы получаете в ответ всегда Cnl а не Cnl + 1
25.06.2024 в 13:39 #33217
MikhailМодераторВы ссылаетесь на значение другого канала или того же?
24.07.2024 в 09:46 #33545dequick
УчастникКто может объяснить как работает эта формула?
DayStarted() ? Val(624) - PrevVal(624) : PrevVal()
Результат выглядит так, что поле текущее значение ежесекундно меняется(обновляется) с 0 на на значение в 00:00(при событии DayStarted()).24.07.2024 в 09:55 #33546
manjey73УчастникЕсли наступило событие начало дня, то это TRUE — выполняется первая часть формулы
Val(624) — PrevVal(624) — в канал возвращается значение канала 624 минус предыдущее значение этого же каналав остальных случаях будет FALSE и в канал будет возвращаться просто предыдущее значение канала 624
24.07.2024 в 10:38 #33550dequick
УчастникDayStarted() ? Val(601) : PrevVal()
Пардон не ту формулу вставил. Как я это понимаю: в 00:00 фиксируется значениt на канале 601. Условно это должно быть 129. Далее непрерывно фиксируется PrevVal(), т.е. это должно быть 129. На момент начала новых суток снова фиксируется новое значение и т.д. Где-то я перемудрил и что-то зациклил))) буду наблюдать
Результат в табличной форме выглядит так:
Элемент Текущие 0:00 1:00 2:00 3:00 4:00 5:00 6:00 7:00 8:00 9:00 10:00 11:00 12:00
Канал 1 0 0 129,82 129,82 0 129,82 0 129,82 0 0 129,82 0 129,82 0
Канал 2 0 0 114,49 114,49 0 114,49 0 114,49 0 0 114,49 0 114,49 0
Канал 3 0 0 82,7 82,7 0 82,7 0 82,7 0 0 82,7 0 82,7 024.07.2024 в 10:43 #33552
manjey73УчастникСтранно что у вас есть нули на начало, а потом 129,82
Хотя это может быть шутка с UTC временем на Сервере. Это трындец как сдвигает мозг 🙂24.07.2024 в 10:48 #33553dequick
УчастникУ меня такое ощущение, что PrevVal() итерируется в обратную сторону по всему массиву предыдущих значений. То есть если предыдущее значение было 0, он пишет 0 в текущий канал. При следующем вызове предыдущее от этого нуля значение, например 129 и пишет уже его. Я сначала думал, что DayStarted срабатывает постоянно.
-
Ответ изменён 1 год, 3 месяца назад пользователем
dequick.
24.07.2024 в 10:51 #33555
manjey73УчастникОн как бы постоянно и срабатывает, просто у него всегда false, пока не наступит новый день — 00:00 и только тогда true.
24.07.2024 в 10:53 #33556dequick
УчастникСейчас попробую на часик зафиксировать значение на канале формулой
DayStarted() ? Val(601) :SetVal(626, 129.82)
Потом снова вернуть на:
DayStarted() ? Val(601) : PrevVal()
Возможно это особенности работы модуля отображения таблицы. -
Ответ изменён 1 год, 3 месяца назад пользователем
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.