From OpenSCADAWiki
Jump to: navigation, search
This page is a translated version of the page Modules/WebVision and the translation is 100% complete.

Other languages:
English • ‎mRussian • ‎Українська
Модуль Ім'я Версія Ліцензія Джерело Мови Платформи Тип Автор
WebVision Робочий користувацький інтерфейс (WEB) 6.10 GPL2 ui_WebVision.so en,uk,ru,de x86,x86_64,ARM Користувацькі інтерфейси Роман Савоченко
  Максим Лисенко (2007-2012), Ксенія Яшина (2007-2008)
Опис
Робочий інтерфейс користувача, заснований на WEB — зовнішній інтерфейс до рушія СВУ.
  • Загальна працемісткість: > 50 ЛД[!]
  • Спонсорування, примітиву "Медіа" та Сповіщення на 1.35 ЛД[!]: Хайді Рамазані
  • Спонсорування, Сповіщення на 0.85 ЛД[!]: Вінницька Птахофабрика
  • Спонсорування, завершення відображення примітиву ElFigure на 0.5 ЛД[!]: ТОВ "СВІТоВИР"
  • Спонсорування, Експорту на 0.8 ЛД[!]: Вінницька Птахофабрика
  • Завдання (To Do):
* відревізувати та уніфікувати примушення клавіатурного фокусу на першому активному елементі з урахуванням їх специфіки, для гарантування клавіатурних скорочень;
- розширити примітив "Діаграма" операціями масштабування мишею;
- реалізувати власний RTE-редактор для вигляду Text примітиву FormEl;
- ElFigure: виправити втрату деяких властивостей (щонайменш товщину лінії) при опрацюванні дій, у процесі загальної переробки коду примітиву;
+ доповнити панель статусу, функціями:
+ користувацькі поля статусу.
- ElFigure,Diagram: ввімкнути або реалізувати згладжування, для бібліотеки GD;
- реалізувати примітиви "Діаграма", "ElFigure" тегом "SVG";
- розширити варіант "Анімація" примітиву "Медіа" використанням RAW файлів зображень, на кшталт PNG.

Модуль надає до 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-технологій), модуль безпосередньої візуалізації Vision та рушій СВУ VCAEngine.

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. Відповідно, інтерфейс модуля, по замовченню, буде доступний за URL: "http://localhost:10002".

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

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

  • три рівні складності у формуванні інтерфейсу візуалізації, які дозволяють органічно освоювати та застосовувати інструментарій за принципом — від простого до складного:
  1. формування з шаблонних кадрів, шляхом призначення динаміки та без графічної конфігурації;
  2. графічне формування нових кадрів, шляхом використання готових елементів візуалізації з бібліотеки — мнемосхеми;
  3. формування, у бібліотеці, нових: кадрів, шаблонних кадрів та елементів відображення.
  • побудова інтерфейсів візуалізації практично будь-якої складності (обмежену "дискретністю" функцій примітивів), починаючи від простих інтерфейсів моніторингу та, закінчуючи повноцінними ієрархічними інтерфейсами, що використовуються у SCADA системах;
  • надання різних способів формування та конфігурації користувацького інтерфейсу, заснованих на різних інтерфейсах графічного представлення (Qt, Web, ...), або-ж за посередництвом стандартного інтерфейсу управління OpenSCADA;
  • побудова та корекція інтерфейсу, призначення та зміна динаміки у процесі виконання;
  • побудова, на рівні користувача, нових шаблонних кадрів та формування спеціалізованих, під область застосування, бібліотек кадрів (наприклад, включення кадрів параметрів, графіків та інших елементів з ув'язкою їх один з другим), згідно до ідеї вторинного використання, накопичення та вдосконалення;
  • побудова нових користувацьких елементів візуалізації та формування спеціалізованих, під область застосування, бібліотек кадрів, згідно до ідеї вторинного використання, накопичення та вдосконалення;
  • опис логіки нових шаблонних кадрів та користувацьких елементів візуалізації як простими зв'язками, так і лаконічною, повноцінною мовою користувацького програмування;
  • можливість включення, до користувацьких елементів візуалізації, функцій (або кадрів обчислення функцій) об'єктної моделі OpenSCADA, практично зв'язуючи представлення з алгоритмом обчислення; наприклад, візуалізуючи бібліотеку моделей апаратів ТП, для подальшої візуальної побудови моделей ТП;
  • розподіл даних користувацьких інтерфейсів та інтерфейсів представлення цих даних, що дозволяє будувати інтерфейс користувача у одному середовищі, а виконувати у багатьох інших (Qt, Web, ...);
  • можливість підключення до виконуваного інтерфейсу для спостереження та корекції дій; наприклад, при навчанні операторів та контролю за його діями у реальному часі;
  • візуальна побудова різних схем з накладанням логічних зв'язків та подальшим централізованим виконанням у фоні — візуальна побудова та виконання математичних моделей, логічних схем, релейних схем та іншого;
  • надання, до OpenSCADA, функцій об'єктного API; може використовуватися для управління властивостями інтерфейсу візуалізації із користувацьких процедур;
  • побудова серверів для: кадрів, елементів візуалізації та проєктів інтерфейсів візуалізації; з можливістю обслуговування множинних клієнтських підключень;
  • проста організація клієнтських станцій на різній основі (Qt, Web, ...), з підключенням до центрального серверу;
  • повноцінний механізм розподілу повноважень між користувачами, що дозволяє створювати та виконувати проєкти з різними правами доступу до його компонентів;
  • гнучке формування правил сигналізацій та повідомлень, з урахуванням та підтримкою різних способів повідомлення;
  • підтримка користувацького формування палітри та шрифтових переваг інтерфейсу візуалізації, в стилях;
  • підтримка користувацького формування карт повідомлень під різне обладнання управління та переваги користувача;
  • підтримка профілів користувача, що дозволяють визначати різні властивості інтерфейсу візуалізації (гама кольорів, шрифтові особливості, переважні карти повідомлень);
  • гнучке зберігання та розповсюдження бібліотек віджетів, кадрів та проєктів інтерфейсів візуалізації у БД, підтримуваних OpenSCADA; практично, користувачу треба тільки зареєструвати отриману БД з даними.


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

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

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

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

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

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

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

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

  • Праворуч:
    • поточний користувач, від ім'я якого виконується інтерфейс СВУ — кліком можна змінити цього користувача, ввівши нове ім'я та пароль;
    • поточний стиль інтерфейсу, який можна змінити обравши з комбобоксу потрібний;
    • поточний статус порушення у лампі кольором, який відповідає рівню порушення, та іконки активних сповіщувачів; блимає при появі та зміні порушення; натиснувши на лампу Ви можете сквітувати (стишити) ці порушення цілком або бажаний тип сповіщення, натиснувши іконку відповідного сповіщувача поряд;
    • кнопка меню із виклику друку та експорту даних сторінки для:
      • друку: Основної Сторінки, Документів;
      • експорту: Документів (HTML,CSV), Таблиць (CSV).
    • підручнику на проєкт СВУ — кліком викликає підручник на проєкт візуалізації щодо файлу "{ProjVCA_ID}.[pdf|html|odt]" у теці документів або визначеного у атрибуті "prjDoc";
    • панель користувацьких статусів і дій за визначенням у атрибуті "statLine"; клацання лівою, правою та подвійним миші формує події до головної сторінки інтерфейсу.
  • У головному полі рядка статусу виводяться різні інформаційні повідомлення та повідомлення допомоги.

Модуль підтримує багатомовність, яка вмикається динамічним перекладом повідомлень OpenSCADA. Отримана мова передається модулем Protocol.HTTP та визначається шляхом та у послідовності:

  • URL параметр "lang".
  • Мова користувача, що увійшов.
  • Мова Web-браузеру з HTTP властивості "Accept-Language".
  • Загальна мова процесу OpenSCADA.
Рис.1. Сторінка аутентифікації.
Рис.2. Підключення або створення нового сеансу виконання проєкту СВУ.
Рис.3. Головне вікно режиму виконання.

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

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

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

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

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

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

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

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

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

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

Ідентифікатор (область) Ім'я Призначення
keepAspectRatio (головна сторінка) Зберігати пропорцію при масштабуванні Зберігати пропорцію сторінок при масштабуванні.
stBarNoShow (головна сторінка) Не показувати рядок статусу Приховати рядок статусу головного вікна.
notify{N}, notifyVisWebVision{N} (сторінка) Сповіщувач: тип {N} At.png Створити вручну із типом "Текст"!

Визначає сповіщувач та процедуру отримання ресурсу сповіщення згідно до концепції "Сигналізації (Аларми)".

statLine (головна сторінка) Елементи рядку статусу At.png Створити вручну із типом "Текст"!

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

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

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

  • "*" — виклик діалогу обрання користувача;
  • "$" — зміна користувача на типового;
  • "{користувач}[:{пароль}]" — пряма зміна на користувач із паролем; для порожнього пароля користувач змінюється лише якщо його права менше або дорівнюють; корисний приклад зміни на користувача "user" після хвилини неактивності:
if((SYS.time()-this.ownerSess().userActTm()) < 60)userSetVis = "";
else if(this.ownerSess().reqUser() != "user") userSetVis = "user";
prjDoc (головна сторінка) Документ проєкту At.png Створити вручну із типом "Рядок"!

Визначення документу проєкту виклику кнопкою рядка статусу із можливістю вимкнення-приховання кнопки за порожнього значення. Документ визначається у вигляді "{OffLine}|{OnLineOpenSCADAWiki}", до прикладу для проєкту АГЛКС — "AGLCS|Using/Model_AGLKS". Мережева частина використовується у першу чергу за її визначення.

vs_goHttpUrl (вигляд "Кнопка" примітиву "FormEl") Перехід за HTTP URL At.png Створити вручну із типом "Рядок"!

Перехід на визначений URL за натисканням кнопки.

vs_background (види "Line edit", "Text edit", "Combo box", "List", "Tree", "Table" примітиву "FormEl") Користувацький фон At.png Створити вручну із типом "Рядок"!

Визначає користувацький фон у формі {color}-{transp} {image}.

vs_border (види "Line edit", "Text edit", "Combo box", "List", "Tree", "Table" примітиву "FormEl") Користувацька границя At.png Створити вручну із типом "Рядок"!

Визначає користувацьку границю у стандартній формі CSS {wdth}px {style} {color}.

vs_winTitle (вид "Box") Заголовок вікна At.png Створити вручну із типом "Рядок"!

Значення динамічного заголовку вікна.

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

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

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

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

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

WebVision wvis run elfig.png


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

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

  • Шрифт зі властивостями: типу-класу, розміру, підсилення, нахилу, підкреслення та перекреслення.
  • Колір тексту.
  • Орієнтація тексту.
  • Автоматичне перенесення за словами.
  • Вирівнювання тексту по горизонталі та вертикалі, з усіма варіантами.
  • Відображення фону у вигляді кольору та зображення.
  • Відображення бордюру довкола тексту з вказаним кольором, шириною та стилем.
  • Відображення HTML.
  • Доповнення тексту аргументами різного типу та властивостей.

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

WebVision wvis run txt uk.png


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

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

  • Редактор рядку — Представлено наступними видами: "Текст", "Combo", "Ціле", "Реальне", "Час", "Дата", "Час та Дата". Всі види редактору рядка підтримують підтвердження вводу.
  • Редактор тексту — Надає редактор плаского тексту з підтвердженням або відмовою від вводу.
  • Поле ознаки — Надає поле бінарної ознаки.
  • Кнопка — Надає кнопку з підтримкою кольору кнопки, зображення у кнопці та режимів:
    • стандартний;
    • перемикальний;
    • виклик меню;
    • виклик завантаження файлу;
    • виклик збереження файлу.
  • Вибір з переліку — Надає поле вибору елементу з переліку вказаних елементів.
  • Перелік — Надає поле переліку з контролем за поточним елементом.
  • Дерево — Надає елемент дерева з можливістю обрання елементів.
  • Таблиця — Надає елемент таблиці з можливістю вибору клітинок, рядків або стовпчиків, а також редагування вмісту клітинки.
  • Слайдер — Елемент слайдеру.
  • Прогрес-бар — Стрічка прогрес-бару (ідентично до Слайдер).
  • Пароль — Приховане введення паролю.

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

  • Text — не порожній текст;
  • Media — не порожнє джерело зображення.

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

WebVision wvis run formel uk.png


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

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

  • Вказання джерела медіа даних: зображення або відео-матеріалу.
  • Перегляд зображень більшості відомих форматів з можливістю їх вписування у розмір віджету.
  • Програвання простих анімованих форматів зображень та відео з можливістю управління швидкістю програвання (недоступно).
  • Програвання повноформатного відео та аудіо за допомогою HTML5.
  • Відображення фону у вигляді кольору та зображення.
  • Відображення бордюру по периметру віджету, з вказаним кольором, шириною та стилем.
  • Формування активних областей та генерація повідомлень при їх активації.

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

WebVision wvis run media.png


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

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

  • Загальні властивості типів діаграми "Графік", "Спектр" та "XY":
    • можливість вибору архіватору, буферу архіву або всіх даних, при роботі з архівними даними;
    • адаптація графіку параметра до реальних значень даних шляхом підлаштування шкалы, у випадку відсутності прямо вказаного діапазону значень;
    • управління масштабом шкали значень шляхом збільшення, зменшення та зсуву;
    • широкий діапазон масштабування та адаптації шкали часу з автоматичним приведенням запитаних даних до якості достатньої до відображення, або потрібної для експорту — вказанням граничної кількості вимірів у пікселі;
    • відображення розмірної ґратки та маркерів по горизонталі та вертикалі з адаптацією до діапазону відображення;
    • слідкуючий режим за поточним часом шляхом періодичного оновлення та зміщення часу діаграми до поточного часу — часу останніх даних у буфері архіву.
  • Властивості типу діаграми "Графік":
    • побудова графіків до 100 параметрів на одній діаграмі у процентній шкалі та можливістю відображення обраних параметрів у власній шкалі;
    • побудова графіку для: поточних, архівних та користувацьких даних;
    • формування проміжного буферу відображення для поточних значень;
    • підтримка активного режиму з курсором та отриманням значень під курсором;
    • можливість побудови графіків як у лінійній, так і логарифмічній шкалі значень.
  • Властивості типу діаграми "Спектр":
    • побудова графіків частотного спектру параметрів до 100 на одній діаграмі у процентній шкалі та можливістю відображення обраних параметрів у власній шкалі;
    • побудова графіку для: архівних та користувацьких даних;
    • підтримка активного режиму з курсором та отриманням значень під курсором.
  • Властивості типу діаграми "XY":
    • побудова XY графіків параметрів до 50 на одній діаграмі у процентній шкалі та можливістю відображення обраних параметрів у власній шкалі;
    • побудова графіку для: поточних, архівних та користувацьких даних;
    • формування проміжного буферу відображення для поточних значень;
    • параметри розподіляються парами на графік, де парні за осі Y (0,2,4...) та непарні за осі X (1,3,5...);
    • можливість побудови графіків як у лінійній, так і логарифмічній шкалі значень.

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

WebVision wvis run diag.png


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

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

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

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

WebVision wvis run prot uk.png


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

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

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

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

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

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

WebVision wvis run doc uk.png


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

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

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


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

Для конфігурації та керування цим модулем, надається конфігураційна сторінка інтерфейсу керування OpenSCADA (Рис.4) де Ви можете здійснювати:

  • Контроль за активними WEB-сеансами.
  • Конфігурацію:
    • Час життя, у хвилинах, та максимальна кількість сеансі.
    • Час життя, у годинах, та максимальна кількість сторінок у кеші.
    • Рівень компресії PNG-зображень. Більш оптимальним є мінімальний рівень 1, оскільки без стиснення виходять великі файли, а більші рівні стиснення створюють більш високе навантаження на процесор.
    • Зміна розміру растрових зображень на боці серверу. Переважно щоб зменшити розмір занадто великий зображень відтак і трафіку, що призводить до збільшення навантаження на сервер.
    • Користувацькі CSS правила інтерфейсу. CSS правила перевизначення стандартних, що розташовуються за спеціальним знаком ##CUST_CSS## файлу WebVisionVCA.html.
Рис.4. Сторінка конфігурації модуля.

Ви можете глибоко налаштувати основний інтерфейс модуля замінивши та доповнивши код HTML і JavaScript шляхом розташування до теки вашого проєкту OpenSCADA файлів WebVisionVCA.html і WebVisionVCA.js, які початково можете отримати з вихідного коду модуля — UI.WebVision.

5 Ефективність та масштабованість

31.07.2019
GROUNDS: The Web-sessions may create many objects servicing the VCA-session for generating images, processing documents and performing other background functions of the end user Web-interface. Moreover, in difference to Vision, the VCA-sessions may be created, closed and recreated again multiple times for different users and remote hosts. In the time the memory heap is affected by the memory fragmentation, so the program consumes more memory than at the start. The table below represents the phenomenon for different environments and the first page of the DemoDB (AGLKS) project reopening:

Environment Initially, MB Iter. 1, MB Iter. 2, MB Iter. 3, MB Iter. 4, MB Iter. 5, MB Resume
Complete creation the Web- and VCA-sessions
Debian 10 amd64, GLibC 2.28, GCC 8.3.0 + MALLOC_ARENA_MAX=2 181 189 190 195 195 194 Satiated on the iteration 3, base consumption 8 MB, extra consumption 5 MB (62.5 %), liboscada.so 3.5 MB, ui_WebVision.so 0.75 MB
Debian 10 amd64, GLibC 2.28, GCC 8.3.0 + MALLOC_ARENA_MAX=1 177 185 186 186 185 186 Satiated on the iteration 2, base consumption 8 MB, extra consumption 1 MB (13 %), liboscada.so 3.5 MB, ui_WebVision.so 0.75 MB
Debian 9 amd64, GLibC 2.28, GCC 8.3.0 + MALLOC_ARENA_MAX=1 160 168 168 168.5 168.5 168.5 Satiated on the iteration 1, base consumption 8 MB, extra consumption 0.5 MB (6 %), liboscada.so 3.5 MB, ui_WebVision.so 0.75 MB
Debian 10 amd64, GLibC 2.28, GCC 8.3.0 + optional background objects in WebVision 184 194.5 200 207 207 212.5 Satiated on the iteration 5, base consumption 10.5 MB, extra consumption 18 MB (171 %), liboscada.so 3.5 MB, ui_WebVision.so 0.75 MB
Debian 10 amd64, GLibC 2.28, GCC 8.3.0 182 191.5 199 206 212 212 Satiated on the iteration 4, base consumption 9.5 MB, extra consumption 20 MB (200 %), liboscada.so 3.5 MB, ui_WebVision.so 0.74 MB
Debian 9 amd64, GLibC 2.24, GCC 6.3.0 160 170 178 179 183 185 Satiated on the iteration 5, base consumption 10 MB, extra consumption 15 MB (150 %), liboscada.so 3.5 MB, ui_WebVision.so 0.72 MB
Debian 8 amd64, GLibC 2.19, GCC 4.9.2 125.5 133 139 139 139 139 Satiated on the iteration 2, base consumption 7.5 MB, extra consumption 6 MB (80 %), liboscada.so 3.8 MB, ui_WebVision.so 0.79 MB
Debian 7 amd64, GLibC 2.13, GCC 4.7.2 101 108 111 112 112 112 Satiated on the iteration 2, base consumption 7 MB, extra consumption 4 MB (57 %), liboscada.so 3.4 MB, ui_WebVision.so 0.85 MB
Debian 10 i386, GLibC 2.28, GCC 8.3.0 + MALLOC_ARENA_MAX=1 144 152 152 152 152 152 Satiated on the iteration 1, base consumption 8 MB, extra consumption 0 MB (0 %), liboscada.so 3.7 MB, ui_WebVision.so 0.9 MB
Debian 9 i386, GLibC 2.24, GCC 6.3.0 + MALLOC_ARENA_MAX=1 126.5 132.5 133 133 133 133 Satiated on the iteration 1, base consumption 6 MB, extra consumption 0.5 MB (8 %), liboscada.so 3.7 MB, ui_WebVision.so 0.9 MB
Debian 10 i386, GLibC 2.28, GCC 8.3.0 151 158 162.5 166 166 166 Satiated on the iteration 3, base consumption 7 MB, extra consumption 8 MB (114 %), liboscada.so 3.7 MB, ui_WebVision.so 0.9 MB
Debian 9 i386, GLibC 2.24, GCC 6.3.0 125 131 132 136 136 139 Satiated on the iteration 5, base consumption 6 MB, extra consumption 8 MB (133 %), liboscada.so 3.7 MB, ui_WebVision.so 0.9 MB
Debian 8 i386, GLibC 2.19, GCC 4.9.2 92.5 99 101.5 103 103.5 103.5 Satiated on the iteration 2, base consumption 6.5 MB, extra consumption 4.5 (69 %), liboscada.so 3.6 MB, ui_WebVision.so 0.94 MB
Debian 7 i386, GLibC 2.13, GCC 4.7.2 70 76 76 76 77 77 Satiated on the iteration 2, base consumption 6 MB, extra consumption 1 MB (16 %), liboscada.so 3.6 MB, ui_WebVision.so 0.9 MB
ALTLinux 6 i386, GLibC 2.11.3, GCC 4.5.4 69 74 75 75 75 75 Satiated on the iteration 2, base consumption 5 MB, extra consumption 1 MB (20 %), liboscada.so 2.3 MB, ui_WebVision.so 0.9 MB
Creation only VCA-session, from remote connection to the visualizer server
Debian 10 amd64, GLibC 2.28, GCC 8.3.0 180 186 186 186 186 186 Satiated on the iteration 1, extra consumption 0.2 MB (3 %)
Debian 7 amd64, GLibC 2.13, GCC 4.7.2 100 104 105 105 105 105 Satiated on the iteration 1, extra consumption 1 MB (25 %)
Debian 10 i386, GLibC 2.28, GCC 8.3.0 148 154 155 155 155 155 Satiated on the iteration 1, extra consumption 1 MB (16 %)
Debian 7 i386, GLibC 2.13, GCC 4.7.2 69 72 72 72 72 72 Satiated on the iteration 1, extra consumption 0 MB (0 %)

CONCLUSION: We see obvious degradation in the memory effectivity on the last Debian releases starting at Debian 8 (GLibC 2.19) on I386 and Debian 9 (GLibC 2.24) on AMD64, when the memory consumption increased up to 200% after 3,4 free-allocate iterations of the same data. To more presenting of the problem there have built follow images on the data basis:

Fig.5. Memory effectivity on AMD64 platform.
Fig.6. Memory effectivity on I386 platform.
Fig.7. Absolute initial size of OpenSCADA "AGLKS" on the platform AMD64.
Fig.8. Absolute initial size of OpenSCADA "AGLKS" on the platform I386.

MEASURES:

  1. The optional background objects were implemented for the primitives "FormEl" and "Text", what will have most effect on mnemonic-schemes with these elements and wont have many effect for other, see the measuring data above.
  2. There were some tries to tune the memory allocator of GLibC using "Memory Allocation Tunables" without any significant effect, so we will notify the Debian community, firstly.
  3. The problem was detected in arenas of the memory allocator, setting whose number to 1 (MALLOC_ARENA_MAX=1) completely resolves the problem and the effect you may see on Figures 9, 10, for a real big application.
Fig.9. Tendency of the memory consumption on a real big application at the default conditions.
Fig.10. Tendency of the memory consumption on a real big application at the environment variable MALLOC_ARENA_MAX=1.

20.06.2013
GROUNDS: At working with the board MOPSlcdLX, attention was drawn to the heavy load of the task of forming full-size trends. As it turned out later, a large load is created by the formation of a PNG image in the GD2 library, or rather, the packing procedure of ZLib. The subject analysis of the performance of the formation of images of various formats on this board is summarized in the table below:

Format Trend building, milliseconds Converting to the image format, milliseconds Size of the image, bytes
PNG (0) 200 800 1700365
PNG (1) 200 690 24000
PNG (-1) 200 1000 14800
PNG (9) 200 1900 13354
JPEG (-1) 200 180 53157
GIF 200 380 14300

CONCLUSION: As can be seen from the table above, the operation of forming PNG as a whole is resource-intensive and the most optimal level of compression is "1". At the same time, the formation of JPEG and GIF is much faster, but these image formats have a number of critical flaws, namely: JPEG does not have an alpha channel (transparency), and GIF is limited by the number of colors, which in both cases leads to loss of transparency and distortion of text smoothing and images in general.

MEASURES: The ability to select the compression level for the generated PNG images is added, and the default value is set to the optimal level "1". The implementation of the formation of the "Diagram" primitive on the browser side in the "svg" or "canvas" tags is planned.


6 Зауваження

На цьому етапі модуль може бути використаний для побудови реальних інтерфейсів користувача з підтримкою основних функцій. Однак, окремі проблеми можуть виникати як з причини недопрацьованості, так й різниці браузерів. На цей час достатньо якісно забезпечено працездатність на браузерах: Chromium (Google Chrome), FireFox, Opera, Konqueror.

7 Посилання