Управление требует непрерывного циклического контроля. В любом цифровом устройстве непрерывность достигается путем реализации дискретных алгоритмов, которые повторяются через очень малые промежутки времени. Таким образом, все вычисления в программируемом логическом контроллере ПЛК происходят циклически. Одну итерацию, которая включает в себя обсчет, замер, а также выработку логического решения, называют рабочим циклом ПЛК или рабочим циклом микроконтроллера. Действия, которые будут выполнятся ПЛК, напрямую зависят от состояния предыдущего входов и программы, которую он реализует.
При подаче питания на микроконтроллер он выполняет самотестирование и настройку необходимых аппаратных ресурсов, очистку оперативной памяти (ОЗУ), выполняет контроль целостности программы пользователя. В случае, когда пользовательская программа сохранена в памяти ПЛК, контроллер переходит к основной работе, которая состоит из постоянно повторяющихся определенных действий, которые входят в рабочий цикл.
В свою очередь, рабочий цикл микроконтроллера или ПЛК можно разделить на следующие этапы:
- Начало цикла;
- Обработка входов (чтение информации из внешних источников);
- Выполнение пользовательской программы;
- Установка выходов (запись выходов);
- Обслуживание аппаратных ресурсов ПЛК;
- Монитор исполнения;
- Контроль времени цикла;
- Переход на начало цикла;
Таким образом, в самом начале цикла происходит процесс физического считывания значений на входах микроконтроллера. Полученные в процессе чтения данные сохраняются в области памяти входов, создавая тем самым полную одномоментную зеркальную копию значений входов.
После чего начинается процесс выполнения пользовательской программы, которая работает с копиями значений входов и выходов, размещенных в оперативной памяти. Если программа пользователя не загружена или остановлена самим пользователем, то описанные выше действия не выполняются. Отладчик программатора имеет доступ к образу входов-выходов, что позволяет проводить исследовательские работы и управлять выходами вручную.
После выполнения кода программы выходы ПЛК устанавливаются в соответствии с полученными расчетными значениями.
Обслуживание аппаратных ресурсов – это обеспечение работы оперативного самотестирования, системных таймеров, индикации состояния, часов реального времени и других функций.
Монитор системы исполнения – это огромное количество функций, необходимых для обеспечения взаимодействия со средой программирования и отладки программы, а также для работы с сервером и сетью. В функцию системы исполнения обычно входит – загрузка кода программы пользователя в электрически перепрограммируемую память и оперативную память ОЗУ, обеспечения просмотра и редактирования переменных, контроль времени цикла, управление последовательностью реализации задач, пошаговое управление и другие функции.
Программа, загруженная пользователем или пользовательская программа, работает только с мгновенными копиями входов. Соответственно значения входов в процессе выполнения одного цикла изменятся не будут. Этот принцип является фундаментальным для построения ПЛК сканирующего типа. При использовании данного подхода исключается неоднозначность алгоритма обработки данных в разных его ветвях. Более того, процесс чтения значения входа производится из ОЗУ, а не непосредственно с самого входа, что значительно ускоряет процесс обработки данных.
Временем сканирования называют общую продолжительность рабочего цикла микроконтроллера. Время сканирования во многом зависит от длины фазы пользовательской программы. Время, которое занимается остальными фазами рабочего цикла практически всегда остается постоянным. Для задач среднего объема в ПЛК с системой исполнения CoDeSys время распределится примерно таким образом – 98% программа пользователя и 2% остальные задачи.
Также существуют задачи, в которых плавающее время цикла может оказывать очень существенное влияние на результат – например, системы автоматического регулирования. Для устранения этих проблем у многих микроконтроллерах предусмотрен контроль времени цикла. При слишком быстром исполнении кода программы в рабочий цикл искусственным путем добавляют время задержки, а в случае отсутствия контроля времени цикла подобные задачи реализуют исключительно на таймерах.