
- •Введення
- •Розділ 1 Application Manager і WindowMaker
- •Середовище розробки WindowMaker
- •Робота 1. Вікна і графічні об'єкти
- •Робота 2. Словник змінних
- •Розділ 3 Анімаційні зв'язку
- •Робота 3. Створення анімаційних зв'язків
- •Редактор скриптів
- •Вбудовані функції
- •Робота 4. Використання скриптів в InTouch
- •Відкрийте вікно Hopper.
- •Анімацію кнопок HopperLevel
- •Визначення умов аларма для змінної
- •Виведення інформації про аларм
- •Робота 5. Аларм та події
- •Розділ 6. Тренди в InTouch
Вбудовані функції
В пакеті InTouch є набір вбудованих функцій, які можуть бути пов'язані з командами або використані в скриптах для виконання найрізноманітніших завдань.
Всі вбудовані функції розбиті на чотири групи:
-
String ... - для обробки різних символьних рядків і змінних;
-
Math ... - математичні функції (працюють з цілими і речовими аргументами);
-
System ... - системні функції діляться на дві категорії: файлові (File) і для роботи з Windows - додатками (Info). застосовуються для виконання таких дій, як запуск іншого Windows - додатки, отримання інформації про програму, копіювання, знищення або переміщення файлів і т. д .;
-
Misc ... - функції для роботи з алармами розподілених систем (Ack), архівними трендами (HT), печаткою та ін.
Виклик списку функцій групи здійснюється натисненням відповідної клавіші. Призначення функцій і опис їх аргументів приведено в документації.
Вставка вбудованих функцій в скрипт виробляється клацанням по вибраної функції в списку функцій. Вона разом зі своїми аргументами буде автоматично вставлена в текст скрипта в точку, вказану курсором. Після цього можна відредагувати список аргументів.
По закінченні редагування скрипта слід натиснути кнопку Ok. при виявленні в скрипті будь-яких помилок на екран буде виведено відповідне повідомлення. У більшості випадків курсор встановиться в ту позицію, яка привела до появи помилки. Перш ніж скрипт буде збережений, всі помилки повинні бути виправлені.
Робота 4. Використання скриптів в InTouch
Мета роботи:
-
Створення скриптів, що запускаються кнопками;
-
Створення скриптів за умовою.
-
Відкрийте вікно Hopper.
В цьому вікні представлений бункер заввишки 200 пікселів. синій покажчик
-
Курсор «прив'язаний» до змінної HopperSetpoint (завдання рівня). Червоний покажчик служить для відображення поточного значення змінної HopperLevel (рівень в бункері).
Запуск конвеєра в подальшому слід «прив'язати» до дискретної змінної Conveyor_on. Конвеєр буде включений / виключений при Conveyor_on = 1/0. Управління значенням змінної Conveyor_on повинно здійснюватися кнопкою Conveyor_on Toggle.
Нижня кришка бункера «прив'язана» до змінної GateCount типу Memory Integer. Повне відкриття (переміщення) кришки - 30 пікселів.
-
При імпортуванні вікна Hopper всі стосовні до цього вікна змінні перетворилися в фіктивні, які слід замінити на звичайні. Натисніть клавішу F2 для виділення всіх об'єктів у вікні і виконайте команду Special / Substitute Tags (заміна змінних).
-
Нажміть Convert, потім Local для перетворення змінних.
Анімацію кнопок HopperLevel
-
Створіть скрипт, що запускається кнопкою «HopperLevel = 0» (Touch Pushbutton Action). Тип скрипта - On Key Down (виповнюється один раз в момент натискання на кнопку) - слід вибрати зі списку.
Натискання кнопки «HopperLevel=0» повинно обнуляти рівень в бункері.
-
Створіть два скрипта Touch Pushbutton Action, що запускаються кнопкою «HopperLevel + 10».
Тип першого скрипта - On Key Down (виповнюється один раз в момент натискання на кнопку). Клацання по кнопці «HopperLevel + 10» повинно викликати збільшення рівня на 10 одиниць.
Тип другого скрипта - While Down (виконується періодично через задані інтервали часу поки натиснута кнопка) - також вибирається з списку, що випадає.
При утриманні кнопки «HopperLevel + 10» рівень повинен збільшуватися на одиницю кожні 1000 мсек (1сек).
-
Перейдіть в середу виконання і перевірте роботу кнопок.
-
Для анімації заповнення бункера створіть два скрипта по умові (Condition Scripts).
Перший скрипт встановлює змінну «Conveyor_on» в 1 (конвеєр включений), коли значення змінної HopperLevel менше, ніж заданий HopperSetpoint (Condition - умова, див. рис. внизу), і привласнює змінної «Conveyor_on» значення 0 (конвеєр вимкнений) при інших умовах.
Клацніть на Special / Scripts / Condition Scripts і створіть скрипт по умові типу On True (виповнюється один раз при переході умови в стан True). Скрипт цього типу включає конвеєр, якщо поточний рівень менше заданого.
Але конвеєр треба зупинити, якщо рівень буде дорівнює або більше заданого (перехід умови в стан False). Для цього стану скрипт виглядає наступним чином:
-
Перейдіть в середовище виконання для перевірки роботи скриптів.
-
Другий скрипт за умовою збільшуватиме значення змінної HopperLevel на 1 кожні 1000 мсек (1 сек.), Якщо змінна Conveyor_on = TRUE (конвеєр включений). Клацніть Script / New, потім Edit / Clear для очистки вікна редактора. Якщо в полі скрипта з яких-небудь умов є текст, очистіть його тією ж командою. Створіть скрипт типу While True(виповнюється безперервно, поки значенням умови є True):
-
Перейдіть в середу виконання для перевірки роботи скриптів. Змініть завдання рівня переміщенням вгору синього покажчика.
-
Нижньої кришці бункера присвоєно властивість Location / Horizontal (горизонтальне переміщення) і «прив'язане» воно до змінної GateCount типу Integer. Кришка закрита при значенні GateCount = 0. Коли GateCount = 30, кришка повністю відкрита. Кнопка Gate Control управляє значенням дискретної змінної Gate.
Створіть скрипт, який відкриватиме кришку бункера (збільшувати GateCount до 30), коли Gate == TRUE, і закривати кришку (зменшувати GateCount до 0), коли Gate == FALSE.
Спостерігати за роботою конвеєра і бункера можна тільки при відкритому вікні Hopper. Тому скрипт, анімує кришку бункера, повинен бути пов'язаний з цим вікном (скрипт рівня вікна - Window Scripts). Його тип - While Showing (виповнюється періодично через задані проміжки часу поки вікно відображається на екрані).
-
Додайте скрипт типу On Show для цього вікна (виповнюється один раз в момент відкриття вікна) для того, щоб всі змінні і кнопки перебували в початковому стані при відкритті вікна Hopper.
13. В InTouch мається набір визначених функцій. Функцію InfoAppActive можна використовувати в скриптах для активізації програми Calculator (калькулятор). Якщо калькулятора немає на екрані, то скрипт запустить його. Інакше, скрипт буде працювати у фоновому режимі.
Створіть скрипт Touch Pushbutton Action типу On Key Down для кнопки «Calculator».
Розділ 5 АЛАРМ та події в InTouch
InTouch підтримує можливість відображення, реєстрації та друку інформації як про АЛАРМ, пов'язаних з аналоговими або логічними змінними, так і про системні події.
Типи алармов
Стандартні (бувають і розподілені) аларми поділяються за типом (Туре) на кілька категорій.
Дискретні аларми спрацьовують при зміні стану дискретної змінної. При цьому для спрацьовування аларму можна використовувати будь-яке з двох станів: TRUE / ON (1) або FALSE / OFF (0).
Аларми |
Стандартний тип |
Discrete |
DISC |
Deviation - Major |
LDEV |
Deviation - Minor |
SDEV |
Rate - of - Change |
ROC |
Value - LoLo |
LOLO |
Value – Low |
LOW |
Value - High |
HIGHT |
Value - HiHi |
HIHI |
Аналогові аларми базуються на аналізі виходу значень змінної за вказані верхні і нижні межі. Як видно з таблиці, аналогові аларми можуть бути задані в декількох комбінаціях:
-
Deviation (відхилення від норми);
-
Rate of Change - ROC (швидкість зміни).
-
Low і Low Low (нижній і нижче нижнього);
-
High і High High (верхній і вище верхнього);
З InTouch - змінної можна пов'язувати аларми будь-якого типу. В залежності від типу змінної для неї можна визначати один або більше класів та типів алармов.
Пріоритети алармів
Кожному аларм в InTouch відповідає деяка величина, звана пріоритетом аларму. Цей пріоритет характеризує важливість даного аларму і приймає значення від 1 до 999 (найбільш серйозні аларми мають пріоритет 1). Організувавши декілька діапазонів значень і зв'язавши аларми з кожним діапазоном, можна досить легко відфільтрувати критичні аларми від некритичних. Виконання анімаційних функцій, скриптів підтвердження, друк і перегляд інформації також можуть залежати від пріоритетів.
Групи алармів
Групи визначаються користувачем і можуть бути організовані в ієрархічну структуру до восьми рівнів ієрархії. Це дозволяє згрупувати аларми залежно від їх організації, схеми розміщення обладнання, пріоритетів і будь-яких інших ознак.
Якщо користувач не визначив таку групу для конкретної змінної, то вона автоматично зв'язується з кореневою групою алармов $ System. З будь-якою групою алармов можна пов'язати як змінну, так і іншу групу алармів. Взаємозв'язки всіх груп алармів представляються деревовидної структурою, у якій як коренева є група $ System. Всі обумовлені групи алармів автоматично стають нащадками цієї групи.
Для створення груп алармів в меню вікна WindowMaker передбачена команда Special / Alarm Groups (групи алармів), що викликає появу діалогу Alarm Groups. При визначенні змінних в словнику Tagname Dictionary натискання кнопки Group також виводить на екран цей діалог.