Стартовая страница › Форумы › Понять, как работает ПО › Формулы › Формула таймера 1 сек
- В этой теме 82 ответа, 11 участников, последнее обновление 4 месяца, 3 недели назад сделано
Mikhail.
-
АвторСообщения
-
17.04.2025 в 15:18 #38159
a80808УчастникА вам нужно с точностью до секунд? Попробуйте как будет работать с EveryMin()
А я бы наверное не так сделал. Считал бы время когда канал стал 1 а потом считал когда 0. и разницу в секундах…17.04.2025 в 16:19 #38162alexandr1803
УчастникПробовал, тоже единица и замирает. Может в формуле че не так? Я ее с этой темы взял.
17.04.2025 в 16:26 #38163alexandr1803
УчастникEveryMin(() => DayStarted() ? 0 : Val(103) == 1.000 ? Cnl + 1 : Cnl)
В таком виде тоже ставит единицу и останавливает счет17.04.2025 в 16:57 #38164alexandr1803
УчастникManjey, формула ошибок больше не выдает, но и не считает. Выше в теме один из участников задавал тот же вопрос и пропал куда-то.
17.04.2025 в 19:09 #38166
manjey73УчастникТак понимаю DayStarted случается один раз в сутки, с чего бы оно считало в течении дня?
17.04.2025 в 19:39 #38167alexandr1803
УчастникА DayStarted здесь разве не для сброса счетчика в 0 раз в сутки? Мне бы надо так как раз.
17.04.2025 в 19:40 #38168alexandr1803
УчастникЗавтра попробую +1.0 как советовал ранее, может в этом дело.
18.04.2025 в 07:20 #38169alexandr1803
УчастникВсем спасибо, в итоге методом тыка догадался.
Вот рабочая формула: EverySec(() => HourStarted() ? 0 : Val(103) == 1.000 ? Val() + 1 : Val())18.04.2025 в 08:06 #38171
MikhailМодераторНачало часа можно каждую минуту, а не каждую секунду проверять. Но в данном случае, не сильно повлияет на быстро действие.
18.04.2025 в 08:10 #38173alexandr1803
УчастникПроверил, счет работает и фиксация тоже, но вот сброс в 0 в начале часа не произошел.
В чем может быть дело?18.04.2025 в 08:42 #38174
manjey73УчастникHourStarted() ? 0 — или 0.0 или тут тоже надо Val(CnlNum) = 0.0 или даже SetVal(CnlNum, 0)
Вместо Val(103) == 1.000 можно использовать Val(103) > 0-
Ответ изменён 1 год, 2 месяца назад пользователем
manjey73.
18.04.2025 в 09:04 #38176alexandr1803
УчастникСпасибище ОГРОМНОЕ. Помогло вот это: SetVal(CnlNum, 1) единицу на всяк случай сделал, так как в другом канале есть деление на значение этого канала.
18.04.2025 в 09:24 #38177
manjey73УчастникТо есть вы сбрасываете до 1 , а не до 0?
Можно ещё SetData использовать, с указанием статуса. А тот канал, который делит это, просто должен ещё проверять статус. Тогда и 0 можно будет писать смело.18.04.2025 в 09:54 #38178alexandr1803
УчастникДа в принципе на расчет сильно не влияет. В одном канале у меня минутный таймер со сбросом каждый час, во втором таймер работы по сигналу дискретного входа так же со сбросом раз в час, в третьем время работы*100/на показания минутного таймера= эффективность работы станка в%.
18.04.2025 в 16:06 #38180alexandr1803
УчастникОпять засада какая-то
Вот так сброс каждый час работает 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. В чем дело то?
-
Ответ изменён 1 год, 2 месяца назад пользователем
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.