Как измерить цикл сканирования PMP20 из программы?

Проверено экспертом Опубликовано: 24.07.2026 Обновлено: 27.07.2026 231 просмотр Помогло 90%

Контроллер измеряет цикл сам и хранит три значения в системных регистрах: SD010 — текущий цикл сканирования, SD011 — минимальный за время работы, SD012 — максимальный. Единица измерения — микросекунды.

Зачем эти три числа нужны на объекте:

  • Текущий цикл показывает нагрузку прямо сейчас. Его выводят на сервисный экран панели вместе с версией программы — это первое, что спрашивают при разборе странного поведения машины.
  • Максимальный цикл — самое ценное значение. Именно он определяет, успевает ли логика за процессом: если максимум в разы больше типичного, значит есть редкая, но тяжёлая ветка программы — цикл с большим числом повторов, обработка массива, обмен по связи.
  • Минимальный цикл служит точкой отсчёта: разница между минимумом и максимумом показывает неравномерность нагрузки.

Что делать с большим циклом. Проверьте циклы FOR-NEXT с большим числом повторов, обмен по связи в основной программе и последовательности BLOCK. Обмен по Modbus разносят по циклам: один запрос за цикл вместо всей очереди сразу. Тяжёлые вычисления выносят в редко выполняемые ветки по условию.

Верхняя граница задана сторожевым таймером: его уставка лежит в системном flash-регистре SFD2 и по умолчанию равна 200 мс. Если цикл превысит уставку, контроллер зафиксирует срабатывание сторожевого таймера, и в регистре SD450 появится значение 1.

Для измерения интервалов внутри цикла регистры времени цикла не годятся — там нужен высокоскоростной кольцевой счётчик с шагом 0,1 мс или точные таймеры ET.

Прикреплённая документация

Георгий Жуков Георгий Жуков Ведущий инженер

Этот ответ был полезен?

Не нашли ответ?

Инженер сервисной службы ответит на почту. Вопросы, которые повторяются, мы публикуем в базе знаний — без ваших контактов.

Вопрос из раздела Как измерить цикл сканирования PMP20 из программы?