Урок 16
Сигналы последовательных блоков и прерывание блоков SFC
Продолжаем тему SFC, начатую в предыдущих уроках.
Последовательные блоки (SFC, ST16, LC64) могут посылать блокам SFC сигналы Signal Event Message (текст с параметрами или без параметров).
Блоки SFC могут по-разному обрабатывать эти сигналы:
- как сигналы очереди (queue signal) или
- как сигналы прерывания (interrupt signal)
То есть тип сигнала определяется не в блоке-источнике, а в блоке-приёмнике: один и тот же сигнал для одного блока SFC может быть сигналом очереди, а для другого блока SFC – сигналом прерывания.
Сигнал прерывания декларируется в шаге прерывания (Interrupt Step).
Сигнал очереди декларируется в Initial Step основной программы:
queue signal <signal name>[, <signal name>, …]
где <signal name> - символьная константа до 8 байт.
В блоке-приёмнике также определяется:
- максимальное количество параметров сигналов очереди (от 2 до 8)
- максимальное количество параметров сигналов прерывания (от 2 до 8)
- максимальное количество сигналов очереди (от 0 до 99)
- максимальное количество сигналов прерывания (от 0 до 99)
Сигналы, посылаемые блоками ST16 и LC64, могут содержать максимум 2 параметра:
- Parameter 1 (число от 0 до 65535)
- Parameter 2 (строка 16 символов).
Операция | Комментарий |
---|---|
Before Status Change | Программа прерывания выполняется до изменения статуса прерываемого блока |
After Status Change | Программа прерывания выполняется после изменения статуса прерываемого блока |
Signal Processing | Программа прерывания выполняется по сигналу прерывания |
Error Processing | Программа прерывания выполняется при возникновении ошибки |
Сигналы, которые посылаются блоками Sequence Table или Logic Chart, должны быть описаны в редакторе Signal Event Builder.
Редактор Signal Event Builder не требуется для описания сигналов, которые посылаются блоками SFC, написанными на языке SEBOL.
Задание
Добавить в схему управления, разработанную на предыдущем уроке, шаг прерывания (Interrupt Step). Сигнал прерывания отправить из блока SEND в блок STEP.
По прерыванию вывести пользовательское аварийное сообщение процесса (Annunciator).
Освоить прерывания по смене статуса блока.
Решение
-
Открываем редактор Annunciator Builder и добавляем пользовательское аварийное сообщение:
-
Открываем редактор сигналов Signal Event Builder:
FCS0101 > MESSAGE > EV0101
и добавляем сигнал прерывания блока STEP:
-
Открываем редактор Common Switch Builder и добавляем тег SEND1:
-
Открываем редактор блока SFC и добавляем шаг прерывания:
Draw > Interrupt Step:
-
Изменяем атрибуты шага прерывания:
Шаг прерывания будет выполняться по сигналу прерывания с именем INT -
Открываем редактор шага прерывания (для этого переключаем Switch Plane на 1 Interrupt Step) и добавляем один шаг:
-
Изменяем атрибуты первого шага:
-
Открываем редактор кода первого шага и вводим код:
-
Открываем редактор схемы управления DR0001 и добавляем функциональный блок ST16 с именем тега SEND:
-
Открываем редактор первого шага блока STEP и добавляем декларацию тега INTERRUPT:
-
Открываем редактор блока SEND и заполняем таблицу решений:
- Запускаем симулятор контроллера
-
Открываем окно статуса схемы управления DR0001 и переводим блок SEND в режим AUT, а блок STEP в статус RUN:
- Вызываем лицевую панель тега CONDITION1 и имитируем выполнение условия перехода блока STEP на шаг 2.
-
Вызываем лицевую панель тега SEND1 и инициируем посылку сигнала прерывания из блока SEND в блок STEP:
- Вызываем лицевую панель тега INTERRUPT и нажимаем кнопку [OFF]
- Останавливаем симулятор контроллера
-
Изменяем атрибуты шага прерывания:
Шаг прерывания будет вызываться после перехода блока STEP в статус STOP - Запускаем симулятор контроллера и переводим блок STEP в статус RUN
-
С помощью лицевой панели переводим блок STEP в статус STOP - вызывается шаг прерывания,
в котором генерируется пользовательское аварийное сообщение – «Прерывание»:
- Останавливаем симулятор контроллера
-
Изменяем атрибуты шага прерывания:
Шаг прерывания будет вызываться до перехода блока STEP в статус STOP -
Метод SEBOL не может использоваться в шаге прерывания, который должен обрабатываться до изменения статуса блока,
поэтому необходимо изменить атрибут шага прерывания Description Method на SEBOL One-shot:
- Запускаем симулятор контроллера и переводим блок STEP в статус RUN
- С помощью лицевой панели переводим блок STEP в статус PAUS - вызывается шаг прерывания, в котором генерируется пользовательское аварийное сообщение – «Прерывание»: