Формула таймера 1 сек

Просмотр 15 сообщений - с 16 по 30 (из 78 всего)
  • Автор
    Сообщения
  • #33145
    Z_h_e
    Участник

    Спасибо. Вечером постараюсь попробовать.

    #33146
    Romiros
    Участник

    EverySec(() => NewData(Val(804)+1),Stat(804))

    Что-то типа этого. Аргумент у функции должен быть CnlData — сущность из сочетания значения и статуса канала. Посмотрите в документации, там хорошая обновленная статья по формулам для шестой версии.

    #33151
    Mikhail
    Модератор

    «CnlData Значение и статус канала». Это какая-то структура?

    Вот она.

    #33154
    Z_h_e
    Участник

    Благодарю, друзья. Сегодня видимо не попробую.
    На самом деле мне нужен не инкрементный канал, а интегрирующий некое живое значение с другого канала.
    Но инкрементный заработает, значит и интегрировать тоже не проблема.

    #33177
    Z_h_e
    Участник

    Попробовал. Все работает. Погрызу еще литературу.
    Спасибо еще раз.

    #33207
    alteke
    Участник

    Всем доброго дня! у меня примерно такая же проблема. Нужна чтобы чтобы считал как счетчик каждую минуту, и прибавлял каждую минуту +1 если канал больше 1.
    Вроде все правильно и ошибок нет, но не прибавляет, просто выводит значение как равно 1.

    EveryMin(() => DayStarted() ? 0 : Val()>1?Cnl + 1:Cnl)

    #33208
    manjey73
    Участник

    @alteke вероятно одно из ваших условий постоянно возвращает одно значение и вы получаете в ответ всегда Cnl а не Cnl + 1

    #33217
    Mikhail
    Модератор

    Вы ссылаетесь на значение другого канала или того же?

    #33545
    dequick
    Участник

    Кто может объяснить как работает эта формула?
    DayStarted() ? Val(624) - PrevVal(624) : PrevVal()
    Результат выглядит так, что поле текущее значение ежесекундно меняется(обновляется) с 0 на на значение в 00:00(при событии DayStarted()).

    #33546
    manjey73
    Участник

    Если наступило событие начало дня, то это TRUE — выполняется первая часть формулы
    Val(624) — PrevVal(624) — в канал возвращается значение канала 624 минус предыдущее значение этого же канала

    в остальных случаях будет FALSE и в канал будет возвращаться просто предыдущее значение канала 624

    #33550
    dequick
    Участник

    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 0

    #33552
    manjey73
    Участник

    Странно что у вас есть нули на начало, а потом 129,82
    Хотя это может быть шутка с UTC временем на Сервере. Это трындец как сдвигает мозг 🙂

    #33553
    dequick
    Участник

    У меня такое ощущение, что PrevVal() итерируется в обратную сторону по всему массиву предыдущих значений. То есть если предыдущее значение было 0, он пишет 0 в текущий канал. При следующем вызове предыдущее от этого нуля значение, например 129 и пишет уже его. Я сначала думал, что DayStarted срабатывает постоянно.

    • Ответ изменён 1 год, 3 месяца назад пользователем dequick.
    #33555
    manjey73
    Участник

    Он как бы постоянно и срабатывает, просто у него всегда false, пока не наступит новый день — 00:00 и только тогда true.

    #33556
    dequick
    Участник

    Сейчас попробую на часик зафиксировать значение на канале формулой
    DayStarted() ? Val(601) :SetVal(626, 129.82)
    Потом снова вернуть на:
    DayStarted() ? Val(601) : PrevVal()
    Возможно это особенности работы модуля отображения таблицы.

Просмотр 15 сообщений - с 16 по 30 (из 78 всего)
  • Для ответа в этой теме необходимо авторизоваться.