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

Просмотр 15 сообщений - с 46 по 60 (из 83 всего)
  • Автор
    Сообщения
  • #38159
    a80808
    Участник

    А вам нужно с точностью до секунд? Попробуйте как будет работать с EveryMin()
    А я бы наверное не так сделал. Считал бы время когда канал стал 1 а потом считал когда 0. и разницу в секундах…

    #38162
    alexandr1803
    Участник

    Пробовал, тоже единица и замирает. Может в формуле че не так? Я ее с этой темы взял.

    #38163
    alexandr1803
    Участник

    EveryMin(() => DayStarted() ? 0 : Val(103) == 1.000 ? Cnl + 1 : Cnl)
    В таком виде тоже ставит единицу и останавливает счет

    #38164
    alexandr1803
    Участник

    Manjey, формула ошибок больше не выдает, но и не считает. Выше в теме один из участников задавал тот же вопрос и пропал куда-то.

    #38166
    manjey73
    Участник

    Так понимаю DayStarted случается один раз в сутки, с чего бы оно считало в течении дня?

    #38167
    alexandr1803
    Участник

    А DayStarted здесь разве не для сброса счетчика в 0 раз в сутки? Мне бы надо так как раз.

    #38168
    alexandr1803
    Участник

    Завтра попробую +1.0 как советовал ранее, может в этом дело.

    #38169
    alexandr1803
    Участник

    Всем спасибо, в итоге методом тыка догадался.
    Вот рабочая формула: EverySec(() => HourStarted() ? 0 : Val(103) == 1.000 ? Val() + 1 : Val())

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

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

    #38173
    alexandr1803
    Участник

    Проверил, счет работает и фиксация тоже, но вот сброс в 0 в начале часа не произошел.
    В чем может быть дело?

    #38174
    manjey73
    Участник

    HourStarted() ? 0 — или 0.0 или тут тоже надо Val(CnlNum) = 0.0 или даже SetVal(CnlNum, 0)
    Вместо Val(103) == 1.000 можно использовать Val(103) > 0

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

    Спасибище ОГРОМНОЕ. Помогло вот это: SetVal(CnlNum, 1) единицу на всяк случай сделал, так как в другом канале есть деление на значение этого канала.

    #38177
    manjey73
    Участник

    То есть вы сбрасываете до 1 , а не до 0?
    Можно ещё SetData использовать, с указанием статуса. А тот канал, который делит это, просто должен ещё проверять статус. Тогда и 0 можно будет писать смело.

    #38178
    alexandr1803
    Участник

    Да в принципе на расчет сильно не влияет. В одном канале у меня минутный таймер со сбросом каждый час, во втором таймер работы по сигналу дискретного входа так же со сбросом раз в час, в третьем время работы*100/на показания минутного таймера= эффективность работы станка в%.

    #38180
    alexandr1803
    Участник

    Опять засада какая-то
    Вот так сброс каждый час работает EverySec(() => HourStarted() ? SetVal(CnlNum, 1) : Val(102) == 1.000 ? Val() + 1 : Val())
    А вот так уже нет EveryMin(() => HourStarted() ? SetVal(CnlNum, 1) : Val(102) == 1.000 ? Val() + 1 : Val())

    Разница только в EverySec и EveryMin. В чем дело то?

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