Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
InTouch_Метод.doc
Скачиваний:
26
Добавлен:
12.02.2016
Размер:
34.47 Mб
Скачать

2Зміст

Зміст

Вступ до InTouch..............................................................................................3

Запуск програми ...................................................................................................................3

Мій перший проект ..............................................................................................................5

Г Л А В А 1 Словник тегів.........................................................................13

Загальні відомості ..............................................................................................................13

Типи тегів ...........................................................................................................................14

Теги пам’яті ….....……………………………………..........................................................14

Теги вводу/виводу..................................................................................................................14

Інші типи тегів .......................................................................................................................14

Приклад використання тегів ................................................................................................16

Г Л А В А 2 Створення скриптів у InTouch…………….……………….27

Огляд типів скриптів..........................................................................................................27

Загальні скрипти.................................................................................................................28

Віконні скрипти……………………………………………...….………………………..28

Клавішні скрипти……………………………………………………………………..…..29

Кнопкові скрипти………………………………………………………………….…...…29

Умовні скрипти…………………………………………………………………….…......31

Скрипти подій ActiveX………………………………………………………….………..31

Функції QuickFunction…………………………………………………………………...31

Вбудовані функції………………………………………………………………….……..32

Приклад використання скриптів………………………………………………..……….33

Г Л А В А 3 Аларми та події…………………………………………………56

Загальні відомості………....………………………………………………….…………..56

Аларми і події………………………………………………………………….………….57

Поточні і архівні аларми……………………………………………………………...….58

Підтримка термінальної служби підсистемою алармів……………………….……….58

Інші джерела алармів……………………………………………………………………..59

Типи подій…………………………………………………………………………..…….60

Пріоритети алармів……………………………………………………………….………60

Групи алармів……………………………………………………………………………..61

Схеми підтвердження алармів………………………………………………….…….….61

Використання алармів…………………………………………………………..…….….63

Приклад роботи з поточними алармами…………………………………………….…..65

Приклад роботи з історичними алармами………………………………..……………..92

Приклад використання елементів Archestra для роботи з алармами……………...…108

Г Л А В А 4 Тренди реального часу та історичні тренди………………131

Загальні відомості…………………………………………………………………...…..131

Створення трендів………………………………………………………………………132

Тренди реального часу в InTouch………………………………………………………140

Історичні тренди в InTouch……………………………………………………………..142

16-позиційні тренди в InTouch…………………………………………………………152

Тренди в Archestra………………………………………………………………………158

Г Л А В А 5 Обмін даними………………………………………………….173

Загальні відомості……………………………………………………………………….173

Приклад використання протоколу DDE…………………………………………….....176

Приклад використання протоколу OPC………………………………………….……202

Приклад організації обміну даними SCADA-програми InTouch з ПЛКUniOPLC V130

за протоколом ModBus……………………………………………………………….…218

Приклад роботи з динамічною зміною адрес (DRA) ………………………………...219

Приклад використання посилань на віддалені теги (RTR) з використанням непрямих тегів (IndirectTag) …………………………………………………………...…………..227

Приклад організації резервного каналу отримання даних (Failover)………………..235

Г Л А В А 6 Система безпеки та керування доступом………………….249

Вступ……………………………………………………………………………………..249

Приклад використання рівнів доступу………………………………………..……….250

Вступ до InTouch

Запуск програми

Для виконання лабораторної роботи необхідно запустити програму InTouch: Пуск -> Всі програми -> Wonderware -> InTouch

Рис. 1.1 Вікно програми InTouch

Відкриємо, для прикладу, створений демо-проект з назвою “Demo Application 800x600”. Для цього натиснемо на ньому двічи лівою кнопкою миші.

Рис. 1.2 Запуск демо проекту

Запущений проект відкриється у програмі Window Maker та буде мати наступний вигляд.

Рис. 1.3 Вигляд демо-проекту у Window Maker

Мій перший проект

Для створення нового проекту необхідно запустити програму InTouch: Пуск -> Всі програми -> Wonderware -> InTouch

Рис. 1.4 Вікно програми InTouch

Створюємо новий проект, натиснувши на кнопку на панелі швидкого доступа (як зазначено на рисунку 4.1.1). В візард вводимо інформацію необхідну для створення нового проекту.

Подвійним натисненням на новоствореному проекті запускаємо WindowMaker.

Рис. 1.5 Запускаємо створений нами проект

Створюємо нове вікно, натиснувши правою кнопкою миші у вікні «Windows» і заповнивши форму у відповідності до рисунку 1.7.

Рис. 1.6 Створюємо нове вікно

Рис. 1.7 Вводимо назву та деякі параметри нового вікна

Рис. 1.8 Вигляд новоствореного вікна

Створимо найпростішу анімацію. Для цього розмістимо на створеному вікні два графічних елементи: еліпс та кнопку, які розташовані на панелі “Draw Object Toolbar” (зправа).

Рис. 1.9 Розташування графічних елементів

Рис. 1.10 Графічні елементи після їх розміщення

Двічи натиснемо на кнопці за надписом «Тext». Відкриється вікно наведене нище.

Рис. 1.11 Вікно вибору дії

Натиснемо на кнопці Discrete Value. (Детальні роз’яснення здійснених рішень у наступних частинах методички). З’явиться нове вікно, в яке впишемо ім’я “tag” поряд з надписом Tagname (можна вписати інше ім’я). У самому низу вікна виберемо “Toggle”. Натиснемо Ok.

Рис. 1.12 Завдання ім’я тегу

Збережемо тег. Для цього натиснемо на кнопку Save та потім на кнопку Сlose.

Рис. 1.13 Збереження тегу

Закриємо вікно вибору дії. Тепер прив’яжемо створений тег до еліпсу. Для цього двічи натиснемо на еліпсі. У вікні вибору дії натиснемо на кнопці Fill Color -> Discrete.

Рис. 1.13 Вибір дії для еліпсу

У з’явившимося вікні впишемо ім’я тегу “tag” та оберемо колір для додатного значення тегу (зелений) та від’ємного (червоний). Натиснемо Ok.

Рис. 1.14 Вибір тегу та кольорів еліпсу

Тепер перейдемо до вікна відтворення проекту WindowViewer. Для цього треба натиснути на кнопку «Runtime», що знаходиться у верхньому правому куті програми.

Рис. 1.15 Перехід у Runtime режим

У вікні WindowViewer ми можемо перевірити створений проект. Для цього треба натискати на створену нами кнопку, результатом чого стане зміна кольору еліпсу з зеленого на червоний та навпаки.

Рис. 1.16 Вигляд вікна вікні WindowViewer

Для переходу в режим розробника, тобто у програми WindowMaker, треба натиснути на кнопку Development, що знаходиться у верхньому правому куті програми.

Щоб зберегти проект, треба у WindowMaker натиснути на кнопці «Save All Window».

Рис. 1.17 Збереження проекту

Словник тегів

Загальні відомості

Тег використовується для представлення елемента даних в програмі людино-машинного інтерфейсу InTouch. Необхідно створити теги для тих компонентів об'єктів керування, властивостями яких потрібно керувати в InTouch програмі. Можна використовувати різні типи тегів для різних типів даних, зібраних з технологічного об'єкту.

Для своєї програми користувач оголошує теги, використовуючи словник імен тегів (Tagename Dictionary), котрий є інструментом програми WindowMaker. У словнику імен тегів користувач повинен задати ім'я та тип тегу. Для деяких типів в словнику тегів можна задати додаткові властивості. Наприклад, теги типу вводу/виводу при їх створенні вимагають завдання даних для з'єднання їх з віддаленим джерелом даних.

Словник тегів містить інформацію про всі змінні, використані в програмі і складається з двох частин.

  • База даних тегів часу проектування. Вона керується за допомогою WindowMaker і зберігається в директорії програми користувача.

  • База даних тегів часу виконання. Вона керується за допомогою WindowViewer і зберігається в пам'яті комп'ютера.

Коли запущений WindowViewer, він читає інформацію з бази даних тегів і використовує параметри, щоб створити базу даних часу виконання. База даних часу виконання створює графіки поточних значень та іншої статусної інформації для кожної змінної під час виконання програми. Коли запущений WindowViewer, початкові значення зчитуються з бази даних тегів. Також є можливість відновлювати значення тегів, використовуючи збережені дані попереднього запуску програми.

Типи тегів

Теги пам'яті

Теги пам'яті є внутрішніми тегами InTouch – програми. Вони можуть використовуватись для створення різних системних констант і імітаторів, тобто змінні теги, які використовуються в межах програми.

Існує 4 типи тегів пам'яті:

  • Дискретний тег пам'яті (Memory Discrete). Теги цього типу можуть приймати значення 0 чи 1 (істинність чи хибність; виключено чи включено).

  • Цілий тег пам'яті (Memory Integer). 32 – разрядний цілий тег зі знаком в діапазоні від 2147483648 до +2147483647.

  • Дійсний тег пам'яті (Memory Real). Це внутрішній тег, що зберігає число з рухомої точки. Значення з рухомої точки знаходяться в діапазоні від - 3,4е38 до 3,4е38.

  • Тег пам'яті повідомлення (Memory Message). Тегам цього типу можна присвоїти текстові рядки довжиною до 131 знаків, кожен з яких складається з одного байту.

Теги вводу/виводу

Всі теги, які отримують або передають своє значення іншій Windows-програмі, є тегами вводу/виводу. У цю категорію потрапляють всі дані вводу/виводу від програмованих контролерів і технологічних комп'ютерів, а також дані від мережевих вузлів. Доступ до тегів вводу/виводу здійснюється або по протоколу Microsoft Dynamic Data Exchange (DDE), або з комунікаційного протоколу Wonderware SuiteLink. Як тільки значення тега вводу/виводу з режимом "для читання/запису" змінюється, воно в цей же час передається віддаленій програмі. Зміна значення тега може також здійснюватися з віддаленої програми, коли об'єкт, з яким пов'язаний цей тег, змінюється на віддаленому комп'ютері. Стандартно всі теги вводу/виводу встановлюються в режим читання/запису. Але є можливість обмежити режим тільки читанням, встановивши прапорець Read Only в діалоговому вікні словника тегів.

Існує 4 типи тегів вводу/виводу:

  • Дискретний тег пам'яті (Memory Discrete). Теги цього типу можуть приймати значення 0 чи 1 (істинність чи хибність; виключено чи включено).

  • Цілий тег пам'яті (Memory Integer). 32 – разрядний цілий тег зі знаком в діапазоні від 2147483648 до +2147483647.

  • Дійсний тег пам'яті (Memory Real). Це внутрішній тег, що зберігає число з рухомої точки. Значення з рухомої точки знаходяться в діапазоні від - 3,4е38 до 3,4е38.

  • Тег пам'яті повідомлення (Memory Message). Тегам цього типу можна присвоїти текстові строки довжиною до 131 знаків, кожен з яких складається з одного байту.

Інші типи тегів

Існує кілька типів спеціальних тегів, які можна присвоювати тегам, щоб виконувати складні операції. Опишемо коротко ці типи:

  • Груповий тег (Group Var). Цей тип використовується для тегів, яким приписана властивість Alarm Group, щоб створювати динамічні подання аларм, ведення журналів та роздрукування журналів.

  • Історичний тренд (Hist Trend). Цей тип потрібен в InTouch, коли ви створюєте історичний тренд. Всі поля, пов'язані історичними трендами, справедливі і для тегів історичних трендів.

  • Тег для ідентифікації інших тегів (Tag ID). Це спеціальний тип, який використовується з об'єктами історичних трендів. Теги типу Tag ID використовуються для отримання інформації про теги, що виводяться в історичних трендах. У більшості випадків Tag ID використовуються, щоб відобразити ім'я тега, пов'язаного з будь-яким пером, або щоб змінити тег, пов'язаний з пером.

  • Непрямі теги. Непрямі теги дозволяють створювати “загальні” теги, за допомогою яких здійснюється звертання до різноманітних наборів даних.

  • Супертеги. Супертеги дозволяють визначати складові типи тегів. Супертег може містити до 64 членів (тегів) і мати до 2 рівнів вкладеності. Члени супертега поводяться абсолютно так само, як і звичайні теги. Вони підтримують тренди, аларми і поля тегів

Розглянемо детальніше непрямі теги і супертеги.

Непрямі теги дозволяють створювати одне вікно і перепризначати його теги різним джерелами тегів. Нехай, наприклад, є 50 однакових насосів, які необхідно контролювати на предмет виникнення алармів. Замість створення 50 ідентичних вікон (по одному на кожен насос), ви можете використовувати єдине вікно з непрямими тегами, що буде звертатися до відповідних тегів конкретного насоса, використовуючи скрипт. Цей скрипт вкаже непрямим тегам імена тегів насоса, що згенерували аларм. Також можна створити скрипти відгуку на натискання кнопки, який дозволить оператору вибрати вручну, який насос показувати. Це дозволяє як зменшити час розробки, так і розмір програми.

Якщо непрямий тег зв'язується з яким-небудь тегом-джерелом, то як непрямий тег, так і тег-джерело повністю дублюють один одного, включаючи поля, скрипти і т.д. Якщо значення тега-джерела змінюється, непрямий тег повторює зміну. Якщо змінюється значення непрямий тег, тег-джерело змінюється відповідно.

InTouch підтримує також використання непрямих супертегів.

Найпростіший спосіб створення супертега – безпосередньо у вікні словника тегів. Коли створюється батьківський шаблон супертегу, його ім'я заноситься до списку типів тегів діалогового вікна Tag Types (типи тегів) для Словника тегів, і він відразу стає доступним для визначення нових тегів. Вам не потрібно перезапускати WindowMaker, щоб створювати теги новоствореного типу супертега.

Оскільки довжина імен тегів у InTouch обмежена 32 символами, то й супертег "БазовийЕкземпляр\Член\Субчлен" (вторинного рівня) також не повинна бути довше 32-х символів. Посилання на супертег може складатися не більше ніж з 2-х шаблонів (БазовийЕкземпляр\Член) і одного вторинного члена, як показано нижче (рис. 2.1):

Рис. 2.1

Словник тегів InTouch може підтримувати до 61405 тегів. Кількість тегів, підтримуються вашою системою, визначається вашою програмної ліцензією.

Приклад використання тегів

Для виконання даного прикладу необхідно запустити InTouch програму з під середовища розробки Archestra. Для цього спочатку необхідно створити нову або запустити вже створену Galaxy. Потім у відкритому вікні ArchestraIDE необхідно створити або запустити вже створену InTouchWiewApp. Після цього відкриється WindowMaker, де ми і будемо працювати.

Розглянемо основні моменти, які необхідно знати для використання тегів.

Необхідно створити нове робоче вікно, в якому будемо працювати.

Рис. 2.2

Спочатку створимо у відкритому вікні наступні об'єкти InTouch (рис. 2.2):

1) Кнопку 1. Візьмемо кнопку з бібліотеки Archestra – символів. Для цього натискаємо на іконку Embed ArchestrA Graphic на панелі інструментів (див. рис. 2.3) розташованій у верхній частині екрану, після чого у відкритому вікні вибираємо потрібну кнопку (див. рис. 2.3). Розмістимо кнопку у створеному вікні, натиснувши ОК і вибравши місце розташування кнопки.

Рис. 2.3

Рис. 2.4

Для зміни назви кнопки натиснемо на ній правою кнопкою миші, і у виниклому меню обираємо Substitute → Substitute Strings. Задамо ім'я кнопки “On/Off”.

2) Лампочку 2. Лампочку візьмемо також з бібліотеки Archestra – символів. Для цього натискаємо на іконку Embed ArchestrA Graphic на панелі інструментів, розташованій у верхній частині екрану, після чого у відкритому вікні вибираємо потрібну лампочку (див. рис. 2.4). Розмістимо кнопку у вікні, натиснувши ОК і вибравши місце розташування кнопки.

Рис. 2.5

3) Поле відображення аналогових тегів 3. Його візьмемо з бібліотеки стандартних об'єктів InTouch Для цього натискаємо на іконку Wizards на панелі інструментів розташованій у верхній частині екрану (рис. 2.6), після чого у відкритому вікні вибираємо потрібний елемент (див. рис. 2.7). Розмістимо кнопку у вікні, натиснувши ОК і вибравши місце розташування кнопки.

Рис. 2.6

Рис. 2.7

Новий тег створюється у словнику тегів, який можна визвати трьома шляхами:

1) Перший шлях полягає в тому, що при прив'язці тега до об'єкта InTouch, якщо тег з введеним ім'ям не існує, то пропонується створити його і при ствердній відповіді визивається словник тегів.

2) Словник тегів можна визвати за допомогою відповідної вкладки Tagname Dictionary (Словник імен тегів) меню Tools (Інструменти) в лівій частині екрану (рис. 2.8).

Рис. 2.8

3) Вибравши на панелі інструментів пункт Special→TagnameDictionary (Спеціальне → Словник імен тегів) (рис. 2.9).

Рис. 2.9

Розглянемо перший спосіб.

Відкриємо вікно властивостей для кнопки, двічі натиснувши на ній лівою кнопкою миші. Для нашої кнопки вікно властивостей матиме вигляд, зображений на рис. 2.10. Прив'яжемо до цієї кнопки тег (наприклад DiskTag1), для чого задамо його ім'я у полі Default Value (Змінна за замовчуванням) для властивості Value (Змінна). Як бачимо у нашої кнопки тільки одна властивість – Value, але у інших об'єктів з бібліотеки Archestra – символів може бути значно більше властивостей.

Рис. 2.10

Якщо тега з введеним ім'ям не існує, то при натисканні на кнопку “ОК” з'являється вікно, де пропонується створити його (рис. 2.11).

Рис. 2.11

При ствердній відповіді з'явиться вікно словника імен тегів (див. рис. 2.12).

Рис. 2.12

Для того, щоб задати тип тегу необхідно натиснути кнопку Type:... (Тип…). З'явиться діалогове вікно Tag Type... (Тип тега…) (див. рис. 2.12). Задамо нашому створеному тегу DiskTag1 тип Memory Discrete і натискаємо ОК. Кожному тегу дозволяється задати тільки один тип.

Рис. 2.13

У полі Comment (коментар) можна ввести будь-який текст, який система припише вашому тегу (довжиною до 50 символів).

Встановіть прапорець Retentive Value (запам'ятовувати останнє значення), якщо ви хочете, щоб при завершенні роботи WindowViewer значення тега зберігалося. Це збережене значення буде використовуватися в якості початкового значення тега, коли WindowViewer буде повторно запущений.

Натисніть кнопку Save (зберегти), щоб зберегти тег.

Прив'яжемо до лампочки створений дискретний тег DiskTag1. Для цього натиснемо на ній двічі і у відкритому вікні (рис. 2.14) у властивості об'єкту Value (змінна) в якості змінної за замовчуванням (Default Value) введемо ім'я тега. Також зробимо, щоб лампочка при запуску створеної програми мигала, для цього змінимо початкове значення у полі Default Value (змінна за замовченням) властивості об'єкту Blink з False на True (див. рис. 2.15). Як бачимо, лампочка, на відміну від кнопки, має вже дві властивості. Але це не межа, існують Archestra – символи, які мають значно більше властивостей.

Рис. 2.14

Рис. 2.15

Після цього створимо супертег за допомогою словника тегів. Для цього зайдемо в словник тегів за допомогою відповідної вкладки Tagname Dictionary (Словник імен тегів) меню Tools (Інструменти) в лівій частині екрану. Далі необхідно перейти до створення нового тегу, натиснувши кнопку New (новий) у словнику тегів.

Введіть у полі Tagname (ім'я тега) ім'я екземпляра супертега, потім символ зворотної риси "\" і ім'я нового члена. У нашому випадку введемо наступне SuperTag1\AnTag1. В якості типу нового члену задамо Memory Integer (рис. 2.16).

Рис. 2.16

Проте коли ви додаєте новий член до існуючого екземпляру супертега, ім'я цього супертега слід вказувати точно. В іншому випадку буде створено новий супертег із зазначеним членом.

Щоб побачити ім'я нового члена в супертезі SuperTag1, не виходячи з словника тегів, натисніть на праву або ліву кнопку з подвійними стрілками. З'явиться діалогове вікно деталей

Members (члени) (див. рис. 2.17). Задамо початкове значення цього супертегу, встановивши Initial Value (Початкове значення) рівне 20.

Рис. 2.17

Якщо натиснути кнопку New (створити), коли у вікні Словника відображається визначення супертега, то відкриється діалогове вікно в якому запитується, чи хочете ви створити ідентичну копію даного екземпляра супертега, чи ні.

Створений супертег прив'яжемо до поля відображення аналогових тегів 3 (рис. 2.18). Натиснувши два рази лівою кнопкою на цьому об'єкті, побачимо на екрані наступне вікно:

Рис. 2.18

У ньому введемо назву супертегу у полі Tagname (ім'я тега), а також поставимо прапорець біля Allow Input (Дозволити ввід), що дозволить вводити дані під час роботи програми. Значення, що вводиться, обмежується максимальною і мінімальною величиною, які задаються у відповідних полях. Можна задати і кількість знаків після крапки при виведенні даних на екран. Це робиться за допомогою пункту Number Format (формат числа).

Розберемо як видалити тег зі словника тегів. Для кожного елементу в базі даних InTouch є відповідний лічильник використання. При виконанні деяких дій (типу видалення вікна, зміни тегів в анімаційних функціях або скриптах і т.д.) значення цих лічильників автоматично не оновлюється. У таких випадках система InTouch розглядає тег як той, що використовується, і не дозволяє видаляти його визначення. Щоб можна було видаляти визначення тегів Словника додатку, необхідно спочатку відновити значення всіх лічильників використання.

Щоб відновити лічильники використання тегів необхідно виконати наступні дії:

1) Закрити всі вікна.

2) Виконаєте команду Update Use Counts (Обновити лічильники використання) з меню Special (Спеціальне) на панелі інструментів у верхній частині екрану.

3) Для продовження команди натисніть кнопку Yes (Так). Коли система відновить значення всіх лічильників, з'явиться наступне повідомлення:

Рис. 2.19

Після того, як лічильники використання будуть оновлені, InTouch дозволить видалити невживані теги. Це можна зробити або відкриваючи по черзі всі теги в cловнику тегів і натискаючи кнопку Delete (Видалити), або виконуючи команду Delete Unused Tags (Видалити невживані теги), щоб видалити відразу декілька тегів.

Щоб видалити невживані теги необхідно виконати наступні дії:

1) Виконати команду Delete Unused Tags (Видалити невживані теги) з меню Special (Спеціальне), після чого відкриється діалогове вікно Choose Names to Delete (Виберіть ім'я для видалення) (рис. 2.20):

Рис.2.20

2) Оберіть у вікні теги, котрі необхідно видалити, і натисніть кнопку Delete (Видалити).

3) Для видалення всіх невживаних тегів натисніть кнопку All (Все), а потім Delete (Видалити).

* Детальніше роботу з тегами, зокрема з непрямими тегами і супертегами, розглянемо під час розгляду скриптів.

Таким чином ми створили найпростішу програму. Для того, щоб перейти в середовище виконання і подивитись на роботу програми, необхідно натиснути на кнопку Runtime у верхньому правому куті вікна WindowMaker. Зробивши це побачимо вікно, зображене на рис. 2.21.

Рис. 2.21

Нижче наведений короткий опис роботи вікна.

Для того, щоб вимкнути/ввімкнути мигання лампочки, необхідно натиснути на кнопку onn/off. Для зміни значення супертегу SuperTag1\AnTag1 необхідно натиснути на його зображенні і у виниклому вікні ввести значення (рис. 2.22).

Рис. 2.22

Створення скриптів у InTouch

Огляд типів скриптів

Cкрипти InTouch дозволяють виконувати команди і дискретні операції при виникненні певних подій або умов: при натисненні на клавішу, відкритті вікна, зміні якого-небудь значення і т.д.

Виконання будь-яких скриптів InTouch визначається подіями. Подією може бути зміна даних, виконання умови, натиснення кнопки миші, спрацьовування таймера і т.д. Порядок виконання скриптів залежить від програми. Хоча може здатися, що внутрішній порядок виконання декількох скриптів при виникненні однієї і тієї ж події існує, насправді ніякого певного порядку не має. Тому при розробці додатку не слід будувати які-небудь залежності від порядку виконання скриптів.

У таблиці 3.1 наведено стислий опис типів скриптів InTouch.

Таблиця 3.1

Тип скрипта

Опис

Загальний (Application Scripts)

Прив'язується до всієї програми.

Віконний (Window Scripts)

Прив'язується до певного вікна.

Клавішний (Key Scripts)

Прив'язується до певної клавіші чи комбінації клавіш на клавіатурі.

Умовний (Condition Scripts)

Прив'язується до дискретного тега чи виразу.

По зміні даних (Data Change Scripts)

Прив'язується тільки до тега і/чи до поля тега.

Функції QuickFunction

Скрипти, які можуть бути запущені з інших скриптів InTouch або виразів анімаційних зв'язків. Функції QuickFunction можуть бути синхронними і асинхронними, тоді як скрипти інших типів можуть бути тільки синхронними.

Кнопкові (Action Scripts)

Прив'язуються до об'єктів, котрі можуть виконувати роль кнопки натискання.

Подійні (Скрипти подій ActiveX)

Обробка подій ActiveX.

Загальні скрипти

Загальні скрипти прив'язуються до додатку в цілому. Вони дозволяють запускати інші програми, емулювати роботу процесів, обчислювати значення змінних і т.д. Існує три типи загальних скриптів:

Таблиця 3. 2

Тип загального скрипта

Опис

On Startup (при запуску)

Виконується один раз в мить запуску програми на виконання.

While Running (поки виконується)

Виконується з зазначеною періодичністю на протязі всього періоду виконання програми

On Shutdown (при завершенні)

Виконується один раз на момент завершення роботи програми.

Скрипти по зміні даних і умовні скрипти умови не можуть запускатися з загальних скриптів типу On Startup (при запуску). Крім того, загальні скрипти типу On Shutdown (при завершенні) не можна використовувати для запуску інших додатків.

Віконні скрипти

Віконні скрипти прив'язуються до окремого вікна. Існує три типи віконних скриптів:

Таблиця 3.3

Тип віконного скрипта

Опис

On Show (при показі)

Виконується один раз при першому відкритті відповідного вікна.

While Showing (поки видно)

Виконується з вказаною періодичністю весь час, поки відповідне діалогове вікно видно на екрані.

On Hide (при прихованні)

Виконується один раз при прихованні вікна.

Клавішні скрипти

Клавішні скрипти зв'язуються з певними клавішами або комбінаціями клавіш на клавіатурі. Скрипт цього типу можна використовувати для створення глобальних клавіш для всього додатку (наприклад, щоб повернутися до головного меню вікна, виходу оператора з системи і т.д.). Існує три типи клавішних скриптів:

Таблиця 3. 4

Тип клавішного скрипта

Опис

On Key Down (при натисканні)

Виконується один раз при натисненні на відповідну клавішу.

While Down (поки натиснута)

Виконується з вказаною періодичністю в час, поки відповідна клавіша залишається натиснутою.

On Key Up

(при відпусканні)

Виконується один раз при відпуску натиснутої клавіші.

Кнопкові скрипти

Кнопкові скрипти аналогічні клавішним за винятком того, що створюються для об'єктів з анімаційною функцією Touch Link → Action Pushbutton (Сенсорна функція → Екранна кнопка). Редактор кнопкових скриптів запускається з діалогового вікна вибору анімаційних функцій. Скрипти цього типу виконуються, коли оператор натискає кнопкою мишки на об'єктах або екранних кнопках, пов'язаних з відповідною анімаційною функцією. Якщо для одного й того самого об'єкта будуть визначені скрипти, що запускаються одинарним (On Left Click) і подвійним (On Left Double Click) натисканням лівою кнопкою миші, то подвійним натисканням лівою кнопкою миші будуть запускатися обидва скрипта. Те ж саме справедливо для скриптів типу "On Right Click" / "On Right Double Click" (При одинарному натисканні / При подвійному натисканні правою кнопкою) і "On Center Click" / "On Center Double Click" (При одинарному натисканні / Якщо подвійному натисканню середньою кнопкою).

Скрипти типу "On Left Up" (При відпусканні лівої кнопки миші), "On Right Up" (При відпусканні правої кнопкою миші) і "On Center Up" (При відпусканні середньої кнопки миші) будуть виконуватися тільки при виконанні відповідної дії, коли вказівник миші знаходиться в межах відповідного об'єкта. Якщо натиснути й утримувати кнопку миші, коли вказівник знаходиться поверх об'єкту, потім перемістити вказівник в інше місце і відпустити кнопку, то скрипт виконуватися не буде.

У таблиці 3. 5 наведено відомості про підтримувані типи кнопкових скриптів.

Таблиця 3. 5

Тип кнопкового скрипта

Опис

On Left Click / KeyDown (При одинарному натисканні лівою кнопкою миші / натисканні клавіші).

Виконується один раз при натисканні лівої кнопки миші.

While Left / Key Down (Поки натиснута ліва кнопка миші / клавіша).

Виконується безперервно з вказаною періодичністю весь час, поки ліва кнопка миші або клавіша утримується в натиснутому стані.

On Left Click / Key Up (При відпуску лівої кнопки миші / клавіші).

Виконується один раз при відпусканні лівої кнопки миші або клавіші.

On Left Double Click (При подвійному натисканні лівою кнопкою миші).

Виконується один раз при подвійному натисканні лівої кнопки миші.

On Right Click (При одинарному натисканні правою кнопкою миші).

Виконується один раз при натисканні правої кнопки миші.

While Right Down (Поки натиснута права кнопка миші).

Виповнюється безперервно з вказаною періодичністю весь час, поки права кнопка миші утримується в натиснутому стані.

On Right Up (При відпусканні правої кнопки миші).

Виконується один раз при відпусканні правої кнопки миші.

On Right Double Click (При подвійному натисканні правою кнопкою миші).

Виконується один раз при подвійному натисканні правою кнопки миші.

On Center Click (При одинарному натисканні середньої кнопкою миші).

Виконується один раз при натисненні середньої кнопки миші.

While Center Down (Поки натиснута середня кнопка миші).

Виповнюється безперервно з вказаною періодичністю весь час, поки середня кнопка миші утримується в натиснутому стані.

On Center Up (При відпуску середньої кнопки миші).

Виконується один раз при відпусканні середньої кнопки миші.

On Center Double Click (При подвійному натисканні середньою кнопкою миші).

Виконується один раз при подвійному натисканні середньої кнопки миші.

On Mouse Over (Коли поверх об'єкта).

Запускається після того, як покажчик миші буде перебувати поверх об'єкта протягом зазначеного періоду часу.

Умовні скрипти

Умовні скрипти зв'язуються з дискретним тегом або виразом, які приймають значення Правда або Неправда. У дискретних виразах при цьому можуть використовуватися в тому числі і звичайні аналогові теги (див. приклад нижче). Існує чотири типи умовних скриптів:

Умовний скрипт

Опис

On True (якщо правдиво)

Виконується один раз, коли умова приймає значення "правда".

On False (якщо неправдиво)

Виконується один раз, коли умова приймає значення "неправда".

While True (доки правдиво)

Виконується безперервно, доки умова правдива.

While False (доки неправдиво)

Виконується безперервно, доки умова неправдива.

Скрипти по зміні даних прив'язуються тільки до тега або поля тега. Вони виконуються тільки один раз, коли тег або поле тега приймає значення більше або рівне величині допуску, визначеної для цього тега в Словнику програми.

Скрипти подій ActiveX

Більшість ActiveX реагують на зовнішні події. Зокрема, багато ActiveX розпізнають такі події, як одинарне або подвійне натискання кнопкою миші, натискання на кнопку миші або клавіш на клавіатурі. Для обробки подібних дій у системі InTouch реалізована підтримка скриптів, що запускаються подіями ActiveX. З кожною подією можна зв'язати один скрипт обробки події ActiveX. Події ActiveX генеруються при виконанні програми (в середовищі WindowViewer).

Функції QuickFunction

Функції QuickFunction - це скрипти, які можна викликати з інших скриптів або виразів. Вони зберігаються в тій же програмі, в якій створені. Підтримка викликів функцій QuickFunction з інших скриптів або виразів дозволяє створювати тільки один екземпляр багаторазово використовуваного скрипта. Повторне використання скриптів спрощує супровід програм завдяки зменшенню обсягів дубльованих кодів, що вставляються в інші скрипти. Текст зберігається в одному скрипті і в одному місці, дозволяючи тим самим оновлювати всі екземпляри скрипта за один сеанс редагування.

Функції QuickFunction є асинхронними, якщо вони виконуються у фоновому режимі одночасно з основним процесом WindowViewer. Це дає системі WindowViewer можливість відокремлювати виконання тривалих операцій типу SQL - запитів до бази даних окремо від виконання основної програми. Якщо є необхідність виконувати подібні ресурсомісткі операції, можна створити асинхронну функцію QuickFunction, яка забезпечить запуск анімаційних та інших InTouch-функцій під час виконання цих операцій.

Вбудовані функції

У системі InTouch є безліч вбудованих функцій, які можна пов'язувати з об'єктами і кнопками, а також використовувати в скриптах для виконання різних завдань.

Доступ до цих функцій здійснюється за допомогою меню Insert (Вставка) або шляхом натискання на різні кнопки на панелі Functions (Функції) вікна редактора скриптів. Після вибору функції з відповідного списку в тексті скрипта в позиції курсору автоматично з'являється оператор її виклику разом з необхідними аргументами. Після вставки виклику функції можна виділяти будь-які з її аргументів і вводити нові значення.

В InTouch доступні наступні типи стандартних функцій:

  • Символьні функції. Символьні функції виконують дії з символьними аргументами.

  • Математичні функції. Аргументами математичних функцій є цілі і дійсні теги або константи, які використовуються з цілими або дійсними тегами. Аргументи будь-якої з математичних функцій можуть мати як цілий, так і дійсний тип, а результати їх виконання також можуть присвоюватися тегам як цілого, так і дійсного типу. Однак слід пам'ятати, що запис нецілого результату функції в тег цілого типу призводить до усікання результату (відкидається дробова частина). Передбачається, що тег, в який записується результат, визначений як внутрішній тег дійсного типу або дійсний тег введення / виводу.

  • Системні функції. Системні функції використовуються для виконання таких системних операцій, як активізація іншої програми Windows, копіювання, видалення або переміщення файлів, пошук інформації про поточну програму і т.д.. Системні функції діляться на два типи: файлові (File) та інформаційні (Info). Файлові функції виконують читання і запис даних у дискові файли. Кожна з них має наступні загальні аргументи: Filename і FileOffset. Аргумент Filename задає ім'я файлу для читання чи запису. При цьому в назві файлу повинен бути вказаний повний шлях доступу. Аргумент FileOffset задає позицію у файлі (зсув в байтах від початку файлу), починаючи з якої буде виконуватися читання або запис. Зсув самого першого байта файла дорівнює 0. Після виконання кожна файлова функція повертає номер байта, безпосередньо наступного за ліченим або записаним блоком даних.

  • Додаткові функції. До додаткових належать функції, що дозволяють виконувати такі дії, як згортання вікон, управління трендами, роздруківка вікон, передача кодів клавіш і т. д.

Приклад використання скриптів

У цій частині розглянемо основні моменти, які необхідно знати для використання скриптів.

Усі типи скриптів, окрім кнопкових (Action Scripts), можна створити за допомогою відповідної команди з меню Scripts у лівій частині екрану (рис. 3.1) або вибравши на панелі інструментів меню Special → Scripts (Спеціальне → Скрипти) (рис. 3.2).

Для створення кнопкових (Action Scripts) необхідно у діалоговому вікні вибору анімаційних зв'язків на панелі Touch Pushbuttons (Кнопки натискання) натиснути кнопку Action (Дія).

* Опис і ілюстрації створення кнопкового скрипта будуть наведені нижче

Рис. 3.1

Рис. 3.2

Скрипт в InTouch створюється на мові програмування, подібній до Visual Basic.

Створимо два вікна, між якими реалізуємо перехід за допомогою кнопок.

Перше вікно матиме вигляд, зображений на рис. 3.3. Розмістимо у цьому вікні наступні об'єкти: поля відображення аналогових тегів (Analog Tagname Display with Tagname Text) 1 – 6; текстові об'єкти з введеними трьома решіточками замість напису 7 - 11; кнопку, на якій змінимо напис на “Перейти на друге вікно”

Рис. 3.3

Друге вікно матиме вигляд, зображений на рис. 3.4. Розмістимо у цьому вікні наступні об'єкти: поля відображення аналогових тегів (Analog Tagname Display with Tagname Text) 1, 2; текстовий об'єкт з введеними трьома решіточками замість напису 4; кнопки, для яких змінимо написи відповідно до малюнку 3, 5, 8; повзункова показуючи панель (SliderHoriz) 6 з бібліотеки Archestra - символів, червона лампочка – індикатор (LightGlossyRed) 7 з бібліотеки Archestra - символів.

Рис. 3.4

Зробимо за допомогою кнопок 12 на рис 3.3 і 8 на рис 3.4 перехід між вікнами. Для цього у діалоговому вікні вибору анімаційних зв'язків натиснемо Touch Pushbuttons → Show Window (Кнопки натискання → Показати вікно) (рис. 3.5).

Рис. 3.5

З'явиться наступне вікно:

Рис. 3.6

У цьому вікні відображається список назв всіх вікон у програмі (у нашому випадку це Window1, Window2, Window3 і Window4) і з цього списку вибираємо, які вікна необхідно відкрити при натисканні на кнопку. Для кнопки на першому вікні (Window3) вказуємо назву другого вікна (Window4), а для кнопки другого – назву першого вікна.

Перше вікно (рис. 3.3) слугуватиме нам для ознайомлення з кнопковими скриптами і для поглиблення знань про супертеги і непрямі теги. Розглянемо детальніше всі дії, що потрібно зробити для цього вікна.

Для початку створимо непрямий аналоговий тег IndTagAn (обираємо тип тегу Indirect Analog), прямі аналогові теги DirTagAn_A і DirTagAn_B (обираємо тип тегу Memory Integer), а також супертеги – IndSupTag, DirSupTag1, DirSupTag1. У супертега IndSupTag створимо члени IndSupTag\An (обираємо тип тегу Indirect Analog) і IndSupTag\Disc (обираємо тип тегу Indirect Discrete). Аналогічно у супертега DirSupTag1 створимо члени DirSupTag1\An (обираємо тип тегу Memory Integer) і DirSupTag1\Disc (обираємо тип тегу Memory Discrete) і у супертега DirSupTag2 створимо члени DirSupTag2\An (обираємо тип тегу Memory Integer) і DirSupTag2\Disc (обираємо тип тегу Memory Discrete). (Як створювати теги і супертеги було розглянуто в пункті 4.1)

Створені аналогові теги прив'яжемо до відповідних полів відображення аналогових тегів 1 - 6 (рис. 3.3). Для цього двічі натискаємо на полі відображення аналогових тегів і у відкритому вікні властивостей об'єкта вказуємо ім'я тега, з яким його зв'язуємо. При цьому тут і надалі при прив'язці ставимо прапорець навпроти Allow Input (Дозволити Ввід) і вводимо обмеження на введені значення від 0 до 100. Змінимо також формат відображення чисел з 0.00 на 0. Приклад вікна властивостей для поля відображення аналогових тегів 1 зображено на рис .3.7. Для інших полів відображення аналогових тегів вікно властивостей матиме аналогічний вигляд, зміниться тільки назва тегу.

Рис. 3.7

Дискретні члени супертегів прив'яжемо до текстових об'єктів. Розглянемо це на прикладі текстового об'єкта 8 (рис. 3.1). Двічі натиснувши на ньому, увійдемо до діалогового вікна вибору анімаційних зв'язків і у ньому виберемо User Inputs → Discrete (Введення даних → Дискретних) (рис. 3.8). В результаті з'явиться діалогове вікно, зображене на рис. 3.9.

Рис. 3.8

Рис. 3.9

У ньому в полі Tagname (Ім'я тегу) вказуємо ім'я нашого дискретного члена непрямого супертега IndSupTag\Disc. Крім цього, задамо написи, які будуть відображатися на місці текстового об'єкта при ввімкненому стані дискретного тега і при вимкненому стані дискретного тега. Для цього у полі On Message (повідомлення при ввімкненому стані) введемо “...\Disc = 1”, а у полі Off Message (повідомлення при вимкненому стані) введемо “...\Disc = 0”.

Аналогічно до текстового об'єкта 9 прив'яжемо дискретний член супертега DirSupTag1\Disc і до текстового об'єкта 10 прив'яжемо дискретний член супертега DirSupTag2\Disc. Вікно властивостей об'єкта у цих випадках буде мати такий же вигляд, як і зображене на рис. 3.9, змінюватись буде лише ім'я члена супертега (замість IndSupTag\Disc відповідно DirSupTag1\Disc або DirSupTag2\Disc).

Далі для текстового об'єкта 7 (рис. 3.3) напишемо кнопковий скрипт (Action Script), який дозволяв би почергово зв'язувати непрямий тег IndTagAn з одним із тегів-джерел DirTagAn_A чи DirTagAn_В. У діалоговому вікні вибору анімаційних зв'язків натиснемо Touch Pushbuttons → Action (Кнопки натискання → Дія) (рис. 3.10).

Рис. 3.10

* Так як далі ми будемо часто створювати кнопкові скрипти, то зовнішній вигляд діалогового вікна вибору анімаційних зв'язків для випадку створення кнопкового скрипта, наведений вище на рис. 4.3.10, більше зображатися не буде, а просто робитиметься посилання на цю ілюстрацію. Аналогічно і для інших дій. Якщо вони будуть повторюватися в ході роботи, то аби не наводити однакові зображення, робитиметься посилання на створене першим.

З'явиться вікно створення кнопкового скрипта. Для текстового об'єкта 7 воно матиме вигляд, зображений на рис. 3.11. Задамо умову спрацювання скрипта (Condition Type) – при натисканні на об'єкті лівою кнопкою миші.

Рис. 3.11

Вставити ім'я створеного тега у текст скрипта можна двома шляхами: натиснувши у головному меню Insert → Tagname; двічі натиснувши на вільному місці поля вводу.

Розглянемо детальніше текст скрипта. Прив'язка непрямого тега до одного з двох тегів відбувається в залежності від значення дискретного тега DiskTag3. На початку скрипта у першій строчці відбувається інверсія (зміна на протилежне) значення дискретного тега за допомогою операції NOT (дискретне НІ). Далі йде оператор IF – THEN – ELSE. В результаті його виконання, якщо виконується умова DiskTag3 == 0, то непрямий тег IndTagAn зв'язується з тегом DirTagAn_A, якщо ні – з тегом DirTagAn_В. Умовний оператор IF обов'язково повинен закінчуватись оператором ENDIF. Вводити стандартні оператори (IF, THEN, ELSE, AND, OR, тощо) можна як вручну, так і натискаючи на відповідні кнопки у вікні створення скриптів.

У розглянутому скрипті прив'язка прямого тега до непрямого тега відбувається двома шляхами. В першому випадку використовується поле .Name (IndTagAn.Name = DirTagAn_A.Name). В другому випадку використовуються подвійні лапки (IndTagAn.Name = "DirTagAn_B").

Правильність написання тексту скрипта можна перевірити, натиснувши на кнопку Validate (Перевірити). Якщо десь у скрипті буде зроблена помилка, то з'являється вікно з коротким описом помилки.

Створимо ще один анімаційний зв'язок для текстового об'єкта 7, який дозволив би на місці цього об'єкта під час роботи програми відображати ім'я прямого тега, до якого прив'язаний непрямий тег. У діалоговому вікні вибору анімаційних зв'язків для цього об'єкта натиснемо Value Display → Discrete (Відображення змінної → Дискретної) (рис. 3.12).

Рис. 3.12

Після цього з'явиться вікно, зображене на рис. 3.13.

Рис. 3.13

У цьому вікні у полі Expression (вираз) вкажемо ім'я дискретного тега, який використали в скрипті. У полі On Message (повідомлення при ввімкненому значенні дискретного тега) задамо напис “DirTagAn_В”, а у полі Off Message (повідомлення при вимкненому значенні дискретного тега) задамо напис “DirTagAn_А”. Таким чином, коли під час виконання програми непрямий тег буде прив'язаний до прямого тега DirTagAn_А, буде відображатись його ім'я, а коли до прямого тега DirTagAn_В - відповідно буде відображатись ім'я цього тега.

Тепер створимо кнопковий скрипт для текстового об'єкта 11 (рис. 3.3). Він буде аналогічним до скрипта, створеного для текстового об'єкта 7. Але в ньому будемо працювати не зі звичайними непрямими тегами, а з непрямими супертегами.

Натиснемо у діалоговому вікні вибору анімаційних зв'язків Touch Pushbuttons → Action (Кнопки натискання → Дія) (рис. 3.10). Вікно кнопкового скрипта для цього об'єкта матиме вигляд, наведений на рис. 3.14.

Рис. 3.14

При роботі з непрямими супертегами слід пам'ятати важливу особливість - якщо ім'я з правого боку оператора присвоєння відноситься до базового екземпляру супертегу, InTouch буде переглядати всі його теги-нащадки, щоб присвоїти відповідні значення всім членам непрямого супертега з лівого боку оператора. Саме на це звернемо особливу увагу при написанні даного скрипта.

Написаний скрипт дуже схожий на скрипт для текстового об'єкта 7, однак, замість звичайних тегів в операції присвоєння, використовуються базові екземпляри супертегів. Тому при зв'язуванні непрямого супертега IndSupTag з одним з двох прямих супертегів, InTouch присвоює відповідні значення всім членам непрямого супертега. В іншому ж принцип дії скриптів однаковий.

Далі як і для текстового об'єкта 7, для текстового об'єкта 11 (рис. 3.3) створимо додаткову анімацію, яка дозволятиме відображати ім'я базового екземпляру прямого супертега, до якого прив'язаний непрямий супертег, на місці цього об'єкта. У діалоговому вікні вибору анімаційних зв'язків для цього об'єкта натиснемо Value Display → Discrete (Відображення змінної → Дискретної) (рис. 3.12),при цьому з'явиться наступне вікно:

Рис. 3.15

У цьому вікні у полі Expression (Вираз) вкажемо ім'я дискретного тега, який використали в скрипті. У полі On Message (повідомлення при ввімкненому значенні дискретного тега) задамо напис “DisSupTag2”, а у полі Off Message (повідомлення при вимкненому значенні дискретного тега) задамо напис “DisSupTag1”. Таким чином, коли під час виконання програми непрямий супертег буде прив'язаний до прямого супертегатега DisSupTag1, буде відображатись його ім'я, а коли до прямого супертега DisSupTag2 - відповідно буде відображатись його ім'я.

Перейдемо тепер до іншого вікна, зовнішній вигляд якого наведено на рис. 3.4. Розглянемо детальніше всі дії, що потрібно зробити для цього вікна.

Створимо два аналогових теги AnTag1 і AnTag2 (обираємо тип тегу Memory Real). Створені теги прив'язуємо до відповідних полів відображення аналогових тегів 1 і 2.

Ознайомимось зі скриптами QuickFunction. Напишемо скрипт - функцію QuickFunction, яка б виконувала піднесення змінної до третьої степені. Для цього, в лівій частині екрану у меню Scripts (Скрипти), натиснемо правою кнопкою миші на пункті QuickFunctions і оберемо пункт New….(Новий…) Вигляд діалогового вікна створення скриптів QuickFunction зображений на рис. 3.16.

Рис. 3.16

Розглянемо детальніше саме вікно, а також написаний в ньому скрипт.

У полі Function (Функція) задається ім'я функції, що створюється (в наведеному прикладі функція названа Cube).

У полі Arguments (Аргументи) задаються імена і типи змінних, які передаються функції. Для нашої функції створимо один аргумент x, типу REAL.

В основному і найбільшому полі вводиться безпосередньо текст скрипта. Розглянемо детальніше наведений текст скрипта. У першій строчці оголошується змінна y типу REAL, у другій відбувається просте множення змінної x тричі саму на себе, а у третій строчці вказується, що функція буде повертати значення змінної у. Для закінчення створення скрипта натискаємо на кнопку ОК.

Далі змінимо напис для кнопки 6 (рис. 3.4) за допомогою команди Substitute → Substitute Strings (Змінити → Змінити строку) на “Піднести до третьої степені”.

Створимо для цієї кнопки кнопковий скрипт, зайшовши у діалогове вікно вибору анімаційних зв'язків і натиснувши Touch Pushbuttons → Action (Кнопки натискання → Дія) (рис. 3.10). Зовнішній вигляд вікна зі скриптом наведено на рис.3.17. В якості умови спрацювання скрипта (Condition Type) вкажемо натискання лівою кнопко миші (On Left Click).

Рис. 3.17

Текст скрипта складається з однієї строчки, в якій тегові AnTag2 присвоюється значення, яке повертає функція Cube. В якості аргументу цій функції передається значення тега AnTag1. Додати функцію в текст скрипта можна або вручну, або натиснувши на кнопку Quick…, що знаходиться на панелі Functions (Функції). Якщо піти другим шляхом, то після натискання на кнопку Quick… з'явиться наступне вікно:

Рис. 3.18

У цьому вікні наведені назви всіх створених у програмі функцій QuickFunctions. Натискаючи на назві потрібної функції, ми додаємо її у текст скрипта.

Окрім назви функції з зазначенням аргументу, для функцій QuickFunctions необхідно вказувати також оператор їх виклику CALL.

* При додаванні функції QuickFunctions за допомогою кнопки Quick… панелі Functions оператор CALL додається автоматично.

Створимо в програмі приклад скрипта по зміні даних (Data Change Script). Для створення скрипта в лівій частині екрану у меню Scripts натиснемо правою кнопкою миші на пункті Data Change (Зміна Даних) і оберемо пункт New….(Новий…) Вигляд діалогового вікна створення скриптів по зміні даних в нашому випадку зображений на рис. 3.19.

Рис. 3.19

У цьому вікні у полі Tagnam (ім'я тега)e вказується тег, при зміні якого буде спрацьовувати скрипт. У нашому випадку використовуємо системний тег $Second. Цей системний тег містить значення секунд поточного часу (тег приймає цілі значення в діапазоні від 0 до 59).

В результаті роботи наведеного скрипта формується рядок, в якому міститься час у форматі “години/хвилини/секунди”, на протязі якого дане вікно є відкритим.

Для скрипта створимо 3 аналогових теги типу Memory Integer AnTag4 (відповідає за секунди), AnTag5 (відповідає за хвилини), AnTag6 (відповідає за години) і один строковий тег MemTag1 типу Memory Message (в ньому зберігатиметься сформований рядок з часом).

Розглянемо детальніше безпосередньо текст програми. Спочатку перевіряється умова (оператор IF – THEN – ELSE), що аналоговий тег AnTag4 не більше 59. Якщо умова справджується – значення AnTag4 збільшується на 1, якщо ні – значення AnTag4 прирівнюється 0 і збільшується на 1 значення AnTag5. Далі йде ще одна умова (оператор IF – THEN) і, коли значення AnTag5 перевищує 59, цей тег прирівнюється нулю і збільшується на 1 значення AnTag6. В кінці скрипта значення аналогових тегів переводяться в строковий тип і формується строка, яка відображає час роботи програми. Ця строка присвоюється тегу MemTag1.

Аналогові теги переводяться в строковий тип за допомогою функції: StringFromIntg(Величина або тег строкового типу; формат числа (десятинний, двійковий тощо)), яка знаходиться у розділі Functions → String… (Функції → Строка…)

Відобразимо значення MemTag1 у вікні за допомогою текстового об'єкта 4 (рис. 3.4). Для цього двічі натиснемо лівою кнопкою миші на цьому об'єкті і у діалоговому вікні вибору анімаційних зв'язків натиснемо Value Display → String (Відображення змінної → Строки) (рис. 3.20). З'явиться вікно, зображене на рис. 3.21, в якому вкажемо ім'я нашого тега у полі Expression (Вираз).

Рис. 3.20

Рис. 3.21

Тепер створимо приклад умовного скрипта (Condition Script). Для створення скрипта в лівій частині екрану у меню Scripts натиснемо правою кнопкою миші на пункті Condition (умова) і оберемо пункт New…. (Новий…) Вигляд діалогового вікна створення скриптів по зміні даних в нашому випадку зображений на рис. 3.22.

Рис. 3.22

У наведеному вікні в полі Condition (Умова) задаємо дискретний тег або вираз, які можуть приймати значення логічного 0 чи 1. В нашому випадку в цьому полі вкажемо дискретний тег DiskTag5. Задамо тип умови (Condition Type) – While True (доки умова правдива), а також період виконання – 10 мсек.

Розглянемо детальніше текст скрипта. Він складається з двох операторів IF – THEN – ELSE. У першому - перевіряється умова не перевищення аналоговим тегом AnTag3 (при створенні задамо цьому тегу тип Memory Integer) значення 100. Якщо умова справджується, то значення AnTag3 збільшується на 1, якщо ні – присвоюємо цьому тегу значення 0. У другому - наведена складна умова, частини якої поєднані за допомогою логічного “або” (OR). Як бачимо, в дужки взята як вся умова вцілому, так і окремі її частини. В цій умові виконується наступне: якщо значення тегу AnTag3 менше 20, або більше 80 – дискретному тегу DiskTag6 присвоюється значення логічної 1; якщо значення лежать в діапазоні від 20 до 80 - дискретному тегу DiskTag6 присвоюється значення логічного 0.

Для того, щоб побачити роботу наведеного вище скрипта, прив'яжемо відповідні теги до кнопки 5 (рис. 3.4), показуючого повзункового приладу 6 і лампочки 7.

Для кнопки 5 (рис. 3.4) задамо анімаційний зв'язок User Inputs → Discrete (див. рис. 3.23).

Рис. 3.23

Після цього з'явиться вікно, наведене на рис. 3.24. У цьому вікні у полі Tagname (ім'я тега) вкажемо дискретний тег DiskTag5, а також задамо повідомлення при ввімкненому значенні тега (“Ввімкнено”) і при вимкненому значенні тега (“Вимкнено”).

Рис. 3.24

Прив'яжемо до показуючого повзункового приладу 6 (рис. 3.4) аналоговий тег AnTag3. Для цього відкриваємо вікно властивостей цього об'єкта, двічі натиснувши на ньому лівою кнопкою миші, і у вікні, що з'явиться, у властивості Value (Змінна), вкажемо ім'я тега AnTag3 в полі Default Value (Початкова змінна) (рис. 3.25).

Рис. 3.25

Прив'яжемо до лампочки 7 (рис. 3.4) дискретний тег DiskTag6. Для цього відкриваємо вікно властивостей цього об'єкта, двічі натиснувши на ньому лівою кнопкою миші і у вікні, що з'явиться, у властивості Value (Змінна) вкажемо ім'я тега DiskTag6 в полі Default Value (Початкова змінна) (рис. 3.26).

Рис. 3.26

Створимо також для вікна, зображеного на рис. 3.4, віконний скрипт (Window Script). Для цього на панелі інструментів натискаємо пункт Special → Scripts (Спеціальне → Скрипти) і у відкритому списку обираємо Window Scripts (Віконні скрипти). З'явиться діалогове вікно створення віконного скрипта (рис. 3.27). В ньому задамо умову спрацювання скрипта (Condition Type) - при відображенні вікна (On Show), а в основному тексті прирівняємо нулю аналогові змінні AnTag1, AnTag2, AnTag4, AnTag5, AnTag6.

Рис. 3.27

Таким чином у цій частині ми створили два вікна з переходом між ними. При запуску режима виконання Runtime буде відображене те вікно, яке було відкритим у середовищі розробки WindowMaker. Тому відкриємо перше вікно, що ми створювали при розгляді скриптів і перейдемо в режим виконання. Буде відображено рис. 3.28.

Нижче коротко описано приклад роботи вікон.

Рис. 3.28

Введемо як приклад для прямих тегів і супертегів величини, зазначені на рис.  3.28. Для цього для аналогових тегів натискаємо на полі їх відображення і у полі, що з'явиться введемо потрібне значення (при вводі слід пам'ятати, що при створенні було введено обмеження від 0 до 100). Для дискретних тегів при натисканні на поле їх відображення з'явиться наступне вікно:

Рис. 3.29

У цьому вікні необхідно натиснути на відповідну кнопку, щоб присвоїти тегу потрібне значення.

Після того як ми змінили значення тегів, натискаючи на об'єкт 1, будемо зв'язувати непрямий тег IndTagAn з прямими тегами DirTagAn_A або DirTagAn_В. Відповідно буде змінюватись і значення IndTagAn, адже він буде копіювати значення того прямого тега, до якого прив'язаний у даний момент.

Аналогічно, натискаючи на об'єкт 2, ми будемо зв'язувати базовий елемент непрямого супертега IndSupTag з базовими елементами прямих супертегів DirSupTag1 і DirSupTag2. Відповідно буде змінюватись і значення членів непрямого супертега IndSupTag\An і IndSupTag\Disc.

При натисненні на кнопку “Перейти на друге вікно” відкривається інше створене вікно, зображене на рис. 3.30.

Рис. 3.30

У цьому вікні при натисненні на кнопку “Піднести до третьої степені” тегові AnTag2 присвоюється значення тега AnTag1, піднесене до кубу. Як приклад задамо тегу AnTag1 значення 3 і натиснемо на кнопку. Тоді тегу AnTag2 буде присвоєно значення 27.

Посередині вікна розміщений тектовий об'єкт, який відображає час, протягом якого дане вікно є відкритим, у форматі “години : хвилини : секунди”.

При натисненні на кнопку “Ввімкнено/Вимкнено” з'являється вікно, зображене на рис.  3.29. Якщо в цьому вікні натиснути On, то почнеться збільшення значення тега AnTag3 на 1 кожну 0,1 секунди, і відповідно повзунок буде переміщуватись вправо. Як тільки значення тегу стає меншим 20 або більшим 80 – загоряється червона лампочка.

При натисненні на кнопку “Перейти на перше вікно” відкривається вікно, зображене на рис. 3.28.

Аларми та події

Загальні відомості

В даному методичному посібнику до лабораторної роботи використовуються наступні терміни і поняття, які є загальними для всіх підсистем і не залежать ні від їх типу, ні від способу використання:

Аларм. Аларм являє собою один з окремих випадків більш загального поняття "умова" в тому сенсі, що це аварійний умова. Основне призначення аларму - сигналізувати про виникнення в технологічному процесі будь-якої позаштатної ситуації або про завершення будь-якого етапу технологічного процесу. Наприклад, аларми можуть використовуватися для повідомлення про те, що температура водогрійного котла перевищила допустиму величину, або просто позначати кінець чергової робочої зміни.

Пріоритет. Рівень серйозності, або пріоритету аларма говорить про те, наскільки "погана" або наскільки "важлива" виникла ситуація. У випадку з водогрійним котлом ситуація може бути "дуже поганою" або "критичною", що вимагає прийняття невідкладних заходів з порятунку життя робітників і обладнання. На відміну від цієї ситуації, рівень серйозності закінчення робочої зміни може бути мінімальним. Серйозність аларма, зазвичай, визначається конкретними умовами: призначенням обладнання, безпекою для працівників, наявністю резервних систем і т.д.

Примітка. В InTouch використовується числове кодування пріоритетів алармів, в якому "1" означає найвищий пріоритет, а "999" - найнижчий.

Субстан. Стан аларма може відрізнятися кількома субстанами. У цьому випадку говорять про багаторежимний аларм. Наприклад, для аналогового аларма, як правило, визначається декілька порогових значень: "High" і "Low" - обмежують діапазон допустимих значень тега, та "HiHi" і "LoLo" - позначають межі значних відхилень від допустимих величин.

Температура водогрійного котла може перебувати в аварійному діапазоні, приймаючи будь-які, в порівнянні з вказаними межами значення. Крім того, температура може переходити з одного субстану в інший, при цьому загальний аварійний стан буде зберігатися.

Події. Подія - це одиничне визначення зміни будь-яких умов або станів, яке не обов'язково має зв'язуватися з алармом. Перехід або вихід з будь-якого аварійного режиму, звичайно, є одним з видів подій. Подія може також означати будь-яку дію оператора, зміну системної конфігурації або виникнення системної помилки. Слід зазначити різницю між ситуацією і подією. Ситуація може існувати хвилини, години, дні або тижні, у той час як подія є одномоментною: вона виникає і тут же закінчується. Аларм - це ситуація, повідомлення про аларм - подія.

Підтвердження. Одне з головних призначень аларма - повідомити спостерігача (оператора або іншу частину системи) про виникнення тієї чи іншої ситуації. Сповіщений оператор або частина системи повинні підтвердити ознайомлення з отриманими відомостями. Підтвердження слід відрізняти від коригуючої дії, що не обов'язково може бути виконано відразу після повідомлення. Його також слід відрізняти і від повернення в нормальний стан, що може відбутися саме по собі, без будь-якого втручання ззовні. Підтвердження всього на всього означає, що оператор або підсистема взяли до уваги факт виникнення аларма. Як правило, аларм з високим і середнім пріоритетом вимагають підтвердження, у той час як для аларма з дуже низьким пріоритетом це не обов'язковим. Попри те, що умови, які викликали генерацію аларма, можуть припинитися (скажімо, після різкого підйому температури, вона знову опустилася до нормального рівня), аларм вважається "необробленим" до тих пір, поки хто-небудь або що-небудь його не підтвердить.

Групи. Для спрощення управління алармами, вони можуть бути об'єднані в групи. Кожна група може бути пов'язана з окремою виробничою зоною підприємства, одиницею устаткування, оператором або навіть з окремими функціональними характеристиками. Групи можуть об'єднуватися в ієрархічні структури.

Зони. Як правило, підприємства поділяються на виробничі зони, які характеризуються своїми фізичним місцем розташування, функціональними обов'язками обслуговуючого персоналу, етапами технологічного процесу, типами використовуваного устаткування і т.д. Так само як і групи, зони можуть бути об'єднані в ієрархічні структури, тобто ділитися на головні і внутрішні зони. Однак зони не можна однозначно порівнювати з групами, оскільки на різних підприємствах вони організовуються по-різному. У системі розподілених алармів явної підтримки зон немає. Але шляхом розподілу алармів по групах можна побудувати певну подібність зон.

Аларми та події

В InTouch можна використовувати два способи оповіщення обслуговуючого персоналу про хід виробничого процесу: за допомогою алармів і за допомогою подій.

Аларм представляють собою попередження про ненормальні умови протікання процесу, які можуть викликати проблеми і вимагають втручання оператора. Типовий випадок генерації аларма - перевищення яким-небудь технологічним параметром заданого порогового значення. Наприклад, коли будь-яка аналогова величина починає перевищувати максимально допустиме значення. Це перевищення породжує перехід в стан непідтвердженого аларма, щоб сповістити оператора про проблему. Після підтвердження аларма система повертається в стан підтвердженого аларма. Можна зконфігурувати систему так, що підтвердження аларма буде необхідно навіть після зміни умов, що призвели до генерації аларма. Це гарантує сповіщення обслуговуючого персоналу про всі стани виробничої системи, навіть короткочасних.

Події представляють собою повідомлення про нормальний стан системи і не вимагають втручання оператора. Типовий приклад події – реєстрація оператора в системі InTouch. Якщо це визначено системними параметрами, така подія може бути зареєстрована у файлі на диску або відправлена до друку на принтер. Контролювати виникнення подій можна за допомогою будь-якого тега, вказавши дану функцію під час його визначення в словнику (TagName Dictionary) програми. У цьому випадку при кожній зміні значення тега в системі алармів буде реєструватися повідомлення про виникнення події.

У реєструючому повідомленні буде вказана як величина, так і причина зміни: в результаті дій оператора, операції введення / виводу, виконання скрипта або дій системи.

Поточні і архівні аларми

В системі SCADA-програми InTouch використовуються терміни "поточні аларми" (Summary Alarms) і "архівні аларми" (Historical Alarms), що позначають аварійні стани, які "ще не припинилися", і стани, які "вже припинилися", відповідно. Ідея полягає в тому, щоб оператор мав можливість постійно бачити деяку зведену інформацію про всі підтвердження алармів, у той час як аларми, які були колись підтверджені, можуть представляти для нього менший інтерес. У підсистемі розподілених алармів, відомості про різні типи алармів зберігаються в різних областях бази даних.

Підтримка термінальної служби підсистемою алармів

Користуючись системою розподілених алармів з підтримкою термінального сервісу, клієнти підсистеми алармів, що працюють в різних сеансах термінального зв'язку, отримують можливість індивідуально вибирати, які відомості про аларми їм необхідні і яким чином їх відображати на екрані.

Постачальники алармів мають назву, що дозволяє однозначно визначати найменування відповідного додатка і його екземпляр. Ця інформація передається системі розподілених алармів під час реєстрації в ній постачальника або споживача алармів.

Вузол, у якому виконується програма постачальника алармів, також має назву, що дозволяє знаходити в системі відповідний комп'ютерний вузол. Ця інформація стає доступною системі розподілених алармів під час запуску її примірника в даному комп'ютерному вузлі.

При реєстрації відомостей про аларм джерело аларма визначається за назвою вузла і повною назвою постачальника аларма.

Під час підтвердження аларма в середовищі термінального сервісу реєстрована назва операторського вузла буде представляти собою назву клієнтського комп'ютера, оператор якого почав сеанс термінальної зв'язку. Якщо назву вузла не можна отримати, то замість нього використовується IP-адреса вузла.

Примітка. Підтримка постачальників алармів в термінальних сеансах не забезпечується. Взаємодія з постачальниками алармів можлива тільки з допомогою консолі термінального сервісу Terminal Console.

Інші джерела алармів

Система розподілених алармів здатна приймати відомості про аларми не тільки від системи InTouch, але і з інших джерел (від так званих, постачальників алармів). Зокрема, взаємодіючи з серверами введення / виводу компанії Wonderware, вона може приймати аларми від різних термінальних пристроїв.

Система встигає зберігати "пакетні" записи про аларми від термінальних пристроїв однин за одним при отриманні цієї інформації в пакетному режимі.

Відмітки часу та дати для цих записів генеруються постачальником алармів, а не системою розподілених алармів.

Клієнтські запити на отримання відомостей про ці аларми (наприклад, даних про підтвердження) виконуються системою розподілених алармів, яка посилає відповідне повідомлення постачальникам алармів.

Постачальник алармів обробляє отримане повідомлення і відповідає оновленим записом про аларм, що відображає нове значення конфігураційних параметрів (якщо такі є). Інформація, специфічна для кожного постачальника аларма, заноситься до запису самим постачальником, а не системою розподілених алармів. До складу переданих відомостей входять назва і клас аларма, порогові значення, дозволи, стан та інші конфігураційні параметри.

Аларми системи InTouch діляться на кілька основних категорій залежно від їх характеристик. Ці категорії називаються Клас (Class) і Тип (Type). Система розподілених алармів підтримує наступні п'ять основних видів (по станам) алармів: Discrete (логічний), Deviation (щодо відхилення), Rate-of-Change (по швидкості зміни), Value (за зміною значення) і SPC (статистичний). Відомості про всі допустимі класи і типи алармів наведені в наступній таблиці.

Вид аларма

Клас розподіленого аларма

Тип розподіленого аларма

Discrete (Логічний)

DSC

DSC

Deviation - Major (За значного відхилення)

DEV

MAJDEV

Deviation - Minor (За незначного відхилення)

DEV

MINDEV

Rate-of-Change (За швидкістю зміни)

ROC

ROC

SPC

SPC

SPC

Value - LoLo (За значенням - LoLo)

VALUE

LOLO

Value - Low (За значенням - Low)

VALUE

LO

Value - High (За значенням - High)

VALUE

HI

Value - HiHi (За значенням - HiHi)

VALUE

HIHI

Кожен аларм може бути пов'язаний з яким-небудь тегом InTouch. Залежно від типу тега для нього можна визначити один або кілька класів або типів алармів. Умови створення алармів зберігаються в словнику тегів (TagName Dictionary).

Типи подій

Події в системі InTouch також діляться на кілька основних категорій, що визначаються характеристиками подій. Ці категорії називаються Типами подій. У наступній таблиці наведено короткий опис кожного типу подій.

Тип подій

Опис

SYS

Системне подія.

USER

Зміна значення тега $ Operator.

DDE

Тегу було присвоєно значення, отримане від клієнта по протоколу DDE.

LGC

Значення тега змінилося в результаті виконання скрипта QuickScript.

OPR

Оператор змінив значення тега за допомогою функцій вводу значень.

Параметри перших двох типів подій встановлюються автоматично при дозволі реєстрації подій. Параметри інших трьох типів повинні задаватися користувачем для кожного тега в Словнику програми.

Пріоритети алармів

Кожному визначеному в InTouch аларму ставиться у відповідність рівень пріоритету, який показує ступінь серйозності цього аларма і може змінюватися від 1 до 999 (значення "1" відповідає найвищому пріоритету). Визначення діапазонів пріоритетів дозволяє без особливих зусиль відокремлювати критичні аларми від несуттєвих. Виконання анімаційних зв'язків, скриптів підтвердження, вивід відомостей на екран і на друк може виконуватися виключно на основі пріоритетів.

Наприклад, якщо з виробничої точки зору досить мати чотири рівні серйозності алармів, всі пріоритети можна розділити на наступні групи значень:

Важливість аларма

Діапазон значень пріоритетів

Критичний

1 - 249

Істотний

250 - 499

Несуттєвий

500 - 749

Інформаційне повідомлення

750 - 999

Після визначення всіх тегів і умов алармів у виробничій системі InTouch можна визначити важливість кожного аларма, вказавши для нього рівень пріоритету з відповідного діапазону. Після поділу алармів за ступенем важливості можна вибирати режим відображення і друку відомостей про аларми тільки певною мірою важливості.

Примітка. Можна і навіть бажано використовувати не більше чотирьох рівнів пріоритетів. Один - для критичних, другий - для істотних, третій – для несуттєвих і четвертий - для інформаційних повідомлень (тобто 1, 2, 3, 4).

Групи алармів

Кожен аларм InTouch належить до певної групи алармів. Ці групи визначаються користувачем і можуть утворювати ієрархічну структуру до 32 рівнів вкладеності. Групи представляють собою спосіб категоризації алармів в залежності від типу організації, структури виробництва або будь-яких інших умов. Групування алармів спрощує їх сортування при виведення на екран і друк, а також під час виконання скриптів підтвердження.

Кожен тег пов'язується з певною групою алармів. Якщо при визначенні тега назву групи алармів зазначено не буде, за замовчуванням InTouch автоматично зв'яже тег з кореневою групою $ System. З кожною групою алармів можуть бути пов'язані як теги, так і інші групи алармів. Всі групи алармів автоматично стають нащадками кореневої групи $ System. Ієрархічна структура груп може мати до 32 рівнів вкладеності. У кожну групу алармів може входити не більше 32 підгруп. Кожна підгрупа також може містити не більше 32 підгруп і т.д. І так аж до 32 рівнів.

Схеми підтвердження алармів

Як тільки елемент повертається в нормальний стан або переходить в алармований стан, в системі генерується екземпляр відповідного аларма. Якщо він є багаторежимним, то кожен перехід у новий субстан інтерпретується як зміна стану одного і того ж примірника аларма.

Термін життя примірника аларма обмежується моментом повернення в нормальний стан. Наступний перехід в стан аларма призводить до створення нового примірника аларма.

Система розподілених алармів контролює кожен екземпляр аларма: коли він був створений, коли відбувалися будь-які з його переходів в субстани, коли відбулося повернення до нормального стану, чи очікує він підтвердження і коли він був підтверджений.

Аларм як стан. Підтвердження - необхідно примірник аларма. Примірник аларма входить в стан очікування підтвердження відразу після першого переходу в стан аларма. Якщо після підтвердження примірника стався новий перехід до одного з субстанів аларма (наприклад, з субстану "Hi" в субстан "HiHi"), примірник знову починає очікувати підтвердження. Коли б екземпляр не був підтверджений, його підтвердження приймається і застосовується до всіх переходів між субстанами, які відбулися з моменту останнього підтвердження. Аларм вважається підтвердженим після підтвердження самого останнього його примірника.

Аларм як явище. Підтвердження - необхідно екземпляр аларма. Для підтвердження повинен бути самий останній перехід в стан або субсостан аларма. Примірник аларма входить в стан очікування підтвердження відразу після першого переходу в стан аларма. Якщо після підтвердження примірника стався новий перехід до одного з субстанів аларма, примірник знову починає очікувати підтвердження. Кожному подальшого переходу присвоюється порядковий номер, і в підтвердженні повинен бути вказаний відповідний порядковий номер підтверджуваного переходу. Підтвердження приймається, якщо воно призначене для самого останнього переходу. Відхилені підтвердження може бути зареєстровано для подальшої діагностики.

Якщо підтвердження приймається, воно застосовується до всіх змін стану аларма, що є на даний момент. Аларм вважається підтвердженим після підтвердження самого останнього екземпляра. Ця орієнтована на події модель гарантує, що підтвердження буде відповідати поточній ситуації, навіть якщо субстани аларма змінювалися.

Розширені відомості про аларм. Підтверджуватися повинен кожен перехід аларма з одного стану в інший. Окремо повинні підтверджуватися як перехід в стан аларма, так і повернення у нормальні умови. Будь-який перехід в інший субстан також інтерпретується як створення нового екземпляра, при якому треба підтверджувати як вхід, так і вихід з цього субстану.

Переходи в субстани інтерпретуються як один "група повернення", яка створюється в момент першого переходу елемента з нормального стану в стан аларма. Якщо елемент повертається до нормального стану і знову переходить в стан аларма, в цьому випадку створюється нова група повернення.

Кожен перехід повинен підтверджуватися окремо і явно. Аларм вважається підтвердженим тільки після того як елемент повернувся в нормальний стан і були підтверджені всі переходи в усіх групах повернення.

Використання алармів

  1. Для запуску інструментального середовища розробки ArchestraIDE потрібно:

  • вибрати програму: Пуск – Усі програми – Wonderware – ArchestraIDE;

  • з’явиться вікно з’єднання з Galaxy (Connect to Galaxy);

  • створити нову Galaxy. В даному прикладі вона має назву Test1;

  • під’єднатися до створеної Galaxy Test1. Для цього необхідно вибрати в полі “Galaxy name” необхідне нам ім’я Test1 і натиснути кнопку Connect.

2. Вибрана Galaxy завантажиться і з’явиться наступне вікно. Після цього необхідно створити екземпляр шаблону $InTouchViewApp (в нашому випадку це $InTouchViewApp_001), і перейти до його редагування шляхом подвійного кліку мишкою на назві.

3. З’явиться наступне вікно програми WindowMaker

Приклад роботи з поточними алармами

  1. Створити нове вікно:

  • File – New Window;

  • в діалоговому вікні вказати ім’я вікна AlalarmsCurr та задати параметри вікна, що створюється.

  1. У вікні AlalarmsCurr створити наступні елементи, використовуючи засоби інструментальної панелі та бібліотеки Wizard.

Для цього використовуються наступні елементи і дії:

  • зміна фону вікна з допомогою кнопки Window Color на панелі вікна;

  • в якості графічного елементу для відображення списку поточних алармів використовується елемент AlarmViewerCtrl із бібліотеки Wizard;

  • для керування значеннями тегів RealTag, IntTag, AlarmTag, які належать різним моделям підтвердження алармів (три різновиди ACK Model: Condition, Event Oriented, Expanded Summary) використовуються стандартні елементи-слайдери Vertical Slider з бібліотеки Wizard;

  • для числового відображення значень тегів RealTag, IntTag, AlarmTag використовується стандартний елемент Analog Tagname Display With Tagname Text з бібліотеки Wizard;

  • для забезпечення можливості пригнічення алармів з допомогою двохпозиційного перемикача використовується стандартний елемент Knob Switch з бібліотеки Wizard;

  • в якості кнопок для зміни значення дискретного тегу DicTag1, для квотування наявних алармів та для переходу у вікно Alarm Hist використовується стандартний елемент кнопки (Button) з інструментальної панелі;

  • в якості фону для текстових полів, які показують інформацію щодо наявності аларму по певному тегу використовується стандартний елемент інструментальної панелі Rectangle (Прямокутник);

  • для відображення значень параметрів $System.Alarm, $System.Ack, RealTag.HiLimit, RealTag.HiStatus використовується стандартний текстовий елемент з інструментальної панелі;

  • для текстових підписів інших графічних елементів також використовується стандартний текстовий елемент з інструментальної панелі;

  1. Далі потрібно визначити наступні теги, використовуючи словник тегів (Tagname Dictionary):

  • InhibitTag – дискретний тег для пригнічення алармів, значення якого можна буде змінювати двохпозиційним перемикачам;

  • RealTag для введення дійсного значення із Cond ACK Mode слайдера. Для даного тегу встановлюється Condition модель підтвердження алармів (ACK Model);

  • IntTag для введення значення із Evnt ACK Mode слайдера. Для даного тегу встановлюється Event Oriented модель підтвердження алармів (ACK Model);

  • IntTag для введення значення із Exp ACK Mode слайдера. Для даного тегу встановлюється Expanded Summary модель підтвердження алармів (ACK Model);

  • DicTag1 дискретний тег із Expanded Summary моделлю підтвердження алармів;

  1. Наступним кроком потрібно налаштувати елементи вікна та прив’язати до них відповідні теги:

  • вікно з налаштуваннями графічного елементу AlarmViewerCtrl отримуємо шляхом двійного кліку по даному елементу;

  • елементи-слайдери приєднати відповідно до тегів RealTag, IntTag і AlarmTag:

  • текстові поля під елементами-слайдерами приєднати відповідно до тегів RealTag, IntTag і AlarmTag:

  • дискретний перемикач Inhibitor прив’язуємо до тега InhibitTag.

  • кнопку DiscTag1 Toggle зв’язуємо з тегом DiscTag1 і налаштовуємо у відповідності із скріншотом;

  • для кнопки Квотування створюємо скрипт, який буде квотувати виділені в списку аларми;

  • для текстових полів $System.Alarm, $System.Ack, RealTag.HiLimit, RealTag.HiStatus, помічених як “#”, робимо відповідні зв’язування з необхідними параметрами;

  • перехід у вікно історичних алармів AlarmsHist (цей пункт потрібно виконати, коли буде створено вікно AlarmsHist) з допомогою кнопки Періхід у вікно Alarms Hist;

  1. Створити нове спливаюче вікно для оповіщення про виникання алармів:

  • File – New Window;

  • в діалоговому вікні вказати ім’я вікна Ack та задати параметри вікна, що створюється.

  1. У вікні Ack створити наступні елементи, використовуючи засоби інструментальної панелі.

Для цього використовуються наступні елементи і дії:

  • для текстового надпису “Увага!” використовується стандартний текстовий елемент з інструментальної панелі (Text);

  • в якості кнопки для квотування нових алармів використовується стандартний елемент кнопки (Button) з інструментальної панелі;

  1. Наступним кроком потрібно налаштувати елементи вікна так, щоб при появі нових алармів спливало дане вікно із блимаючим надписом “Увага!” та можливістю квотування цих алармів з допомогою кнопки:

  • блимання надпису створюється шляхом задання умов у властивостях даного текстового поля;

  • кнопка Квотування алармів слугує для підтвердження щодо ознайомлення із новими алармами, що відбулися в системі;

  • для того, щоб дане вікно Ack з’являлося кожен раз при появі нових алармів потрібно створити Condition скрипт;

  1. Далі потрібно повернутися до вікна AlarmsCurr і перейти в режим виконання – клікнути на команді Runtime.

  1. Змінюючи положення кожного з трьох слайдерів та клікаючи по кнопці DiscTag1 Toggle спостерігаємо за появою алармів, які можна квотувати в спливаючому вікні Ack. Пригнічення алармів вмикається/вимикається з допомогою двохпозиційного перемикача Inhibitor.

* Для повернення в систему розробки WindowMaker треба клікнути на команді Development!

Приклад роботи з історичними алармами

  1. Створити нове вікно:

  • File – New Window;

  • в діалоговому вікні вказати ім’я вікна AlalarmsHist та задати параметри вікна, що створюється.

  1. У вікні AlalarmsHist створити наступні елементи, використовуючи засоби інструментальної панелі та бібліотеки Wizard.

Для цього використовуються наступні елементи і дії:

  • в якості графічного елементу для відображення списку історичних алармів використовується елемент AlmDbViewCtrl із бібліотеки Wizard;

  • для керування значеннями тегів RealTag і IntTag, для яких можуть формуватися аларми, використовуються стандартні елементи-слайдери Vertical Slider з бібліотеки Wizard;

  • для кнопок View Update (обновлює список алармів у AlmDbViewCtrl компоненті), Status Check (виводить в текстове поле статус зв’язку з базою данних алармів), Status Update (очищує текстовий рядок із статусом зв’язку з базою данних алармів), Повернення у вікно Alarms Curr (здійснюється перехід у вікно з поточними алармами) використовується стандартний елемент кнопки (Button) з інструментальної панелі;

  • для відображення статусу з’єднання з базою данних алармів використовується стандартний текстовий елемент з інструментальної панелі;

  1. Далі потрібно створити базу данних для зберігання алармів і налаштувати її відповідним чином:

  • вибрати програму: Пуск – Усі програми – Wonderware – InTouch - Alarm DB Logger Manager;

  • з’явиться вікно Alarm DB Logger Manager з допомогою якого можемо налаштувати базу даних алармів (кнопка Settings) і запустити її (кнопка Start);

*User Name – ім’я користувача бази даннах MS SQL, Password – пароль цього користувача.

Після даних кроків буде створена/відкрита база данних алармів і запущений логер (той, хто записує аларми). Таким чином, графічний елемент AlmDBViewCtrl зможе отримувати аларми з цієї бази данних і відображати їх при відповідних настройках.

  1. Наступним кроком потрібно відповідним чином налаштувати графічні елементи вікна AlarmsHist, в тому числі, прив’язати до них відповідні теги:

  • вікно з налаштуваннями графічного елементу AlmDBViewCtrl отримуємо шляхом двійного кліку по даному елементу;

  • у вкладці Database вікна властивостей графічного елементу AlmDBViewCtrl задаємо параметри з’єднання з базою данних алармів аналогічні параметрам з’єднання для Alarm DB Logger Manager (див. п.п. 4.2.3);

  • елементи-слайдери приєднати відповідно до тегів RealTag, IntTag:

  • кнопка View Update призначена для обновлення вигляду графічного елементу AlmDBViewCtrl і має відповідні настройки;

  • кнопка Status Check, з допомогою якої в текстове поле записується статус зв’язку з базою данних алармів, настроюється у відповідності із скріншотом;

  • кнопка Status Update, з допомогою якої в текстове поле “#” записується значення “Zero” (з допомогою тега StrTag, який потрібно створити), настроюється у відповідності із скріншотом;

  • кнопка Повернення у вікно Alarms Curr дозволяє перейти у вікно Alarms Curr і має відповідні настройки;

  1. Далі потрібно перейти в режим виконання – клікнути на команді Runtime.

  1. Змінюючи положення кожного з двох слайдерів хаотичним чином, можемо створити велику кількість алармів, які в свою чергу можемо побачити в AlmDBViewCtrl компоненті, натиснувши на кнопку View Update. Натиснувши на кнопку Status Check, можна у текстовому полі “#” побачити статус з’єднання з базою алармів.

* Для повернення в систему розробки WindowMaker треба клікнути на команді Development!

Приклад використання елементів Archestra для роботи з алармами

Графічні елементи AlarmViewerCtrl і AlmDbViewCtrl із бібліотеки Wizard, які використовуються для відображення поточних алармів (п. 4.1) та історичних алармів (п. 4.2) відповідно, може замінити один Archestra елемент (симовол) - AlarmClient, але з різними його налаштуваннями.

  1. Створити нове вікно для відображення поточних алармів:

  • File – New Window;

  • в діалоговому вікні вказати ім’я вікна AlalarmsCurrArchestra та задати параметри вікна, що створюється.

  1. Створити нове вікно для відображення історичних алармів:

  • File – New Window;

  • в діалоговому вікні вказати ім’я вікна AlalarmsHistArchestra та задати параметри вікна, що створюється.

  1. Вікно AlalarmsCurrArchestra по вмісту буде аналогічним вікну AlalarmsCurr, за виключенням елемента AlarmViewerCtrl. Замінить нього буде використовуватися Archestra симовол на основі AlarmClient елемента з налаштуваннями для поточних алармів. Тому всі елементи (вже налаштовані в п. 4.1) вікна AlalarmsCurr, за винятком AlarmViewerCtrl елемента, копіюємо у вікно AlalarmsCurrArchestra.

Для цього використовуються наступні дії:

  • переходимо до вікна AlalarmsCurr;

  • курсором при затиснутій клавіші Shift виділяємо всі графічні елементи вікна, за виключенням елемента AlarmViewerCtrl. Після виділення цих елементів копіюємо їх в буфер обміну з допомогою комбінації клавіш Ctrl+C.

  • переходимо до вікна AlalarmsCurrArchestra;

  • скопійовані в буфер обміну графічні елементи добавляються у вікно AlalarmsCurrArchestra з допомогою комбінації клавіш Ctrl+V або пункта меню Paste.

  1. Вікно AlalarmsHistArchestra по вмісту буде аналогічним вікну AlalarmsHist, за виключенням елемента AlmDbViewCtrl. Замінить нього буде використовуватися Archestra симовол на основі AlarmClient елемента з налаштуваннями для історичних алармів. Тому всі елементи (вже налаштовані в п. 4.2) вікна AlalarmsCurr, за винятком AlmDbViewCtrl елемента, копіюємо у вікно AlalarmsHistArchestra.

Для цього використовуються наступні дії:

  • переходимо до вікна AlalarmsHist;

  • курсором при затиснутій клавіші Shift виділяємо всі графічні елементи вікна, за виключенням елемента AlmDbViewCtrl. Після виділення цих елементів копіюємо їх в буфер обміну з допомогою комбінації клавіш Ctrl+C.

  • переходимо до вікна AlalarmsHistArchestra;

  • скопійовані в буфер обміну графічні елементи добавляються у вікно AlalarmsHistArchestra з допомогою комбінації клавіш Ctrl+V або пункта меню Paste.

  1. Далі потрібно створити Archestra символ для відображення поточних алармів у вікні AlalarmsCurrArchestra:

  • переходимо у вікно Archestra IDE і створюємо новий Archestra символ з ім’ям AlarmsCurrArA;

  • подвійним кліком на новоствореному символі відкриваємо вікно редагуваня Archestra символів;

  • з панелі інструментів вставляємо елемент Alarm Client;

  • двійний клік лівою кнопкою мишки на елементі Alarm Client викликає вікно конфігурації;

  • в даному вікні встановлюємо клієнтський режим (Client Mode) Current Alarms, оскільки нам потрібні поточні аларми, і задаємо системну змінну Alarm Query, з якою будуть асоціюватися ці аларми;

  • для збереження Archestra символа та виходу з режиму його редагування натискаємо на кнопку Save and Close;

  1. Наступним кроком потрібно створити Archestra символ для відображення історичних алармів у вікні AlalarmsHistArchestra:

  • переходимо у вікно Archestra IDE і створюємо новий Archestra символ з ім’ям AlarmsHistArA;

  • подвійним кліком на новоствореному символі відкриваємо вікно редагуваня Archestra символів;

  • з панелі інструментів вставляємо елемент Alarm Client;

  • двійний клік лівою кнопкою мишки на елементі Alarm Client викликає вікно конфігурації;

  • в даному вікні встановлюємо клієнтський режим (Client Mode) Historical Alarms, оскільки нам потрібні історичні аларми, і налаштовуємо з’єднання з базою данних алармів. Саму базу данних алармів можна створити з допомогою Alarm DB Logger Manager (Пуск – Усі програми – Wonderware – InTouch - Alarm DB Logger Manager), як це було зроблено в п. 4.2;

  • для збереження Archestra символа та виходу з режиму його редагування натискаємо на кнопку Save and Close;

  1. Далі потрібно вже налаштовані графічні Archestra символи AlarmsCurrArA і AlarmsHistArA добавити у відповідні вікна в програмі WindowMaker.

Для цього робимо наступні дії:

  • переходимо програми WindowMaker та відкриваємо вікно AlarmsCurrArchestra;

  • вставляємо з бібліотеки Archestra символів створений нами елемент AlarmsCurrArA;

  • переходимо у вікно AlarmsHistArchestra, перед цим зберігши попереднє вікно;

  • вставляємо з бібліотеки Archestra символів створений нами елемент AlarmsHistArA;

  1. Наступним кроком потрібно забезпечити взаємний перехід між вікнами AlarmsCurrArchestra і AlarmsHistArchestra.

Для цього виконуємо наступні дії:

  • у вікні AlarmsCurrArchestra настроюємо відповідним чином кнопку Повернення у вікно Alarms Hist;

  • у вікні AlarmsHistArchestra настроюємо відповідним чином кнопку Повернення у вікно Alarms Curr;

  1. Далі потрібно перейти в режим виконання – клікнути на команді Runtime.

  1. Змінюючи положення кожного з двох слайдерів хаотичним чином, можемо створити велику кількість алармів, які в свою чергу можемо побачити в AlarmsHistArA компоненті, натиснувши на кнопку View Update. Натиснувши на кнопку Status Check, можна у текстовому полі “#” побачити статус з’єднання з базою алармів. Щоб перейти у вікно з поточними алармами, які відображаються з допомогою Archestra символа AlarmsCurrArA, необхідно натиснути на кнопку Повернення у вікно Alarms Curr.

* Для повернення в систему розробки WindowMaker треба клікнути на команді Development!

Тренди реального часу та історичні тренди

Загальні відомості

У системі InTouch є два типи об'єктів, призначених для відображення трендів: тренди "реального часу" і історичні тренди. Обидва типи об'єктів можна конфігурувати на одночасне відображення графіків зміни в часі значень декількох тегів. При побудові трендів реального часу можна використовувати до чотирьох позицій (значень чотирьох тегів), а історичні тренди можна будувати, використовуючи до восьми позицій. Обидва типи трендів створюються з допомогою спеціальних інструментів прикладної програми WindowMaker. Система InTouch забезпечує повний контроль всіх параметрів трендів. Наприклад, можна визначити охоплюваний період часу, діапазон значень, крок сітки положення тимчасових відміток, число позицій і атрибути кольору. До складу пакету FactorySuite Productivity Pack входить засіб під назвою Pen Configuration Grid (сітка конфігурації позицій), що дозволяє використовувати до 16 позицій. InTouch також має систему розподілених історичних архівів, що дозволяє вибирати історичні дані з будь-яких історичних журнальних файлів InTouch, зокрема мережевих.

Створення трендів

Для виконання лабораторної роботи необхідно запустити програму InTouch:

Пуск -> Всі програми -> Wonderware -> InTouch

Рис. 5.1 Вікно програми InTouch

Створюємо новий проект, натиснувши на кнопку на панелі швидкого доступа (як зазначено на рисунку 5.1). В візард вводимо інформацію необхідну для створення нового проекту.

Подвійним натисненням на новоствореному проекті запускаємо WindowMaker.

Рис. 5.2 Запускаємо створений нами проект

Створюємо нове вікно, натиснувши правою кнопкою миші у вікні «Windows» і заповнивши форму у відповідності до рисунку 5.4.

Рис. 5.3 Створюємо нове вікно

Рис. 5.4 Вводимо назву та деякі параметри нового вікна

Рис. 5.5 Вигляд новоствореного вікна

У вікні RealTrends створюємо 2 слайдери, використовуючи засоби бібліотеки Візардів InTouch.

Рис 5.6 З бібліотеки Візардів вибираємо слайдери

Рис. 5.7 Вставляємо слайдери з бібліотеки Візардів у вікно

Створюємо кнопку, що буде імітувати дискретний сигнал і переводити значення тега з «0» в «1» і назад.

Рис. 5.8 Створюємо кнопку

Натиснувши правою кнопкою миші на кнопці в контекстному меню вибираємо «Substitute» -> «Substitute Strings» (як показано на рисунку 5.9) і змінюємо назву кнопки.

Рис. 5.9 Змінюємо напис на кнопці

Створюємо змінні, в яких буде зберігатись значення параметрів, що реєструється: AnnTag1 (тип: Memory Integer), AnnTag2 (тип: Memory Integer), DiscTag1 (тип: Memory Discrete). Для цього відкриваємо (як це показано на рисунку 5.10) Tagname Dictionary і створюємо змінні (теги), задавши їx ім’я і тип.

Рис. 5.10 Створення тегів

Редагуємо слайдери у відповідності до рисунка 5.11, викликавши вікно Slider Wizard подвійним натисненням на слайдер. Таким чином, коли ми будемо переміщувати повзунок слайдера, то відповідні значення слайдера будуть зберігатись у відповідному тезі (AnnTag1 в данному прикладі). Вікно Slider Wizard також дозволяє змінювати колір заповнення слайдера і налаштовувати шкалу.

Рис. 5.11 Створення тегів

Відповідно, для другого слайдера присвоюємо тег AnnTag2.

Подвійним натисненням лівою кнопкою миші на кнопці викликаємо вікно редагування кнопки (рисунок 5.12). Натискуємо «Discrete Value» і з’являється вікно як на рисунку 5.13.

Рис. 5.12 Редагуємо кнопку

Рис. 5.13 Редагуємо кнопку

Встановлена радіо кнопка «Toggle» відповідає за те, щоб при натисненні на кнопку в режимі RunTime значення тега DiscTag1 змінювалось на протилежне. Для задання початкового значення тега DiscTag1 при старті проекта напишемо Application Script як вказано на рисунку 5.15.

Рис. 5.14 Створюємо новий скрипт

Рис. 5.15 Пишемо скрипт

Тренди реального часу в InTouch

Тренди реального часу є динамічними об’єктами. Під час виконання вони постійно оновлюються. Вони викреслюють зміни значень до чотирьох локальних тегів. Тренд реального часу створюється з панелі інструментів як це вказано на рисунку 5.16.

Рис. 5.16 Тренд реального часу з панелі інструментів

Рис. 5.17 Налаштування тренду реального часу

Подвійним кліком лівою кнопкою мишки на тренді викликаємо діалогове вікно «Real Time Trend Configuration» і встановлюємо налаштування відповідно до рисунку 5.17.

Створюємо легенду тренду згудно з рисунком 5.18.

Рис. 5.18 Створюємо легенду тренду

Переходимо в режим Runtime і тестуємо роботу тренду.

Рис. 5.19 Демонстрація роботи реального тренду

Історичні тренди в InTouch

Історичні тренди дозволяють отримувати «моментальний знімок» даних зафіксованих у минулому на певну дату і час. Ці об’єкти не є динамічно створюваними. На відміну від трендів реального часу історичні тренди оновлюються тільки в результаті або виконання скрипта, або команди оператора (наприклад, натиснення кнопки). На історичному тренді можуть відображатись одночасно вісім кривих, що відповідають різним тегам і будуються різним кольором. Крім того, є можливість створити кнопки для збільшення і зменшення масштабу області тренду між положеннями візирів або між яким-небудь максимальним і мінімальним значенням.

В InTouch є два варіанти побудови історичних трендів: з панелі інструментів та з бібліотеки візардів. Історичний тренд з панелі інструментів (рисунок 5.20) вже застарілий і його майже не використовують при розробці сучасних SCADA.

Рис. 5.20 Історичний тренд з панелі інструментів та діалог його конфігурації

Однією з причин популярності історичного тренду з бібліотеки візардів є те, що він наділений більш потужним інструментарієм і, наприклад, розробнику не потрібно турбуватися про написання скриптів для кнопок масштабування інтервалу часу, на якому відображається тренд.

Створимо нове вікно: HistTrends.

З бібліотеки візардів вставляємо історичний тренд на новостворену сторінку.

Рис. 5.21 Вставляємо історичний тренд з бібліотеки візардів

Налаштовуємо історичний тренд. Для цього створимо дві змінні: IntTag типу Memory Integer та RealTag типу Memory Discret, але зверніть увагу на виставлений флаг «Log Data» при створенні тегів (рисунок 5.22). Цей флаг повідомляє системі, що значення данного тегу буде запам’ятовуватись в лог файлах і буде використовуватись для виводу історичних данних.

Подвійним кліком лівою кнопкою миші на тренді викликаємо діалогове вікно налаштування тренда (рисунок 5.22). Кнопка Suggest дозволяє автоматично створити відповідні теги в словнику тегів. Кнопка Pen викликає діалогове вікно, в якому можна задати тег, який буде відображатись на тренді і колір відображення.

Рис. 5.22 Створюємо теги, значення яких буде писать в логи

Рис. 5.23 Налаштовуємо історичний тренд

Для масштабування (зумування) тренду в бібліотеці візардів є елемент «Trend Zoom/Pan Panel». Вставляємо його (рисунок 5.24). Налаштовуємо елемент (рисунок 5.25).

Рис. 5.24 Вставляємо елемент «Trend Zoom/Pan Panel»

Рис. 5.25 Налаштовуємо елемент «Trend Zoom/Pan Panel»

Для підпису графіків, що відображаються на тренді існує елемент «Trend Pen Legend». Вставляємо його (рисунок 5.26).

Рис. 5.26 Вставляємо елемент «Trend Pen Legend»

Подвійним кліком на елементі «Trend Pen Legend» викликаємо діалогове вікно і налаштовуємо елемент у відповідності до рисунка 5.27.

Рис 5.27 Налаштування легенди тренду

Для збереження тренду в файл в InTouch передбачено елемент «HistData Wizard». Вставляємо його (рисунок 5.28).

Рис. 5.28 Вставляємо елемент «HistData Wizard»

Налаштування елементу «HistData Wizard» відбувається у відповідності до рисунка 5.29.

Рис. 5.29 Налаштування елементу «HistData Wizard»

Створюємо 2 слайдери, які будуть змінювати значення тегів IntTag і RealTag (рисунок 5.30).

Рис. 5.30 Створення і налаштування слайдерів

Створюємо кнопку оновлення тренду (рис 5.31). Оновлення буде відбуватись при переході дискретного тега з 0 в 1 і навпаки. Тому створюємо дискретний тег UpdateTag та змінюємо його при натиску на кнопку.

Рис. 5.31 Робимо кнопку оновлення тренду

Змінюємо назву кнопки.

Рис. 5.32 Зміна надпису на кнопці

Створюємо кнопку переходу на вікно RealTrends.

Рис. 5.33 Створюємо кнопку переходу на вікно RealTrends

Для того щоб по натиску на кнопку Update тренд обновлювався відповідно до поточного часу необхідно написати віконний скрипт (рисунок 5.34 і 5.35).

Рис. 5.34 Відкриваємо вікно редагування віконних скриптів

Рис. 5.35 Пишемо скрипт

Загальні параметри логування: кількість днів, які будуть зберігатись лог-файли, папку, де будуть зберігатись логи і таке інше – можна налаштувати відкривши діалогове вікно «Historical Logging Properties» (рисунок 5.36).

Рис. 5.36 Налаштування логування

Рис. 5.37 Вікно налаштування логування

16-Позиційний тренд

16-позиційний тренд дає можливість відображати як тренди реального часу так і історичні тренди. При цьому режим відображення (реальний чи історичний) можемо змінювати під час виконання RunTime режиму, натиснувши на тренд і встановивши відповідні налаштування.

Створюємо нове вікно «16PenTrend». На вікні розміщуємо 2 слайдери, кнопку для зупинки/включення відліку часу тренду та кнопку для переключення між графіками тренда (рисунок 5.38).

Рис. 5.38 Вікно 16 позиційного історичного тренду

Налаштовуємо слайдери та кнопки. Кнопку «Pen+1» налаштовуємо наступним чином:

Перший слайдер налаштовуємо на діапазон зміни змінної від 0 до 1000, а другий – від 0 до 2000.

Рис. 5.39 Action Script для кнопки «Pen+1»

Налаштовуємо кнопку «UpdateTrend» так як показано на рисунках 5.40 та 5.41.

Рис. 5.40 Налаштування кнопки «UpdateTrend»

Рис. 5.41 Налаштування кнопки «UpdateTrend»

Для того щоб при старті дискретні теги мали нульові початкові значення напишемо віконний скрипт (рисунок 5.42).

Рис. 5.42 Налаштування віконного скрипту

З бібліотеки візардів вставляємо 16-позиційний тренд (рисунок 5.43).

Рис. 5.43 Вставляємо 16-позиційний тренд

Налаштовуємо 16-позиційний тренд (рисунок 5.44).

Рис. 5.44 Налаштування 16-позиційного тренду

Вставляємо у вікно елемент відображення «Analog Tagname Display with Tagname Text» з бібліотеки візардів (рисунок 5.45) і налаштовуємо його на відображення тегу PenTrend16.

Рис. 5.45 Встановлюємо елемент «Analog Tagname Display with Tagname Text»

Рис. 5.46 Пишемо скрипт для зупинки/включення відліку часу тренду

Перейшовши в режим RunTime запускаємо відлік часу тренду кліком на кнопку UpdateTrend, переміщуючи повзунки слайдерів імітуємо хід процесу, кнопкою «Pen+1» переключаємо фокус з одного графіка тренду на інший.

Рис. 5.47 Вікно 16-позиційного тренду в RunTime режимі

Тренди в Archestra

Для запуску інструментального середовища розробки ArchestraIDE потрібно:

  • вибрати програму: Пуск – Усі програми – Wonderware – ArchestraIDE.

При запуску ІСР з’явиться вікно З’єднання з Galaxy (Connect to Galaxy);

  • створити нову Galaxy. В даному прикладі вона має назву Test1;

  • під’єднатися до створеної Galaxy Test1. Для цього необхідно вибрати в полі “Galaxy name” необхідне нам ім’я Test1 і натиснути кнопку Connect.

Рис. 5.48 Вікно «Connect To Galaxy» дозволяє під’єднатись до Galaxy або сторити нову

Вибрана Galaxy завантажиться і з’явиться наступне вікно.

Після цього необхідно створити екземпляр шаблону $InTouchViewApp (в нашому випадку це $InTouchViewApp_001), і перейти до його редагування шляхом подвійного кліку мишкою на назві.

Рис. 5.49 Головне вікно програми Archestra IDE

З’явиться вікно програми WindowMaker.

Створити нове вікно Trends_Window.

Рис. 5.50 Створення нового вікна в Archestra IDE

Рис. 5.51 Вводимо назву та деякі параметри нового вікна

Рис. 5.52 Вигляд новоствореного вікна

Тренди в Archestra.

Особливістю трендів в Archestra є те, що один елемент налаштовується на відображення і трендів реального часу і історичних трендів. При цьому історичний і реальний тренди можуть відображатися одночасно.

Переходимо назад у вікно Archestra і створюємо новий символ (рисунок 5.53).

Рис. 5.53 Створюємо новий Archestra символ

Подвійним кліком на новоствореному символі відкриваємо вікно редагуваня Archestra символів (рисунок 5.54).

Рис. 5.54 Вікно редагування Archestra символів

З панелі інструментів вставляємо елемент TrendClient (рисунок 5.55).

Рис. 5.55 Вставляємо елемент TrendClient

Подвійний клік лівою кнопкою миші на тренді викликає вікно конфігурації елемента тренду (рисунок 5.56).

Рис. 5.56 Вікно конфігурації тренда

Налаштування тренда відбувається в кілька етапів.

Налаштуємо відображення тренда реального часу. Перейдемо в WindowMaker і створимо на вікні 2 слайдери, прив’яжемо до слайдерів 2 змінні: AnnTag1 та AnnTag2. При цьому слайдери візьмемо з бібліотеки Archestra символів (рисунок 5.57). Методи роботи зі слайдерами з бібліотеки Archestra символів повністю аналогічні методам роботи зі слайдерами з бібліотеки візардів (рисунок 5.59).

Рис. 5.57 Вставляємо слайдери з бібліотеки Archestra символів

Рис. 5.58 Створюємо нові теги

Рис. 5.59 Вікно редагування настройок слайдера

Повертаємося у вікно редагування Archestra символів і налаштовуємо тренд реального часу, який буде відображати значення тегів AnnTag1 та AnnTag2 (рисунок 5.60).

Рис. 5.60 Налаштування тренду реального часу

Зверніть увагу на те як задається тег, значення якого буде відображатись.

Поле «Expression or Reference» складається з двох частин: «InTouch» - вказує звідки будуть братись значення, та «AnnTag1» - ім’я тегу, до якого звертаєшся.

Після завершення налаштувань і збереження створенного нами Archestra символу перейдемо в WindowMaker і встановимо його на вікно.

Рис. 5.61 Вставляємо Archestra символ тренду на вікно

Переходимо в режим RunTime (рисунок 5.61).

Рис. 5.62 Тренд в режимі RunTime.

Тепер налаштуємо роботу з архівним трендом.

Для відображення архівних данних на тренді необхідно налаштувати підключення до бази даних чи архівного файлу, звідки буде братись інформація.

Налаштуємо підключення до джерела архівних данних. Для цього подвійним кліком лівої кнопки миші на тренді викликаємо вікно налаштування тренду і переходимо на закладку «Historical Sources» (рисунок 5.63).

Рис. 5.63 Закладка налаштування джерела архівних данних

Є два види джерел архівних данних: Historican (БД, наприклад SQL) та InTouchLogHistory/LGH.

Додаємо новий сервер історичних данних (рисунок 5.64) і налаштовуємо відключення до данного сервера у відповідності до наявної бази архівних данних. В обох випадках архівні данні повинні розміщуватись в уже готових джерелах данних, які налаштовуються в WindowMaker.

Рис. 5.64 Підключення нового Historican сервера архівних данних

Рис. 5.65 Налаштування підключення до існуючого логфайлу InTouch

В WindowMaker створюємо змінну HistTag1 (рисунок 5.66).

Рис. 5.66 Створюємо новий історичний тег

Налаштовуємо логування данних в WindowMaker і налаштовуємо логування змінної, наприклад, AnnTag1 (рисунки 5.67, 5.68, 5.69).

Рис. 5.67 Налаштування логування

Рис. 5.68 Налаштування логування

Рис. 5.69 Налаштування логування тегу AnnTag1

Налаштовуємо відображення архівної інформації на тренді (рисунок 5.70).

Рис. 5.70 Додаємо нове тренд перо

Налаштуємо елементи керування і перами тренду (рисунок 5.71).

Рис. 5.71 Налаштовуємо елемент управління перами тренду

В режимі RunTime отримуємо такий елемент рисунок 5.72.

Рис. 5.72 RunTime режим

Обміт даними

Загальні відомості

Автоматизовану систему управління технологічними процесами можна розділити на два основних рівня (рис. 6.1.):

  • нижній рівень – рівень реалізації задач на базі промислових контролерів (PLC);

  • верхній рівень – рівень реалізації задач візуалізації процесів керування (SCADA).

InfoBus

ModBus/TCP/IP/Ethernet

PLC

РСТ SCADA

ІРСТ

СУБДРЧ

РСТ SCADA

ModBus/RS-485

FieldBus

PLC

Рис. 6.1. Структура дворівневої АСУ

У відповідності до задач, що стоять перед кожним рівнем системи управління використовуються спеціалізовані засоби, що реалізують ці функції.

Елементна база нижнього рівня представляє собою програмовані логічні контролери (PLC). Верхній рівень складається з операторських робочих станцій, з установленою на них HMI/SCADA-системою. Також на верхньому рівні знаходяться системи управління базами даних реального часу.

Апаратно комунікація нижнього рівня з верхнім здійснюється по польовим шинам. Програмно обмін інформацією здійснюється за допомогою OPC-серверів.

Для задач верхнього рівня може використовуватись SCADA система InTouch американської фірми Wonderware. Цей програмний продукт призначений для використання в основному не програмістами, а технологами, оскільки надає зручний людино-машинний інтерфейс, є легким у використанні і не потребує високої програмістської кваліфікації.

SCADA-система InTouch зв’язується з нижнім рівнем за допомогою програм пакету Wonderware Device Integration.

У випадку, якщо польове обладнання супроводжується власним комунікаційним сервером (OPC-сервером), то зв’язок SCADA-системи InTouch з нижнім рівнем здійснюється через спеціальний шлюз Wonderware Factory Suite Gateway (FS Gateway). Даний варіант комунікації представлений на рис. 6.2. а.

У випадку, якщо польове обладнання не супроводжується власним OPC-сервером, для комунікації зі SCADA-системою InTouch в програмному пакеті Wonderware DeviceIntegration передбачений цілий ряд комунікаційних серверів (Direct Access Server) для польових приладів провідних виробників обладнання автоматизації. Даний варіант комунікації представлений на рис. 6.2. б.

Пакет DeviceIntegration постачається безкоштовно разом зі SCADA-програмою InTouch.

SuiteLink, DDE

OPC

COM-порт

ModBus

FieldBus

PLC

а)

PLC

COM-порт

SuiteLink

OPC

DDE

свій протокол

FieldBus

ModBus

б)

Рис. 6.2. Отримання даних від нижнього рівня АСУ

а) польове обладнання оснащене власним OPC-сервером;

б) польове обладнання не оснащене власним комунікаційним сервером.

Сама SCADA-програма InTouch підтримує лише два протоколи: DDE та SuiteLink. І саме тому для зв’язку з клієнтами і джерелами інформації, що підтриміють інші протоколи, вона потребує проміжної ланки. В якості такої ланки як раз і виступає FS Gateway або відповідний DA Server.

FS Gateway представляє собою Windows-програму, що працює як шлюз – отримує дані по одним комунікаційним протоколам, а видає по іншим. FS Gateway може використовуватись для з’єднання клієнтів з джерелами даних, якщо вони використовують різні протоколи передачі даних. FS Gateway також може використовуватись як COM-сервер (OPC-сервер) використовуючи стандартні механізми активації COM. Також FS Gateway дає змогу Windows-програмам доступатися до даних від різних джерел.

FS Gateway може спілкуватися з джерелами даних або клієнтами по одному з наступних комунікаційних протоколів:

  • OPC;

  • SuiteLink (внутрішній протокол InTouch);

  • DDE (Dynamic Data Exchange);

  • FastDDE;

  • ArchestrA Message Exchange.

DA Server (Direct Access Server) являє собою комунікаційний сервер, спеціально розроблений компанією Wonderware для польових приладів, що не оснащені власним комунікаційним сервером.

Стандартні DA-сервери, що входять в пакет Device Integration, на вході приймають дані по протоколу польових пристроїв, а на виході дають можливість клієнтам отримати дані по одному зі стандартних протоколів (SuiteLink, OPC, DDE). При цьому також існує можливість створення власного DA-сервера, який би підтримував необхідні розробникам комунікаційні протоколи.

Приклад використання протоколу DDE

  1. Для запуску InTouch потрібно вибрати програму: Пуск – Усі програми – Wonderware – InTouch. На екрані з’явиться вікно менеджера програм InTouch – Application Manager;

  1. Далі необхідно створити нову програму InTouchCommunication:

  • File – New – Browse – вказати шлях для зберігання програми – Далі – ввести ім’я програми – Далі – ввести ім’я програми – Готово.

  • У вікні менеджера програм з’явиться створена програма.

  1. Запустити програму InTouchCommunication. Для цього необхідно:

  • виділити InTouchCommunication в списку програм;

  • запустити вибрану програму: File – WindowMaker.

  • з’явиться вікно програми WindowMaker.

  1. Створити нове вікно:

  • File – New Window;

  • в діалоговому вікні вказати ім’я вікна DDE та задати параметри вікна, що створюється.

  1. У вікні DDE створити наступні елементи, використовуючи засоби інструментальної панелі та бібліотеки Wizard.

Для цього використовуються наступні елементи:

  • для анімації рівнів значень тегів AnTag1 та AnTag2 використовуються стандартні елементи інструментальної панелі Rectangle (Прямокутник);

  • використовуючи команду Fill Color з панелі інструментів можна встановити колір фону для створених прямокутників;

  • для керування значеннями тегів AnTag1 та AnTag2 використовуються стандартні елементи-слайдери Vertical Slider з бібліотеки Wizard;

  • для числового відображення значення тегу AnTag1, значення якого буде встановлюватись в комірку R1C1 електронної таблиці Microsoft Excel по протоколу DDE, використовується стандартний текстовий елемент з інструментальної панелі;

  • для числового відображення значення тегу AnTag2, значення якого буде задаватись з програми Excel по протоколу DDE через консоль системного керування (SMC), використовується стандартний елемент Analog Tagname Display With Tagname Text з бібліотеки Wizard.

  1. Наступним кроком необхідно створити два канали доступу до даних з електронної таблиці Excel. Для цього потрібно:

  • вибрати пункт меню Special – AccessNames... ;

  • в діалоговому вікні вибрати команду Add (або Modify);

  • зконфігурувати Access Name (ім'я доступу) DDETest до даних електронної таблиці Microsoft Excel. Обмін зі SCADA-системою InTouch здійснюється напяму за протоколом DDE;

  • зконфігурувати ім'я доступу SLTest до даних електронної таблиці Microsoft Excel. Обмін зі SCADA-системою InTouch здійснюється через спеціальний шлюз FS Gateway за протоколом SuiteLink. Конфігурування FS Gateway здійснюється в SMC;

  1. Далі потрібно визначити наступні теги:

  • AnTag1 для виведення даних в задану комірку таблиці Microsoft Excel за протоколом DDE;

  • AnTag2 для введення даних з заданої комірки таблиці Microsoft Excel за протоколом SuiteLink.

  1. Наступним кроком потрібно прив’язати елементи вікна DDE до відповідних тегів:

  • елементи-слайдери приєднати відповідно до тегів AnTag1 та AnTag2;

  • прив’язати до об’єкту ТЕКСТ (що на полі зображується символом #) дію користувача по введенню аналогових значень;

  • вибрану дію прив’язати до тегу AnTag1;

  • елемент Analog Tagname Display With Tagname Text приєднати до тега AnTag2;

  • прив’язати до прямокутників дію вертикального заповнення кольором відповідно до введених аналогових значень;

  • вибрану дію прив’язати відповідно у синього прямокутника до тега AnTag1, а у зеленого – до тега AnTag2.

  1. Далі потрібно зконфігурувати електронну таблицю Microsoft Excel, з якою ми будемо обмінюватися даними, в наступній послідовності:

  • відкрити Microsoft Excel;

  • вибрати лист Лист1;

  • в комірку A1 (R1C1) ввести значення для тега AnTag1;

  • в комірку C3 (R3C3) ввести значення для тега AnTag2.

* Зверніть увагу, які елементи використовувались при створенні імені доступу DDETest.

  1. Далі необхідно зконфігурувати консоль системного керування (SMC).

Для конфігурування каналу зв’язку з електронною таблицею Microsoft Excel по протоколу DDE потрібно:

  • запустити System Management Console (Пуск – Усі програми – Wonderware – SMC);

  • до наявної конфігурації додати DDE об’єкт. Для цього потрібно:

  • розкрити дерево;

  • вибрати пункт Configuration;

  • зробити на ньому правий клік і вибрати команду Add DDE Object;

  • вибрати створений об’єкт;

  • в полі параметрів, розташованому праворуч, задати сервер, що постачатиме дані для цього об’єкта. В нашому випадку це Excel;

  • до створеного об’єкта додати об’єкт групи, вибравши по правому кліку пункт контекстного меню Add Topic Object;

  • за замовчанням створена група має наступні атрибути;

* Зверніть увагу, які елементи використовувались при створенні імені доступу SLTest.

  • вибрати закладку Device Items;

  • додати до групи тег, вибравши пункт Add контекстного меню (по правому кліку);

  • в полі Name задати псевдонім тега ItemExcel, а в полі Item Reference - адресу потрібної нам комірки в таблиці Microsoft Excel – Лист1.R3C3.

* Зверніть увагу, псевдонім тега в SMC використовувався при створенні тега AnTag2.

  1. Після закінчення конфігурування SMC необхідно зберегти внесені зміни. Для цього потрібно:

  • вибрати елемент, що розташований вище в ієрархії ArchestrA.FSGateway.1 (або на іконці збереження в правому верхньому кутку);

  • підтвердити запит збереження конфігурації натиснувши кнопку «Да».

  1. Щоб зміни в SMC вступили в дію необхідно:

  • спершу деактивувати сервер ArchestrA.FSGateway.1, натиснувши кнопку Deactivate server на панелі інструментів;

  • дати підтвердження на запит, натиснувши кнопку «Да»;

  • знову активувати сервер ArchestrA.FSGateway.1, натиснувши кнопку Activate server на панелі інструментів.

  1. Далі необхідно повернутися до програми WindowMaker і перейти в режим виконання – клікнути на команді Runtime.

Microsoft Excel і SMC мають бути запущеними і відповідним чином зконфігурованими.

  1. Змінюючи положення слайдерів та значення у відповідних комірках електронної таблиці спостерігати введення-виведення даних.

* Для повернення в середовище розробки WindowMaker треба клікнути на команді Development!.

Приклад використання протоколу OPC

В даному прикладі в якості джерела даних використовується OPC-сервер MatrikonOPC та відповідний йому клієнт Matrikon OPC Explorer. Ці програми не є частиною SCADA-програми InTouch. Вони являють собою незалежні програми (OPC-сервер та OPC-клієнт), що надають можливість симуляції даних та оснащені зручним людино-машинним інтерфейсом.

  1. В програмі WindowMaker створити нове вікно:

  • File – New Window;

  • в діалоговому вікні вказати ім’я вікна OPC та задати параметри створюваного вікна.

  1. У вікні OPC створити наступні елементи, використовуючи засоби інструментальної панелі та бібліотеки Wizard.

Для цього використовуються наступні елементи:

  • для відображення графіків зміни значень тегів AnTag3 та AnTag4 використовується стандартний елемент – Real-time Trend (тренд реального часу) з інструментальної панелі;

  • для числового відображення значень тегів AnTag3 та AnTag4, значення яких будуть задаватись OPC-сервером MatrikonOPC, використовуються стандартні елементи Analog Tagname Display With Tagname Text з бібліотеки Wizard.

  1. Наступним кроком необхідно створити канал доступу до даних OPC-сервера MatrikonOPC. Для цього потрібно:

  • вибрати пункт меню Special – AccessNames... ;

  • в діалоговому вікні вибрати команду Add;

  • зконфігурувати ім'я доступу OPCTest до даних OPC-сервера MatrikonOPC. Обмін зі SCADA-системою InTouch здійснюється через спеціальний шлюз FS Gateway.

  1. Далі потрібно визначити наступні теги:

  • AnTag3 для введення тега OPC-сервера MatrikonOPC. Тег AnTag3 прив’язується до тега, що генерує випадкові числа типу Integer;

  • AnTag4 для введення тега OPC-сервера MatrikonOPC. Тег AnTag4 прив’язується до тега, що генерує пилкоподібну послідовність чисел типу Integer.

  1. Наступним кроком потрібно прив’язати елементи вікна OPC до відповідних тегів:

  • тренд реального часу налаштувати на відображення тегів AnTag3 та AnTag4;

  • один елемент Analog Tagname Display With Tagname Text приєднати до тега AnTag3;

  • другий елемент Analog Tagname Display With Tagname Text приєднати до тега AnTag4.

  1. Далі потрібно зконфігурувати комунікаційний сервер Matrikon OPC Explorer.

Для цього необхідно:

  • запустити Matrikon OPC Explorer:

  • Пуск – Усі програми – Matrikon OPC Explorer;

  • сервер Matrikon OPC Explorer автоматично запускає OPC-сервер MatrikonOPC;

  • вибрати сервер Matrikon.OPC.Simulation.1;

  • додати до нього нову групу, вибравши по правому кліку команду Add Group;

  • вказати ім’я групи Test1 і натиснути OK;

  • в створену групу додати тег типу Integer, значення якого буде змінюватись псевдо-випадковим чином:

  • вибрати команду Add Items контекстного меню;

  • встановити параметри створюваного тега;

  • натиснути кнопку Add tag to list, після чого створюваний тег з’явиться в полі Tags To Be Added);

  • закрити вікно Matrikon OPC Tag Studio;

  • підтвердити запит щодо оновлення списку тегів з урахуванням щойно доданих (натиснути Yes).

  • до групи Test1 додати тег типу Unsigned Integer, значення якого буде змінюватись пилкоподібно (дії аналогічні до створення попереднього тега);

  • так виглядатиме вікно зконфігурованого Matrikon OPC Explorer.

  1. Далі необхідно зконфігурувати консоль системного керування (SMC).

Для конфігурування каналу зв’язку з OPC-сервером Matrikon OPC Explorer по протоколу OPC потрібно:

  • до вже наявної конфігурації SMC додати OPC об’єкт. Для цього потрібно:

  • розкрити дерево;

  • вибрати пункт Configuration;

  • зробити на ньому правий клік і вибрати команду Add OPC Object;

  • вибрати створений об’єкт;

  • в полі параметрів, розташованому праворуч, задати сервер, що постачатиме дані для цього об’єкта. В нашому випадку це Matrikon.OPC.Simulation.1;

  • до створеного об’єкта додати об’єкт групи, вибравши по правому кліку пункт контекстного меню Add OPCGroup Object;

  • за замовчанням створена група має наступні атрибути;

* Зверніть увагу, які елементи використовувались при створенні імені доступу OPCTest.

  • вибрати закладку Device Items;

  • додати до групи два тега, вибравши пункт Add контекстного меню (по правому кліку);

  • в полі Name задається псевдонім тега (з яким працюватимемо в InTouch), а в полі Item Reference - ім’я потрібного нам тега в сервері Matrikon OPC Explorer.

* Зверніть увагу, псевдоніми тегів в SMC використовувались при створенні тегів AnTag3 та AnTag4.

* Також важливим є те, що посилання на теги в SMC відповідають ідентифікаторам тегів в сервері Matrikon OPC Explorer .

  1. Після закінчення конфігурування SMC необхідно зберегти внесені зміни описаним у попередньому прикладі способом.

  1. Далі потрібно повернутися до програми WindowMaker і перейти в режим виконання – клікнути на команді Runtime. Сервер Matrikon OPC Explorer та SMC мають бути запущеними і відповідним чином зконфігурованими.

В подальшому спостерігати зміну значень тегів.

* Для повернення в середовище розробки WindowMaker треба клікнути на команді Development!.

Приклад організації обміну даними SCADA-програми InTouch з ПЛК UniOPLC V130 за протоколом ModBus

Приклад роботи з динамічною зміною адрес (DRA)

Динамічна зміна адрес DRA (Dynamic Reference Addressing) – це засіб оперативного керування іменами доступу для тегів вводу/виводу за допомогою полів тегів. Дозволяє звертатися до декількох джерел даних за допомогою єдиного тега. Встановлюючи допустимі значення полю .Reference тега вводу/виводу, можна динамічно змінювати адресу джерела даних для цього тега. DRA також дозволяє керувати властивостями імен доступу за допомогою функцій QuickFunction.

  1. В програмі WindowMaker створити нове вікно:

  • File – New Window;

  • в діалоговому вікні вказати ім’я вікна DRA та задати параметри вікна, що створюється.

  1. У вікні DRA створити наступні елементи, використовуючи засоби інструментальної панелі та бібліотеки Wizard.

Для цього використовуються наступні елементи:

  • для числового відображення значень тегів AnTag1, AnTag2, AnTag3, AnTag4 та AnTagDRA використовуються стандартні елементи Analog Tagname Display With Tagname Text з бібліотеки Wizard;

  • в якості кнопок використовуються стандартні кнопки з інструментальної панелі.

  1. Далі потрібно визначити тег AnTagDRA для демонстрації роботи з динамічною зміною адрес (DRA).

  1. Наступним кроком потрібно прив’язати елементи вікна DRA до відповідних тегів:

  • елементи Analog Tagname Display With Tagname Text приєднати до тегів AnTag1, AnTag2, AnTag3, AnTag4 та AnTagDRA;

  • прив’язати до кнопок виконання скрипта;

  • написати скрипт для кнопки з надписом AnTag1. По натисненню на цю кнопку тег AnTagDRA буде прив’язуватись до джерела даних тега AnTag1;

  • написати скрипт для кнопки з надписом AnTag2. По натисненню на цю кнопку тег AnTagDRA буде прив’язуватись до джерела даних тега AnTag2;

  • написати скрипт для кнопки з надписом AnTag3. По натисненню на цю кнопку тег AnTagDRA буде прив’язуватись до джерела даних тега AnTag3;

  • написати скрипт для кнопки з надписом AnTag4. По натисненню на цю кнопку тег AnTagDRA буде прив’язуватись до джерела даних тега AnTag4.

  1. Далі необхідно перейти в режим виконання – клікнути на команді Runtime. Microsoft Excel, сервер Matrikon OPC Explorer та SMC мають бути запущеними та зконфігурованими як в попередніх прикладах.

  1. При натисканні на відповідні кнопки тег AnTagDRA буде прив’язуватись до відповідного канала (прописаного в скрипті). В полі AnTagDRA = … буде відображатись значення вибраного тега.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]