Сигналы последовательных блоков и прерывание блоков SFC

Пошаговый самоучитель CENTUM VP

 


Содержание самоучителя


Урок 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).

Освоить прерывания по смене статуса блока.

Решение

  1. Открываем редактор Annunciator Builder и добавляем пользовательское аварийное сообщение:

    Рис. Annunciator Builder

  2. Открываем редактор сигналов Signal Event Builder:
    FCS0101 > MESSAGE > EV0101
    и добавляем сигнал прерывания блока STEP:

    Рис. Signal Event Builder

  3. Открываем редактор Common Switch Builder и добавляем тег SEND1:

    Рис. Common Switch Builder

  4. Открываем редактор блока SFC и добавляем шаг прерывания:
    Draw > Interrupt Step:

    Рис. Шаг прерывания

  5. Изменяем атрибуты шага прерывания:

    Рис. Атрибуты шага прерывания
    Шаг прерывания будет выполняться по сигналу прерывания с именем INT

  6. Открываем редактор шага прерывания (для этого переключаем Switch Plane на 1 Interrupt Step) и добавляем один шаг:

    Рис. Редактор шага прерывания

  7. Изменяем атрибуты первого шага:

    Рис. Атрибуты первого шага

  8. Открываем редактор кода первого шага и вводим код:

    Рис. Код первого шага

  9. Открываем редактор схемы управления DR0001 и добавляем функциональный блок ST16 с именем тега SEND:

    Рис. SEND

  10. Открываем редактор первого шага блока STEP и добавляем декларацию тега INTERRUPT:

    Рис. Декларация тега INTERRUPT

  11. Открываем редактор блока SEND и заполняем таблицу решений:

    Рис. Таблица решений SEND

  12. Запускаем симулятор контроллера

  13. Открываем окно статуса схемы управления DR0001 и переводим блок SEND в режим AUT, а блок STEP в статус RUN:

    Рис. Статус схемы управления

  14. Вызываем лицевую панель тега CONDITION1 и имитируем выполнение условия перехода блока STEP на шаг 2.

  15. Вызываем лицевую панель тега SEND1 и инициируем посылку сигнала прерывания из блока SEND в блок STEP:

    Рис. Аварийное сообщение

  16. Вызываем лицевую панель тега INTERRUPT и нажимаем кнопку [OFF]

  17. Останавливаем симулятор контроллера
  18. Прерывание по изменению статуса прерываемого блока

  19. Изменяем атрибуты шага прерывания:

    Рис. Атрибуты после смены статуса
    Шаг прерывания будет вызываться после перехода блока STEP в статус STOP

  20. Запускаем симулятор контроллера и переводим блок STEP в статус RUN

  21. С помощью лицевой панели переводим блок STEP в статус STOP - вызывается шаг прерывания, в котором генерируется пользовательское аварийное сообщение – «Прерывание»:

    Рис. Аварийное сообщение

  22. Останавливаем симулятор контроллера

  23. Изменяем атрибуты шага прерывания:

    Рис. Атрибуты до смены статуса
    Шаг прерывания будет вызываться до перехода блока STEP в статус STOP

  24. Метод SEBOL не может использоваться в шаге прерывания, который должен обрабатываться до изменения статуса блока, поэтому необходимо изменить атрибут шага прерывания Description Method на SEBOL One-shot:

    Рис. One-shot

  25. Запускаем симулятор контроллера и переводим блок STEP в статус RUN

  26. С помощью лицевой панели переводим блок STEP в статус PAUS - вызывается шаг прерывания, в котором генерируется пользовательское аварийное сообщение – «Прерывание»: Рис. Аварийное сообщение

  27. Продолжение в следующем уроке.