MetaKit Руководство по компонентам

Timer — периодическое событие по времени

Timer через заданное время выдаёт короткий сигнал «время вышло» и начинает отсчёт заново. Например, раз в 15 минут он может напоминать программе, что пора выполнить очередное действие.

Сигнал длится один цикл программы ПЛК. Если команду нужно держать несколько секунд, используйте Pulse. Если нужно один раз дождаться устойчивого сигнала и оставить выход включённым, используйте Delay.

Состав и связи

Timer: Timer сообщает программе, что время вышло. Для команды длительностью несколько секунд используйте Pulse.
В рамке — состав компонента, снаружи — подключения проекта. Нажмите на схему, чтобы открыть её крупнее.

Timer сообщает программе, что время вышло. Для команды длительностью несколько секунд используйте Pulse.

Первое подключение

Заполняйте пример в таблице «Параметры» (Params) добавленного компонента. Как добавить компонент и где искать настройки.

Установка должна получать напоминание через каждые 15 минут работы таймера.

1. Заполните параметры

Параметр Значение для примера
TimerId ServiceTick
TimerComment Периодическое обслуживание
TimerEn bServiceTimerEnable

bServiceTimerEnable включает отсчёт. Пока значение равно TRUE, таймер работает. При FALSE он выключается и забывает прошедшее время.

2. Задайте интервал

Настройка Значение для примера
Conf.ServiceTick_Timer_diPeriod 60000 мс
Conf.ServiceTick_Timer_diCount 15

Один период равен минуте. Полный интервал равен 60000 × 15 = 900000 мс, то есть 15 минут.

3. Используйте событие

Когда ServiceTick_Timer_Inst.out_bQ станет TRUE, можно начать нужное действие, прибавить единицу к счётчику или включить напоминание об обслуживании. Обрабатывайте этот выход в каждом цикле программы после вызова Timer, чтобы не пропустить короткий сигнал.

4. Как это будет работать

Момент out_bQ Завершено периодов Осталось периодов
Отсчёт только начат FALSE 0 15
Прошло 5 полных минут FALSE 5 10
Завершилась 15-я минута TRUE на один цикл ПЛК 15 0
Следующий цикл ПЛК FALSE 0 15

При сохранении разрешения начинается новый полный интервал. Первое событие появляется после окончания отсчёта.

Отключение и повторное включение

При TimerEn = FALSE выход снимается, накопленный отсчёт сбрасывается. Оба показателя периодов принимают значение −1, обозначающее выключенное состояние.

При повторном включении начинается новый полный интервал. Пройденная до отключения часть времени не сохраняется.

Если при включённом таймере период или количество периодов заданы нулевыми либо отрицательными, интервал считается завершённым: out_bQ остаётся TRUE, оставшееся количество равно нулю. Для обычной циклической работы задавайте оба значения больше нуля.

Параметры компонента — Params

Параметр По умолчанию Назначение
$Timer Циклический таймер Название группы параметров
TimerId _ID_ ID таймера. Для ServiceTick создаётся экземпляр ServiceTick_Timer_Inst
TimerComment Комментарий Название периодического события
TimerEn true Логическое разрешение работы. При FALSE отсчёт и выход сбрасываются
TimerConf Пусто ID набора настроек. Если пусто, используется TimerId
TimerConfComment Пусто Название набора настроек. Если пусто, комментарий составляется из TimerComment и $Timer

У Timer нет родительского компонента и отдельной команды сброса. Управление отсчётом выполняется через TimerEn.

Настройки во время работы — Conf

Полные имена приведены для TimerId = ServiceTick и пустого TimerConf.

Настройка Тип Начальное значение Назначение
Conf.ServiceTick_Timer_diPeriod DINT 60000 Длительность одного периода, мс
Conf.ServiceTick_Timer_diCount DINT 1 Количество периодов в полном интервале

Начальные настройки означают событие раз в минуту. Для общих настроек нескольких таймеров задайте одинаковый TimerConf. Например, TimerConf = Maintenance создаёт настройки Conf.Maintenance_Timer_diPeriod и Conf.Maintenance_Timer_diCount. Каждый таймер ведёт собственный отсчёт.

Выходы компонента

Результат для примера Тип Назначение
ServiceTick_Timer_Inst.out_bQ BOOL Завершён полный интервал; при корректных настройках сигнал длится один цикл ПЛК
ServiceTick_Timer_Inst.out_diCurPeriod DINT Количество завершённых периодов текущего интервала; при отключении — −1
ServiceTick_Timer_Inst.out_diRemainingPeriods DINT Количество оставшихся периодов; при отключении — −1

Счётчики показывают целые периоды. Например, при периоде в минуту «осталось 10» означает, что ещё не завершены десять периодов. Для точного остатка времени в секундах эти числа не предназначены.