Описание

Функция в языке Structured Text (ST) — это программный блок, который принимает входные параметры, выполняет вычисления и возвращает одно значение.

Функция в ST аналогична функциям в языках C/C++ и используется для реализации вычислительной логики без хранения состояния.

Основные свойства функции:
  1. Имеет входные параметры (VAR_INPUT)
  2. Возвращает значение через имя функции
  3. Не хранит состояние между вызовами
Примечание:
Функция должна обязательно присваивать значение своему имени, иначе результат будет неопределён.
Важно!
Функции не предназначены для хранения состояния - для этого используются Function Block (FB).

Создание функции в Полигон 2

Последовательность действий для создания элемента типа «Функция (POU)» в среде разработки Полигон 2:
  1. В библиотеке проекта или отдельной библиотеки в группе типов вызовите контекстное меню и выберите «Создать».
  2. В открывшемся окне задайте имя функции, выберите радио-кнопку «Функция (POU)» и задайте тип возвращаемого значения.
  3. Выберите созданный тип функции в дереве проекта.
  4. Вызовите контекстное меню и выберите «Создать» для добавления аргумента.
  5. В открывшемся окне задайте имя аргумента функции, его тип данных и нажмите «OK».
  6. Используйте окно редактора кода для добавления локальных переменных и реализации логики функции.

Видео-инструкция
Примечание:
Аргументы функции в Полигон 2 соответствуют входным параметрам VAR_INPUT в ST.
Важно!
Тип возвращаемого значения функции задаётся на этапе создания и влияет на дальнейшее использование функции в проекте.

Пример реализации

Пример простой функции сложения:
FUNCTION Add : INT
VAR_INPUT
 a : INT;
 b : INT;
END_VAR


Add := a + b;

Пример вызова функции:
result := Add(3, 5);

Сравнение с Function Block

Характеристика FUNCTION FUNCTION_BLOCK
Возвращает значение Да Нет (через выходы)
Хранит состояние Нет Да
Назначение Вычисления Логика с памятью

Рекомендации по использованию

Используйте FUNCTION, если требуется:
  1. Математические вычисления
  2. Преобразование данных
  3. Простая логика без состояния
Внимание!
Не используйте функцию для логики с памятью или таймерами — это приведёт к некорректной работе.