Операторы языка ST

В этом разделе описаны основные операторы языка ST, используемые для выполнения арифметических, логических, побитовых операций, сравнений и присваивания значений.

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

Арифметические операторы используются для выполнения математических операций над числовыми значениями.

Оператор

Описание

+

Сложение

-

Вычитание

*

Умножение

/

Деление

MOD

Остаток от целочисленного деления

Примечание

Оператор 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).

Оператор

Описание

AND

Логическое И

OR

Логическое ИЛИ

XOR

Логическое Исключающее ИЛИ

NOT

Логическое Отрицание

Примеры:

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
        

Побитовые операторы

Побитовые операторы выполняют операции на уровне отдельных битов целочисленных значений.

Оператор

Описание

AND

Побитовое И

OR

Побитовое ИЛИ

XOR

Побитовое Исключающее ИЛИ

NOT

Побитовое Отрицание

Примеры:

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
        

См. также