Модуль | Имя | Версия | Лицензия | Источник | Языки | Платформы | Тип | Автор |
---|---|---|---|---|---|---|---|---|
WebVision | Рабочий пользовательский интерфейс (WEB) | 6.9 | GPL2 | ui_WebVision.so | en,uk,ru,de | x86,x86_64,ARM | UI | Roman Savochenko Maxim Lysenko (2007-2012), Ksenia Yashina (2007-2008) |
Description | ||||||||
Visual operation user interface, based on the WEB — front-end to the VCA engine.
|
Модуль предоставляет в 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.
Данный модуль непосредственной визуализации СВУ предназначен только для исполнения интерфейсов СВУ в среде 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".
Финальная версия этого модуля СВУ, построенная на основе данного модуля, обеспечит:
Перечислим возможности, которые сможет и обеспечивает СВУ, построенная на основе данного проекта:
Исполнение интерфейса СВУ заключается в запуске нового сеанса проекта, или подключения к существующему, на уровне движка СВУ (рис.2). Перед запросом, на подключение к сеансу, выполняется запрос на аутентификацию пользователя (рис.1). Далее, модуль непосредственной визуализации отображает и управляет данными сеанса. Главное окно режима исполнения данного модуля имеет вид, представленный на рисунке 3. Административные пользователи ("root" или в группе "root") могут закрывать открытые сеансы.
Интерфейс окна исполнения полностью строится динамически, скриптом JavaScript и исходя из содержимого сеанса проекта, путём прямых XML запросов к серверу.
Реализовано обновление содержимого открытых страниц интерфейса визуализации с периодичностью исполнения визуализируемого сеанса проекта визуализации. В процессе обновления выполняется:
Механизм запроса только изменённых данных основан на абсолютном счётчике исполнения сессии. При внесении реальных изменений в атрибуты виджетов выполняется запоминание значения этого счётчика, что и позволяет идентифицировать изменённые атрибуты. Такой подход позволяет повысить производительность и уменьшить трафик, в случае доступа к движку СВУ через сеть.
Иерархически, модулем предусматривается возможность размещения страниц проекта как на главном окне исполнения (рис.3), так и вкладывая внутрь виджетов контейнеров, а также путем открытия дополнительных окон поверх основного.
Located in the status bar:
Модулем поддерживается многоязычность, которая включается динамическим переводом сообщений OpenSCADA. Полученный язык передаётся модулем Protocol.HTTP и определяется путём и в последовательности:
Данной версией модуля реализованы не все образы примитивов, заложенные проектом. В целом, проектом заложены примитивы:
Идентификатор | Наименование | Функция |
---|---|---|
ElFigure | Элементарная графическая фигура |
Примитив является основой отрисовки элементарных графических фигур со всевозможной комбинацией их в одном объекте. Предусматривается поддержка следующих элементарных фигур:
Для всех фигур, содержащихся в виджете, устанавливаются единые свойства толщины, цвета и т.д., также, предусматривается возможность указания вышеперечисленных атрибутов для каждой фигуры отдельно и их динамизация. |
FormEl | Элемент формы |
Включает поддержку стандартных компонентов формы:
|
Text | Текст | Элемент текста-метка. Характеризуется типом шрифта, цветом, ориентацией и выравниванием. Предусматривается поддержка аргументов. |
Media | Медиа | Элемент отображения растровых и векторных изображений различных форматов, проигрывания анимированных изображений, проигрывание аудио-фрагментов и просмотр видео-фрагментов. |
Diagram | Диаграмма | Элемент диаграммы с поддержкой возможности отображения нескольких потоков в реальном времени для: трендов (временных графиков), частотного спектра, XY диаграмм. |
Protocol | Протокол | Элемент протокола — визуализатор сообщений программы, с поддержкой нескольких режимов работы. |
Document | Документ | Элемент формирования отчётов, журналов и другой документации на основе доступных данных. |
Box | Контейнер | Содержит механизм размещения-включения других виджетов для формирования новых, более сложных, виджетов и страниц конечной визуализации. |
Function, в планах | Функция API объектной модели OpenSCADA | Невизуальный виджет, на стороне исполнения, позволяющий включать вычислительные функции объектной модели OpenSCADA в СВУ. |
Модулем визуализатора предоставляется и используется ряд специфических атрибутов общего характера, информация о которых приведена в таблице. Эти атрибуты автоматически создаются визуализатором при их отсутствии и в момент первого запуска, или создаются пользователем в кадре указанной области, по необходимости.
Идентификатор (область) | Имя | Назначение |
---|---|---|
notify{N}, notifyVisWebVision{N} (страница) | Уведомитель: тип {N} | Определяет уведомитель и процедуру получения ресурса уведомления согласно концепции "Сигнализации (Алармы)". |
keepAspectRatio (главная страница) | Сохранять пропорцию при масштабировании | Сохранять пропорцию страниц при масштабировании. |
stBarNoShow (главная страница) | Не показывать строку статуса | Скрыть строку статуса главного окна. |
userSetVis (главная страница, создаётся вручную, строковый тип) | Установка пользователя |
Изменение пользователя или вызов диалога для его выбора. Варианты значения:
if((SYS.time()-this.ownerSess().userActTm()) < 60)userSetVis = "";
else if(this.ownerSess().reqUser() != "user") userSetVis = "user";
|
vs_goHttpUrl (вид "Кнопка" примитива "FormEl") | Переход по HTTP URL | Переход на указанный URL по нажатию кнопки |
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") | Заголовок окна | Значение динамического заголовка окна |
Рассмотрим реализацию каждого примитива более детально.
Реализована поддержка элементарных фигур: линии, эллиптической дуги, кривой Безье и заливка замкнутых контуров цветом и изображением; со свойствами:
На рисунке представлена часть экрана с кадром, содержащим вышеперечисленные элементарные фигуры.
Реализована поддержка элемента текста со свойствами:
На рисунке представлена часть экрана с кадром, содержащим примеры текста с использованием различных параметров.
Реализована поддержка элементов формы на кадрах СВУ с заложенными свойства, включая следующие типы:
Реализованы режимы "Включен" и "Активен", а также передача изменений и событий в модель данных СВУ — движок. Режим "Активный" приводит к установке курсора активности для непустого фона и дополнительных условий различных видов "Text", "Media" и "Box":
На рисунке представлена часть экрана с кадром, содержащим вышеперечисленные элементы формы.
Реализована поддержка элемента отображения медиа-материалов со свойствами:
На рисунке представлена часть экрана с кадром, содержащим примеры просмотра/проигрывания медиа-данных.
Реализована поддержка элемента построения диаграмм для типов "График", "Спектр" и "XY", со свойствами:
На рисунке представлена часть экрана с кадром, содержащим примеры диаграмм: "График", "Спектр" и "XY".
Реализована поддержка элемента формирования протокола со свойствами:
На рисунке представлена часть экрана с кадром, содержащим пример протокола.
Реализована поддержка элемента формирования отчётной документации со свойствами:
В основе любого документа лежит XHTML-шаблон. XHTML-шаблон это тег "body" WEB-страницы, содержащий статику документа в стандарте XHTML 1.0, и элементы исполняемых инструкций на одном из языков пользовательского программирования OpenSCADA в виде <?dp {procedure} ?>. Результирующий документ формируется путём исполнения процедур и вставки их результата в документ.
Источником значений исполняемых инструкций являются атрибуты виджета этого примитива, а также все механизмы языка пользовательского программирования. Атрибуты могут добавляться пользователем и линковаться на реальные атрибуты параметров или-же являться автономными, значения которых будут формироваться в скрипте виджета. В случае со слинкованными атрибутами могут извлекаться значения из истории, архива.
На рисунке представлен кадр, содержащий пример документа.
Реализована поддержка примитива контейнера, по совместительству выполняющего роль страниц проектов. Данный примитив является единственным элементом-контейнером, который может включать в себя ссылки на кадры из библиотеки, формируя тем самым пользовательские элементы нужной конфигурации. Примитив реализует предусмотренные проектом свойства. Перечислим, по пунктам, свойства данного примитива:
Для конфигурации и управления этим модулем, предоставляется конфигурационная страница интерфейса управления OpenSCADA (Рис.4) где Вы можете осуществлять:
You can deeply customise main interface of the module overriding and adding the HTML and JavaScript code by placing to folder of your OpenSCADA project files WebVisionVCA.html and WebVisionVCA.js which initially you can obtain from the module source code — UI.WebVision.
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:
MEASURES:
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.
На данном этапе модуль может быть использован для построения реальных интерфейсов пользователя с поддержкой основных функций. Однако, отдельные проблемы могут возникать как по причине недоработанности, так и различия браузеров. Сейчас достаточно качественно обеспечена работоспособность на браузерах: Chromium (Google Chrome), FireFox, Opera, Konqueror.
Modules/WebVision/ru - GFDL | March 2024 | OpenSCADA 0.9.7 |