Как получить выдержку, не зависящую от цикла сканирования PMP20?
Для этого есть точные таймеры ET и команда STR: они отсчитывают время с шагом 1 мс независимо от периода сканирования и умеют вызывать прерывание по достижении уставки.
Как это выглядит:
STR ET0 K3000— запуск отсчёта 3000 мс. Таймер 32-битный, диапазон от 0 до 2 147 483 647.DMOV ET0 D0— мгновенное чтение текущего значения, на него не влияет цикл сканирования.STOP ET0— немедленная остановка отсчёта с обновлением значения.RST ET0— сброс.
Номера точных таймеров только чётные: ET0, ET2, ET4 и далее. При выполнении STR таймер сбрасывается перед началом отсчёта.
Каждому таймеру соответствует своя метка прерывания: ET0 — I3000, ET2 — I3001, ET4 — I3002, ET6 — I3003, ET8 — I3004, ET10 — I3005, ET12 — I3006 и далее по порядку. Подпрограмма пишется после FEND и заканчивается IRET, а повторный запуск STR прямо в подпрограмме даёт стабильный периодический процесс — так формируют импульс с временем включения 500 мс и периодом 1000 мс.
Типовая задача под точный таймер — дозирование: время открытия клапана 3000 мс, и разброс в один цикл сканирования уже даёт брак по массе. Обычный таймер такую точность не обеспечивает.
Перед распределением ресурсов проверьте таблицу конфликтов: точные таймеры делят аппаратные ресурсы с высокоскоростными счётчиками и импульсными выходами, и пару из одной строки одновременно использовать нельзя.
Прикреплённая документация
Георгий Жуков
Ведущий инженер