Timer — периодическое событие по времени
Timer через заданное время выдаёт короткий сигнал «время вышло» и начинает отсчёт заново. Например, раз в 15 минут он может напоминать программе, что пора выполнить очередное действие.
Сигнал длится один цикл программы ПЛК. Если команду нужно держать несколько секунд, используйте Pulse. Если нужно один раз дождаться устойчивого сигнала и оставить выход включённым, используйте Delay.
Состав и связи
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» означает, что ещё не завершены десять периодов. Для точного остатка времени в секундах эти числа не предназначены.