ГОСТ Р МЭК 61131-3—2016
Примечание — Пользователь может явно задать тип результата операции, используя типизированные
функции.
Пример 3
int3 := inti + int2 (‘ Сложение выполняется как целочисленная операция ’)
dint1:= inti * int2; (‘ Сложение выполняется как целочисленная операция, когда результат преоб
разуется в тип DINTи присваивается переменной dintl ‘)
dint1:= dint2 + int3; (’ int3 преобразуется в тип DINT, сложение выполняется как сложение DINT*)
6.6.2 Функции
6.6.2.1 Общие положения
Функция — это программный компонент, который не сохраняет свое состояние, то есть входные
параметры, внутренние переменные, выходные параметры и результат.
Если не оговорено иное, к функциям применяются общие свойства программных компонентов.
Выполнение функции:
- обычно предоставляет временный результат, который может быть одним элементом, многоэле
ментным массивом или структурой;
- возможно предоставляет выходные переменные, которые могут быть многоэлементными;
- может изменять значение входных-выходных переменных и переменных VAR_EXTERNAL.
Функция с результатом может вызываться в выражении или как оператор. Функция без результата
не должна вызываться внутри выражения.
6.6.2.2 Объявление функции
Объявление функции состоит из следующих элементов, как определено в таблице 19. Данные
свойства объявляются так же, как описано для функциональных блоков.
При объявления функции применяются следующие правила, заданные в таблице 19:
1 Объявление начинается с ключевого слова FUNCTION, за которым следует идентификатор,
указывающий имя функции.
2 Если функция предоставляет результат, то далее следует символ «:» и тип данных значения,
возвращаемого функцией. Если функция не предоставляет результата, двоеточие и тип данных опуска
ются.
3 Конструкции с VAR JNPUT, VAR_OUTPUT и VAR_IN_OUT. если требуются, указывающие имена
и типы данных параметров функции.
4 Значения переменных, которые передаются функции через конструкцию VAR_EXTERNAL. могут
изменяться из функции.
5 Значения констант, которые передаются функции через конструкцию VAR_EXTERNAL
CONSTANT, не могут изменяться из функции.
6 Значения переменных, которые передаются функции через конструкцию VAR_EXTERNAL. могут
изменяться из функции.
7 Массивы переменной длины могут использоваться как VARJNPUT. VAR OUTPUT и VAR_IN_
OUT.
8 Входные-выходные и временные переменные могут инициализироваться.
9 Могут использоваться входная переменная EN и выходная переменная ENO как описано.
10 Если требуется, конструкция VAR...END_VAR. а также последовательность VAR_TEMP...END_
VAR используются для определения имен и типов внутренних временных переменных.
В отличие от функциональных блоков, переменные, объявленные в секции VAR. не сохраняются.
11 Если в определении переменных стандартной функции используются родовые типы данных
(например. ANYJNT), то правила использования фактических типов параметров таких функций явля
ются частью определения функции.
12 Конструкции инициализации переменных могут использоваться для объявления начальных
значений входных параметров функции, внутренних и выходных переменных.
13 Ключевое слово END_FUNCTION завершает объявление.
57