3.4. Процессы управления

3.4.1. Создание процесса управления
3.4.2. Секции процесса управления
3.4.2.1. Cтартовая секция
3.4.2.2. Конечная секция
3.4.2.3. Подпрограммы процесса управления
3.4.2.4. Последовательные программы

3.4.1. Создание процесса управления

Добавим процесс управления к контроллеру "QNXMaster":

Рисунок 3.19. Добавление процесса управления

Добавление процесса управления


Рисунок 3.20. Диалог Создание процесса управления

Диалог Создание процесса управления


Развернув добавленный элемент дерева, можем видеть элементы (секции), из которых он состоит:

Рисунок 3.21. Секции процесса управления

Секции процесса управления


3.4.2. Секции процесса управления

3.4.2.1. Cтартовая секция

Стартовая секция процесса управления может содержать программы, написанные на языке ST, и предназначена для отделения неких начальных действий от основной программы. Создадим программу в стартовой секции:

Рисунок 3.22. Добавление функции в стартовую секцию

Добавление функции в стартовую секцию


Рисунок 3.23. Диалог Новая функция

Диалог Новая функция


Откроем созданную функцию:

Рисунок 3.24. Контекстное меню функции в стартовой секции

Контекстное меню функции в стартовой секции


Напишем небольшую программу на ST. Она пока что будет состоять только из одного условного перехода, включающего автоматические режимы всех механизмов установки, если был включен общий автоматический режим:

if(mdGlobalAuto)then
    mdWaterValveAuto:=true;
    mdPumpAuto:=true;
    mdSteamValveAuto:=true;
end_if
return true;
                        

В окне редактирования программы код выглядит вот так:

Рисунок 3.25. Окно редактора ST-программы

Окно редактора ST-программы


Редактор ST имеет несколько полезных функций, среди них - дополнение кода и автоформатирование кода. Дополнение кода (работает для имен функций и имен переменных) вызывается нажатием Ctrl+Space (конечно, перед этим нужно набрать хотя бы один символ, чтобы редактору было, что дополнять). Вот как это выглядит:

Рисунок 3.26. Дополнение кода в редакторе ST

Дополнение кода в редакторе ST


Автоформатирование кода выполняется при нажатии Alt+Ctrl+F

3.4.2.2. Конечная секция

По аналогии со стартовой секцией процесса управления, конечная секция может содержать завершающие действия, выполняемые гарантированно после основной программы. В остальном все сказанное о стартовой секции процесса управления верно также и для конечной секции. Создадим в конечной секции функцию, которая будет обнулять флаг сброса неисправностей.

Рисунок 3.27. Функция в конечной секции

Функция в конечной секции


3.4.2.3. Подпрограммы процесса управления

Подпрограммы, созданные в данной секции, могут быть использованы в секции Последовательные программы. Языки подпрограмм - ST и FBD. Создадим на ST функциональный блок для управления клапаном подачи холодной воды (см. также раздел Постановка задачи).

Рисунок 3.28. Контекстное меню секции Подпрограммы

Контекстное меню секции Подпрограммы


Рисунок 3.29. Диалог создания нового функционального блока

Диалог создания нового функционального блока


Рисунок 3.30. Редактирование функционального блока

Редактирование функционального блока


Можно видеть, что окно редактирования функционального блока отличается от окна редактирования функции на ST. Здесь присутствует Таблица входов/выходов (таблица пин-компонент). Она содержит входы, выходы и локальные переменные для FBD функций и блоков, моделируя таким образом входные и выходные точки связи а также ячейки памяти (переменные) с локальной областью видимости. Подробно о редактировании входов/выходов функциональных блоков см. статью справки S3-IDE «Таблица пин-компонент». Созданный таким образом функциональный блок поместим теперь в основную программу. Для этого перейдем к рассмотрению секции Последовательные программы .

3.4.2.4. Последовательные программы

В этой секции выполняются основные действия с переменными S3. Секция может содержать произвольное количество программ на FBD и SFC, которые будут выполняться в той последовательности, в которой они расположены в ветке Дерева проекта. Для начала создадим в секции FBD программу, в которую будем помещать наши функциональные блоки:

Рисунок 3.31. Контекстное меню секции Последовательные программы

Контекстное меню секции Последовательные программы


Рисунок 3.32. Диалог Создание FBD-программы

Диалог Создание FBD-программы


Если теперь открыть окно S3-IDE Палитра, можно видеть там в области Subroutines созданный нами функциональный блок WaterValve.

Рисунок 3.33. Палитра c пользовательским функциональным блоком

Палитра c пользовательским функциональным блоком


Блок можно вставить из палитры, сначала нажав на его кнопку на Палитре, а затем нажав в точке, в которую вы хотите поместить блок. Можно также просто перетащить блок в окно FBD-программы из Дерева проекта. Результат этих операций следующий:

Рисунок 3.34. Функциональный блок в FBD-программе

Функциональный блок в FBD-программе


Теперь присоединим переменные к входам и выходам блока.

Рисунок 3.35. Контекстное меню редактора FBD

Контекстное меню редактора FBD


Рисунок 3.36. Выбор переменной

Выбор переменной


Рисунок 3.37. Переменная на схеме

Переменная на схеме


Чтобы связать переменную и вход блока, их нужно соединить.

Рисунок 3.38. Переменная, привязанная ко входу блока

Переменная, привязанная ко входу блока


Проделаем эту операцию для всех входов блока, а еще добавим комментарий к программе:

Рисунок 3.39. Готовая FBD-программа

Готовая FBD-программа