Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Программирование промышленных контроллеров. Учебное пособие
.pdf
REPEAT
<statement>;
<statement>;
UNTIL <boolean_condition>
END_REPEAT;
Пример применения оператора REPEAT:
var := 1
REPEAT
var := var + 2;
UNTIL var >= 101
END_REPEAT;
3.4.9. Итерационный оператор FOR
FOR повторяет последовательность утверждений до тех пор, пока утверждение END_FOR не будет достигнуто. Число повторений
определяется начальным или конечным значением индексной переменной. Утверждение FOR используется, если число повторений
можно определить заранее. Иначе используются WHILE или REPEAT.
Синтаксис оператора FOR:
FOR<index> := <mini> TO <maxi> BY <step> DO
<statement> ;
<statement> ;
END_FOR;
Итерационный оператор FOR содержит следующие операнды:
1) index – это внутренняя аналоговая переменная, увеличиваю-
щаяся на каждом витке;
2) mini – начальное значение для индекса (перед первой
итерацией);
3) maxi – максимально допустимое значение индекса;
4) step – приращение индекса на каждом шаге.
Оператор [BY <step>] – дополнительный. Если он не определен,
то приращение равно 1. Пример применения оператора:
61

индекс начальная конечная
переменная переменная шаг
FOR I : = 1 TO 10 BY 2 DO (* BY > 0 – > forward loop *)
C : = C * COS_REAL(B) ; (* statement is executed 5 times *)
END_FOR;
….
FOR I : = 1 TO 10 (* default of BY is 1 – > forward loop *)
C : = C * COS_REAL(B) ; (* statement is executed 10 times *)END
3.4.10. Оператор EXIT
Оператор применяется для осуществления выхода из итераци-
онных операторов FOR, WHILE, REPEAT. Если утверждение EXIT
располагается внутри вложенного повторения, то покидается контур, в
котором расположено утверждение EXIT. У данного оператора нет
операндов. Синтаксис оператора EXIT:
EXIT;
Пример использования оператора EXIT:
SUM : = 0 ;
FOR I := 1 TO 3 DO
FOR J := 1 TO 2 DO
IF FLAG=1 THEN EXIT;
END_IF ;
SUM := SUM + J ;
END_FOR ;
SUM := SUM + I ;
END_FOR
3.4.11. Вызовы функций и функциональных блоков
Стандартные ST-вызовы могут быть реализованы для каждого
из следующих объектов: подпрограммы, библиотечной функции и ФБ,
написанных на IEC-языках; C-функции и ФБ, функции преобразования типов [4]. Вызовы подпрограмм или функций предполагают использование следующих элементов:
62

1) имя вызываемой подпрограммы или библиотечной функции,
написанной на IEC-языке или C;
2) значение, которое вызывает ST-, IL-, LD- или FBD-под-
программы или функции или C-функции и дает возвращаемое значение;
3) операнды, т. е. за типом возвращаемого значения и параметрами
вызова должен следовать интерфейс, определенный для подпрограммы.
3.4.11.1. Вызов функционального блока
Синтаксис вызова:
<variable>:= <subprog> (<par1>,...,<parN>);
Ниже продемонстрированы примеры реализации вызова ФБ:
а) на языке ST:
VAR
CLOCK : SYSCLOCK;
COUNT : CTU_DINT;
END_VAR
CLOCK ( ) ;
COUNT (CU : = CLOCK.CLK3, R : = reset, PV : = 100;
out : = COUNT.Q;
current : = COUNT.CV;
б) на языке FBD:
63

3.4.11.2. Вызов функции
Функции вызываются утверждением. Утверждение состоит из
фактического параметра (переменной) выходов, следующего за параметром утверждения распределения «:=» и следующего за этим
утверждением имени функции, сопровождаемого списком в скобках
фактических параметров входов. Имеет значение порядок распечатки
формальных параметров в обращении к функции.
Функция может также вызываться утверждением, состоящим из
фактического параметра (переменной), утверждения распределения
«:=», имени функции, сопровождаемой списком в скобках распределения значений (фактические параметры) формальным параметрам.
Порядок, в котором формальные параметры перечислены в обращении к этому экземпляру функции, не имеет значения. Пример обращения к функции:
а) на языке ST:
имя функции формальные параметры
OUT : = LIMIT_INT ( MN : = 0, IN : = inl, MX : = 5 + var);
фактические параметры
б) на языке FBD:
3.5. Язык SFC
Графический язык Sequential Function Chart появился в 1979 г.
как язык, позволяющий ясно и однозначно определить желаемое поведение системы управления. Он используется для описания последо-
64

вательных операций и позволяет наглядно воспроизводить структуру
объекта/процесса. Этот высокоуровневый графический язык предназначен для использования на этапе проектирования. Его основой является математический аппарат сетей Петри, предложенный Карлом
Адамом Петри в 1962 г. и позволяющий описать процессы (дискретные системы) в форме двудольных ориентированных графов.
Данный метод опирается на разделение системы или отдельных
ее частей на множество простых позиций. Позиция описывает состояние части системы. Причем состояние понимается здесь достаточно
гибко, это может быть состояние оборудования, процесса или программы.
Переходы между позициями происходят при выполнении опре-
деленных условий. Графически позиция отображается в виде окружности, как показано на рис. 3.7. Переходам соответствуют отрезки, соединенные с позициями направленными дугами. Каждая позиция может
обладать маркером и передавать его другим позициям по исходящим
дугам. Маркеры отображается в виде жирной точки. Допускается одновременное присутствие нескольких маркеров. К переходу приходит одна или несколько дуг, идущих от разных позиций. От перехода также
могут отходить несколько исходящих дуг, ведущих к разным позициям.
Проверка условия перехода (разрешение) производится, только если
хотя бы одна из его исходных позиций владеет маркером.
Рис. 3.7. Сети Петри
65

Важным моментом сети Петри является то, что несколько пози-
ций могут одновременно иметь маркеры, т. е. сеть описывает процессы, работающие параллельно и взаимосвязано. В этом случае состояние сети определяется совокупностью позиций, владеющих маркерами. Описанная сеть позиции и переходов является простейшим вариантом сетей Петри, послужившая прототипом для разработки SFC.
В настоящее время отождествлять SFC с сетями Петри уже не-
льзя. Пути их развития оказались разными. Так, в сетях Петри маркер
наделили свойствами объекта, а переходы получили способность воспринимать свойства маркера. Это так называемые цветные сети Петри, маркеры в которых имеют разные типы и разные цвета. В современном SFC маркер является не более чем квитанцией – нарядом на
определенную работу. Позиции же SFC приобрели большую силу и
имеют возможность выполнять определенные наборы действий. Чтобы понять разницу, представьте себе коллектив людей, передающих
друг другу пакеты (маркеры). В первом случае действия людей зависят от содержимого пакета, влияющего на решение кому передать,
оставить у себя и т. д. Во втором случае действия людей определяются
их профессиональными обязанностями и не должны зависеть от содержимого пакета, т. е. SFC развивается как инструмент описания
производственных операций, а сети Петри расширяют способности
моделирования дискретных систем.
Таким образом, SFC-программа представляет собой графиче-
ский набор шагов и переходов, соединенных вместе направленными
связями. По умолчанию ориентация линии – сверху вниз. Действия
внутри шагов описываются более детально при помощи других языков (ST, IL, LD, FBD), к каждому переходу прикреплено логическое
условие. Некоторые части программы могут быть отделены и представлены в основной схеме одним специальным символом – макрошагом. Общий вид секции представлен на рис. 3.8 [15].
В результате процесс управления представляется в виде набора
определенных последовательных шагов (автономных ситуаций), связанных переходами. Шаг представляет собой набор операций над переменными. Переход – набор логических условных выражений, определяющий передачу управления к следующей паре шаг–переход.
Основными компонентами языка являются: шаги и начальные
шаги, переходы, ориентированные связи, прыжок на шаг, схождения и
расхождения, макрошаги.
66

Рис. 3.8. Общий вид секции SFC
Основные графические правила для SFC следующие:
1) шаги не могут следовать подряд;
2) переходы не могут следовать подряд.
3.5.1. Шаги
Шаг представляется квадратом с одинарной рамкой. Каждому
шагу присваивается номер, написанный внутри квадрата. В SFC-диаграмме шаг описывается и представляется на двух уровнях:
1) На первом уровне описание шага пишется внутри прямо-
угольника, присоединенного к символу шага, и содержит свободный
комментарий, который не является частью языка.
2) На втором уровне описание шага пишется внутри прямо-
угольника, присоединенного к символу шага, и содержит действия
(программу), выполняемые шагом.
Описание шага располагается справа от символа шага:
67

Во время работы активный шаг помечается маркером внутри
квадрата шага.
Начальная ситуация программы SFC описывается начальными
шагами. Начальный шаг обозначается графически квадратом с двойной рамкой. После запуска программы маркер автоматически устанавливается на каждый начальный шаг. SFC программа должна содержать, по крайней мере, один начальный шаг:
Шаги на схеме, включая начальный шаг, могут не содержать
описание, т. е. быть пустыми, что не вызывает ошибки при компиляции проекта. Пустые шаги – норма при ведении программирования
сверху вниз, характерного для SFC. Определить действие для шага
можно в любой момент. Задачей же пустого шага является ожидание
перехода.
3.5.2. Переходы
Переходы представлены горизонтальными полосками, которые
пересекают линии связи. Каждому переходу присвоен номер, следующий за символом перехода:
В SFC-диаграмме переход так же, как и шаг, описывается и
представляется на двух уровнях. На первом уровне описание перехода
располагается справа от символа перехода и содержит свободный
68

комментарий, который не является частью языка. На втором уровне
описание перехода содержит логическое выражение, которое является
условием прохождения этого перехода.
Переход выполняется при соблюдении двух условий:
1) переход разрешен, т. е. соответствующий ему шаг активен;
2) условие перехода имеет значение TRUE.
3.5.3. Ориентированные связи
Для связи шагов и переходов используются одиночные линии –
ориентированные связи. Связи могут быть со стрелками, что указывает на явную ориентацию, либо без стрелок (неявная ориентация). Когда ориентация не задана явно, связь ориентирована сверху вниз.
3.5.4. Прыжок на шаг
Символ прыжка может быть использован, чтобы определить
линию связи от перехода к шагу, не рисуя линию. Этот символ должен иметь номер шага назначения. Связь от шага к переходу нельзя
представить с помощью символа прыжка. Схемы, показанные на
рис. 3.9, эквивалентны.
а б
Рис. 3.9. Задание связи: а – с помощью линии;
б – с помощью прыжка
69

3.5.5. Ветви
Для ветвей в SFC свойственно схождение и расхождение. Рас-
хождение – это множественные связи от одного символа SFC (шага
или перехода) ко многим. Схождение – это множественные связи от
более чем одного символа SFC к одному другому символу. Схождения
и расхождения могут быть одиночными или двойными в зависимости
от вида ветвей.
3.5.5.1. Альтернативные ветви
Признаком альтернативных ветвей на схеме является одинарная
горизонтальная линия. Для альтернативных ветвей характерно наличие одиночного расхождения и одиночного схождения.
Одиночное расхождение – это множественная связь от одного
шага к нескольким переходам. Оно позволяет маркеру активности
пройти по одной из множества ветвей. Одиночное схождение – это
множественная связь от нескольких переходов к одному и тому же
шагу. Таким образом, каждая альтернативная ветвь должна начинаться и заканчиваться переходом. Общий вид альтернативных ветвей
приведен на рис. 3.10.
Рис. 3.10. Общий вид альтернативных ветвей
70
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
