Стандартные функции

<< Click to Display Table of Contents >>

Navigation:  Проект > Элементы дерева объектов > Палитра ФБ > Служебные > Программа ST >

Стандартные функции

Операторы

Расшифровка

Операторы сравнения

GT - убывающая последовательность

GE - монотонная последовательность

EQ - равенство

LE - монотонная последовательность

LT - возрастающая последовательность

Арифметические операторы

 

ADD - оператор сложения

MUL - оператор умножения

SUB - оператор вычитания

DIV - оператор деления

MOD - вычисление остатка от деления целочисленных значений

ABS - модуль числа

SQRT - извлечение квадратного корня

LN - вычисление натурального логарифма

EXP - вычисление экспоненты

SIN - вычисление синуса

COS - вычисление косинуса

TAN - вычисление тангенса

ASIN - вычисление арксинуса

ACOS - вычисление арккосинуса

ATAN - вычисление арктангенса

EXPT - вычисление числа в степени

Логические и битовые операторы

AND - оператор"И"

OR - оператор "ИЛИ"

NOT - оператор "НЕ"

XOR - оператор "Исключающее ИЛИ"

Операторы выборки

SEL - бинарный выбор

MAX - наибольшее из двух значений

MIN - наименьшее из двух значений

MUX - расширяемый мультиплексор

LIMIT - функция ограничения

Строковые функции

LEN - возвращает длину строки

LEFT - возвращает левую часть строки заданной длины

RIGHT - возвращает правую часть строки заданной длины

MID - выделение фрагмента строки

CONCAT - объединение строки

INSERT - позволяет вставить одну строку в определённую позицию другой строки

DELETE - удаление части строки

REPLACE - замена части подстроки другой строкой с указанной позиции

FIND - поиск подстроки в строке

Операции преобразования

REAL_TO_INT - преобразование вещественной переменной в целочисленную

TIME_TO_REAL - преобразование переменной времени в вещественную

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

ADD_TIME или ADD - суммирует две переменные TIME

ADD_TOD_TIM или ADD - прибавляет к переменной типа TOD (время) значение переменной типа TIME

SUB_TIME или SUB - разность двух переменных TIME

SUB_DATE_DATE или SUB - разность двух переменных типа DATE

SUB_TOD_TIME или SUB - вычитает из переменной типа TOD (время) значение переменной TIME

SUB_TOD_TOD или SUB - разность двух переменных TOD (время)

SUB_DT_TIME или SUB - вычитает из переменной DT значение переменной TIME

SUB_DT_DT или SUB - разность двух переменных DT

MULTIME или MUL - умножает переменную типа TIME на любую числовую переменную

DIVTIME или DIVE - делит переменную типа  TIME на любую числовую переменную

CONCAT_DATE_TOD - объединяет значения переменных DATE и TOD в одну переменную типа DT

Операторы сдвига

SHL - побитный сдвиг влево

SHR - побитный сдвиг вправо

ROL - циклический сдвиг влево

ROR - циклический сдвиг вправо

Операторы сравнения

GT

Убывающая последовательность. Эквивалентен операции >.

Пример:

out:=GT (in1,in2,in3);

(*эквивалентно*)

out:=(in1>in2) & (in2>in3);

В данном операторе допускается использование двух и более аргументов.

GE

Монотонная последовательность. Эквивалентен операции >=.

Пример:

out:=GE (in1,in2,in3);

(*эквивалентно*)

out:=(in1>=in2) & (in2>=in3);

В данном операторе допускается использование двух и более аргументов.

EQ

Равенство. Эквивалентен операции =.

Пример:

out:=EQ (in1,in2,in3);

(*эквивалентно*)

out:=(in1=in2) & (in2=in3);

В данном операторе допускается использование двух и более аргументов.

LE

Монотонная последовательность. Эквивалентен операции <=.

Пример:

out:=LE (in1,in2,in3);

(*эквивалентно*)

out:=(in1<=in2) & (in2<=in3);

В данном операторе допускается использование двух и более аргументов.

LT

Возрастающая последовательность. Эквивалентен операции <.

Пример:

out:=LT (in1,in2,in3);

(*эквивалентно*)

out:=(in1<in2) & (in2<in3);

В данном операторе допускается использование двух и более аргументов.

Арифметические операторы.

ADD

Оператор сложения. Эквивалентен операции +.

Пример:

out:=ADD(in,in1);

(*эквивалентно*)

out:=in+in1;

В данном операторе допускается использование двух и более аргументов.

MUL

Оператор умножения. Данная функция можно использовать как для переумножения чисел, так и для переумножение типа Time на число. Для операций с числами можно использовать операцию *.

out:=MUL(in,in1);

(*эквивалентно*)

out:=in*in1;

В данном операторе допускается использование двух и более аргументов.

SUB

Оператор вычитания. Эквивалентен операции –

out:=SUB(in,in1);

(*эквивалентно*)

out:=in-in1;

DIV

Оператор умножения. Данная функция можно использовать как для деления чисел, так и для деления типа Time на число. Для операций с числами можно использовать операцию /.

out:=DIV(in,in1);

(*эквивалентно*)

out:=in/in1;

MOD

Вычисление остатка от деления целочисленных значений.

In,in1, out – целочисленные переменные.

Пример:

out:=MOD(in,in1); (*in=9, in1=2*)

(*эквивалентно*)

out:=in MOD in1;

(*результат out=1*)

ABS

Модуль числа. in, out – любые числовые переменные.

Пример:

out:=ABS(in); (*in = -9*)

(*результат out=9*)

SQRT

Извлечение квадратного корня. Аргумент in может быть целочисленным или вещественным. Результат out – real.

Пример:

out:=SQRT(in); (*in = 10*)

(*результат out=3,162*)

LN

Вычисление натурального логарифма. Аргумент in может быть целочисленным или вещественным. Результат out – real.

Пример:

out:=LN(in); (*in = 5*)

(*результат out=1,609*)

EXP

Вычисление экспоненты - e^x. Аргумент in может быть целочисленным или вещественным. Результат out – real.

Пример:

out:=EXP(in); (*in = 5*)

(*результат out=148*)

SIN

Вычисление синуса. Аргумент in может быть целочисленным или вещественным. Результат out – real.

Примечание. Все тригонометрические функции работают с радианами.

Пример:

out:=sin(in); (*in = 0.52 или 30 градусов*)

(*результат out=0.5*)

COS

Вычисление косинуса. Аргумент in может быть целочисленным или вещественным. Результат out – real.

Примечание. Все тригонометрические функции работают с радианами.

Пример:

out:= COS(in); (*in = 0.52 или 30 градусов*)

(*результат out=0.867*)

TAN

Вычисление тангенса. Аргумент in может быть целочисленным или вещественным. Результат out – real.

Примечание. Все тригонометрические функции работают с радианами.

Пример:

out:= TAN(in); (*in = 0.785 или 45 градусов*)

(*результат out=1*)

ASIN

Вычисление арксинуса. Аргумент in и out – real.

Примечание. Все тригонометрические функции работают с радианами.

Пример:

out:= ASIN(in); (*in = 0.5*)

(*результат out=0.5235 или 30 градусов*)

ACOS

Вычисление арккосинуса. Аргумент in и out – real.

Примечание. Все тригонометрические функции работают с радианами.

Пример:

out:= ACOS(in); (*in = 0.7*)

(*результат out=0.8 или 45 градусов*)

ATAN

Вычисление арктангенса. Аргумент in и out – real.

Примечание. Все тригонометрические функции работают с радианами.

Пример:

out:= ATAN(in); (*in = 2*)

(*результат out=1.1 или 63 градуса*)

EXPT

Вычисление числа в степени. Out=in^in1. In –может целочисленным или вещественным out – real.

Пример:

out:= EXPT(in,in1); (*in = 2, in1=3,3*)

(*эквивалентно*)

out:= in**in1;

(*результат out=9.89*)

где in – число возводимое в степень, in1 – степень.

Логические и битовые операторы.

AND

Оператор И. Тип данных – bool, byte, word, dword, lword.

Пример:

out:=in AND in1;

В данном операторе допускается использование двух и более аргументов.

OR

Оператор ИЛИ. Тип данных – bool, byte, word, dword, lword.

Пример:

out:=in OR in1;

В данном операторе допускается использование двух и более аргументов.

XOR

Оператор исключающее ИЛИ. Тип данных – bool, byte, word, dword, lword.

Пример:

out:=in XOR in1;

В данном операторе допускается использование двух и более аргументов.

NOT

Оператор НЕ.  Тип данных – bool, byte, word, dword, lword.

Пример:

out:=NOT in;

Операторы выборки.

SEL

Бинарный выбор.

Пример:

out:=SEL(usl,in1 ,in2);

out, in1,in2 – могут быть любого типа. Usl – тип bool. Оператор работает следующим образом, если usl - истина то функция возвращает in2, если usl – ложь, то функция возвращает in1.

MAX

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

Пример:

out:=MAX(in,in1);

out, in, in1 – тип данных real или int.

В данном операторе допускается использование двух и более аргументов.

MIN

Функция возвращает наименьшее из двух значений.

Пример:

out:=MIN(in,in1);

out, in, in1 – тип данных числовой.

В данном операторе допускается использование двух и более аргументов.

MUX

Расширяемый мультиплексор.

Пример:

out:=MUX(0, in1,in2,in3);

out, in1, in2, in3 – тип данных числовой.

В данном операторе допускается использование двух и более аргументов.

LIMIT

Функция ограничения. Представляет собой комбинацию функций MIN и MAX.

Пример:

out:=LIMIT(niz,in,verh);

Где niz – нижнее значение, verh – верхнее значение, in – входная переменная. Если значение переменной ниже niz, то функция возвращает значение niz. Если значение переменной больше verh, то функция возвращает значение verh. Если значение переменной in находится между значениями niz и verh, функция возвращает значение in.

Тип данных in, niz, verh, out – real или int.

Строковые функции.

LEN

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

Пример:

out:=LEN(IN:="MasterSCADA"); (*результат - 11*)

LEFT

Возвращает левую часть строки заданной длины.

Пример:

str:=LEFT(IN:="MasterSCADA",L:=6);(*результат - Master *)

RIGHT

Возвращает правую часть строки заданной длины.

Пример:

str:=RIGHT(IN:="MasterSCADA",L:=5);(*результат - SCADA *)

MID

Функция позволяет выделить фрагмент строки.

Пример:

str1:=MID(IN:="MasterSCADA",L:=4,P:=2);(*результат - aster *)

CONCAT

Функция объединения строки

Пример:

str_end:=CONCAT("Mas","terSCA","DA");(*результат - MasterSCADA *)

INSERT

Функция позволяет вставить одну строку в определенную позицию другой строки.

Пример:

str_end:=INSERT(IN1:="MasDA",IN2:="terSCA",P:=3);(*результат - MasterSCADA *)

DELETE

Функция удаления части строки.

Пример:

str_end:=DELETE(IN:="MasterSCADA",L:=3,P:=4);(*результат - MasSCADA *)

REPLACE

Функция заменяется часть подстроки, другой строкой с указанной позиции.

Пример:

str_end:=REPLACE(IN1:="MasterSCADA",IN2:="ttt",L:=4,P:=3);(*результат - MatttSCADA *)

FIND

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

Пример1:

out:=FIND(IN1:="MasterSCADA",IN2:="ter"); (*результат - 4 *)

Пример2:

out:=FIND(IN1:="MasterSCADA",IN2:="tor"); (*результат - 0 *)

Операции преобразования.

REAL_TO_INT

Функция преобразования вещественной переменную в целочисленную. При проведении операции происходит округление значения переменной по следующему правилу: если дробная часть составляет 0.5 и выше, то округление идет в большую сторону, если дробная часть меньше 0.5 то в меньшую сторону.

Пример:

out:=REAL_TO_INT(in); (*если in=1.5 - то out=2; если in=1.4 - то out=1*)

TIME_TO_REAL

Функция преобразования переменной времени в вещественную. В результате преобразования на выходе формируется вещественное число, целая часть которого – количество дней прошедших с 1 января 1900 до преобразуемой даты плюс 1 день.

В дробной части находится отношение количества прошедших секунд с полуночи, к количеству секунд в сутках (86400 секунд).

Например, если текущее время 12:45:20, то в дробной части после преобразования будет число:

D=(12∙60∙60+45∙60+20)/86400=45920/86400=0.53148148

Если текущая дата 18 июля 2010 года, то тогда после преобразования на выходе будет число 40377.531148148

Пример:

out:=TIME_TO_REAL(in);

 

Функции для работы со временем.

ADD_TIME или ADD

Функция суммирует две переменные TIME.

var

in:TIME;    

in1:TIME;

out:TIME;

end_var

out:=ADD_TIME(in,in1);

ADD_TOD_TIME или ADD

Функция прибавляет к переменной типа TOD (время) значение переменной типа TIME.

var

in:TOD;

in1:TIME;

out:TOD;

end_var

out:=ADD_TOD_TIME(in,in1);

ADD_DT_TIME или ADD

Функция прибавляет к переменной DT (дата и время) значение переменной TIME.

var

in:DT;

in1:TIME;

out:DT;

end_var

out:=ADD_DT_TIME(in,in1);

SUB_TIME или SUB

Функция вычисляет разность двух переменных TIME.

var

in:TIME;    

in1:TIME;

out:TIME;

end_var

out:=SUB_TIME(in,in1);

SUB_DATE_DATE или SUB

Функция вычисляет разность двух переменных типа DATE, возвращаемое значение функции типа TIME.

var

in:DATE;

in1:DATE;

out:time;

end_var

out:=SUB_DATE_DATE(in,in1);

SUB_TOD_TIME или SUB

Функция вычитает из переменной тип TOD (время) значение переменной TIME.

var

in:TOD;

in1:TIME;

out:TOD;

end_var

out:=SUB_TOD_TIME(in,in1);

SUB_TOD_TOD или SUB

Функция вычисляет разность двух переменных TOD (время), результат функции типа TIME.

var

in:TOD;

in1:TOD;

out:TIME;

end_var

out:=SUB_TOD_TOD(in,in1);

SUB_DT_TIME или SUB

Функция вычитает из переменной DT, значение переменной TIME.

var

in:DT;

in1:TIME;

out:DT;

end_var

out:=SUB_DT_TIME(in,in1);

SUB_DT_DT или SUB

Функция вычисляет разность двух переменных DT, результат функции типа TIME.

var

in:DT;

in1:DT;

out:TIME;

end_var

out:=SUB_DT_DT(in,in1);

MULTIME или MUL

Функция умножает переменную типа TIME, на любую числовую переменную.

var

in:time;

in1:real;

out:TIME;

end_var

out:=MULTIME(in,in1);

DIVTIME или DIV

Функция делит переменную типа TIME, на любую числовую переменную.

var

in:time;

in1:real;

out:TIME;

end_var

out:=DIVTIME(in,in1);

CONCAT_DATE_TOD

Функция объединяет значение переменных DATE и TOD в одной переменную типа DT.

var

in1:Date;

in2:TOD;

out:DT;

end_var

out:=CONCAT_DATE_TOD(in1,in2);

 

Операторы сдвига.

SHL

Пример функции:

out:=SHL(in,n);

Функция выполняет побитный сдвиг влево операнда in, на количество бит равных n. Биты справа дополняются нулями. Переменные in и out должны быть типов WORD, DWORD, BYTE, переменная n – типа INT. При выполнении операции следует учитывать количество бит в переменной.

SHR

Пример функции

out:=SHR(in,n);

Функция выполняет побитный сдвиг вправо операнда in, на количество бит равных n. Биты справа дополняются нулями. Переменные in и out должны быть типов WORD, DWORD, BYTE, переменная n – типа INT. При выполнении операции следует учитывать количество бит в переменной.

ROL

Пример функции

out:=ROL(in,n);

Функция выполняет циклический сдвиг влево операнда in, на количество бит равных n. Младшие биты последовательно заполняются старшими. Переменные in и out должны быть типов WORD, DWORD, BYTE, переменная n – типа INT. При выполнении операции следует учитывать количество бит в переменной.

ROR

Пример функции

out:=ROR(in,n);

Функция выполняет циклический сдвиг вправо операнда in, на количество бит равных n. Старшие биты последовательно заполняются младшими. Переменные in и out должны быть типов WORD, DWORD, BYTE, переменная n – типа INT. При выполнении операции следует учитывать количество бит в переменной.

 

Ссылки:

Описание стандарта