Роман Савоченко, Максим Лисенко (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-технологій), модуль безпосередньої візуалізації 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 та 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), так і вкладаючи всередину віджетів контейнерів.
Рис.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", "Целое", "Вещественное", "Время", "Дата", "Время и Дата". Все виды редактора строки поддерживают подтверждение ввода.
Редактор текста — Представляет редактор плоского текста с подтверждением или отказом от ввода.
Поле флажка — Предоставляет поле бинарного флажка.
Кнопка — Предоставляет кнопку с поддержкой: цвета кнопки, изображения в кнопке и режима фиксации.
Выбор из списка — Предоставляет поле выбора элемента со списка указанных элементов.
Список — Предоставляет поле списка с контролем за текущим элементом.
Дерево — Предоставляет элемент дерева с возможностью выбора элементов (не реализован).
Таблица — Предоставляет элемент таблицы с возможностью выбора ячеек, строк или колонок и редактирования содержимого ячейки (не реализован).
Слайдер — Элемент слайдера (не реализован).
Прогрес-бар — Полоска прогресс-бара (не реализован).
Реализованы режимы: "Включен" и "Активен", а также передача изменений и событий в модель данных СВУ (движок). Для всех реализованных представлений поддерживается активный режим, т.е. элементы могут быть использованы для создания форм пользовательского ввода.
На рисунке представлена часть экрана с кадром, содержащим вышеперечисленные элементы формы.
Реализована поддержка элемента построения диаграмм для типов "График", "Спектр" и "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.