Особенности использования таймеров в языке STL
Таймер существует в Stl-программе как блочный элемент. Загрузка значения времени осуществляется через аккумулятор 1.
Таймер запускается, если состоялось изменение значения результата логической операции RLO. При этом для таймера с задержкой выключения (Off-delay timer) RLO должен изменить свое состояние со значения "1" на "0", а для всех других типов таймеров RLO должен изменить свое состояние со значения "0" на "1".
Рисунок 2.14- Временные диаграммы таймеров
Таблица 2.1 - Назначения входов и выходов таймера
Название | Тип данных | Описание |
S | BOOL | Вход запуска |
TV | S5TIME | Спецификация продолжительности |
R | BOOL | Вход сброса |
BI | WORD | Текущее значение в двоичном коде |
BCD | WORD | Текущее значение в Bcd-формате |
Q | BOOL | Состояние таймера |
При запуске таймера из аккумулятора 1 выбирается время запуска (running time) или продолжительность работы (duration). Эти параметры рекомендуется загружать в аккумулятор 1 непосредственно перед запуском или в виде константы, или в виде переменной.
Примеры задания продолжительности импульса таймера константой:
L S5TIME#10s; // Загрузить продолжительность 10 с;
L S5T#1m10ms; // Загрузить продолжительность 1 мин 10 мс.
Примеры задания продолжительности импульса таймера переменной:
L S5T#10m; //Задать продолжительность 10 мин;
T MW20; //Сохранить продолжительность работы;
L MW20; //Загрузить продолжительность работы.
Внутренняя структура временного параметра "продолжительность импульса" составляется со значения времени и временной базы. Продолжительность импульса таймера равняется произведению этих величин.
Значение временной базы (величины шага по времени) используется операционной системой CPU для декрементирования таймера (рис. 2.15).
Рисунок 2.15 – Формирование параметра “продолжительность работы”
Таким образом, уменьшение значения временной базы обеспечивает более точное вычисление промежутков времени, потому что CPU делает ступенчатое (декрементное) уменьшение значения функции таймера (time value) согласно заданному значению временной базы (time base).
Следует учитывать, что таймеры могут обновляться асинхронно относительно процесса сканирования программы пользователя. При этом состояние таймера в начале цикла сканирования отличается от его состояния в конце цикла. Чтобы уменьшить ошибку через асинхронное восстановление таймера в программе, таймер необходимо обновлять только в одном месте программы.
Сброс таймера выполняется по инструкции:
R T n;
По этой инструкции таймер сбрасывается при результате логической операции RLO, равному "1".
Запустить таймер снова можно инструкцией:
FR T n
В операционную систему CPU встроены Iec-функции таймеров. Они доступны как системные функциональные блоки SFB:
• SFB 3 TP – генерация импульсов;
• SFB 4 TON – генерация импульса с задержкой включения;
• SFB 5 TOF – генерация импульса с задержкой выключения.
Параметры Iec-функций таймеров представлены в табл. 2.2.
Таблица 2.2 - Параметры Iec-функций таймеров
Название | Назначение | Тип данных | Описание |
IN | INPUT | BOOL | Вход запуска (Start input) |
PT | INPUT | TIME | Продолжительность импульса (Pulse length) или задержка включения (Delay duration) |
Q | INPUT | BOOL | Состояние таймера (Timer status) |
ET | INPUT | TIME | Прошедшее время (Elapsed time) |
Дата добавления: 2016-12-09; просмотров: 3721;