IT7 (1087054), страница 4
Текст из файла (страница 4)
- Misc... - функции для работы с алармами распределенных систем
(Ack), архивными трендами (HT), печатью и др.
Вызов списка функций группы осуществляется нажатием соответствующей клавиши. Назначение функций и описание их аргументов приведено в документации.
Вставка встроенных функций в скрипт производится щелчком по выбранной функции в списке функций. Она вместе со своими аргументами будет автоматически вставлена в текст скрипта в точку, указанную курсором. После этого можно отредактировать список аргументов.
По окончании редактирования скрипта следует нажать кнопку Ok. При обнаружении в скрипте каких-либо ошибок на экран будет выведено соответствующее сообщение. В большинстве случаев курсор установится в ту позицию, которая привела к появлению ошибки. Прежде чем скрипт будет сохранен, все ошибки должны быть исправлены.
Работа 3. Использование скриптов в InTouch.
Цель работы:
- замена фиктивных переменных;
- создание скриптов, запускаемых кнопками;
- создание скриптов по условию.
28
1. Откройте окно Hopper.
В этом окне представлен бункер высотой 200 пикселей. Синий указатель – курсор “привязан” к переменной HopperSetpoint (задание уровня). Красный указатель служит для отображения текущего значения переменной HopperLevel (уровень в бункере).
Запуск конвейера в дальнейшем следует «привязать» к дискретной переменной Conveyor_on. Конвейер будет включен/выключен при Conveyor_on = 1/0. Управление значением переменной Conveyor_on должно осуществляться кнопкой Conveyor_on Toggle.
Нижняя крышка бункера “привязана” к переменной GateCount типа Integer. Полное открытие (перемещение) крышки - 30 пикселей.
2. При импортировании окна Hopper все относящиеся к этому окну переменные преобразовались в фиктивные, которые следует заменить на обычные. Нажмите клавишу F2 для выделения всех объектов в окне и выполните команду Special/Substitute Tags (замена переменных).
3. Нажмите Convert, затем Local для преобразования переменных.
29
4. Определите в словаре переменных следующие переменные:
- Conveyor_on, Memory Discrete;
- Gate, Memory Discrete;
- GateCount, Memory Integer, Min Value – 0, Max Value - 100;
- HopperLevel, Memory Real, Min Value – 0, Max Value - 100;
- HopperSetpoint, Memory Real, Min Value – 0, Max Value – 100.
Анимирование кнопок HopperLevel.
-
Создайте скрипт, запускаемый кнопкой «HopperLevel=0 » (Touch Pushbutton Action). Тип скрипта - On Key Down (исполняется один раз в момент нажатия на кнопку) - следует выбрать из списка.
Нажатие кнопки «HopperLevel=0 » должно обнулять уровень в бункере.
-
Создайте два скрипта Touch Pushbutton Action, запускаемых кнопкой «HopperLevel+10 ».
Тип первого скрипта - On Key Down (исполняется один раз в момент нажатия на кнопку). Щелчок по кнопке «HopperLevel+10 » должно вызывать увеличение уровня на 10 единиц.
Тип второго скрипта - While Down (выполняется периодически через заданные интервалы времени пока нажата кнопка) – также выбирается из выпадающего списка.
30
При удержании кнопки «HopperLevel+10 » уровень должен увеличиваться на единицу каждые 1000 мсек (1сек).
7. Перейдите в среду исполнения и проверьте работу кнопок.
8. Для анимирования заполнения бункера создайте два скрипта по условию (Condition Scripts).
Первый скрипт устанавливает переменную «Conveyor_on » в 1 (конвейер включен), когда значение переменной HopperLevel меньше, чем заданное HopperSetpoint (Condition – условие, см. рис. внизу), и присваивает переменной «Conveyor_on » значение 0 (конвейер выключен) при других условиях.
Щелкните на Special/Scripts/Condition Scripts и создайте скрипт по условию типа On True (исполняется один раз при переходе условия в состояние True). Скрипт этого типа включает конвейер, если текущий уровень меньше заданного.
Но конвейер надо остановить, если уровень будет равен или больше заданного (переход условия в состояние False). Для этого состояния скрипт выглядит следующим образом:
31
9. Перейдите в среду исполнения для проверки работы скриптов.
-
Второй скрипт по условию будет увеличивать значение переменной HopperLevel на 1 каждые 1000 мсек (1 сек.), если переменная Conveyor_on = TRUE (конвейер включен). Щелкните Script/New, затем Edit/Clear для очистки окна редактора. Создайте скрипт типа While True (исполняется непрерывно, пока значением условия является True):
11. Перейдите в среду исполнения для проверки работы скриптов.
12. Нижней крышке бункера присвоено свойство Location/Horizontal (горизонтальное перемещение) и «привязано» оно к переменной GateCount типа Integer. Крышка закрыта при значении GateCount=0. Когда GateCount=30, крышка полностью открыта. Кнопка Gate Control управляет значением дискретной переменной Gate.
Создайте скрипт, который будет открывать крышку бункера (увеличивать GateCount до 30), когда Gate == TRUE, и закрывать крышку (уменьшать GateCount до 0), когда Gate == FALSE.
Наблюдать за работой конвейера и бункера можно только при открытом окне Hopper. Поэтому скрипт, анимирующий крышку бункера, должен быть связан с этим окном (скрипт уровня окна - Window Scripts). Его тип - While Showing (исполняется периодически через заданные промежутки времени пока окно отображается на экране).
32
-
Добавьте скрипт типа On Show для этого окна (исполняется один раз в момент открытия окна) для того, чтобы все переменные и кнопки находились в начальном состоянии при открытии окна Hopper.
15. В InTouch имеется набор предопределенных функций. Функцию InfoAppActive можно использовать в скриптах для активизации программы Calculator (калькулятор). Если калькулятора нет на экране, то скрипт запустит его. Иначе, скрипт будет работать в фоновом режиме.
Создайте скрипт Touch Pushbutton Action типа On Key Down для кнопки «Calculator ».
33
Функции также могут использоваться в поле Expression диалогов установки анимационных связей. Откройте окно Menu и анимируйте текст # MB для отображения размера свободного пространства на диске. Задайте текстовому объекту # свойство Value Display/Analog, введя в поле Expression следующее выражение:
InfoDisk («C»,2,$Second) /1000000
Раздел 4. Алармы и события в InTouch.
InTouch поддерживает возможность отображения, регистрации и печати информации как об алармах, связанных с аналоговыми или логическими переменными, так и о системных событиях.
Типы алармов.
Стандартные (бывают и распределенные) алармы подразделяются по типу (Туре) на несколько категорий.
Дискретные алармы срабатывают при изменении состояния дискретной переменной. При этом для срабатывания аларма можно использовать любое из двух состояний: TRUE/ON (1) или FALSE/OFF (0).
| Алармы | Стандартный тип |
| Discrete | DISC |
| Deviation - Major | LDEV |
| Deviation - Minor | SDEV |
| Rate - of - Change | ROC |
| Value - LoLo | LOLO |
| Value - Lo | LO |
| Value - High | HI |
| Value - HiHi | HIHI |
Аналоговые алармы базируются на анализе выхода значений переменной за указанные верхние и нижние пределы. Как видно из таблицы, аналоговые алармы могут быть заданы в нескольких комбинациях:
- Deviation (отклонение от нормы);
- Rate of Change - ROC (скорость изменения).
- Low и Low Low (нижний и ниже нижнего);
- High и High High (верхний и выше верхнего);
С InTouch - переменной можно связывать алармы любого типа. В зависимости от типа переменной для нее можно определять один или более классов и типов алармов.
34
Приоритеты алармов.
Каждому аларму в InTouch соответствует некоторая величина, называемая приоритетом аларма. Этот приоритет характеризует важность данного аларма и принимает значения от 1 до 999 (наиболее серьезные алармы имеют приоритет 1). Организовав несколько диапазонов значений и связав алармы с каждым диапазоном, можно достаточно легко отфильтровать критические алармы от некритических. Выполнение анимационных функций, скриптов подтверждения, печать и просмотр информации также могут зависеть от приоритетов.
Группы алармов.
Каждый переменная связана с определенной логической группой алармов. Все эти группы определяются пользователем и могут быть организованы в иерархическую структуру до восьми уровней иерархии. Это позволяет сгруппировать алармы в зависимости от их организации, схемы размещения оборудования, приоритетов и любых других признаков.
Если пользователь не определил такую группу для конкретной переменной, то она автоматически связывается с корневой группой алармов $System. С любой группой алармов можно связать как переменную, так и другую группу алармов. Взаимосвязи всех групп алармов представляются древовидной структурой, у которой в качестве корневой является группа $System. Все определяемые группы алармов автоматически становятся потомками этой группы.
Для создания групп алармов в меню окна WindowMaker предусмотрена команда Special/Alarm Groups (группы алармов), вызывающая появление диалога Alarm Groups. При определении переменных в словаре Tagname Dictionary нажатие кнопки Group также выводит на экран этот диалог.
35
Определение условий аларма для переменной.
Условия возникновения аварийных ситуаций определяются в словаре переменных (Tagname Dictionary). Включение опции Alarms (или Details & Alarms) вызывает на экран диалог определения условий алармов, соответствующий типу переменной.
















