Функции
Функции выполняют обработку входных параметров и возвращают какое-либо значение. Некоторые функции (такие как 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 |