Добавим процесс управления к контроллеру "QNXMaster":
Развернув добавленный элемент дерева, можем видеть элементы (секции), из которых
он состоит:
Стартовая секция процесса управления может содержать программы, написанные на языке ST, и предназначена для отделения неких начальных действий от основной программы. Создадим программу в стартовой секции:
Откроем созданную функцию:
Напишем небольшую программу на
ST. Она пока что будет состоять только из одного условного
перехода, включающего автоматические режимы всех механизмов установки, если
был включен общий автоматический режим:
if(mdGlobalAuto)then mdWaterValveAuto:=true; mdPumpAuto:=true; mdSteamValveAuto:=true; end_if return true;
В окне редактирования программы код выглядит вот так:
Редактор
ST имеет несколько полезных функций, среди них -
дополнение кода и автоформатирование кода. Дополнение кода (работает для
имен функций и имен переменных) вызывается нажатием
Ctrl+Space
(конечно, перед этим нужно набрать хотя бы один символ, чтобы редактору
было, что дополнять). Вот как это выглядит:
Автоформатирование кода выполняется при нажатии
Alt+Ctrl+F
По аналогии со стартовой секцией процесса управления, конечная секция может содержать завершающие действия, выполняемые гарантированно после основной программы. В остальном все сказанное о стартовой секции процесса управления верно также и для конечной секции. Создадим в конечной секции функцию, которая будет обнулять флаг сброса неисправностей.
Подпрограммы, созданные в данной секции, могут быть использованы в секции
Последовательные программы
. Языки подпрограмм -
ST и
FBD. Создадим на
ST функциональный блок для управления клапаном подачи
холодной воды (см. также раздел
Постановка задачи).
Можно видеть, что окно редактирования функционального блока отличается от
окна редактирования функции на
ST. Здесь присутствует
Таблица входов/выходов (таблица пин-компонент)
.
Она содержит входы, выходы и локальные переменные для FBD функций и блоков,
моделируя таким образом входные и выходные точки связи а также ячейки памяти
(переменные) с локальной областью видимости. Подробно о редактировании
входов/выходов функциональных блоков см. статью справки
S3-IDE
«Таблица пин-компонент». Созданный
таким образом функциональный блок поместим теперь в основную программу.
Для этого перейдем к рассмотрению секции
Последовательные программы
.
В этой секции выполняются основные действия с переменными
S3. Секция может содержать произвольное количество
программ на
FBD и
SFC, которые будут выполняться в той последовательности,
в которой они расположены в ветке
Дерева проекта
. Для начала создадим в секции FBD
программу, в которую будем помещать наши функциональные блоки:
Если теперь открыть окно
S3-IDE
Палитра
, можно видеть там в области
Subroutines
созданный нами функциональный блок
WaterValve
.
Блок можно вставить из палитры, сначала нажав на его
кнопку на
Палитре
, а затем нажав в точке, в которую вы хотите
поместить блок. Можно также просто перетащить блок в окно
FBD-программы из
Дерева проекта
. Результат этих операций следующий:
Теперь присоединим переменные к входам и выходам блока.
Чтобы связать переменную и вход блока, их нужно соединить.
Проделаем эту операцию для всех входов блока, а еще
добавим комментарий к программе: