0

Условные операторы и операторы циклов языка ST

Инструкция RETURN

Инструкция RETURN позволяет выйти из POU, например, в зависимости от условия.

Инструкция IF

Используя инструкцию IF, можно проверить условие, и в зависимости от этого условия выполнить какие-либо действия.

Синтаксис:

IF <Boolean_expression1> THEN

<IF_instructions>

{ELSIF <Boolean_expression2> THEN

<ELSIF_instructions1>

.

.

.ELSIF <Boolean_expression n> THEN

<ELSIF_instructions n-1>

ELSE

<ELSE_instructions>}

END_IF;

Часть конструкции фигурных скобках не обязательна.

Если < <Boolean_expression1> возвращает истину, тогда <IF_Instructions> выполняется.

В противном случае будут выполняться остальные логические выражения одно за другим, пока одно из них не возвратит истину. Тогда выполняются инструкции, стоящие после этого логического выражения до следующего ELSIF или ELSE.

Если все логические выражения ложны, то выполняются инструкции, стоящие после ELSE.

Пример:

IF temp < 17

THEN heating_on: = TRUE;

ELSE heating_on: = FALSE;

END_IF

В этом примере нагревание (heating) включается, когда температура опустится ниже 17 . градусов, иначе оно останется выключенным.

Инструкция CASE

C помощью инструкции CASE можно нескольким различным значениям целочисленной переменной сопоставить различные инструкции.

Синтаксис:

CASE <Var1> OF

<Value1>: <Instruction 1>

<Value2>: <Instruction 2>

<Value3, Value4, Value5>: <Instruction 3>

<Value6 .. Value10>: <Instruction 4>

<Value n>: <Instruction n>

ELSE <ELSE instruction>

END_CASE;

Инструкция CASE выполняется согласно следующим правилам:

·  Если переменная <Var1> имеет значение <Value i>, то выполняется инструкция <Instruction i>

·  Если <Var1> не принимает ни одного из указанных значений, то выполняется <ELSE Instruction>.

·  Чтобы одна и та же инструкция выполнялась при различных значениях переменной <Var1>, необходимо перечислить эти значения через запятую.

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

Пример:

CASE INT1 OF

1, 5: BOOL1 : = TRUE;

BOOL3 : = FALSE;

2: ВОOL2 : = FALSE;

BOOL3 : = TRUE;

10. 20: BOOL1: = TRUE;

BOOL3:= TRUE;

ELSE

BOOL1 := NOT BOOL1;

BOOL2 := BOOL1 OR BOOL2;

END_CASE;

Цикл FOR

С помощью FOR можно программировать повторяющиеся процессы.

Синтаксис:

INT_Var :INT;

FOR <INT_Var> := <INIT_VALUE> TO <END_VALUE> {BY <Step size>} DO

<Instructions>

END_FOR

Часть конструкции, заключенная в фигурные скобки, не обязательна.

<Instructions> выполняются, пока счетчик <INT_Var> не больше <END_VALUE>. Это условие проверяется перед выполнением <Instructions>, поэтому раздел <Instructions> не выполняется, если <INIT_VALUE> больше <END_VALUE>.

Всякий раз, когда выполняются <Instructions>, значение <INIT_VALUE>, увеличивается на <Step_size>. <Step_ size> может принимать любое целое значение. По умолчанию шаг устанавливается равным 1.

Пример:

FOR Counter: =1 TO 5 BY 1 DO

Var1: =Var1*2;

END_FOR;

Erg:=Var1;

В этом примере предполагается, что начальное значение Var1 равно 1. После выполнения цикла эта переменная будет равна 32.

Замечание: <END_VALUE>: не должно быть равно предельному значению счетчика <INT_VAR>. Например, если счетчик является переменной типа SINT и <END_VALUE> равно 127, то цикл становится бесконечным.

Цикл WHILE

Цикл WHILE может использоваться, как и цикл FOR, с тем лишь различием, что условие выхода определяется логическим выражением. Это означает, цикл выполняется, пока верно заданное условие.

Синтаксис:

WHILE <Boolean expression>

<Instructions>

END_WHILE

Раздел <Instructions> выполняется циклически до тех пор, пока <Boolean_expression> дает TRUE. Если <Boolean_expression> равно FALSE уже при первой итерации, то раздел <Instructions> не будет выполнен ни разу. Если <Boolean_expression> никогда не примет значение FALSE, то раздел <Instructions> будет выполняться бесконечно.

Пример:

WHILE counter<>0 DO

Var1: = Var1*2;

сounter := сounter-1;

END_WHILE

Цикл REPEAT

Цикл REPEAT отличается от цикла WHILE тем, что первая проверка условия выхода из цикла осуществляется, когда цикл уже выполнился 1 раз. Это означает, что независимо от условия выхода цикл выполняется хотя бы один раз.

Синтаксис:

REPEAT

<Instructions>

UNTIL <Boolean expression>

END_REPEAT

Раздел <Instructions> выполняется циклически до тех пор, пока <Boolean_expression> дает TRUE. Если<Boolean_expression> равно FALSE уже при первой итерации, то раздел <Instructions> не будет выполнен один раз. Если <Boolean_expression> никогда не примет значение FALSE, то раздел <Instructions> будет выполняться бесконечно.

 

Раздел: CoDeSys. Теория. Метки: ,

Оставить комментарий

Отправить сообщение

CoDeSys GSM/GPRS модем Lectus OPC MasterSCADA Modbus MX110 Omron OPC-сервер owen owen logic PLC Configuration PROFIBUS s-200 SCADA scada системы siemens siemens plc SIMATIC Simplight SMS step7 TRACE MODE Динамизация ИП-320 МЭК 1131–3 ОВЕН ОВЕН ПЛК ОВЕН ПЧВ ПЛК ПЛК ОВЕН ПР 110 Панель оператора Программируемое реле Частотный преобразователь библиотека в CoDeSys визуализация диспетчеризация конфигурация панели программирование ПЛК серия NS сименс плк частотник частотное управление язык CFC язык ST
.