Здравствуйте. Возможно ли с таймера считать сколько времени прошло (в идеале, сколько времени осталось)? Задача: как то вывести на экран сколько времени осталось до конца таймера.
Вид для печати
Здравствуйте. Возможно ли с таймера считать сколько времени прошло (в идеале, сколько времени осталось)? Задача: как то вывести на экран сколько времени осталось до конца таймера.
А в FBD это можно сделать? у меня тут для чтения только уставка доступна.
Вложение 79079
Если имеется в виду Лоджик, то нельзя. Надо свой таймер писать - если достаточно секунд, то на FBD, если нужны миллисекунды - тогда ST
Тут есть готовые таймеры на ST с выходом ET в сек. и мс, считывайте сколько насчитал таймер или PT - время таймера= сколько осталось
И не только таймеры, а разные примеры
https://owen.ru/forum/showthread.php...=9&p=429067#81
На FBD если для визуализации достаточно отсчётов в 1 секунду
Вложение 79083
Спасибо всем ответившим! Уже нашел пример таймера на ST на канале ОВЕНа. Отдельное спасибо kondor3000 за ссылки, пригодятся.
В продолжение темы таймеров на ST...
Для отсчёта времени в предлагаемых таймерах используется запоминание времени начала отсчёта и вычитание этого значения из текущего времени.
Возникает вопрос - как поведёт себя таймер при переполнении 32 разрядной переменной, т.е. когда Get_Time() вернёт значение меньшее, чем значение начала отсчёта?
Вопрос по причине необходимости сделать энергонезависимый таймер для многостадийной установки - при включении питания будет время стадии инициализации, потом может добавится время ожидания запроса работы и только после этого нужно досчитать остаток времени стадии, прерванной отключением электричества.
Т.е. придётся вручную нарисовать на ST таймер TON с подстановкой в него уже пройденного времени, основываясь на Get_Time.
Что будет при переполнении 32 разрядной переменной после 49d17h02m47s295ms? Будет сбой работы таймера или разность текущего и стартового времени будет корректной?
Разность будет корректной если пауза не превысит 49d17h02m47s295ms
Вложение 79157
Спасибо
Думаю, не превысит - отсчёт прошедшего времени буду увеличивать каждый цикл.
Для наработки лучше использовать другой подход. Таймер на 1 секунду, и считать сек., мин., часы. Такой подход есть у меня в примерах, самописный Опер таймер. Считает наработку и кол-во включений. Только входное время и включения добавить для сохранения.
Либо 2 вариант, плюсовать наработанные часы, каждый час, либо каждые 8 час., либо каждые 24 часа.
Мой вариант в #170: https://owen.ru/forum/showthread.php?t=33720&page=17
С прямым и обратным отсчётом времени.
Вложение 79163
Нет, в данном моём случае, не для наработки.
Задача - установка, работающая циклично за 3-5 шагов. Кроме этих шагов есть ещё пара-тройка (инициализация, останов при отключении запроса).
Энергонезависимости в исходном ТЗ не было, более того - уточнял этот вопрос до начала работ.
Поэтому собрал обычный конечный автомат на CASE (в ST) с единым таймером для всех шагов.
После восстановления питание возобновление работы с прерванного шага сделать просто. А время - чуть сложнее, т.к. один таймер конечного автомата обслуживает и вспомогательные шаги и рабочий цикл. Т.е. при пуске в работу нужно восстанавливать и прошедшее в прерванном шаге время.
А уже вляпался в ST и всю энергонезависимость реализую через костыли и кодом собственного таймера TON.
Постараюсь отговорить заказчика от запоминания времени - шаги цикла короткие и их повторение с начала вреда не принесёт. Нет желания городить лишние сущности, да и в остальных аспектах - работа полностью завершена и проверена.
Наверное, сегодня в теме "Обсуждение макросов" поделюсь макросами моделирования объектов управления для отладки самодельных регуляторов - как аналоговых, так и 3-позиционных. Идею "подрезал" у "Семёна". Там использую таймер для отсчёта цикла пересчёта - как раз отсчёт "малыми порциями".