ISaGRAF. Version 3.4

          

Основные операторы ST


Основные операторы языка ST:

Присвоение

Оператор RETURN

Структура IF-THEN-ELSIF-ELSE

Оператор CASE

Итерационный оператор WHILE

Итерационный оператор REPEAT

Итерационный оператор FOR

Оператор EXIT

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

Name:                          :=

Значение:                   присваивает значение выражению

Синтаксис:                 <variable> :=  <any_expression>;

Операнды:                 переменная должна быть внутренняя или выход, переменная и выражение должны иметь один и тот же тип

                                     

Выражение может быть вызовом подпрограммы или функции из библиотеки ISaGRAF.

Пример:

(* ST программа с присвоением *)

(* variable <<= variable *)

bo23 := bo10;

(* variable <<= expression *)

bo56 := bx34 OR alrm100 & (level >= over_value);

result := (100 * input_value) / scale;

(* присвоение возвращаемого значения подпрограммы *)

rc := PSelect ( );

(* присвоение с вызовом функции *)

limited_value := min (16, max (0, input_value) );

Основные операторы ST
        Оператор RETURN

Имя:                              RETURN

Значение:                   заканчивает выполнение текущей программы

Синтаксис:                 RETURN;

Операнды:                 (нет)

В блоке SFC оператор RETURN определяет конец выполнения только данного блока.

Пример:

(* FBD программа: программируемый счетчик *)

Основные операторы ST

(* ST программа *)

If not (CU) then

             Q := false;

             CV := 0;

             RETURN;   (* закончить программу*)

end_if;

if R then

             CV := 0;

else

             if (CV < PV) then

                         CV := CV + 1;

             end_if;

end_if;

Q := (CV >= PV);

Основные операторы ST
        Структура IF-THEN-ELSIF-ELSE

Имя:                              IF... THEN... ELSIF... THEN... ELSE... END_IF

Значение:                   выполняет один или два списка ST операторов, выбор осуществляется в соответствии со значением булевского выражения

                                     

                                     


Синтаксис:                 IF <boolean_expression> THEN

                                         <statement> ;

                                         <statement> ;

                                         ...

                                      ELSIF <boolean_expression> THEN

                                         <statement> ;

                                         <statement> ;

                                         ...

                                      ELSE

                                         <statement> ;

                                         <statement> ;

                                         ...

                                      END_IF;

Операторы ELSE и ELSIF - дополнительные. Если ELSE опущен и условие равно FALSE, то никаких инструкций не выполняется.

Пример:

(*ST программа , использующая оператор IF*)

IF manual AND not (alarm) THEN

             level := manual_level;

             bx126 := bi12 OR bi45;

ELSIF over_mode THEN

             level := max_level;

ELSE

             level := (lv16 * 100) / scale;

END_IF;

(* IF структура  без ELSE *)

If overflow THEN

alarm_level := true;

END_IF;

Основные операторы ST
        Оператор CASE


Имя:                              CASE... OF... ELSE...  END_CASE

Значение:                   выполняет один или несколько списков ST операторов, выбор осуществляется в соответствии с целым выражением

                                     

Синтаксис:                 CASE <integer_expression> OF

                                         <value> : <statements> ;

                                         <value> , <value> : <statements> ;

                                         ...

                                      ELSE

                                         <statements> ;

                                      END_CASE;

Значением CASE должна быть целая константа. Несколько значений разделенных запятыми могут указывать на один и тот же список операторов.


Оператор ELSE - дополнительный.

Пример:

(*ST программа , использующая оператор CASE*)

CASE error_code OF

             255:      err_msg := 'Division by zero';

                         fatal_error := TRUE;

             1:          err_msg := 'Overflow';

             2, 3:      err_msg := 'Bad sign';

ELSE

             err_msg := 'Unknown error';

END_CASE;

Основные операторы ST
       
Итерационный оператор WHILE

Имя:                              WHILE... DO... END_WHILE

Значение:                   итерационная структура для группы ST операторов, условие вычисляется прежде выполнения итерации

                                     

Синтаксис:                 WHILE <boolean_expression> DO

                                         <statement> ;

                                         <statement> ;

                                         ...

                                      END_WHILE ;

Предупреждение:

Так как ISaGRAF синхронная система входные переменные не обновляются во время итераций WHILE. Изменение состояния входных переменных не может быть использовано для описания условия оператора WHILE.

Пример:

(*ST программа , использующая оператор WHILE*)

(* эта программа использует "C" функции для чтения *)

(* символов из последовательного порта *)

string := ''; (* empty string *)

nbchar := 0;

WHILE ((nbchar < 16) & ComIsReady ( )) DO

             string := string + ComGetChar ( );

             nbchar := nbchar + 1;

END_WHILE;

Основные операторы ST
       
Итерационный оператор REPEAT

Имя:                              REPEAT... UNTIL... END_REPEAT

Значение:                   итерационная структура для группы ST операторов, условие вычисляется после выполнения итерации

                                     

Синтаксис:                 REPEAT

                                         <statement> ;

                                         <statement> ;

                                        ...

                                      UNTIL <boolean_condition>



                                      END_REPEAT ;

Предупреждение:

Так как ISaGRAF синхронная система входные переменные не обновляются во время итераций REPEAT. Изменение состояния входных переменных не может быть использовано для описания условия оператора REPEAT.

Пример:

(*ST программа , использующая оператор REPEAT*)

(* эта программа использует "C" функции для чтения *)

(* символов из последовательного порта *)

string := ''; (* empty string *)

nbchar := 0;

IF ComIsReady ( ) THEN

             REPEAT

                         string := string + ComGetChar ( );

                         nbchar := nbchar + 1;

             UNTIL ( (nbchar >= 16) OR NOT (ComIsReady ( )) )

             END_REPEAT;

END_IF;

Основные операторы ST
       
Оператор FOR

Имя:                              FOR... TO... BY... DO... END_FOR

Значение:                   выполняет ограниченное число итераций, используя целую аналоговую индексную переменную

                                     

Синтаксис:                 FOR <index> := <mini> TO <maxi> BY <step> DO

                                         <statement> ;

                                         <statement> ;

                                      END_FOR;

Операнды:                 index:              внутренняя аналоговая переменная,  увеличивающаяся на каждом витке

                      mini:                начальное значение для индекса (перед первой  итерацией)       

                        

                                      maxi:                максимально-допустимое значение индекса

                                      step:                приращение индекса на каждом шаге

Оператор [BY step] - дополнительный. Если он не определен то приращение равно 1.

“While” эквивалент оператора FOR:

             index := mini;

             while (index <= maxi) do

                <statement> ;

                <statement> ;

                index := index + step;

             end_while;



           

Пример:

(*ST программа , использующая оператор FOR*)

(* эта программа извлекает целые числа из строки *)

length := mlen (message);

target := ''; (* empty string *)

FOR index := 1 TO length BY 1 DO

             code := ascii (message, index);

             IF (code >= 48) & (code <= 57) THEN

                         target := target + char (code);

             END_IF;

END_FOR;

Основные операторы ST
        Оператор EXIT


Имя:                              EXIT

Значение:                   выход из итерационных операторов FOR, WHILE, REPEAT

Синтаксис:                 EXIT;

Операнды:                 (нет)

EXIT, обычно, используется в операторе IF внутри блоков FOR, WHILE, REPEAT.

Пример:

(*ST программа , использующая оператор EXIT*)

(* эта программа ищет символ в строке *)

length := mlen (message);

found := NO;

FOR index := 1 TO length BY 1 DO

             code := ascii (message, index);

             IF (code  = searched_char) THEN

                         found := YES;

                         EXIT;

             END_IF;

END_FOR;


Содержание раздела