OpenSCADA

Модулі/Vision

This page is a translated version of the page Modules/Vision and the translation is 100% complete.

English • ‎mRussian • ‎Українська
Модуль Ім'я Версія Ліцензія Джерело Мови Платформи Тип Автор
Vision Робочий інтерфейс користувача (Qt) 9.1 GPL2 ui_Vision.so en,uk,ru,de x86,x86_64,ARM Користувацькі інтерфейси Роман Савоченко
  Максим Лисенко (2007-2012), Ксенія Яшина (2007-2008)
Опис
Робочий інтерфейс користувача, заснований на бібліотеці Qt — зовнішній інтерфейс до рушія СВУ.
  • Загальна працемісткість: > 50 ЛД[!]
  • Спонсорування, завершення відображення примітиву ElFigure на 0.3 ЛД[!]: ТОВ "СВІТоВИР"

Модуль надає до OpenSCADA механізм кінцевої візуалізації середовища візуалізації та управління (СВУ). Модуль засновано на багатоплатформеній бібліотеці Qt графічного користувацького інтерфейсу (GUI), початково створеного фірмою TrollTech. У своїй роботі модуль використовує дані рушія СВУ — модуль VCAEngine.

Середовище візуалізації та управління (СВУ) є невід'ємною складовою SCADA системи. Воно застосовується на клієнтських станціях з метою доступного представлення інформації про об'єкт управління та видачі керуючого впливу на об'єкт. У різних практичних ситуаціях та умовах можуть застосовуватися СВУ, побудовані на різних принципах візуалізації. Наприклад, це можуть бути бібліотеки віджетів Qt, GTK+, wxWidgets або гіпертекстові механізми на основі технологій HTML, XHTML, XML, CSS та JavaScript або сторонні додатки візуалізації, реалізовані на різних мовах програмування Java, Python та інше. Будь-який з цих принципів має свої переваги та недоліки, комбінація яких може стати непереборною перепоною у можливості використання СВУ у тому або іншому практичному випадку. Наприклад, технології на кшталт бібліотеки Qt дозволяють створювати високопродуктивні СВУ, що безсумнівно важливо для станцій оператору управління технологічним процесом (ТП). Однак необхідність інсталяції даного клієнтського ПЗ може унеможливити його використання у окремих випадках. З іншого боку, Web-технології не потребують інсталяції на клієнтські системи та є гранично багатоплатформними (достатньо вказати посилання на Web-сервер у будь-якому Web-браузері), що найбільш важливо для різних інженерних та адміністративних станцій. З іншого боку, продуктивність та надійність таких інтерфейсів нижче, що практично виключає їх використання на станціях оператору ТП.

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

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

З метою запобігання цим проблемам, а також створення у найкоротші терміни повного спектру різних типів СВУ, засновано проєкт створення концепції СВУ. Результатом цього проєкту і став даний модуль безпосередньої візуалізації (на основі бібліотеки Qt), модуль безпосередньої візуалізації WebVision та рушій СВУ VCAEngine.

Contents

1 Призначення

Даний модуль безпосередньої візуалізації СВУ призначено для формування та виконання інтерфейсів СВУ у середовищі графічної бібліотеки Qt. Модуль СВУ, переважно, забезпечує:

Перелічимо можливості, які зможе та забезпечує СВУ, побудована на основі даного проєкту:

  1. формування з шаблонних кадрів, шляхом призначення динаміки та без графічної конфігурації;
  2. графічне формування нових кадрів, шляхом використання готових елементів візуалізації з бібліотеки — мнемосхеми;
  3. формування, у бібліотеці, нових: кадрів, шаблонних кадрів та елементів відображення.


2 Інструмент графічного формування інтерфейсу СВУ

Розробка інтерфейсу СВУ виконується у одному вікні, що реалізує багатодокументний інтерфейс (MDI) (рис.2.a). Даний підхід дозволяє одночасно відкривати декілька кадрів різних розмірів. Використано наступні механізми управління розробкою: панелі інструментів, пункти меню та контекстне меню. Більшість дій дублюються різними механізмами, що дозволяє швидко знайти інструмент зручним способом. Навігаційні інтерфейси реалізовано приєднуваними вікнами. Конфігурація панелей інструментів та приєднуваних вікон зберігається при виході та відновлюється при старті, що дозволяє налаштовувати інтерфейс під себе.

Рис.2.a. Вікно розробки інтерфейсів СВУ.

Доступ до основних компонентів СВУ здійснюється за посередництвом приєднуваних вікон, на рисунку 2.a ці вікна зображено ліворуч. У цих вікнах міститься:

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

Нагорі робочого вікна міститься меню. У меню розташовано всі інструменти, потрібні для розробки інтерфейсів СВУ. Меню має наступну структуру:

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

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

Для редагування властивостей візуальних елементів передбачено два діалоги. Перший діалог дозволяє редагувати властивості контейнерів візуальних елементів (рис.2.b) — бібліотек віджетів та проєктів. Другий діалог для редагування властивостей самих візуальних елементів (рис.2.d). Зміни, внесені у діалогах, одразу-ж потрапляють до рушія СВУ. Для збереження цих змін у БД, або відновлення з БД, потрібно скористатися відповідними інструментами головного вікна розробки.

Рис.2.b. Діалог редагування властивостей контейнерів візуальних елементів.

За допомогою головної вкладки цього діалогу можна отримати:

At.png Об'єкти все ще підтримують визначення надлишкової адреси сховку із таблицею до того часу як ви перейменуєте її у стандартну форму "wlb_{ObjID}" для бібліотек віджетів та "prj_{ObjID}" для проєктів.
  • користувач, група користувачів та доступ для: користувача, групи користувачів та всіх інших;
  • період обчислення проєкту при виконанні.
Рис.2.с. Вкладка "Діагностика" проєкту.

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

Рис.2.d. Діалог редагування властивостей візуальних елементів.

За допомогою головної вкладки цього діалогу можна отримати:

Діалог редагування властивостей контейнерів візуальних елементів містить дві вкладки: вкладку конфігурації основних параметрів (рис.2.b) та вкладку конфігурації ресурсів контейнерів (рис.2.e).

Рис.2.e. Вкладка редагування ресурсів контейнеру візуальних елементів.

Діалог редагування властивостей візуальних елементів містить чотири вкладки: вкладку конфігурації основних параметрів (рис.2.b), вкладку атрибутів елементу (рис.2.f), вкладку обробки елементу (рис.2.g) та вкладку зв'язків елементу (рис.2.h). На різних рівнях ієрархії візуальних елементів якісь вкладки можуть бути доступні, а якісь ні. At.png Рядки ім'я атрибуту у вкладці "Обробка" після першого опрацьовуються як допомога.

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

Рис.2.f. Вкладка атрибутів діалогу редагування властивостей візуального елементу.
Рис.2.g. Вкладка обробки діалогу редагування властивостей візуального елементу.
Рис.2.h. Вкладка зв'язків діалогу редагування властивостей візуального елементу.

2.1 Стилі

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

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

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

Для реалізації цієї можливості, при створені кадрів, необхідно для властивостей кольору, шрифту та інших встановити параметр "Конфігурація" (таблиці у вкладці "Обробка") у значення "З стилю". А у параметрі "Конфігураційний шаблон" вказати ідентифікатор поля стиля. Далі, це поле автоматично з'явиться у менеджері стилів та його можна буде там змінювати. Менеджер стилів доступний на сторінці конфігурації проєкту у вкладці "Стилі". На цій вкладці можна стилі створювати, видаляти та змінювати, видаляти їх поля.

Vision prj stl uk.png

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

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


2.2 Зв'язування з динамікою

Для надання до інтерфейсу візуалізації актуальних даних, повинні використовуватися дані підсистеми "Збір даних (DAQ)". Природа цих даних наступна:

  1. параметри, що містять деяку кількість атрибутів;
  2. атрибути параметру можуть надавати дані п'яти типів: Логічний, Цілий, Реальний, Рядок та Об'єкт;
  3. атрибути параметру можуть мати архів (історію);
  4. атрибути параметру можуть бути на читання, запис та з повним доступом.

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

Зв'язки забезпечують прозоре перетворення типів та не потребують спеціальної конфігурації.

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

У термінах СВУ, динамічні зв'язки та конфігурація динаміки є одним процесом, для опису конфігурації якого передбачено вкладку "Обробка" віджетів (рис.2.f). Вкладка містить таблицю конфігурації властивостей атрибутів та текст процедури обчислення віджету.

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

Стовпчик "Конфігурація" дозволяє вказати тип зв'язку атрибуту віджета:

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

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

Обробка зв'язків відбувається з періодичністю обчислення віджету, у порядку:

На рисунку 2.g представлено вкладку зв'язків з можливістю групового та індивідуального призначення атрибутів.

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

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

Розглянемо приклад, коли є кадр загального призначення "Панель контролю графіком" та багато "Графіків" на різних кадрах. "Панель контролю графіком" має зв'язки з шаблонами:

При цьому, кожний віджет "Графік" має атрибути "tSek", "tSize", "trcPer" та "valArch". За викликом сигналу відкриття "Панелі контролю графіком" з будь-якого віджету "Графік", відбувається зв'язування атрибутів "Панелі контролю графіком" з атрибутами віджету "Графік", згідно шаблону. як результат, всі зміни на "Панелі контролю графіком" будуть відображатися на графіку, за посередництвом цих зв'язків.

Якщо у віджета "Графік" наявні зовнішні зв'язки на параметри підсистеми "Збір даних", зв'язки "Панелі контролю графіком" будуть встановлюватися на зовнішнє джерело. Крім того, якщо у "Панелі контролю графіком" будуть заявлені зв'язки на атрибути, відсутні безпосередньо у віджета "Графік", то буде здійснюватися пошук наявності таких атрибутів у зовнішнього джерела — першого на який встановлено прямий зв'язок, виконуючи, тим самим, доповнення відсутніх зв'язків.

Для наочного зображення цього механізмі наведено таблицю.

Таблиця. Механізм динамічної лінковки.

Атрибути "Панелі контролю графіком" (шаблон динамичного зв'язку) Атрибути "Графіка" Атрибути зовнішнього "Параметру" Результуючий зв'язок або значення атрибута, що зв'язується
tSek (<page>|tSek) tSek - "Графік".tSek
tSize (<page>|tSize) tSize - "Графік".tSize
trcPer (<page>|trcPer) trcPer - "Графік".trcPer
valArch (<page>|valArch) valArch - "Графік".valArch
var (<page>|var) var var "Параметр".var
ed (<page>|ed) - ed "Параметр".ed
max (<page>|max) - - EVAL
min (<page>|min) - - EVAL


2.3 Візуальне редагування

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

Для будь яких кадрів у візуальному редакторі наявна лише візуальна зміна геометрії, що ви можете здійснити розміщенням курсору миші на правому та/або нижньому краях кадру та далі пересунути цей край або мишею, утримуючи ліву кнопку, або клавіатурою, натискаючи клавіші стрілок — клацання клавіш стрілок викликає відповідну зміну розміру на 5ть пікселів за масштабу 1x та утримуючи клавішу Shift ви отримаєте 1 піксель. Ви також можете змінити масштаб кадру цим самим способом, але утримуючи клавішу Ctrl або перемкнувши режим розміру праворуч на панелі статусу.

Візуальне редагування примітиву Box передбачає ДОДАННЯ, ВИДАЛЕННЯ, ПЕРЕСУВАННЯ, ЗМІНУ ГЕОМЕТРІЇ, ЗМІНУ МАСШТАБУ та РЕДАГУВАННЯ ВЛАСТИВОСТЕЙ щодо дочірніх віджетів.

Лише для ДОДАННЯ віджетів вам не потрібне обрання інших віджетів на сторінці, просто оберіть потрібний віджет із бібліотеки на панелі інструментів, або перетягніть із дерева бібліотек віджетів, та розташуйте його у позиції миші натиснувши ліву клавішу миші. Для скасування операції додання із бібліотеки на панелі інструментів натисніть праву клавішу миші.

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

At.png Обрання зберігається при втраті клавіатурного фокусу, коли для повернення на обранні натискається ліва клавіша миші.

Для ВИДАЛЕННЯ обраного віджету або їх групи ви можете натиснути кнопку "Видалити візуальний елемент" на панелі інструментів або контекстного меню, або скорочення клавіш Ctrl+D.

Як комбінація ДОДАННЯ та ВИДАЛЕННЯ ви можете скопіювати/вирізати обраний віджет або їх групу відповідною кнопкою панелі інструментів або контекстного меню або комбінацією клавіш Ctrl+C/X та потім зняти весь вибір і вставити відповідною кнопкою панелі інструментів або контекстного меню або комбінацією клавіш Ctrl+V.

Для ПЕРЕСУВАННЯ можете обраний віджет або їх групу схопити, натиснувши ліву клавішу миші на обраній області, пересунути мишу у потрібну позицію та кинути, відпустивши клавішу миші; або можете використати для цього клавіші стрілок — клацання клавіш стрілок викликає відповідну зміну координат положення на 5ть пікселів за масштабу 1x та утримуючи клавішу Shift ви отримаєте 1 піксель.

Для ЗМІНИ ГЕОМЕТРІЇ обраного віджету або їх групи можете вказати курсор миші на зелену крапку репрезентації обрання та далі пересунути цю крапку або мишею, утримуючи ліву кнопку, або клавіатурою, натискаючи клавіші стрілок — клацання клавіш стрілок викликає відповідну зміну розміру на 5ть пікселів за масштабу 1x та утримуючи клавішу Shift ви отримаєте 1 піксель. Ви також можете здійснити ЗМІНУ МАСШТАБУ обрання цим самим способом, але утримуючи клавішу Ctrl або перемкнувши режим розміру праворуч на панелі статусу. Координати окремих віджетів у обранні змінюються співвідносно до пропорції розташування у обранні!

РЕДАГУВАННЯ ВЛАСТИВОСТЕЙ обраного віджету або їх групи переважно не є графічною операцією та здійснюється на панелі управління атрибутами віджетів, але обрання дочірніх віджетів є дуже зручним оскільки дозволяє обирати групу віджетів для подальшого загального редагування властивостей.

3 Виконання інтерфейсів СВУ

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

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

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

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

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

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

Головне вікно складається з меню (нагорі) рядку статусу (нанизу) та виконуваного вмісту сеансу між ними. Меню, у режимі виконання, позиціюється як інструмент адміністратору OpenSCADA, який містить загальносистемні функції, та доступне тільки привілейованим користувачам, що стоять у групі "root". Меню має наступну структуру:

На рядку статусу розташовуються:

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

Рис.3. Головне вікно режиму виконання.

4 Представлення базових елементів (примітивів)

Даною версією модуля реалізовано не всі образи примітивів, закладені проєктом. Загалом, проєктом закладено примітиви:

Ідентифікатор Найменування Функція
ElFigure Елементарна графічна фігура

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

  • Лінія.
  • Дуга.
  • Крива Без'є.
  • Заливка замкненого простору.

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

FormEl Елемент форми

Включає підтримку стандартних компонентів форми:

  • Редагування рядку.
  • Редагування тексту.
  • Прапорець.
  • Кнопка.
  • Вибір з переліку.
  • Перелік.
  • Дерево.
  • Таблиця.
  • Слайдер.
  • Стрічка прокрутки.
Text Текст Елемент тексту-мітка. Характеризується типом шрифту, кольором, орієнтацією та вирівнюванням. Передбачається підтримка аргументів.
Media Медіа Елемент відображення растрових та векторних зображень різних форматів, програвання анімованих зображень, програвання аудіо-фрагментів та перегляд відео-фрагментів.
Diagram Діаграма Елемент діаграми з підтримкою можливості відображення декількох потоків у реальному часі для: трендів (часових графіків), частотного спектру, XY діаграм.
Protocol Протокол Елемент протоколу — візуалізатор повідомлень програми, з підтримкою декількох режимів роботи.
Document Документ Елемент формування звітів, журналів та іншої документації на основі доступних даних.
Box Контейнер Містить механізм розташування-включення інших віджетів для формування нових, більш складних, віджетів та сторінок кінцевої візуалізації.
Function, у планах Функція API об'єктної моделі OpenSCADA Невізуальний віджет, на боці виконання, що дозволяє включати обчислювальні функції об'єктної моделі OpenSCADA до СВУ.

At.png Для всіх реалізованих примітивів, крім "FormEl", цей модуль підтримує умовну генерацію повідомлень від маніпулятору миші за прозорості вказаного пікселя, більш нуля — не повна прозорість.

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

Ідентифікатор (область) Ім'я Призначення
notify{N}, notifyVisVision{N} (сторінка) Сповіщувач: тип {N} Визначає сповіщувач і процедуру отримання ресурсу сповіщення та безпосередньо сповіщення, згідно до концепції "Сигналізації (Аларми)". Сповіщення здійснюється за такою пріоритетністю — notifyVisVision{N} > {Qt|Phonon} > notify{N}. Тобто, notifyVisVision{N} є найбільш пріоритетним, підміняє сповіщення {Qt|Phonon} і тут ви можете реалізувати дуже неординарне сповіщення.
statLine (головна сторінка) Елементи рядку статусу

Текстове поле з описом елементів рядка статусу користувача, у форматі рядка "{Id}:{Label}:{ToolTip}:{Color}:{Img}", де:

  • "Id" — ідентифікатор, використовується також для формування повідомлень від віджету "stIt_{Id}".
  • "Label" — візуальна мітка елементу статусу.
  • "ToolTip" — спливаюча підказка стосовно елементу.
  • "Color" — колір мітки.
  • "Img" — зображення елементу статусу, замість мітки.
runWin (головна сторінка) Вікно виконання

Встановлення режиму виконання головного вікна:

  • "Оригінальний розмір (0)".
  • "Максимізувати (1)".
  • "На весь екран (2)".
keepAspectRatio (головна сторінка) Зберігати пропорцію при масштабуванні Зберігати пропорцію сторінок при масштабуванні.
stBarNoShow (головна сторінка) Не показувати рядок статусу Приховати рядок статусу головного вікна.
winPosCntrSave (головна сторінка) Управління та збереження положення вікон Ввімкнення управління та збереження положення вікон виконання.
userSetVis (головна сторінка, створюється вручну, строковий тип) Встановлення користувача

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

  • "*" — виклик діалогу обрання користувача;
  • "$" — зміна користувача на типового;
  • "{користувач}[:{пароль}]" — пряма зміна на користувач із паролем; для порожнього пароля користувач змінюється лише якщо його права менше або дорівнюють та це локальна візуалізація; корисний приклад зміни на користувача "user" після хвилини неактивності:
if((SYS.time()-this.ownerSess().userActTm()) < 60)userSetVis = "";
else if(this.ownerSess().reqUser() != "user") userSetVis = "user:user";
vs_background (види "Line edit", "Text edit", "Combo box", "List", "Tree", "Table" примітиву "FormEl") Користувацький фон Визначає користувацький фон у формі {color}-{transp} {image}
vs_border (види "Line edit", "Text edit", "Combo box", "List", "Tree", "Table" примітиву "FormEl") Користувацька границя Визначає користувацьку границю у стандартній формі CSS {wdth}px {style} {color}
vs_winTitle (вид "Box") Заголовок вікна Значення динамічного заголовку вікна

Розглянемо реалізацію кожного примітиву більш детально.

4.1 Примітив елементарної фігури (ElFigure)

Реалізовано підтримку елементарних фігур: лінія, еліптична дуга, крива Без'є та заливка замкнених контурів кольором та зображенням. Для елементарних фігур реалізовано наступні операції:

На рисунку представлена частина екрану з кадром, що містить елементарні фігури.

Vision elfig new.png

Щодо внутрішнього графічного редактору на модулі Vision ви можете в деталях почитати у відповідній секції "Векторний графічний редактор", а тут опишемо лише корисні поради.

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

Додати фігуру можна з допомогою маніпулятору миші:

  1. Обрати бажану фігуру з контекстного меню.
  2. Задати, за допомогою лівої кнопки миші, початкову та кінцеву точки (для лінії, при утримані клавіші SHIFT відбувається ортогональне її відображення).

Видалити фігуру(и) можна шляхом натискання кнопки "Del", маючи виділену(і) фігуру(и).

Скопіювати фігуру(и) можна шляхом натиску комбінації клавіш "Ctrl"+"C", маючи виділену(і) фігуру(и).

Пересунути/змінити габарити фігури можна за допомогою маніпулятору миші або клавіатури:

  1. Виділити фігуру, клацнув по ні лівою кнопкою миші.
  2. Перетягти (за допомогою миші або керуючих клавіш) фігуру або одну з її контрольних точок у бажане місце та відпустити кнопку миші(клавішу).

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

Зв'язати фігури одна з одною можна наступним чином:

  1. Натиснути кнопку "Прив'язки".
  2. Виділити одну з фігур та перемістити її початкову або кінцеву точку до бажаної початкової або кінцевої точки другої фігури так, щоб вона попадала у коло, що виникло. Зв'язані фігури переміщаються так само як і окремі — загальна точка переміщається для всіх фігур, яких вона стосується, де пріоритет віддається дузі та дві дуги не може бути з'єднано безпосередньо одна з одною.

Залити замкнений контур з фігур можна наступним чином:

  1. Натиснути кнопку "Прив'язки".
  2. Створити замкнений контур.
  3. Два рази клацнути мишею всередині нього.

Видалити заливку замкненого контуру можна:

Обертання фігури здійснюється довкола центру віджета, а віддзеркалення довкола вертикальної центральної вісі-лінії.


4.2 Примітив тексту (Text)

Реалізовано підтримку елементу тексту зі властивостями:

На рисунку представлено частину екрана з кадром, що містить приклади тексту з використанням різних параметрів.

Vision run txt uk.png


4.3 Примітив елементу форми (FormEl)

Реалізовано підтримку елементів форми на кадрах СВУ із закладеними властивостями, включаючи наступні типи:

Реалізовано режими "Ввімкнено" та "Активний", а також передача змін та повідомлень у модель даних СВУ — рушій. Режим "Активний" призводить до встановлення курсору активності для непорожнього фону та додаткових умов різних видів "Text", "Media" та "Box":

На рисунку представлено частину екрану з кадром, що містить вищеперелічені елементи форми.

Vision run formel uk.png


4.4 Примітив відображення медіа-матеріалів (Media)

Реалізовано підтримку елементу відображення медіа-матеріалів з властивостями:

На рисунку представлено частину екрану з кадром, що містить приклади перегляду/програвання медіа-даних.

Vision run media.png


4.5 Примітив побудови діаграм (Diagram)

Реалізовано підтримку елементу побудови діаграм для типів "Графік", "Спектр" та "XY", з властивостями:

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

Ідентифікатор Ім'я Призначення
sclWin Масштабування ділянки обрамленої вікном, мишею Логічний тип атрибуту, створюваний користувачем вручну, за потреби. Для значення "істина" вмикається режим масштабування ділянки тренду обрамленої вікном за допомогою миші.

На рисунку представлено частину екрану з кадром, що містить приклади діаграм: "Графік", "Спектр" та "XY".

Vision run diag.png


4.6 Примітив формування протоколу (Protocol)

Реалізовано підтримку елементу формування протоколу з властивостями:

На рисунку представлено частину екрану з кадром, що містить приклад протоколу.

Vision prot uk.png


4.7 Примітив формування звітної документації (Document)

Реалізовано підтримку елементу формування звітної документації з властивостями:

У основі будь-якого документу лежить XHTML-шаблон. XHTML-шаблон це тег "body" WEB-сторінки, що містить статику документу у стандарті XHTML 1.0 та елементи виконувальних інструкцій на мові користувацького програмування OpenSCADA, у вигляді <?dp {procedure} ?>. Результуючий документ формується шляхом виконання процедур та вставки їх результату у документ.

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

На рисунку представлено кадр, що містить приклад документу.

Vision doc uk.png


4.8 Примітив контейнеру (Box)

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


Приклад редагування кадру, заснованого на даному примітиві, наведено на рисунку 2.a, а на рисунку 3 зображено сторінку, що містить контейнер сторінок, побудований на основі даного примітиву.

5 Векторний графічний редактор

5.1 Призначення

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

5.2 Принципи та функції розробленого графічного редактору

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

Рис.5.2.a. Контрольні точки лінії, дуги та кривої Без'є.

Приклади примітивів, різного кольору, товщини, стилів, з бордюрами та без них, наведено на рисунку 5.2.b.

Рис.5.2.b. Приклади примітивів, зліва направо: лінія, дуга та крива Без'є.

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

Рис.5.2.c. Заливки замкненого контуру кольором та зображенням.

Графічний редактор дозволяє масштабувати та повертати фігури (рис.5.2.d) — примітиви та складні графічні об'єкти.

До можливостей редактору також відносяться: виділення, переміщення, копіювання та видалення фігур.

Рис.5.2.d. Масштабування та обертання фігур.

5.3 Основні принципи роботи у графічному редакторі

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

Припустимо, що нам необхідно додати графічний елемент до однієї з чинних бібліотек. Для цього виділимо ім'я бібліотеки та натиснемо кнопку (Vision ElFigCreate.png) на панелі інструментів. У вікні, що з'явилося, введемо ідентифікатор та ім'я нового графічного елементу. Після чого перейдемо до цього елементу та натиснемо кнопку (Vision ElFigEdit.png). Праворуч з'явиться поле для рисування. За допомогою подвійного кліку мишею по цьому полю, або за допомогою контекстного меню, ввійдемо у режим редагування — режим графічного редактору, що дозволяє здійснювати всі передбачені маніпуляції з фігурами. В той момент, коли створений нами графічний елемент знаходиться у фокусі, вкладка "Атрибути" набуде вигляду, що представлений на рисунку 5.3.a.

Рис.5.3.a. Атрибути елементарної фігури.

За допомогою миші, або поля "Геометрія" вкладки "Атрибути", задамо розміри поля для рисування та масштабні коефіцієнти.

Скориставшись полем "Лінія" вкладки "Атрибути", задамо ширину, колір, стиль ліній, якими будемо рисувати. За допомогою поля "Границя", задамо ширину та колір бордюру. Поле "Заповнення" дозволяє задати колір та зображення заливки. "Перелік елементів" містить перелік примітивів, що використовуються при створені графічного об'єкту. Елементи всіх полів вкладки "Атрибути" можуть динамічно змінюватися у процедурах користувача.

Графічні примітиви може бути зображено за допомогою миші або зображено за допомогою переліку графічних примітивів ("Перелік елементів"). У першому випадку, координати контрольних точок створюваного примітиву обчислюються автоматично, а ширина, колір, стиль лінії, ширина та колір бордюру встановлюються по замовченню, з вкладки "Атрибути". У другому випадку, примітив необхідно описати у "Перелік елементів" наступним чином:

line:(x1|y1):(x2|y2):width:color:border_width:border_color:style (1)
arc:(x1|y1):(x2|y2):(x3|y3):(x4|y4):(x5|y5):width:color:border_width:border_color:style (2)
bezier:(x1|y1):(x2|y2):(x3|y3):(x4|y4):width:color:border_width:border_color:style, (3)

Де:

(x1|y1) — координати першої контрольної точки примітиву;
(x2|y2) — координати другої контрольної точки примітиву;
(x3|y3) — координати третьої контрольної точки примітиву;
(x4|y4) — координати четвертої контрольної точки примітиву;
(x5|y5) — координати п'ятої контрольної точки примітиву;
width — ширина лінії, якою буде намальовано примітив;
color — колір лінії, якою буде намальовано примітив;
border_width — ширина бордюру;
border_color — колір бордюру;
style — стиль лінії ("0" — суцільна, "1" — пунктир, "2" — точкова).

При цьому, пріоритетними є значення ширини, кольору, стилю лінії, ширини та кольору бордюру, задані у переліку елементів. Якщо необхідно використати які-небудь характеристики, встановлювані полями "Лінія" або "Границя" вкладки "Атрибути", то, при описі примітиву, їх потрібно опустити. Наприклад, ми хочемо створити лінію з: шириною 3, червоного кольору, суцільну та без бордюру. При цьому, у полі "Лінія" задано: ширина лінії 3, чорний колір та суцільний стиль; у полі "Границя" задано: ширина бордюру 5, зелений колір. Тоді опис примітиву у переліку елементів має виглядати наступним чином:

line:(x1|y1):(x2|y2)::red:0:: (4)

Форми запису (1) - (4) задають статичні характеристики примітивів, які не може бути змінено програмно. Для задання динамічних характеристик необхідно використати форму запису:

line:1:2:w1:c1:w2:c2:s1 (5)

Тоді, у вікні "Атрибути", додадуться поля: Точка 1 (1), Точка 2 (2), Ширина 1 (w1), Ширина 2 (w2), Колір 1 (c1), Колір 2 (c2), Стиль 1 (s1) (рис.5.3.b). Значення цих полів можна міняти програмно, за допомогою мови користувацького програмування OpenSCADA. Очевидно, що при бажані, динамічними може бути оголошено не всі властивості примітиву, а одна або декілька, крім того, одна динамічна властивість може бути використана багаторазово.

Редагування координат контрольних точок здійснюється за допомогою миші або шляхом їх зміни у переліку елементів, для статичних точок; або прямо у вкладці "Атрибути", маючи у наявності динамічні точки ("Точка 1", ...). Редагування інших характеристик здійснюється за допомогою зміни вмісту полів "Лінія", "Границя", "Заповнення" на вкладці "Атрибути" або у переліку элементів.

Рис.5.3.b. Динамічні атрибути елементарної фігури.

Передбачено можливості:

Для зв'язування примітивів один з одним необхідно:

  1. Натиснути кнопку "Прив'язки".
  2. Виділити одну з фігур та перемістити її початкову або кінцеву точку до бажаної початкової або кінцевої точки другої фігури так, щоб вона попадала у коло, що виникло.

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

fill:(x1:y1):(x2:y2):...:(xn:yn):color:image — статика;
fill:1:2:3:...:c1:i1 — динаміка.

Де:

(x1:y1):(x2:y2):...:(xn:yn) — координати початкових та кінцевих точок примітивів, що утворюють замкнений контур;
color — колір заливки;
image — зображення заливки.

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

Для масштабування фігур необхідно, у полі "Геометрія", задати значення масштабу за осями "X" та "Y". Крім того, існує можливість візуально збільшити/зменшити зображення не міняючи масштаб. Для цього, необхідно вийти з режиму редагування, клацнути правою кнопкою миші по полю віджета, у контекстному меню, що з'явилося, обрати пункт "Збільшити (+10%)"/"Зменшити (-10%)" або покрутити колесо миші, утримуючи при цьому натиснутою клавішу "Ctrl". Вихід з режиму редагування здійснюється за допомогою натиску клавіші "Esc" або за допомогою контекстного меню віджету.

Існує можливість повертати вміст віджету, для чого треба, у вікні "Атрибути", задати "Кут повороту" від -360 до 360.

Графічний редактор підтримує прозорість кольору, що задається наступним чином: {color}-{t}, де color — колір, а t — прозорість від 0 (повністю прозорий) до 255 (непрозорий).

5.4 Контекстне меню графічного редактору

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

Рис.5.4. Контекстне меню для ліній (лінія, дуга, крива Без'є) та для заливки, зліва направо.

Контекстне меню включає наступні секції (зверху донизу):

5.5 Діалог властивостей елементарної фігури

Діалог, варіанти якого представлено на рисунках 5.5.a, 5.5.b, 5.5.c, реалізований для інтерактивного та зручного управління властивостями фігур(и).

Рис.5.5.a. Діалог властивостей елементарної фігури для однієї лінії (лінія, дуга або крива Без'є).
Рис.5.5.b. Діалог властивостей елементарної фігури для групи обраних ліній.
Рис.5.5.c. Діалог властивостей елементарної фігури для заливки.

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

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

Якщо-ж діалог викликано для групи обраних фігур (рис.5.5.b), то властивості (атрибути), вказані у діалозі, будуть застосовані до всіх фігур, перелічених у заголовку діалогу. При виклику діалогу, у полях властивостей будуть відображатися дані тієї фігури з групи обраних, відносно якої було викликано контекстне меню. Існує можливість включати/виключати окремі властивості діалогу. Для цього передбачено кнопку (Vision disableButton.png). У випадку виключення окремих властивостей вони не будуть оброблятися при підтвердженні діалогу (кнопка "Прийняти"). При підтверджені діалогу, всі вказані дані для ввімкнених властивостей будуть застосовані для всієї групи фігур.

Діалог властивостей заливки (рис.5.5.c) дозволяє керувати властивостями окремої заливки.

При виборі ознаки праворуч від властивості вона (властивість), після підтвердження діалогу, встановлюється у значення по замовченню, яке вказано у вкладці "Атрибути". Кнопки "Дін/Стат" роблять відповідні властивості динамічними або статичними.

6 Загальна конфігурація модуля

Для налаштування власної поведінки у неочевидних ситуаціях, модулем надається можливість налаштування окремих параметрів за посередництвом інтерфейсу управління OpenSCADA (рис.6). Такими параметрами є:

At.png Функція вибору дисплею можлива для невіртуального та не повторення робочого столу, тобто при використанні xinerma або NVidia у відповідному режимі. Технічно, функція Qt screen() має повертати різні віджети-об'єкти дисплею за їх номерами.
Рис.6. Сторінка конфігурації модуля.
Modules/Vision/uk - GFDLMarch 2024OpenSCADA 0.9.7