Стартовая страница › Форумы › Понять, как работает ПО › Использование формул › Формула таймера 1 сек
- В этой теме 77 ответов, 10 участников, последнее обновление 6 месяцев, 2 недели назад сделано
alexandr1803.
-
АвторСообщения
-
18.04.2025 в 17:21 #38181
manjey73УчастникВозможно во времени сработки формул. Начало часа и начало минуты всегда совпадают. Может приоритет выполнения какой-то есть. Но это Михаил больше подскажет.
18.04.2025 в 17:25 #38182alexandr1803
УчастникСпс, будем ждать ответ Михаила. Пока на все выходные оставил EverySec, в понедельник гляну всю таблицу по обнулению. Если что, то так и оставлю, а пересчет в минуты сделаю отдельным каналом для записи значений в таблицу.
18.04.2025 в 18:18 #38183
manjey73УчастникЕсть ещё момент, который надо учитывать всегда в формулах.
Они исполняются от младшего канала к старшему последовательно.
Чем то напоминает работу LAD языка. И если у вас после что-то переписывается, то можете затереть данные.18.04.2025 в 22:03 #38185alexandr1803
Участниквсего во всей скаде пока 8 каналов, в трех из них используется данная формула и работать перестают все три если прописать в них минуты вместо секунд. Формула расчета процентов (время работы*100/ фактическое время) если стоит последним по счету каналом, что логично, то в таблицу не сохраняет показания вообще (там только текущие высвечиваются), поставил ее самым первым каналом из расчетных, тогда показания сохраняются каждый час.
18.04.2025 в 22:35 #38186
manjey73УчастникА попробуйте HourStarted() поставить в качестве входной расчетной формулы самой первой. Например с номером канала 1. ( Понятно для чего? )
А потом в своих формулах использовать
EveryMin(() => Val(1) > 0 ? и т.д.Интересно, что получится ?
19.04.2025 в 06:07 #38187alexandr1803
УчастникНе совсем понял, т.е типа того HourStarted() ? 0 : EveryMin(()=> и тд…
19.04.2025 в 07:08 #38188
manjey73УчастникВместо и так далее продолжение вашей формулы. Я с мобилы пишу 😀
Вы просто часовую формулу ставите в начале в каком-то канале, один цикл там должна быть 1, и используете значение этого канала.
Можно ещё для проверки поставить формулу Р триггера и посмотреть будет ли 1 фиксироваться.-
Ответ изменён 6 месяцев, 3 недели назад пользователем
manjey73.
21.04.2025 в 09:33 #38192alexandr1803
УчастникФормула секундного таймера со сбросом каждый час EverySec(() => HourStarted() ? SetVal(CnlNum, 1) : Val()+1) проработала все выходные практически идеально (с EveryMin не работает сброс).
Сейчас попробовал так: HourStarted(() ? SetVal(CnlNum, 1) : EverySec() => Val()+1)
не работает, ошибка компиляции.21.04.2025 в 10:35 #38193
manjey73УчастникИ не будет работать, потому что вы секунды завернули в час, которые срабатывают один раз в час. Зачем ему еще и секунды читать?
Вот почему он не сбрасывает при использовании EvreyMin ?
Я предложил вам решение для проверки. Еще можно зафиксировать дополнительным каналом через R-Trigg и потом сбросить его чуть позже.-
Ответ изменён 6 месяцев, 2 недели назад пользователем
manjey73.
21.04.2025 в 10:37 #38194alexandr1803
УчастникHourStarted() ? SetVal(CnlNum, 1) так тоже не компилируется.
21.04.2025 в 10:38 #38196
manjey73УчастникНу ошибки компиляции то он выдает? надо смотреть в CalcEngine.cs по номеру строки чего ему не нравится и разбираться.
21.04.2025 в 15:14 #38198alexandr1803
УчастникEveryMin(() => HourStarted() ? 0 : Val() + 1) хоть убейте, но вот эта формула из справочника «Скрипты и формулы» не работает, тупо не сбрасывает таймер. Оставил в секундах и отдельным каналом Val(n)*0.06 (для перевода в минуты) Пусть так тогда будет, зато работает.
21.04.2025 в 15:40 #38202
MikhailМодераторДля проверки работы EveryMin вызывайте свою функцию
EveryMin(() => MyFunc())
в которой сделайте вывод в текстовой файл полезной информации. Было бы полезно понять в какие моменты времени вызывается функция MyFunc и чему при этом равна HourStarted()21.04.2025 в 15:42 #38203
MikhailМодераторEveryMin(() => HourStarted() ? 0 : Val() + 1) хоть убейте, но вот эта формула из справочника «Скрипты и формулы» не работает, тупо не сбрасывает таймер.
Проверю.
21.04.2025 в 17:32 #38206alexandr1803
УчастникА не может эта формула каким-то образом конфликтовать с moddiffcalc?
-
Ответ изменён 6 месяцев, 3 недели назад пользователем
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.