Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Программирование промышленных контроллеров. Учебное пособие

.pdf
Скачиваний:
2
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
По сути, альтернативные ветви представляют собой реализацию
логической операции ИЛИ. Проверка альтернативных условий вы­полняется слева направо. Если найдено верное условие, то прочие альтернативные ветви не рассматриваются.
При создании альтернативных ветвей желательно задавать вза-
имоисключающие условия, так как в этом случае вероятность возник­новения ошибки при анализе или в процессе доработки диаграммы значительно ниже.
3.5.5.2. Параллельные ветви
Также помимо альтернативных ветвей на языке SFC можно ор-
ганизовать структуру программы с параллельными ветвями с двой­ными схождениями и расхождениями. Признаком параллельных вет­вей является двойная горизонтальная линия.
Двойное расхождение – это множественная связь от одного пе-
рехода к нескольким шагам. Она соответствует параллельной работе процесса.
Двойное схождение – это множественная связь от нескольких
шагов к одному и тому же переходу. Двойное схождение обычно ис­пользуется для того, чтобы объединить несколько ветвей SFC, начав­шихся из двойного расхождения. Общий вид параллельных ветвей приведен на рис. 3.11.
Рис. 3.11. Общий вид параллельных ветвей
71
Каждая параллельная ветвь должна начинаться и заканчиваться
шагом. Параллельные ветви могут содержать альтернативные ветви и другие параллельные ветви. Если шаг активен, условие перехода после этого шага истинно, и за этим переходом следуют параллельные ветви, то активируются первые шаги этих ветвей. Эти ветви выполняются па­раллельно друг другу. Шаг, находящийся после параллельных ветвей, становится активным только тогда, когда все предыдущие шаги актив­ны, и условие перехода истинно. Иными словами, параллельные ветви представляют собой реализацию логической операции И.
3.5.8. Макрошаги
Некоторые части программы могут быть отделены и представ-
лены в основной схеме одним символом – макрошагом. Макрошаг – это уникальное представление уникальной группы шагов и переходов. Тело макрошага описывается отдельно в другом месте SFC-програм­мы. В основной схеме SFC он выглядит как один символ. Для макро­шага используется символ, показанный на рис. 3.12.
Рис. 3.12. Общий вид макрошага
Номер, написанный в макрошаге, – это номер первого шага
в теле макрошага. Тело макрошага должно начинаться начальным ша­гом и заканчиваться конечным шагом. Схема должна быть замкнутой.
72
Начальный шаг не имеет верхней связи, т. е. нет перехода сзади. Ко­нечный шаг не имеет нижней связи, т. е. нет перехода вперед. Символ макрошага может быть помещен в тело другого макрошага.
3.5.9. Входные и выходные действия
Определенные действия нужно выполнить в шаге только один
раз. Например, как показано на схеме включить нагрев в начале ак­тивности шага и выключить при переходе на другой шаг:
С этой целью и применяются так называемые входное и вы-
ходное действия. Входное действие обозначается сегментом Е (Entry) в нижнем левом углу прямоугольника шага и выполняется однократно при активизации шага. Выходное обозначается сегментом X (eXit) в нижнем правом углу прямоугольника шага. Выходное действие вы­полняется однократно при завершении работы шага [4].
3.5.10. Классификаторы действий
Второй уровень описания шага SFC представляет собой деталь-
ное описание действий в период активности шага. Это описание мо­жет использовать текстовые дополнения языка SFC, к которым отно­сятся классификаторы действий.
Классификатор (qualifier) определяет способ влияния активного
шага на данное действие, визуально представлен в левой части пря­моугольника, отображающего действие. Пример применения класси­фикатора:
73
В зависимости от применяемого классификатора можно выделить:
1) импульсные действия;
2) несохраняемые действия;
3) сохраняемые действия;
4) ограниченные по времени действия;
5) отложенные действия;
6) сохраняемые и ограниченные по времени действия;
7) сброс. Импульсное действие (P – Pulse) – это либо список ST, либо
список инструкций IL, которые выполняются только однажды при активизации шага. Инструкции пишутся в соответствии со следую­щим синтаксисом:
ACTION (P): (*операторы *) END_ACTION;
Вот так выглядит на экране компьютера временная диаграмма
импульсного действия:
Несохраняемое действие (N – Non-stored) – это либо список ST,
либо список инструкций IL, которые выполняются на каждом цикле в течение всего периода активности шага. Инструкции пишутся в со­ответствии со следующим синтаксисом:
ACTION (N): (*операторы *) END_ACTION;
Временная диаграмма не сохраняемого действия:
74
Сохраняемое действие (S – Stored) – это либо список ST, либо
список инструкций IL. Само действие активируется и остается актив­ным до сброса, т. е. продолжит выполняться в каждом цикле даже то­гда, когда шаг уже не активен. Инструкции пишутся в соответствии со следующим синтаксисом:
ACTION (S): (*операторы *) END_ACTION;
Временная диаграмма сохраняемого действия:
Ограниченное по времени действие (L – time Limited) активиру-
ется вместе с шагом и остается активным на заданное время, но не дольше, чем шаг. На схеме показаны два возможных случая. В первом случае действие деактивируется по истечении времени, во втором – по причине деактивации шага. Временная диаграмма ограниченного по времени действия:
75
Сохраняемое и ограниченное по времени действие (SL – Stored
and time Limited) активируется вместе с шагом и остается активным заданное время, вне зависимости от активности шага. Действие можно деактивировать досрочно из другого шага с классификатором R. На схеме представлена временная диаграмма сохраняемого и ограничен­ного по времени действия:
Отложенное действие (D – Delayed) активируется через задан-
ное время после активации шага и остается активным, пока активен шаг. Если шаг окажется активным меньше заданного времени, то дей­ствие не будет активировано. На схеме представлена временная отло­женного действия:
76
Сохраняемое отложенное действие (SD – Stored and time
Delayed) активируется через заданное время после активации шага, даже если шаг уже не активен. Но если в процессе отсчета задержки сделать сброс (в другом шаге с классификатором R), то активация не произойдет. Активированное действие остается активным до сброса. На схеме представлена временная диаграмма сохраняемого отложен­ного действия:
Сброс (R – Reset). Производит деактивацию действия. Времен-
ная диаграмма сброса:
Классификаторы L, D, SD, DS и SL требуют указания константы
времени в формате TIME. Например:
D T#10s.
Из приведенных выше временных диаграмм видно, что каждое
активное действие выполняется еще один раз уже после деактивации. Это необходимо для того, чтобы действия могли отработать потерю активности и выполнить некоторые завершающие операции.
77
Несколько действий одинаковых или разных типов могут быть
описаны в одном шаге. К средствам, позволяющим использовать лю­бой другой язык, относится вызов функций и функциональных блоков из действия.
3.5.11. Вызов функций и функциональных блоков из действия
Подпрограммы, функции или функциональные блоки, написан-
ные на ST, IL, LD, или FBD, или C-функции и С-функциональные блоки, могут быть вызваны непосредственно из блока SFC действия на основе следующего синтаксиса:
а) для подпрограмм и С-функций:
ACTION (P) : result := sub_program ( ); END_ACTION;
или
ACTION (N) : result := sub_program ( ); END_ACTION; б) для функциональных блоков на языках C или на ST, IL, LD,
FBD:
ACTION (P): Fbinst(in1, in2); result1 := Fbinst.out1; result2 := Fbinst.out2; END_ACTION;
или
ACTION (N) : Fbinst(in1, in2); result1 := Fbinst.out1; result2 := Fbinst.out2; END_ACTION;
78
3.5.12. Вызовы функций из переходов
Любая подпрограмма или функция, написанные на FBD, LD, ST
или IL, или C-функция могут вычислять значение условия, присоеди­ненного к переходу, согласно следующему синтаксису:
< sub_program > ( );
Значение, возвращаемое подпрограммой или функцией должно
быть логическим и давать результирующее условие:
return условие value=FALSE FALSE
return условие
value=TRUE TRUE
Любая подпрограмма или функция, написанные на FBD, LD, ST
или IL, или C-функция, могут вычислять значение условия, присоеди­ненного к переходу, согласно следующему синтаксису:
< sub_program > ( ); Значение, возвращаемое подпрограммой или функцией, должно
быть логическим и давать результирующее условие:
return условие value=FALSE FALSE return условие value=TRUE TRUE
3.5.13. Динамические правила SFC
Язык SFC имеет пять динамических правил: 1) начальная ситуа-
ция; 2) освобождение перехода; 3) изменение состояния активного шага; 4) одновременное освобождение переходов; 5) одновременная активизация и дезактивация шага.
Начальная ситуация характеризуется начальными шагами, которые
по определению находятся в активном состоянии в начале работы. По крайней мере 1 начальный шаг должен быть в каждой SFC-программе.
Освобождение перехода: переход либо разрешен, либо запрещен.
Переход разрешен, если все непосредственно предшествующие шаги,
79
связанные с соответствующим символом перехода, активны, в про­тивном случае переход запрещен. Переход не может быть освобожден:
1) если он не разрешен; 2) когда соответствующее условие перехода не
TRUE.
Освобождение перехода одновременно ведет к активному со-
стоянию непосредственно следующего шага и пассивному состоянию непосредственно предшествующего шага. Для того чтобы определить переходы, которые должны освобождаться одновременно, могут быть использованы двойные линии. Если такие переходы изображены от­дельно, то активное состояние предшествующих шагов может быть использовано, чтобы выразить их условия. Если во время работы шаг одновременно активизируется и дезактивируется, то приоритет отда­ется активизации.
3.5.14. Иерархия программы SFC
SFC-программы образуют иерархическое дерево. Каждая SFC-
программа может управлять (запукать, уничтожать) другими SFC-про­граммами. Такие программы называются дочерними программами SFC, а управляющие ими – родительскими [15]. SFC-программы свя­заны в основное иерархическое дерево через связь родитель–наслед­ник, пример такой связи представлен на рис. 3.13.
Рис. 3.13. Главная и дочерние SFC-программы: а – иерархическое
SFC-дерево; б – родительская программа, использующая SFC-действия
80
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]