Операторы языка ST
В этом разделе описаны основные операторы языка ST, используемые для выполнения арифметических, логических, побитовых операций, сравнений и присваивания значений.
Арифметические операторы
Арифметические операторы используются для выполнения математических операций над числовыми значениями.
Оператор |
Описание |
|---|---|
|
Сложение |
|
Вычитание |
|
Умножение |
|
Деление |
|
Остаток от целочисленного деления |
Примечание
Оператор MOD работает только с целочисленными беззнаковыми типами данных.
Примеры:
VAR
a : UINT := 10;
b : UINT := 3;
result : UINT;
END_VAR
result := a + b; // result = 13
result := a - b; // result = 7
result := a * b; // result = 30
result := a / b; // result = 3 (целочисленное деление)
result := a MOD b; // result = 1 (остаток)
|
Операторы сравнения
Операторы сравнения используются для сравнения двух значений.
Результатом операции всегда является значение типа BOOL (TRUE или FALSE).
Оператор |
Описание |
|---|---|
|
Равно |
|
Не равно |
|
Меньше |
|
Больше |
|
Меньше или равно |
|
Больше или равно |
Примечание
Операнды, участвующие в сравнении, должны быть совместимых типов.
Примеры:
VAR
x : INT := 10;
y : INT := 20;
is_equal : BOOL;
is_less : BOOL;
is_greater : BOOL;
END_VAR
is_equal := (x = y); // is_equal = FALSE
is_less := (x < y); // is_less = TRUE
is_greater := (x >= y); // is_greater = FALSE
|
Логические операторы
Логические операторы используются для работы с булевыми значениями (тип BOOL).
Оператор |
Описание |
|---|---|
|
Логическое И |
|
Логическое ИЛИ |
|
Логическое Исключающее ИЛИ |
|
Логическое Отрицание |
Примеры:
VAR
in1 : BOOL := TRUE;
in2 : BOOL := FALSE;
result : BOOL;
END_VAR
result := in1 AND in2; // result = FALSE
result := in1 OR in2; // result = TRUE
result := in1 XOR in2; // result = TRUE
result := NOT in1; // result = FALSE
|
Побитовые операторы
Побитовые операторы выполняют операции на уровне отдельных битов целочисленных значений.
Оператор |
Описание |
|---|---|
|
Побитовое И |
|
Побитовое ИЛИ |
|
Побитовое Исключающее ИЛИ |
|
Побитовое Отрицание |
Примеры:
VAR
a : BYTE := 2#00001111; // 15 в двоичной
b : BYTE := 2#00110011; // 51 в двоичной
result : BYTE;
END_VAR
result := a AND b; // result = 2#00000011 (3)
result := a OR b; // result = 2#00111111 (63)
result := a XOR b; // result = 2#00111100 (60)
result := NOT a; // result = 2#11110000 (240)
|
Примечание
Для операций
AND,OR,XOR,NOT:Если оба операнда типа
BOOL, выполняется логическая операция. Результат типаBOOL.Если оба операнда целочисленные (например,
INT,DINT,WORD,DWORD), выполняется побитовая операция. Результат соответствующего целочисленного типа.Смешивание типов
BOOLи целочисленных типов может привести к ошибке компиляции.
Оператор присваивания
Оператор присваивания (:=) используется для присвоения значения выражения, находящегося в правой части, переменной, находящейся в левой части.
variable_name := expression;
|
Примеры:
VAR
myInt : INT;
myBool : BOOL;
inputValue : DINT;
END_VAR
myInt := 42; // Присваивание константы
myInt := myInt + 10; // Присваивание результата арифметического выражения
myBool := (myInt > 50); // Присваивание результата выражения сравнения
|
Примечание
Тип выражения справа от := должен быть совместим с типом переменной слева.
Условные операторы
Условные операторы позволяют выполнять различные блоки кода в зависимости от условий.
IF - Условный оператор
Выполняет блок кода в зависимости от истинности условия.
IF condition1 THEN
statements_block1;
ELSIF condition2 THEN
statements_block2;
ELSE
default_statements_block;
END_IF;
|
Пример:
VAR
value : INT := 50;
output : BOOL;
END_VAR
IF value > 25 THEN
output := TRUE;
ELSE
output := FALSE;
END_IF;
|
Циклы
Циклы позволяют выполнять блок кода многократно.
WHILE - Цикл с предусловием
Выполняет блок кода, пока условие истинно.
WHILE condition DO
statements_block;
END_WHILE;
|
Пример:
VAR
counter : INT := 0;
sum : INT := 0;
END_VAR
WHILE counter < 5 DO
counter := counter + 1;
sum := sum + counter;
END_WHILE; // sum = 15
|
REPEAT - Цикл с постусловием
Выполняет блок кода, пока условие не станет истинным (цикл выполнится хотя бы один раз).
REPEAT
statements_block;
UNTIL condition
END_REPEAT;
|
Пример:
VAR
counter : INT := 0;
sum : INT := 0;
END_VAR
REPEAT
counter := counter + 1;
sum := sum + counter;
UNTIL counter >= 5
END_REPEAT; // sum = 15
|
FOR - Цикл со счётчиком
Выполняет блок кода заданное количество раз, используя счётчик.
FOR counter := start_value TO end_value BY step DO
statements_block;
END_FOR;
|
Пример:
VAR
i : INT;
sum : INT := 0;
END_VAR
FOR i := 1 TO 5 BY 1 DO
sum := sum + i;
END_FOR; // sum = 15
|
Оператор RETURN
Прерывает выполнение текущей программы (FUNCTION, FUNCTION_BLOCK или PROGRAM) и возвращает управление вызывающему коду.
PROGRAM ExampleProgram
VAR
exit_condition : BOOL;
END_VAR
IF exit_condition THEN
RETURN; // Выход из программы
END_IF;
// Этот код выполнится только если exit_condition = FALSE
// ...
END_PROGRAM
|
См. также
Встроенные типы данных - для информации о типах данных.
Математические функции - для информации о математических функциях.