ГОСТ Р МЭК 61131-3—2016
7.3.3.3.2 IF
Оператор IF указывает, что группа операторов выполняется, только если связанное логическое
выражение при вычислении принимает значение 1(TRUE). Если условие является ложным, то или опе
ратор не выполняется, или выполняется группа операторов следующая за ключевым словом ELSE (или
ключевым словом ELSIF. если связанное логическое условие является истинным).
7.3.3.3.3 CASE
Оператор CASE включает выражение, которое вычисляет переменную простого типа данных («се
лектор»). и перечень групп операторов, причем каждая группа маркируется одним или большим числом
литералов, перечислимых значений или поддиапазонов, в зависимости от того, что применимо. Типы
данных таких маркеров должны соответствовать типу данных переменной селектора, т.е. переменная
селектора должна быть сравнимой с маркерами.
Это указывает на то. что выполняется первая группа операторов, один из диапазонов которых
содержит вычисленное значение селектора. Если значение селектора находится вне диапазона для
любого из случаев, то выполняется последовательность операторов, следующая за ключевым словом
ELSE (если она имеется в операторе CASE). В противном случае ни одна из последовательностей опе
раторов не выполняется.
Максимально допустимое число выборов в операторах CASE определяется разработчиком.
7.3.3.4 Операторы итерации (WHILE. REPEAT. EXIT. CONTINUE. FOR)
7.3.3.4.1 Общие положения
Операторы итерации указывают, что группа связанных операторов должна выполняться повторно.
Операторы WHILE и REPEAT не должны использоваться для достижения межпроцессной син
хронизации. например, как «цикл ожидания» с внешне определяемым условием завершения. Для этой
цели должны использоваться элементы SFC.
Ошибка возникает, если оператор WHILE или REPEAT используется в алгоритме, для которого
удовлетворение условия завершения цикла или выполнение оператора EXIT не может быть гаранти
ровано.
Оператор FOR используется, когда число итераций может быть определено заранее: в противном
случае используются конструкции WHILE или REPEAT.
7.3.3.4.2 FOR
Оператор FOR указывает, что последовательность операторов выполняется повторно, до ключе
вого слова END_FOR. в то время как последовательность значений присваивается переменной управ
ления циклом FOR. Переменная управления, начальное значение и конечное значение должны быть
выражениями одного и того же целого типа (например. SINT. INT или DINT) и не должны изменяться ни
в каком из повторяющихся операторов.
Оператор FOR приращивает переменную управления вверх или вниз от начального до конечного
значения в приращениях, определяемых значением выражения. Если конструкция BY пропускается, то
значение приращения по умолчанию приравнивается к 1.
Пример —
Цикл FOR, задаваемый выражением
FOR/:= 3 ТО 1 STEP-1 DO
завершается, когда значение переменной достигает 0.
Тест на условие завершения выполняется в начале каждой итерации, так что последовательность
операторов не выполняется, если значение переменной управления превышает конечное значение, то
есть значение переменной управления больше, или. соответственно, меньше конечного значения, если
значение инкремента положительное, или. соответственно, отрицательное. Значение переменной
управления после завершения цикла FOR определяется разработчиком.
Итерация завершается, когда значение переменной управления находится вне диапазона, задан
ного конструкцией ТО.
Следующий пример использования оператора FOR приведен в свойстве 6 таблицы 72. В этом
примере цикл FOR используется, чтобы определить индекс J первого появления (если это имеет место)
строки «KEY» в нечетных элементах массива строк WORDS с диапазоном значений индексов (1..100).
Если появление не обнаружено. J будет иметь значение 101.
7.3.3.4.3 WHILE
Оператор WHILE вызывает выполнение последовательности операторов до ключевого слова
END_WHILE. Операторы выполняются повторно до тех пор. пока связанное логическое выражение
200