Таймеры и счётчики — самые используемые элементы программы ПЛК и самые частые источники ошибок. Программа работает в цикле, а время в ней измеряется не так, как в быту. Разберём, как устроены таймеры, что с ними делать при перезапуске и почему счётчик иногда считает вовсе не то, что от него ждут.
Как программа видит время
ПЛК выполняет цикл: читает входы, считает логику, пишет выходы. Время между циклами неодинаково и зависит от загрузки. Поэтому логика «подождать две секунды» не должна опираться на число циклов. Для задержек используют таймеры, которые считают реальное время, а не проходы программы. Если цикл длинный, короткие импульсы на входе можно потерять, и это тоже влияет на счёт.
Основные типы таймеров
С задержкой на включение: выход появляется через заданное время после запуска.
С задержкой на выключение: выход держится заданное время после снятия условия.
Импульсный: выход включён фиксированное время независимо от длительности входа.
Накопительный: считает время, пока условие истинно, и сохраняет значение.
Выбор типа зависит от задачи, и подмена одного другим даёт неверное поведение.
Задержка на включение
Самый частый тип. Применяется для подтверждения сигнала, для ожидания стабилизации, для защиты от кратковременных помех. Важно: таймер запускается по условию, и если условие пропало, отсчёт обычно начинается заново. Это значит, что дребезг контакта не даст таймеру дойти до конца, и это правильно.
Задержка на выключение
Полезна для вентиляторов, насосов, освещения: механизм работает ещё некоторое время после снятия команды. Ошибка новичков — использовать такой таймер там, где нужна пауза перед следующим шагом. В этом случае механизм продолжает работать, хотя по логике должен был остановиться.
Импульсный таймер
Применяется для дозирования, для коротких толчков, для сигналов. Если импульс должен быть строго определённой длины, проверьте, что программа не перезапускает таймер каждым сканом. Иначе импульс либо растянется, либо не сформируется вовсе.
Счётчики и их фронты
Счётчик увеличивает значение по фронту сигнала. Если подать на него уровень, а не фронт, счёт пойдёт на каждом цикле, и значение улетит за секунды. Проверяйте, что вход счётчика — именно фронт, и что дребезг датчика не даёт лишних срабатываний. Для механических контактов помогает фильтр или таймер подтверждения.
Сброс и сохранение
Счётчик должен иметь явный сброс, и должно быть понятно, кто и когда его делает. Если сброс происходит при выключении питания, данные теряются. Если сохраняются, нужно решить, что делать при замене оборудования. Оба варианта допустимы, но выбор должен быть осознанным и записанным.
Время в рецептах
Если время — параметр изделия, оно должно задаваться рецептом, а не быть зашитым в программу. Иначе при смене продукта придётся править код и заново его проверять. Хранение параметров отдельно от логики упрощает жизнь и снижает риск ошибки.
Перезапуск и восстановление
После снятия питания таймеры обычно начинают отсчёт заново. Это может быть опасно, если процесс был в середине цикла. Программа должна при старте привести механизмы в безопасное состояние и потребовать подтверждения оператора, а не продолжать с середины. Проверьте это отдельно.
Точность и дискретность
Таймер имеет дискретность, обычно единицы или десятки миллисекунд. Требовать точности выше дискретности бессмысленно. Если технологический процесс чувствителен к долям секунды, нужны другие средства — аппаратные задержки, специализированные модули или привод с собственной логикой.
Длинные выдержки
Для часовых выдержек обычные таймеры подходят, но нужно учитывать переполнение и точность внутренних часов контроллера. Проверьте, что значение не сбрасывается при достижении предела. Для учёта наработки лучше использовать счётчики моточасов, а не таймеры шага.
Диагностика
Выведите в панель оператора текущее значение таймера и состояние счётчика. Это резко упрощает поиск проблем: видно, идёт ли отсчёт и чего не хватает для срабатывания. Без такой индикации наладчик гадает, работает ли условие.
Типичные ошибки
Считать циклы вместо времени.
Подавать уровень вместо фронта на счётчик.
Сбрасывать счётчик в неочевидном месте.
Зашивать время в код вместо рецепта.
Не проверять поведение после перезапуска.
Использовать таймер вместо датчика положения.
Как проверить логику
Смоделируйте сценарии: короткий сигнал, длинный сигнал, дребезг, пропадание питания. Проверьте, что поведение соответствует описанию. Отдельно проверьте граничные значения: время ровно на пороге, счётчик на пределе. Именно там чаще всего вылезают ошибки.
Как связать таймер с реальным датчиком
Таймер не заменяет датчик положения. Если нужно знать, что механизм дошёл до конца, ставьте концевик или датчик, а таймер используйте только как контроль зависания: прошло время, а сигнал не пришёл — значит, ошибка. Такой подход даёт и защиту от заклинивания, и понятное сообщение оператору.
Как считать наработку
Для наработки используют счётчик, который увеличивается, пока механизм включён, с шагом по времени. Храните значение в энергонезависимой памяти, но не пишите в неё каждый цикл: флеш-память имеет ограниченный ресурс. Достаточно записывать раз в несколько минут или при выключении.
Как избежать мигания выходов
Если условие на выходе часто переключается, механизм может мигать и изнашиваться. Помогает подтверждение сигнала таймером и гистерезис: включаем при одном значении, выключаем при другом. Дребезг на выходе виден по звуку контактора и по счётчику срабатываний. Если счётчик растёт быстрее, чем реальные циклы, ищите болтающееся условие.
Что записать в документацию
Перечислите все таймеры и счётчики с назначением, начальным значением и тем, кто их сбрасывает. Такой список на одну страницу избавляет от вопросов через год. Укажите также, какие значения сохраняются при выключении питания, а какие обнуляются.
Как избежать накопления ошибки
Если таймер запускается и останавливается часто, суммарное время может расходиться с реальным из-за дискретности. Для учёта больших интервалов используйте системное время контроллера, а не сумму коротких отсчётов. Проверьте, синхронизируются ли часы и что происходит при их сбросе.
Итог
Текущее значение таймера и счётчика на панели — самая дешёвая диагностика.
- Добавьте её до сдачи.
- Не требуйте от таймера больше, чем даёт дискретность цикла.
- Для точных процессов нужны другие средства.
- Проверяйте фронты, сброс и поведение после перезапуска.