Функции

Функции  выполняют обработку входных параметров и возвращают какое-либо значение. Некоторые функции (такие как SPLIT_DATE) не имеют выходных параметров.

Также добавлена поддержка всех функций обработки таблицы данных, некоторых функций, относящихся к контексту и функция evaluate

Функции обработки чисел

Функция

Описание

Тип результата

ABS(ANY_NUM IN1)

Возвращает абсолютное значение. Если аргумент не отрицательный, он возвращается. Если же аргумент отрицательный, возвращается отрицание аргумента.

Если тип аргумента является Целым или Длинным, возвращаемое значение будет типа Длинное.

ANY_NUM

ADD(ANY_NUM IN1, ANY_NUM IN2,...)

Сложение чисел (то же, что и оператор +).

ANY_NUM

DIV(ANY_NUM IN1, ANY_NUM IN2)

Деление чисел (то же, что и оператор /).

ANY_NUM

SUB(ANY_NUM IN1, ANY_NUM IN2)

Вычитание чисел (то же, что и оператор -).

ANY_NUM

MUL(ANY_NUM IN1, ANY_NUM IN2,...)

Умножения чисел (то же, что и оператор *).

ANY_NUM

MOD(ANY_INT IN1, ANY_INT2)

Остаток по модулю (то же, что и оператор IN1 MOD IN2).

ANY_INT

SQRT(LREAL IN1)

Квадратный корень.

LREAL

LOG(LREAL IN1)

Возвращает натуральный логарифм.

LREAL

LOG10(LREAL IN1)

Возвращает десятичный логарифм.

LREAL

EXP(LREAL IN1)

Возвращает экспоненту.

LREAL

EXPT(LREAL IN1, LREAL IN2)

Возведение IN1 в степень IN2 (то же, что и оператор **).

LREAL

SIN(LREAL IN1)

Синус от входного значения в радианах.

LREAL

COS(LREAL IN1)

Косинус от входного значения в радианах.

LREAL

TAN(LREAL IN1)

Тангенс от входного значения в радианах.

LREAL

ASIN(LREAL IN1)

Возвращает значение арксинуса.

LREAL

ACOS(LREAL IN1)

Возвращает значение арккосинуса.

LREAL

ATAN(LREAL IN1)

Возвращает значение арктангенса.

LREAL

ATAN2(LREAL IN1, LREAL IN2)

Возвращает угол между положительным направлением оси X и точкой, заданной координатами (x,y).

LREAL

Побитовые логические функции

Функция

Описание

Тип результата

AND(ANY_BIT IN1, ANY_BIT IN2, ...)

Побитовое И (то же, что и оператор AND или &).

ANY_BIT

OR(ANY_BIT IN1, ANY_BIT IN2, ...)

Побитовое ИЛИ (то же, что и оператор OR).

ANY_BIT

XOR(ANY_BIT IN1, ANY_BIT IN2, ...)

Исключающие ИЛИ (то же, что и оператор XOR).

ANY_BIT

NOT(ANY_BIT IN1)

Побитовое НЕ (то же, что и оператор NOT).

ANY_BIT

Функции выбора

Функция

Описание

Тип результата

LIMIT(ANY_ELEMENTARY MN, ANY_ELEMENTARY IN1, ANY_ELEMENTARY MX)

Возвращает MN, если IN1 меньше MN. Возвращает MX, если IN1 больше MX, иначе возвращает IN1.

ANY_ELEMENTARY

MAX(ANY_ELEMENTARY IN1, ANY_ELEMENTARY IN2, ...)

Возвращает большее из двух значений.

ANY_ELEMENTARY

MIN(ANY_ELEMENTARY IN1, ANY_ELEMENTARY IN2, ...)

Возвращает меньшее из двух значений.

ANY_ELEMENTARY

MUX(ANY_INT K, ANY_ELEMENTARY IN1, ...)

Выбирает одну из N входных переменных в зависимости от входной переменной K.

ANY_ELEMENTARY

SEL(BOOL G, ANY IN1,ANY IN2)

Возвращает IN1 , если G равно FALSE, иначе возвращает IN2.

ANY

Функции сравнения

Функция

Описание

Тип результата

SHL(ANY_BIT IN1, ANY_INT IN2)

Сдвиг влево на IN2 бит, биты справа заполняются нулями.

ANY_BIT

SHR(ANY_BIT IN1, ANY_INT IN2)

Сдвиг вправо на IN2 бит, биты слева заполняются нулями.

ANY_BIT

ROL(ANY_BIT IN1, ANY_INT IN2)

Циклический сдвиг влево на IN2 бит.

ANY_BIT

ROR(ANY_BIT IN1, ANY_INT IN2)

Циклический сдвиг вправо на IN2 бит.

ANY_BIT

Функции битового сдвига

Функция

Описание

Тип результата

SHL(ANY_BIT IN1, ANY_INT IN2)

Сдвиг влево на IN2 бит, биты справа заполняются нулями.

ANY_BIT

SHR(ANY_BIT IN1, ANY_INT IN2)

Сдвиг вправо на IN2 бит, биты слева заполняются нулями.

ANY_BIT

ROL(ANY_BIT IN1, ANY_INT IN2)

Циклический сдвиг влево на IN2 бит.

ANY_BIT

ROR(ANY_BIT IN1, ANY_INT IN2)

Циклический сдвиг вправо на IN2 бит.

ANY_BIT

Функции обработки строк

Функция

Описание

Тип результата

LEN(ANY_STRING IN1)

Возвращает длину строки.

INT

LEFT(ANY_STRING IN1, ANY_INT L)

Возвращает подстроку начиная с первого символа и  длины L символов.

ANY_STRING

RIGHT(ANY_STRING IN1, ANY_INT L)

Возвращает подстроку начиная с последнего символа и  длины L символов.

ANY_STRING

MIDDLE(ANY_STRING IN1, ANY_INT L, ANY_INT P)

Возвращает подстроку начиная с P позиции и длины L символов.

ANY_STRING

CONCAT(ANY_CHARS IN1, ANY_CHARS IN2, ...)

Конкатенация двух строк.

ANY_STRING

INSERT(ANY_STRING IN1, ABY_CHARS IN2, ANY_INT P)

Вставить IN2 в строку IN1 после P-й позиции символа.

ANY_STRING

REPLACE(ANY_STRING IN1,

ANY_CHARS IN2, ANY_INT L, ANY_INT P)

Заменить L символов строки IN1 строкой IN2, начиная в P-й позиции символа.

ANY_STRING

FIND(ANY_STRING IN1, ANY_CHARS IN2)

Найти позицию символа первого вхождения IN2 в строку IN1. Если вхождения строки IN2 не обнаружены, то вернет 0.

INT

Функции обработки даты/времени

Функция

Описание

Тип результата

ADD_DT_TIME(DT IN1, TIME IN2)

Сложение времени и даты суток (то же, что и оператор +).

DT

ADD_TIME(TIME IN1, TIME IN2)

Сложение продолжительности времени (то же, что и оператор +).

TIME

ADD_TOD_TIME(TOD IN1, TIME IN2)

Сложение времени суток и продолжительности времени (то же, что и оператор +).

TOD

SUB_DATE_DATE(DATE IN1, DATE IN2)

Вычитание двух дат (то же, что и оператор -).

TIME

SUB_DT_DT(DT IN1, DT IN2)

Вычитание двух дат (то же, что и оператор -).

TIME

SUB_DT_TIME(DATE IN1, TIME IN2)

Вычитание двух дат (то же, что и оператор -).

DT

SUB_TIME_TIME(TIME IN1, TIME IN2)

Вычитание двух дат (то же, что и оператор -).

TIME

SUB_TOD_TIME(TOD IN1, DATE IN2)

Вычитание двух дат (то же, что и оператор -).

TOD

SUB_TOD_TOD(TOD IN1, TOD IN2)

Вычитание двух дат (то же, что и оператор -).

TIME

MUL_TIME(TIME IN1, ANY_NUM IN2)

Умножения продолжительности времени на число (то же, что и оператор *).

TIME

DIV_TIME(TIME IN1, ANY_INT IN2)

Деление продолжительности времени на число (то же, что и оператор /).

TIME

CONCAT_DATE_TOD(DATE IN1, TOD IN2)

Конкатенация даты и времени.

DT

CONCAT_DATE(ANY_INT YEAR, ANY_INT MONTH, ANY_INT DAY)

Конкатенация даты и времени.

DATE

CONCAT_TOD(ANY_INT HOUR, ANY_INT MINUTE, ANY_INT SECOND, ANY_INT MILLISECOND)

Конкатенация времени.

TOD

CONCAT_DT(ANY_INT YEAR, ANY_INT MONTH, ANY_INT DAY,ANY_INT HOUR, ANY_INT MINUTE, ANY_INT SECOND, ANY_INT MILLISECOND)

Конкатенация даты и времени.

DT

SPLIT_DATE(DATE IN1, DINT YEAR, DINT MONTH, DINT DAY)

Разбиение даты.


SPLIT_DT(DT IN1, DINT YEAR, DINT MONTH, DINT DAY,DINT HOUR, DINT MINUTE, DINT SECOND, DINT MILLISECOND)

Разбиение даты и времени.


SPLIT_TOD(DINT HOUR, DINT MINUTE, DINT SECOND, DINT MILLISECOND)

Разбиение времени.


DAY_OF_WEEK(DATE IN1)

Возвращает день недели.

DINT

Функции проверки типов

Функция

Описание

Тип результата

IS_DATATABLE(OBJECT IN1)

Возвращает TRUE, если аргумент является DATATABLE.

BOOL

IS_LINT(OBJECT IN1)

Возвращает TRUE, если аргумент является LINT.

BOOL

IS_DINT(OBJECT IN1)

Возвращает TRUE, если аргумент является DINT.

BOOL

IS_BOOL(OBJECT IN1)

Возвращает TRUE, если аргумент является BOOL.

BOOL

IS_LREAL(OBJECT IN1)

Возвращает TRUE, если аргумент является LREAL.

BOOL

IS_REAL(OBJECT IN1)

Возвращает TRUE, если аргумент является REAL.

BOOL

IS_WSTRING(OBJECT IN1)

Возвращает TRUE, если аргумент является WSTRING.

BOOL

IS_DT(OBJECT IN1)

Возвращает TRUE, если аргумент является DT.

BOOL

Функции приведения типов

Данная таблица отображает функции приведения типов. Каждая функция называется как ИСХОДНЫЙ_ТИП_TO_ЦЕЛЕВОЙ_ТИП (например, функция приведения типа LREAL в BOOL , будет LREAL_TO_BOOL).

Исходный тип

Целевой тип

real

integer

unsigned

bit

date & times

char

other

LREAL

REAL

LINT

DINT

INT

SINT

ULINT

UDINT

UINT

USINT

LWORD

DWORD

WORD

BYTE

BOOL

TIME

DT

DATE

TOD

WSTRING

WCHAR

DATATABLE

OBJECT

LREAL

X

X

X

X

X

X

X

X

X

X

X

X

X

X

X

X

REAL

X

X

X

X

X

X

X

X

X

X

X

LINT

X

X

X

X

X

X

X

X

X

X

X

X

X

X

X

X

DINT

X

X

X

X

X

X

X

X

X

X

X

X

X

INT

X

X

X

X

X

X

X

X

SINT

X

X

X

X

X

X

X

ULINT

X

X

X

X

X

X

X

X

X

X

X

X

UDINT

X

X

X

X

X

X

X

X

X

UINT

X

X

X

X

X

X

USINT

X

X

X

X

LWORD

X

X

X

X

X

X

X

X

X

X

X

X

X

X

X

DWORD

X

X

X

X

X

X

X

X

X

X

X

X

X

X

WORD

X

X

X

X

X

X

X

X

X

X

X

X

BYTE

X

X

X

X

X

X

X

X

X

X

X

BOOL

X

X

X

X

X

X

X

X

X

X

TIME

X

DT

X

X

X

DATE

X

TOD

X

WSTRING

X

WCHAR

X

X

X

X

X

DATATABLE

X

X

X

X

X

X

X

X

X

X

X

X

OBJECT

X

X

X

X

X

X

X

X

Пользовательские функции

Тип функций (тип возвращаемого значения) может быть любым из числа стандартных типов данных или типов, созданных пользователем. Тело функции может быть описано на языках ST или FBD. Использовать SFC нельзя. Для того, чтобы функция имела возвращаемый тип и ее можно было использовать в выражениях, необходимо в секции VAR_OUTPUT ... END_VAR создать переменную c именем, совпадающим с именем функции (контекста).

Пример: Предположим, что мы хотим создать функцию с именем foo, которая будет возвращать значение типа BOOL. Следовательно, в секцию, необходимо добавить переменную:

VAR_OUTPUT

   BOOL : foo;

END_VAR