1. Для модели работы объекта используйте скрипты типа Condition.
Сценарий по условию Condition |
Условие: Klapan_1 |
On False: Flow_1_old = Flow_1; Flow_1 = 0; On True: Flow_1 = Flow_1_old; While True 100 Msec: Level_1 = Level_1 + Flow_1/600; IF Level_1 >= Level_set_1 THEN Klapan_1 = 0; Klapan_2 = 0; Start_ots_1 = 1; ENDIF; |
Условие: Klapan_2 |
On False: Flow_2_old = Flow_2; Flow_2 = 0; On True: Flow_2 = Flow_2_old; While True 100 Msec: Level_1 = Level_1 + Flow_2/600; IF Level_1 >= Level_set_1 THEN Klapan_1 = 0; Klapan_2 = 0; Start_ots_1 = 1; ENDIF; |
Условие: Start_ots_1 |
On True: Time_1 = 0; While True 1000 Msec: Time_1 = Time_1 + 1; IF Time_1 >= Time_set_1 THEN Start_ots_1 = 0; Klapan_3 = 1; Klapan_4 = 1; Klapan_5 = 1; ENDIF; |
Условие: Klapan_3 |
On False: Flow_3_old = Flow_3; Flow_3 = 0; On True: Flow_3 = Flow_3_old; While True 100 Msec: Level_2 = Level_2 + Flow_3/600; Level_1 = Level_1 - Flow_3/600; IF Level_1 <= 1 THEN Klapan_3 = 0; ENDIF; |
Условие: Klapan_4 |
On False: Flow_4_old = Flow_4; Flow_4 = 0; On True: Flow_4 = Flow_4_old; While True 100 Msec: Level_2 = Level_2 + Flow_4/600; |
Условие: Klapan_5 |
On False: Flow_5_old = Flow_5; Flow_5 = 0; On True: Flow_5 = Flow_5_old; While True 100 Msec: Level_2 = Level_2 + Flow_5/600; |
Условие: Level_1 >= Level_set_1 |
On True: Start_ots_1 = 1; While True 100 Msec: Klapan_1 = 0; Klapan_2 = 0; |
Условие: Level_2 >= Level_set_2 |
On True: Start_ots_2 = 1; While True 100 Msec: Klapan_3 = 0; Klapan_4 = 0; Klapan_5 = 0; |
Условие: Start_ots_2 |
On True: Time_2 = 0; While True 1000 Msec: Time_2 = Time_2 + 1; IF Time_2 >= Time_set_2 THEN Start_ots_2 = 0; Start_ots_3 = 1; ENDIF; |
Условие: Start_ots_3 |
On True: Time_3 = 0; While True 1000 Msec: Time_3 = Time_3 + 1; IF Time_3 >= Time_set_3 THEN Start_ots_3 = 0; Klapan_6 = 1; ENDIF; |
Условие: Klapan_6 |
On False: Flow_6_old = Flow_6; Flow_6 = 0; On True: Flow_6 = Flow_6_old; While True 100 Msec: Level_2 = Level_2 - Flow_6/600; Level_all = Level_all + Flow_6/600; IF Level_2 <= 1 THEN Klapan_6 = 0; Klapan_1 = 1; Klapan_2 = 1; ENDIF; |
2. Создайте новую Quick – функцию с одним действительным аргументом (имя аргумента не должно совпадать с именем какого-либо тэга). Для возврата в вызывающий сценарий используйте оператор вида: «RETURN Аналоговое выражение для расчета объема;». В вызывающем сценарии используйте оператор следующего вида: «Тэг объема = CALL ИмяФункции(Тэг уровня);».
Пример:
Quick Function | |
Функция – Volume | Аргумент – TankLevel (Real) |
RETURN PI()*0.5*0.5* TankLevel |
3. На клапан задайте анимационную связь Touch Pushbuttons – Discrete и в поле Tagname введите тэг работы клапана: Klapan_1, с условием Action - Toggle. Для цветовой визуализации используйте анимационную связь Fill Color– Discrete и задайте Tagname: Klapan_1.
Задание 5. Алармы и события.
Цель работы:
Изучение методов поддержки алармов и событий в InTouch (типы, группы, приоритеты, задание условий для тэгов, поля, квитирование, библиотечные функции). Настройка InTouch с целью создания регистрационных файлов (журналов). Настройка стандартных экранов алармов или экранов распределенных алармов для локальных оповещений.
Теоретические положения
Алармы и события в InTouch.
В системе InTouch действуют два вида оповещений, информирующих оператора о протекании процесса: алармы и события. Алармы представляют собой предупреждения о тревожных состояниях процесса, которые требуют отклика оператора. Типичный случай генерации аларма - превышение каким-то параметром процесса предела, определенного пользователем, например, когда значение выходит за верхний пороговый уровень. Это вызывает состояние неподтвержденного (неквитированного) аларма, который используется для уведомления оператора о проблеме. InTouch может также зарегистрировать этот аларм в файле, который хранится на диске, или/и отправить его на принтер. Если оператор подтверждает аларм, то система переводит аларм в квитированное состояние. События - сообщения о нормальном состоянии системы, которые не требуют отклика оператора. Типичный случай генерации события - вход оператора в систему InTouch. Такое событие также может быть зарегистрировано в файле на диске или (и) отправлено на принтер.
Типовые алармы
Дискретные алармы - срабатывают при изменении состояния дискретной переменной. При этом для срабатывания аларма можно использовать любое из двух состояний: TRUE / ON (1) или FALSE / OFF (0). По умолчанию дискретный аларм может срабатывать на ON или OFF.
Аналоговые алармы базируются на анализе выхода значений переменной за указанные верхние и нижние пределы. Аналоговые алармы могут быть заданы в нескольких комбинациях:
- High и High High (верхний и выше верхнего);
- Low и Low Low (нижний и ниже нижнего);
- Deviation (отклонение от нормы);
- Rate of Change - ROC (скорость изменения).
Рис. 57. Графическая интерпретация алармов типа Hi и HiHi.
Из рис. 57 видно, что алармы Hi и HiHi срабатывают при достижении переменной заданных для каждого аларма пределов (High Alarm, High High Alarm). Для выхода переменной из состояния аларма (HiHi или Hi) необходимо, чтобы ее значение стало меньше порогового на величину, называемую зоной нечувствительности (Deadband). Аналогично можно интерпретировать алармы типа Lo и LoLo.
Для аларма типа Deviation, срабатывание аларма будет происходить при отклонении значения переменной от заданного значения (Setpoint), причем это заданное значение в ходе технологического процесса может изменяться либо оператором, либо программно (автоматически). Аларм сработает при выходе значения переменной за границу предельно допустимого отклонения.
Алармы типа ROC срабатывают, когда скорость изменения параметра становится больше предельно допустимой. Понятие зонs нечувствительности (Deadband) к алармам этого типа не применяется.
Типы алармов и событий
В зависимости от своих характеристик алармы подразделяются на несколько категорий по типу (Туре) и классу (Class).
Алармы | Стандартный тип | Распределенный класс | Распределенный тип |
Discrete | DISC | DSC | DSC |
Deviation - Major | LDEV | DEV | MAJDEV |
Deviation - Minor | SDEV | DEV | MINDEV |
Rate - of - Change | ROC | ROC | ROC |
SPC | SPC | SPC | SPC |
Value - LoLo | LOLO | VALUE | LOLO |
Value - Lo | LO | VALUE | LO |
Value - High | HI | VALUE | HI |
Value - HiHi | HIHI | VALUE | HIHI |
С InTouch - переменной можно связывать алармы любого типа. В зависимости от типа переменной для нее можно определять один или более классов и типов алармов.
События в InTouch также делятся в зависимости от их характеристик на несколько общих категорий (Event Types).
Тип | Событие |
ACK | Аларм был подтвержден |
ALM | Возникла аварийная ситуация |
EVT | Возникло аварийное событие |
RTN | Переменная перешла из аварийного состояния в обычное |
SYS | Возникло системное событие |
USER | Изменение значения переменной $Operator |
DDE | Получено значение переменной от DDE - клиента |
LGC | Скрипт изменил значение переменной |
OPR | Оператор ввел новое значение переменной |
Первые шесть событий выбираются автоматически при разрешении регистрации событий. Для остальных трех событий разрешение регистрации устанавливается при определении переменной в словаре переменной.
Каждый сконфигурированный в InTouch аларм имеет определенное для него значение приоритета. Приоритет обозначает степень критичности (важности) аларма и может варьироваться в пределах от 1 до 999, причем 1 - максимальная важность. На основе диапазона приоритетов можно создать связи анимации, сценарии квитирования, а также использовать фильтры для выборочного просмотра и печати алармов. Например, если для производственного процесса необходимы четыре степени критичности, то можно выделить следующие диапазоны приоритетов:
- критический (1... 249),
- значительный (250... 499),
- незначительный (500... 749),
- рекомендательный (750... 999).
Группы алармов.
Каждый аларм связан с определенной логической группой алармов. Все эти группы определяются пользователем и могут быть организованы в иерархическую структуру до восьми уровней иерархии. Это позволяет сгруппировать алармы в зависимости от их организации, схемы размещения оборудования, приоритетов и любых других признаков. Группы алармов являются полезным средством фильтрации вывода информации об алармах на экран дисплея или принтер.
Каждая переменная связывается с какой-либо группой алармов. Если пользователь не определил такую группу для конкретной переменной, то она автоматически связывается с корневой группой алармов $System. С любой группой алармов можно связать как переменную, так и другую группу алармов. Взаимосвязи всех групп алармов представляются древовидной структурой, у которой в качестве корневой является группа $System. Все определяемые группы алармов автоматически становятся потомками этой группы.
Древовидная структура может иметь до восьми уровней, при этом каждая входящая в дерево группа может иметь до 16 подгрупп (рис. 58).
Рис. 58. Иерархическая древовидная структура групп алармов.
Для создания таких групп в меню окна WindowMaker предусмотрена команда Special/Alarm Groups (группы алармов), вызывающая появление диалога Alarm Groups (рис.59). При определении переменных в словаре Tagname Dictionary нажатие кнопки Group (см. рис.18) также выводит на экран этот диалог.
Рис. 59. Диалог Alarm Group (группы алармов).
Воспользовавшись кнопкой Add, можно добавить группу алармов, а также формировать древовидную структуру системы алармов, определяя родительские группы и группы - потомки. При этом открывается диалог (рис.60) Add Alarm Group (добавить группу алармов). Кнопка Parent Group (родительская группа) предназначена для выбора родительской группы в древовидной структуре. В диалоге предусмотрено поле Comment (комментарий) для ввода необязательного текста, комментирующего данную группу.
Рис. 60. Диалог Add Alarm Group (добавить группу алармов).
Вывод информации об алармах.
Для отображения информации об аварийных ситуациях или событиях в InTouch предусмотрены два типа объектов (окон): Alarm Summary (текущие алармы) и Alarm History (архивная сводка алармов).
С помощью объекта "Текущие алармы" на экран дисплея выводится информация только о текущих подтвержденных или неподтвержденных аварийных ситуациях. В случае возврата ситуации в нормальное состояние запись о ней исчезает из текущей аварийной сводки.
С помощью объекта "Архивная сводка алармов" на дисплей выводятся данные об аварийных ситуациях или событиях, включая количество уже произошедших аварийных ситуаций данного типа, время подтверждения, время возврата в нормальное состояние.
Создание системы алармов производится в несколько этапов:
- создание объекта (окна) вывода аварийной информации;
- конфигурирование окна вывода аварийной информации; - форматирование сообщений;
- конфигурирование системы алармов (определение общих свойств алармов, свойств регистрации и печати).
Для создания объекта вывода алармов следует сначала вывести на экран диалоговое окно Wizard Selection (Выбор мастера). Далее производится выбор категории Alarm Displays (окна вывода алармов) в списке мастеров, в категории выбирается стандартная система алармов (Standard Alarm Displays).
Рис. 61. Стандартный объект вывода аварийной информации.
Конфигурирование окна вывода аварийной информации производится в диалоге Alarm Configuration (параметры окна вывода аварийной информации). Вызов этого диалога производится командой Special/Animation Links меню WindowMaker (рис. 62). Быстрый доступ к этому диалогу можно получить, воспользовавшись меню правой кнопки мыши с последующим щелчком на строке Properties.
Рис. 62. Диалог Alarm Configuration.
В этом диалоге определяется тип окна вывода аварийной информации ("Текущие алармы" или "Архивная сводка алармов"), группа алармов (Alarm Group), границы диапазона приоритетов окна вывода алармов (From/To Priority), дискретные переменные для перехода на предыдущую (Previous Page) и следующую (Next Page) страницу списка алармов. Для выбора шрифтов следует воспользоваться кнопкой Select Display Font.
Нажатие кнопки Format Alarm Message (форматирование аварийного сообщения) выводит на экран одноименный диалог (рис.63), где определяется информация, включаемая в аварийное сообщение.
Рис. 62. Диалог Format Alarm Message.
В строку аварийного сообщения можно включить текущую дату (Date), текущее время (Time), тип аларма (Alarm Type), приоритет (Priority), имя переменной (Tagname), ее текущее значение (Value), а также группу алармов (Group Name) и статус аларма (Alarm State).
Конфигурирование стандартной системы алармов.
В соответствии с алгоритмом настройки системы алармов InTouch следующий этап предполагает настройку системы алармов в целом, т. е. определение общих свойств системы, а также свойств регистрации и печати алармов. Для входа в диалог конфигурирования стандартной системы алармов следует воспользоваться командой Special/Configure/Alarms либо в группе Configure окна Application Explorer дважды щелкнуть на строке Alarms.
Здесь возможно определить различные параметры стандартной системы алармов:
- количество записей об аварийных ситуациях, которые одновременно будут находиться в буфере алармов;
- размер буфера печати подключенного к параллельному порту принтера;
- период времени в миллисекундах, через который WindowViewer будет периодически обращаться к принтеру;
- поведение окна при добавлении нового аварийного сообщения к списку;
- разрешение регистрации событий, связанных с изменением данных в результате операций ввода/вывода, действий оператора, скрипта или системы и т. д.