Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Программирование промышленных контроллеров. Учебное пособие
.pdf
По сути, альтернативные ветви представляют собой реализацию
логической операции ИЛИ. Проверка альтернативных условий выполняется слева направо. Если найдено верное условие, то прочие
альтернативные ветви не рассматриваются.
При создании альтернативных ветвей желательно задавать вза-
имоисключающие условия, так как в этом случае вероятность возникновения ошибки при анализе или в процессе доработки диаграммы
значительно ниже.
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
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
