Роман Савоченко, Максим Лисенко (2007-2012), Ксенія Яшина (2007-2008)
Опис:
Web візуальний робочий користувацький інтерфейс для виконання проектів середовища візуалізації та управління (СВУ).
Ліцензія:
GPL
Вступ
Модуль WebVision надає механізм кінцевої візуалізації середовища візуалізації та управління (СВУ) до системи OpenSCADA. Модуль засновано на WEB технологіях (XHTML, JavaScript, CSS, AJAX). У своїй роботі модуль використовує дані рушія СВУ (модуль VCAEngine).
Середовище візуалізації та управління (СВУ) є невід'ємною складовою SCADA системи. Воно застосовується на клієнтських станціях з метою доступного надання інформації про об'єкт управління та видачі керуючих дій на об'єкт. У різних практичних випадках та умовах можуть застосовуватися СВУ, побудовані на різних принципах візуалізації. Наприклад, це можуть бути бібліотеки віджетів Qt, GTK+, wxWidgets або гіпертекстові механізми на основі технологій HTML, XHTML, XML, CSS та JavaScript, або ж сторонні додатки візуалізації, реалізовані на різних мовах програмування: Java, Python та інше. Будь який з цих принципів має свої переваги та недоліки, комбінація яких може стати непереборною перепоною у можливості використання СВУ у тому або іншому практичному випадку. Наприклад, технології на кшталт бібліотеки Qt дозволяють створювати високопродуктивні СВУ, що безсумнівно важливо для станцій оператору управління технологічним процесом (ТП). Однак потреба у інсталяції такого клієнтського ПЗ у окремих випадках може зробити використання його неможливим. З іншого боку Web-технології не потребують інсталяції на клієнтські системи та є гранично багатоплатформеними (достатньо створити посилання на Web-сервер у будь якому Web-браузері), що більш важливо для різних інженерних та адміністративних станцій. Але продуктивність та надійність таких інтерфейсів нижче, що практично виключає їх використання на станціях оператору ТП.
Система OpenSCADA має гнучку архітектуру, яка дозволяє створювати зовнішні інтерфейси, в том числі і користувацькі, на будь якій основі та на будь який смак. Наприклад, середовище конфігурації системи OpenSCADA доступне як на Qt бібліотеці, так і на Web-основі.
В той-же час незалежне створення реалізацій СВУ на різній основі може потягти за собою неможливість використання даних конфігурації однієї СВУ у іншій, що незручно та обмежено з боку користувача, та накладне у плані реалізації та подальшої підтримки. З метою запобігти цих проблем, а також створення у коротші терміни повного спектру різних типів СВУ засновано проект створення концепції СВУ. Результатом цього проекту й став цей модуль безпосередньої візуалізації (на основі Web-технологій), модуль безпосередньої візуалізації VisionENRU та рушій СВУ VCAEngineENRU.
1. Призначення
Даний модуль безпосередньої візуалізації СВУ призначено тільки для виконання інтерфейсів СВУ у середовищі WEB-технологій!
Інтерфейс користувача формується у WEB-браузері шляхом звернення до WEB-серверу та отримання від нього XHTML-документу за протоколом HTTP. У цьому випадку у ролі WEB-серверу виступає система OpenSCADA, яка підтримує стандартні комунікаційні механізми TCP-мереж (модуль Transport.Sockets), протокол передачі гіпертексту (модуль Protocol.HTTP), а також шифрування трафіку між браузером та сервером (Transport.SSL). Виходячи з цього, для отримання доступу до інтерфейсу користувача, який надається цим модулем, потрібно у OpenSCADA налаштувати транспорт (Transport.Sockets або Transport.SSL) у поєднані з протоколом HTTP (Protocol.HTTP). У поставці з системою OpenSCADA йдуть конфігураційні файли, які містять налаштування Transport.Sockets для портів 10002 та 10004. Відповідно, інтерфейс модуля у конфігурації OpenSCADA по замовченню буде доступний за URL: "http://localhost:10002" и "http://localhost:10004".
Фінальна версія цього модуля СВУ, яка побудована на основі даного модуля, забезпечить:
три рівня складності у формуванні інтерфейсу візуалізації, які дозволять органічно освоювати та застосовувати інструментарій за методикою від простого до складного:
формування із шаблонних кадрів шляхом призначення динаміки (без графічної конфігурації);
графічне формування нових кадрів шляхом використання готових елементів візуалізації з бібліотеки (мнемосхеми);
формування нових кадрів, шаблонних кадрів та елементів відображення до бібліотеки.
побудова інтерфейсів візуалізації різної складності, починаючи від простих пласких інтерфейсів моніторингу та закінчуючи повноцінними ієрархічними інтерфейсами, які використовуються у SCADA системах;
надання різних способів формування та конфігурації користувацького інтерфейсу, які засновано на різних інтерфейсах графічного представлення (Qt, Web, Java ...) або ж за посередництвом стандартного інтерфейсу управління системою OpenSCADA;
зміну динаміки у процесі виконання;
побудова нових шаблонних кадрів на рівні користувача та формування спеціалізованих під галузь застосування бібліотек кадрів (наприклад, включення кадрів параметрів, графіків та інших елементів з ув'язуванням їх один з одним), відповідно до теорії повторного використання та накопичення;
побудова нових користувацьких елементів візуалізації та формування спеціалізованих під галузь застосування бібліотек кадрів, відповідно до теорії повторного використання та накопичення;
опис логіки нових шаблонних кадрів та користувацьких елементів візуалізації як простими зв'язками, так і лаконічною, повноцінною мовою користувацького програмування;
можливість включення до користувацьких елементі візуалізації функцій (або кадрів обчислення функцій) об'єктної моделі OpenSCADA, практично пов'язуючи представлення з алгоритмом обчислення (наприклад, візуалізуючи бібліотеку моделей апаратів ТП для подальшої візуальної побудови моделей ТП);
розподіл даних користувацьких інтерфейсів та інтерфейсів надання цих даних, що дозволяє будувати інтерфейс користувача у єдиному середовищі, а використовувати у багатьох інших (Qt, Web, Java ...);
можливість підключення до інтерфейсу що виконується для спостереження та корекції дії (наприклад, при навчанні операторів та контролю у реальному часі за його діями);
візуальна побудова різних схем з накладенням логічних зв'язків та подальшим централізованим виконання у фоні (візуальна побудова та виконання математичних моделей, логічних схем, релейних схем та інших процедур);
надання функцій об'єктного API до системи OpenSCADA, може використовуватися для управління властивостями інтерфейсу візуалізації із користувацьких процедур;
побудова серверів кадрів, елементів візуалізації та проектів інтерфейсів візуалізації з можливістю обслуговування численних клієнтських підключень;
проста організація клієнтських станцій на різній основі (Qt, Web, Java ...) з підключенням до центрального серверу;
повноцінний механізм розподілу повноважень між користувачами, який дозволяє створювати та виконувати проекти з різними правами доступу до його компонентів;
гнучке формування правил сигналізацій та повідомлення, з урахуванням та підтримкою різних способів повідомлення;
підтримка користувацького формування палітри та шрифтових вподобань для інтерфейсу візуалізації;
підтримка користувацького формування карт повідомлень під різне обладнання управління та користувацькі вподобання;
підтримка профілів користувачів, які дозволяють визначати різні властивості інтерфейсу візуалізації (гама кольорів, шрифтові особливості, бажані карти повідомлень);
гнучке збереження та розповсюдження бібліотек віджетів, кадрів та проектів інтерфейсів візуалізації у БД, підтримуваних системою OpenSCADA; практично користувачу треба тільки зареєструвати отриману БД з даними.
2. Виконання інтерфейсів СВУ
Виконання інтерфейсу СВУ полягає в запуску нового сеансу проекту або підключення до існуючого на рівні рушія СВУ (рис.2). Перед запитом на підключення до сеансу здійснюється запит на аутентифікацію користувача. Далі модуль безпосередньої візуалізації відображає та керує даними сеансу. Головне вікно режиму виконання даного модуля має вигляд, наведений на рис.3.
Інтерфейс вікна виконання повністю будується динамічно скриптом JavaScript, виходячи із вмісту сеансу проекту шляхом прямих XML запитів до серверу.
Реалізовано оновлення вмісту відкритих сторінок інтерфейсу візуалізації з періодичністю виконання візуалізованого сеансу проекту візуалізації. В процесі оновлення здійснюється:
запит у моделі переліку відкритих сторінок, з ознакою модифікації сторінки, та перевірка відповідності реально відкритих сторінок цьому переліку;
запит гілки даних модифікованих сторінок;
оновлення вмісту модифікованих сторінок та їх віджетів у відповідності до отриманих змінених даних.
Механізм запиту тільки змінених даних засновано на абсолютному лічильнику виконання сеансу. При внесенні реальних змін до атрибутів віджетів здійснюється запам'ятовування значення цього лічильника, що й дозволяє ідентифікувати змінені атрибути. Такий підхід дозволяє підвищити продуктивність та зменшити трафік, у випадку доступу до рушія СВУ через мережу.
Ієрархічно модулем передбачається можливість розташування сторінок проекту як на головному вікні виконання WEB-браузеру (рис.3), так і вкладаючи всередину віджетів контейнерів.
Мова Web-браузеру з HTTP властивості "Accept-Language".
Загальна мова процесу OpenSCADA.
Рис.1. Сторінка аутентифікації.
Рис.2. Підключення або створення нового сеансу виконання проекту СВУ.
Рис.3. Головне вікно режиму виконання.
3. Представлення базових елементів (Примітиви)
У поточній версії модуля реалізовано не всі образи примітивів (та виглядів реалізованих) закладених цим проектом. В цілому ж проектом закладено примітиви:
Id
Найменування
Функція
ElFigure
Елементарні графічні фігури
Примітив є основою для отрисовки елементарних графічних фігур зі всілякою комбінацією їх в одному об'єкті. Передбачається підтримка наступних елементарних фігур:
Лінія.
Дуга.
Крива без'є.
Заливка замкненого простору.
Для всіх фігур, які містяться у віджеті, встановлюються єдині властивості товщини, кольору та інше, але це не виключає можливості визначення вищеперелічених атрибутів для кожної фігури окремо.
FormEl
Елементи форми
Включає підтримку стандартних компонентів форми:
Редагування рядку.
Редагування тексту.
Прапорець.
Кнопка.
Вибір із переліку.
Перелік.
Дерево.
Таблиця.
Слайдер.
Рядок прокрутки (ідентично Сладер).
Text
Текст
Елемент тексту(мітки). Характеризується типом шрифту, кольором, орієнтацією та вирівнюванням.
Media
Медіа
Елемент відображення растрових та векторних зображень різних форматів, програвання анімірованих зображень, програвання аудіо фрагментів та перегляд відео-фрагментів.
Diagram
Діаграма
Елемент діаграми з підтримкою можливості відображення декількох потоків трендів, частотного спектра, XY діаграм реального часу, ... .
Protocol
Протокол
Елемент протоколу, візуалізатора системних повідомлень з підтримкою декількох режимів роботи.
Document
Документ
Елемент формування звітів, журналів та іншої документації на основі доступних у системі даних.
Box
Контейнер
Містить механізм розташування/включення інших віджетів з метою формування нових, більш складних, віджетів та сторінок кінцевої візуалізації.
Function, у планах
Функція API об'єктної моделі OpenSCADA
Невізуальний, на боці виконання, віджет, який дозволяє включати обчислювальні функції об'єктної моделі OpenSCADA до СВУ.
Більш детально розглянемо реалізацію кожного примітиву.
3.1. Примітив елементарна фігура (ElFigure)
Реалізовано підтримку елементарних фігур: лінії, еліптичної дуги, кривої Без'є та заливка замкнених контурів кольором та зображенням з властивостями:
Формування довільних зображень із трьох елементарних фігур та заповнень замкнених просторів кольором або зображенням.
Можливість визначення властивостей фігур як загалом так і окремо для кожної: ширина, колір та стиль лінії, ширина та колір бордюру лінії, колір та зображення заповнення.
Довільне обертання загальної фігури довкола її центру.
Підтримка користувацьких атрибутів динамічних точок, ширин, кольорів, стилів та зображень.
Формування повідомлень за діями маніпулятором миші у замкнені простори та загалом.
На рисунку представлено частину екрану з кадром, який містить елементарні фігури.
3.2. Примітив тексту (Text)
Реалізовано підтримку елементу тексту з властивостями:
Шрифт з властивостями: типу/класу шрифта, розміру, підсилення, нахилу, підкреслення та перекреслення.
Колір тексту.
Орієнтація тексту.
Автоматичне перенесення за словами.
Вирівнювання тексту по горизонталі та вертикалі з усіма варіантами.
Відображення фону у вигляді кольору та/або зображення.
Відображення бордюру довкола тексту, з вказаним кольором, шириною та стилем.
Формування тексту із атрибутів різного типу та властивостей.
На рисунку представлено частину екрану з кадром, який містить приклади тексту з використанням різних параметрів.
3.3. Примітив елементів форми (FormEl)
Реалізовано підтримку елементів форми на кадрах СВУ. Реалізовано закладені властивості, включаючи наступні елементи форми:
Редактор рядку — Представлено наступними видами: "Текст", "Combo", "Ціле", "Реальне", "Час", "Дата", "Час та Дата". Всі види редактору рядка підтримують підтвердження вводу.
Редактор тексту — Надає редактор плаского тексту з підтвердженням або відмовою від вводу.
Поле прапорця — Надає поле бінарного прапорця/ознаки.
Кнопка — Надає кнопку з підтримкою: кольору кнопки, зображення у кнопці та режиму фіксації.
Вибір з переліку — Надає поле вибору елементу з переліку вказаних елементів.
Перелік — Надає поле переліку з контролем за поточним елементом.
Дерево — Надає елемент дерева з можливістю вибору елементів.
Таблиця — Надає елемент таблиці з можливістю обрання клітинок, рядків та стовпчиків та редагування вмісту клітинок.
Реалізовано режими: "Включено" та "Активовано", а також передачу змін та повідомлень у модель даних СВУ (рушій). Для всіх реалізованих представлень підтримується активний режим, тобто елементи можуть бути використані для створення форм користувацького вводу.
На рисунку представлено частину екрану з кадром, який містить перелічені вище елементи форми.
3.4. Примітив відображення медіа-матеріалів (Media)
Реалізовано підтримку елементу відображення медіа-матеріалів з властивостями:
Визначення джерела медіа даних (зображення або відео-матеріалу).
Перегляд зображень більшості відомих форматів з можливістю їх вписування у розмір віджету.
Програвання простих анімованих форматів зображень та відео.
Відображення фону у вигляді кольору та/або зображення.
Відображення бордюру довкола тексту, з визначеним кольором, шириною та стилем.
Формування активних областей та генерація повідомлень при їх активації.
На рисунку представлено частину екрану з кадром, який містить приклади перегляду/програвання медіа-даних.
3.5. Примітив побудови діаграм/графіків (Diagram)
Реалізовано підтримку елементу побудови діаграм для типів "Графік", "Спектр" та "XY" з властивостями:
Загальні властивості типів діаграми "Графік", "Спектр" та "XY":
можливість обрання архіватору, буферу архіву або всіх даних при роботі з архівними даними;
адаптація графіка параметра до реальних значень даних шляхом налаштування шкали, у випадку відсутності прямо вказаного діапазону значень;
управління масштабом шкали значень шляхом збільшення/зменшення та зсуву;
широкий діапазон масштабування та адаптації шкали часу з автоматичним приведенням запитаних даних до якості, достатньої для відображення, або потрібному для експорту — визначенням граничної кількості вимірів у пікселі;
відображення розмірної ґратки та маркерів по горизонталі та вертикалі з адаптацією до діапазону відображення;
слідкуючий режим за поточним часом шляхом періодичного оновлення та зсуву часу діаграми до поточного часу (часу останніх даних у буфері архіву).
Властивості типу діаграми "Графік":
побудова графіків, до 100 параметрів на одній діаграмі, у відсотковій шкалі та з можливістю відображення у власній шкалі обраних параметрів;
побудова графіку для: поточних, архівних та користувацьких даних;
формування проміжного буферу відображення для поточних значень;
підтримка активного режиму з курсором та отриманням значення під курсором;
можливість побудови графіків як у лінійній, так і логарифмічній шкалі значень.
Властивості типу діаграми "Спектр":
побудова графіків частотного спектру параметрів, до 100 на одній діаграмі, у відсотковій шкалі та можливістю відображення у власній шкалі обраних параметрів;
побудова графіку для: архівних та користувацьких даних;
підтримка активного режиму з курсором та отриманням значень під курсором;
Властивості типу діаграми "XY":
побудова XY графіків параметрів, до 50 на одній діаграмі, у відсотковій шкалі та можливістю відображення у власній шкалі обраних параметрів;
побудова графіку для: поточних, архівних та користувацьких даних;
формування проміжного буферу відображення для поточних значень;
параметри розподіляються парами на графік, де парні по вісі Y (0,2,4...) та непарні по вісі X (1,3,5...);
можливість побудови графіків як у лінійній, так і логарифмічній шкалі значень.
На рисунку представлено частини екрану з кадром, який містить приклади діаграм: "Графік", "Спектр" та "XY".
3.6. Примітив формування протоколу (Protocol)
Реалізовано підтримку елементу формування протоколу з властивостями:
Формування протоколу з архіву повідомлень за визначений час та глибину.
Запит даних з визначених архіваторів повідомлень.
Вибірка даних з архівів за рівнем важливості та шаблоном категорії повідомлень.
Підтримка режиму слідкування за появою повідомлень у архіві повідомлень.
На рисунку представлено частину екрану з кадром, який містить приклад протоколу.
3.7. Примітив формування звітної документації (Document)
Реалізовано підтримку елементу формування звітної документації з властивостями:
Гнучке формування структури документу на основі мови гіпертекстової розмітки. Це надає підтримку широких можливостей форматування документів.
Формування документів за командою або за розкладом. Потрібно для формування звітної документації у архів з подальшим переглядом архіву.
Формування документу у режимі реального часу. Для формування документів повністю динамічно та на основі архівів за визначений час.
Використання атрибутів віджету для передачі у документ значень та адрес на архіви. Дозволяє використовувати віджет документу як шаблон при формуванні звітів з іншими вхідними даними.
В основі будь якого документу лежить XHTML-шаблон. XHTML-шаблон це тег "body" WEB-сторінки, який містить статику документу у стандарті XHTML 1.0, та елементи виконуваних інструкцій на одній з мов користувацького програмування OpenSCADA у вигляді <?dp {procedure} ?>. Результуючий документ формується шляхом виконання процедур та вставки їх результату у документ.
Джерелом значень виконуваних інструкцій є атрибути віджету цього примітиву, а також всі механізми мови користувацького програмування. Атрибути можуть додаватися користувачем та лінкуватися на реальні атрибути параметрів або-ж бути автономними, значення яких будуть формуватися у скрипті віджету. У випадку із злінкованими атрибутами можуть вилучатися значення із історії, архіву.
На рисунку представлено кадр, який містить приклад документу.
3.8. Примітив контейнеру (Box)
Реалізовано підтримку примітиву контейнера, який за сумісництвом виконує роль сторінок проектів. Цей примітив є єдиним елементом/контейнером, який може включати у себе посилання на кадри із бібліотеки, формуючи тим самим користувацькі елементи потрібної конфігурації. Примітив реалізує передбачені проектом властивості. Перелічимо за пунктами властивості даного примітиву:
Контейнер — Дозволяє формувати потрібні об'єкти шляхом групування базових у межах цього примітиву.
Сторінка — Елементи, побудовані на цьому примітиві, можуть виконувати роль сторінки користувацького інтерфейсу.
Контейнер сторінок — Властивість заміщення власного вмісту іншою сторінкою у процесі виконання. Використовується для формування фреймів на сторінках користувацького інтерфейсу. Наприклад, головна сторінка традиційної SCADA системи з об'єктами сигналізації будується саме таким чином.
Фон — Підтримує можливість визначення фону у вигляді кольору або зображення.
Бордюр — Підтримує можливість зображення бордюру з вказаним кольором, товщиною та стилем.
4. Загальна конфігурація модуля
Для налаштування загальної поведінки, модулем надається можливість налаштування низки параметрів за посередництвом інтерфейсу управління OpenSCADA (рис. 11):
Час життя сеансу автентифікації.
Обмеження на загальну кількість сеансів.
Рівень стиснення генерованих PNG-зображень. Більш оптимальним є мінімальний рівень 1, оскільки без стиснення виходять великі файли, а більші рівні стиснення створюють більш високе навантаження на процесор.
Рис.11. Сторінка конфігурації модуля.
Заключення
На цьому етапі модуль може бути використаний для побудови реальних інтерфейсів користувача з підтримкою основних функцій. Однак окремі проблеми можуть виникати як з причини недоопрацьованості, так й різниці браузерів. На цей час достатньо якісно забезпечено працездатність на браузерах: FireFox, Konqueror, Opera та Google Chromium.