Программные компоненты
Для обработки данных в приложении Unimod PRO 2 используются программные компоненты: программы, дочерние программы, функциональные блоки и функции. Они содержат алгоритм обработки данных, описанный на языках программирования ST или FBD/LD. Язык программирования выбирается при добавлении программного компонента в приложение и не может быть изменен. Для изменения языка потребуется добавить новый программный компонент с указанием требуемого языка разработки.
Основными программными компонентами приложения Unimod PRO 2 являются программы, которые последовательно выполняются в каждом цикле работы контроллера. Время цикла может иметь различное значение в зависимости от сложности приложения и количества подключенных модулей ввода-вывода. По окончании текущего цикла, сразу начинается следующий. Один цикл контроллера включает операции:
-
Сканирование входов контроллера с сохранением полученных данных.
-
Последовательное выполнение всех программ проекта.
-
Изменение выходов контроллера на основании результатов вычислений предыдущего этапа.

Разработанное в среде Unimod PRO 2 приложение является синхронным, поэтому вызывающий программный компонент приостанавливает свое выполнение до полного завершения работы вызванного им компонента.
Рассмотрим последовательность выполнения вложенных программных компонентов, продемонстрированную на следующем изображении:

-
Процесс выполнения программы приостанавливается, а поток управления передается вызываемой дочерней программе child_program().
-
Процесс выполнения дочерней программы приостанавливается, а поток управления передается вызываемой функции function().
-
В функции нет вложенных вызовов, поэтому после выполнения всех заданных операции она завершает свое выполнение и возвращает поток управления обратно дочерней программе.
-
В дочерней программе больше нет вложенных вызовов, поэтому после выполнения оставшихся операций она завершает свое выполнение и возвращает поток управления обратно родительской программе.
-
Родительская программа возобновляет свое выполнение и передает управление следующему оператору.
Глубина вложенного вызова программных компонентов ограничена только размером выделенной стековой памяти. Каждый вложенный вызов занимает часть стека для хранения экземпляров переменных и точки возврата. При большой глубине вложенности возможно переполнение стека, что приведет к аварийной остановке приложения.
