Роман Савоченко, Максим Лысенко (2007-2012), Ксения Яшина (2007-2008)
Описание:
Визуальный рабочий пользовательский интерфейс.
Лицензия:
GPL
Введение
Модуль Vision предоставляет механизм конечной визуализации среды визуализации и управления (СВУ) в систему OpenSCADA. Модуль основан на многоплатформенной библиотеке графического пользовательского интерфейса (GUI) фирмы TrollTech – Qt(http://www.trolltech.com/qt). В своей работе модуль использует данные движка СВУ (модуль VCAEngine).
Среда визуализации и управления (СВУ) является неотъемлемой составляющей SCADA системы. Она применяется на клиентских станциях с целью доступного предоставления информации об объекте управления и выдачи управляющих воздействий на объект. В различных практических случаях и условиях могут применяться СВУ, построенные на различных принципах визуализации. Например, это могут быть библиотеки виджетов Qt, GTK+, wxWidgets или гипертекстовые механизмы на основе технологий HTML, XHTML, XML, CSS и JavaScript, или же сторонние приложения визуализации, реализованные на различных языках программирования: Java, Python и т.д. Любой из этих принципов имеет свои преимущества и недостатки, комбинация которых может стать непреодолимым препятствием в возможности использования СВУ в том или ином практическом случае. Например, технологии вроде библиотеки Qt позволяют создавать высокореактивные СВУ, что несомненно важно для станций оператора управления технологическим процессом (ТП). Однако необходимость инсталляции данного клиентского ПО в отдельных ситуациях может сделать использование его невозможным. С другой стороны Web-технологии не требуют инсталляции на клиентские системы и являются предельно многоплатформенными (достаточно создать ссылку на Web-сервер в любом Web-браузере), что наиболее важно для различных инженерных и административных станций. Но реактивность и надёжность таких интерфейсов ниже, что практически исключает их использования на станциях оператора ТП.
Система OpenSCADA имеет гибкую архитектуру, которая позволяет создавать внешние интерфейсы, в том числе и пользовательские, на любой основе и на любой вкус. Например, среда конфигурации системы OpenSCADA доступна как на Qt библиотеке, так и на Web-основе.
В тоже время независимое создание реализаций СВУ на различной основе может повлечь за собой невозможность использования данных конфигурации одной СВУ в другой, что неудобно и ограничено с пользовательской стороны, а также накладно в плане реализации и последующей поддержки. С целью избежания этих проблем, а также создания в кратчайшие сроки полного спектра различных типов СВУ основан проект создания концепции СВУ?. Результатом этого проекта и стал данный модуль непосредственной визуализации (на основе библиотеки Qt), модуль непосредственной визуализации WebVision и движок СВУ VCAEngine.
1. Назначение
Данный модуль непосредственной визуализации СВУ предназначен для формирования и исполнения интерфейсов СВУ в среде графической библиотеки Qt. Модуль СВУ обеспечивает:
три уровня сложности в формировании интерфейса визуализации, позволяющие органично осваивать и применять инструментарий по методике от простого к сложному:
формирование из шаблонных кадров путём назначения динамики (без графической конфигурации);
графическое формирование новых кадров путём использования готовых элементов визуализации из библиотеки (мнемосхемы);
формирование новых кадров, шаблонных кадров и элементов отображение в библиотеки.
построение интерфейсов визуализации различной сложности, начиная от простых плоских интерфейсов мониторинга и заканчивая полноценными иерархическими интерфейсами, используемыми в SCADA системах;
предоставление различных способов формирования и конфигурации пользовательского интерфейса, основанных на различных интерфейсах графического представления (Qt, Web, Java ...) или же посредством стандартного интерфейса управления системой OpenSCADA;
смену динамики в процессе исполнения;
построение новых шаблонных кадров на уровне пользователя и формирование специализированных под область применения библиотек кадров (например, включение кадров параметров, графиков и других элементов с увязкой их друг с другом), в соответствии с теорией повторного использования и накопления;
построение новых пользовательских элементов визуализации и формирование специализированных под область применения библиотек кадров в соответствии с теорией повторного использования и накопления;
описание логики новых шаблонных кадров и пользовательских элементов визуализации как простыми связями, так и лаконичным, полноценным языком пользовательского программирования;
возможность включения в пользовательские элементы визуализации функций (или кадров вычисления функций) объектной модели OpenSCADA, практически связывая представление с алгоритмом вычисления (например, визуализируя библиотеку моделей аппаратов ТП для последующего визуального построения моделей ТП);
разделение данных пользовательских интерфейсов и интерфейсов представления этих данных, позволяющее строить интерфейс пользователя в одной среде, а исполнять во многих других (Qt, Web, Java ...);
возможность подключение к исполняющемуся интерфейсу для наблюдения и коррекции действий (например, при обучении операторов и контроля в реальном времени за его действиями);
визуальное построение различных схем с наложением логических связей и последующем централизованным исполнением в фоне (визуальное построение и исполнение математических моделей, логических схем, релейных схем и иных процедур);
предоставление функций объектного API в систему OpenSCADA, может использоваться для управления свойствами интерфейса визуализации из пользовательских процедур;
построение серверов кадров, элементов визуализации и проектов интерфейсов визуализации с возможностью обслуживания множественных клиентских соединений;
простая организация клиентских станций на различной основе (Qt, Web, Java ...) с подключением к центральному серверу;
полноценный механизм разделения полномочий между пользователями, позволяющий создавать и исполнять проекты с различными правами доступа к его компонентам;
гибкое формирование правил сигнализаций и уведомления, с учётом и поддержкой различных способов уведомления;
поддержка пользовательского формирования палитры и шрифтовых предпочтений для интерфейса визуализации;
поддержка пользовательского формирования карт событий под различное оборудование управления и пользовательские предпочтения;
поддержка профилей пользователей, позволяющая определять различные свойства интерфейса визуализации (цветовая гамма, шрифтовые особенности, предпочтительные карты событий);
гибкое хранение и распространение библиотек виджетов, кадров и проектов интерфейсов визуализации в БД, поддерживаемых системой OpenSCADA; практически пользователю нужно только зарегистрировать полученную БД с данными.
2. Инструмент графического формирования интерфейса СВУ
Разработка интерфейса СВУ выполняется в одном окне, реализующем многодокументный интерфейс (MDI) (рис. 2.a). Данный подход позволяет одновременно открывать несколько кадров различных размеров. Использованы следующие механизмы управления разработкой: панели инструментов, пункты меню и контекстное меню. Большинство действий дублируются разными механизмами, что позволяет быстро найти инструмент предпочитаемым способом. Навигационные интерфейсы реализованы присоединяемыми окнами. Конфигурация панелей инструментов и присоединяемых окон сохраняется при выходе и восстанавливается при старте, что позволяет настраивать интерфейс под себя.
Рис.2.a. Окно разработки интерфейсов СВУ.
Доступ к основным компонентам СВУ производится посредством пришвартованных окон, на рис.2.a эти окна изображены слева. В этих окнах содержатся:
Дерево библиотек виджетов. С помощью навигатора можно быстро найти нужный виджет или библиотеку и проделать над ними необходимые операции. Реализованы операции добавления, удаления, копирования, настройки виджетов и библиотек, а также очистки и визуального редактирования виджетов. Для гибкого управления поддерживается контекстное меню в составе пунктов:
"Новая библиотека" — создание новой библиотеки.
"Добавить визуальный элемент" — добавление визуального элемента в библиотеку.
"Удалить визуальный элемент" — удаление визуального элемента из библиотеки.
"Очистить визуальный элемент" — очистка визуального элемента с наследованием изменённых свойств или установкой их по умолчанию.
"Опустить изменения визуального элемента" — опуск изменений визуального элемента к его родителю, которые будут использованы другими наследователями.
"Загрузить из БД" — загрузка данных визуального элемента из БД.
"Сохранить в БД" — сохранение данных визуального элемента в БД.
"Обновить библиотеки" — выполняет перечитывание конфигурации и состава библиотек из модели данных.
Дерево страниц проектов. Предусматривает механизм "Перетащи и брось" для формирования пользовательских кадров на основе элементов библиотек. Для гибкого управления поддерживает контекстное меню в составе пунктов:
"Запустить исполнение проекта" — запуск исполнения выбранного проекта.
"Новый проект" — создание нового проекта.
"Добавить визуальный элемент" — добавление визуального элемента в проект/страницу.
"Удалить визуальный элемент" — удаление визуального элемента из проекта/страницы.
"Очистить визуальный элемент" — очистка визуального элемента с наследованием изменённых свойств или установкой их по умолчанию.
"Опустить изменения визуального элемента" — опуск изменений визуального элемента к его родителю, которые будут использованы другими наследователями.
"Загрузить из БД" — загрузка данных визуального элемента из БД.
"Сохранить в БД" — сохранение данных визуального элемента в БД.
"Обновить проекты" — выполняет перечитывание конфигурации и состава проектов из модели данных.
атрибуты виджетов;
внешние связи виджетов.
В основном пространстве рабочего окна размещаются окна страниц проектов, кадров библиотек виджетов, пользовательских элементов и элементов примитивов на момент их визуального редактирования.
Сверху рабочего окна содержится меню. В меню размещены все инструменты, необходимые для разработки интерфейсов СВУ. Меню имеет следующую структуру:
"Файл" — Общие операции.
"Загрузить из БД" — загрузка данных визуального элемента из БД.
"Сохранить в БД" — сохранение данных визуального элемента в БД.
"Закрыть" — закрыть окно редактора.
"Выход" — Выход из системы OpenSCADA.
"Редактирование" — Операции редактирования визуальных элементов.
"Откат изменения визуального элемента" — осуществление отката последнего изменения визуального элемента.
"Повтор изменения визуального элемента" — осуществление повтора изменения визуального элемента.
"Вырезать визуальный элемент" — вырезание/перемещение визуального элемента в момент вставки.
"Копировать визуальный элемент" — копирование визуального элемента в момент вставки.
"Библиотека: {Имя библиотеки}" — управление видимостью панелей библиотек виджетов.
"Помощь" — Помощь по OpenSCADA и модулю Vision.
"Про" — информация про данный модуль.
"Про Qt" — информация о библиотеке Qt, используемой модулем.
"Что это" — запрос описания элементов интерфейса окна.
Сверху, под меню, или по сторонам располагаются панели инструментов. Панели могут быть скрыты или расположены, что управляется в пункте меню "Вид". Существуют следующие панели инструментов:
"Панель визуальных элементов" — Панель управления визуальными элементами:
"Запуск исполнения проекта для выбранного элемента" — производит запуск проекта на исполнение и активацию выбранной страницы проекта.
"Загрузить данные элемента из БД" — выполняет загрузку данных выбранного(ых) элементов из БД.
"Сохранить данные элемента в БД" — выполняет сохранение данных выбранного(ых) элементов в БД.
"Новый проект" — создание нового проекта.
"Новая библиотека" — создание новой библиотеки.
"Добавить визуальный элемент" — добавление визуального элемента в проект.
"Удалить визуальный элемент" — удаление визуального элемента из проекта.
"Возврат курсора" — возврат к курсору для действий над фигурами на виджете.
"Добавить линию" — добавление линии к элементарной фигуре.
"Добавить дугу" — добавление дуги к элементарной фигуре.
"Добавить кривую безье" — добавление кривой безье к элементарной фигуре.
"Включить привязки" — включение привязок у элементарной фигуры.
"Библиотека: {Имя библиотеки}" — Управление видимостью панелей библиотек виджетов. Содержимое панели зависит от содержимого библиотеки и включает кнопки вызова элементов библиотеки.
"QTStarter панель инструментов" — Панель, созданная модулем запуска модулей библиотеки Qt. Содержит кнопки для запуска UI модулей системы OpenSCADA, основанных на библиотеке Qt. С помощью этой панели можно открыть несколько экземпляров окон данного модуля или других модулей.
Внизу окна разработки СВУ располагается строка статуса. С правой стороны строки статуса размещаются индикаторы визуального масштаба редактируемого кадра, режима изменения размера элементов, режима текущей станции движка СВУ и пользователя, от имени которого ведётся разработка интерфейса СВУ. По двойному клику на индикаторе пользователя можно пользователя сменить, введя новое имя и пароль пользователя. В главное поле строки статуса выводятся различные информационные сообщения и сообщения помощи.
Для редактирования свойств визуальных элементов предусмотрено два диалога. Первый диалог позволяет редактировать свойства контейнеров визуальных элементов (библиотек виджетов и проектов), рис. 2.b. Второй диалог для редактирования свойств самих визуальных элементов, рис. 2.d. Изменения, внесённые в диалогах, сразу же попадают в движок СВУ. Для сохранения этих изменения в БД или восстановления из БД необходимо воспользоваться соответствующими инструментами главного окна разработки.
С помощью главной вкладки этого диалога можно установить:
Состояние элемента, а именно: "Включен", родительский виджет, дата и время последней модификации.
Идентификатор, корень, путь, имя и описание элемента.
Диалог редактирования свойств контейнеров визуальных элементов содержит две вкладки: вкладку конфигурации основных параметров (рис.2.b) и вкладку конфигурации mime-данных контейнеров (рис.2.e).
Диалог редактирования свойств визуальных элементов содержит четыре вкладки: вкладку конфигурации основных параметров (рис.2.b), вкладку атрибутов элемента (рис.2.f), вкладку обработки элемента (рис.2.g) и вкладку связей элемента (рис.2.h). На разных уровнях иерархии визуальных элементов какие-то вкладки могут быть доступны, а какие-то нет.
Рис.2.g. Вкладка обработки диалога редактирования свойств визуального элемента.
Рис.2.h. Вкладка связей диалога редактирования свойств визуального элемента.
2.1. Стили
Известно, что человек может иметь индивидуальные особенности в восприятии графической информации. Если эти особенности не учитывать то можно получить неприятие и отторжение пользователя к интерфейсу ВУ. Такое неприятие и отторжение может привести к фатальным ошибкам при управлении ТП, а также травмировать человека постоянной работой с таким интерфейсом. В SCADA системах приняты соглашения, которые регламентируют требования по созданию унифицированного интерфейса ВУ, нормально воспринимаемого большинством людей. При этом практически отсутствует учёт особенностей людей с некоторыми отклонениями.
С целью учесть это обстоятельство и предоставить возможность централизованно и просто изменять визуальные свойства интерфейса проектом предусматривается реализация менеджера стилей интерфейса визуализации.
Пользователем может быть создано множество стилей, каждый из которых будет хранить цветовые, шрифтовые и другие свойства элементов кадра. Простая смена стиля позволит быстро преобразить интерфейс ВУ, а возможность назначения индивидуальной стиля для пользователя позволит учесть его индивидуальные особенности.
Для реализации этой возможности, при создании кадров необходимо для свойств цвета, шрифта и других установить параметр «Конфигурация» (таблицы во вкладке «Обработка») в значение «Из стиля». А в параметре «Конфигурационный шаблон» указать идентификатор поля стиля. Далее это поле автоматически появится в менеджере стилей и его можно будет там менять. Менеджер стилей доступен на странице конфигурации проекта во вкладке «Стили» (рисунок ниже). На этой вкладке можно создавать новые стили, удалять старые, изменять поля стиля и удалять ненужные.
В целом стили доступны, начиная с уровня проектов. На уровне библиотек виджетов можно только определять поля стилей у виджетов. На уровне проекта при выборе стиля включается работа со стилями, что предполагает доступ к полям стилей вместо непосредственных значений атрибутов. Фактически это означает, что при чтении или записи атрибута виджета указанные операции будут осуществляться с соответствующим полем выбранного стиля.
При запуске проекта на исполнения будет использован установленный в проекте стиль. В последствии пользователь может выбрать стиль из перечня доступных. Выбранный пользователем стиль будет сохранён и использован при следующем запуске проекта.
2.2. Связывание с динамикой
Для предоставления актуальных данных в интерфейс визуализации должны использоваться данные подсистемы "Сбор данных (DAQ)". Природа этих данных следующая:
параметры, содержащие некоторое количество атрибутов;
атрибуты параметра могут предоставлять данные четырёх типов: Логический, Целый, Вещественный и Строковый;
атрибуты параметра могут иметь историю (архив);
атрибуты параметра могут быть для чтения, записи и с полным доступом.
Учитывая первый пункт, нужно обеспечить возможность группового назначения ссылки. Для этого используем концепцию логического уровня.
В соответствии с пунктом 2 связи обеспечивают прозрачное преобразование типов и не требуют специальной конфигурации.
Для удовлетворения возможности доступа к архивам в соответствии с пунктом 3 связи выполняют проверку типа атрибута и, в случае подключения к "Адресу", в значение помещается адрес связи.
В терминах СВУ динамические связи и конфигурация динамики являются одним процессом, для описания конфигурации которого предусматривается вкладка "Обработка" виджетов (рис.2.f). Вкладка содержит таблицу конфигурации свойств атрибутов виджета и текст процедуры вычисления виджета.
Кроме полей конфигурации атрибутов в таблице предусматривается колонка "Обработка" для избирательного использования атрибутов виджетов в вычислительной процедуре виджета и колонки "Конфигурация" и "Конфигурационный шаблон" для описания конфигурации связей.
Колонка "Конфигурация" позволяет указать тип связи для атрибута виджета:
Постоянная — во вкладке связей виджета появляется поле указания постоянной, например, особого цвета или заголовка для шаблонных кадров.
Входная связь — связь с динамикой только для чтения.
Выходная связь — связь с динамикой только для записи.
Полная связь — полная связь с динамикой (чтение и запись).
Из стиля — брать значение из стиля проекта.
Колонка "Конфигурационный шаблон" позволяет описать группы динамических атрибутов. Например, это могут быть разные типы параметров подсистемы "DAQ" и другие виджеты интерфейса. При корректном формировании этого поля работает механизм автоматического назначения атрибутов, при указании только параметра подсистемы "DAQ" или виджета интерфейса, что упрощает и ускоряет процесс конфигурации. Значение этой колонки имеет следующий формат:
Для постоянной: прямо значение атрибута.
Для связи: "{параметр}|{идентификатор}", где:
параметр — группа атрибута;
идентификатор — идентификатор атрибута; именно значение в этом поле сопоставляется с атрибутами параметров DAQ при автоматическом связывании после указания групповой связи;
Для стиля: идентификатор-имя поля стиля.
Установка связей может быть нескольких типов, который определяется префиксом:
val: — Прямая загрузка значения через механизм связей. Например, связь: "val:100" загружает в атрибут виджета значение 100. Часто используется в случае отсутствия конечной точки связи с целью прямой установки значения.
prm: — Связь на атрибут параметра или параметр в целом, для группы атрибутов, подсистемы "Сбор данных". Например, связь "prm:/LogicLev/experiment/Pi/var" осуществляет доступ атрибута виджета к атрибуту параметра подсистемы "Сбор данных". Знак "(+)", в конце адреса, указывает на успешную линковку и присутствие целевого объекта. Для атрибутов объектного типа допустим иерархический доступ к конкретному свойству объекта путём указания его пути через символ '#', например: "prm:/LogicLev/experiment/Pi/var#pr1/pr2".
wdg: — Связь на атрибут другого виджета или виджет в целом для группы атрибутов. Например, связь "wdg:/ses_AGLKS/pg_so/pg_1/pg_ggraph/pg_1/a_bordColor" осуществляет доступ атрибута одного виджета к атрибуту другого. Поддерживаются как абсолютные, так и относительные пути связей. Точкой отсчёта адреса абсолютной связи выступает объект корня модуля "VCAEngine", а значит первым элементом абсолютного адреса является идентификатор сеанса или проекта. На стороне сеанса первый элемент опускается, поэтому связи установленные в проекте там работают. Относительные связи берут отсчёт от виджета где связь указана. Специальным элементом относительной связи является элемент вышестоящего узла "..".
arh: — Особый тип связи доступный только для отдельного атрибута типа "Адрес", который позволяет подключиться прямо к архиву значения ("arh:CPU_load"). Может быть полезен для указания архива в качестве источника данных для примитива "Диаграмма".
Обработка связей происходит с периодичностью вычисления виджета в порядке:
получение данных входных связей;
выполнение вычисления скрипта;
передача значений по выходным связям.
На рис. 2.g представлена вкладка связей с возможностью группового и индивидуального назначением атрибутов.
При размещении виджета, содержащего конфигурацию связей, в контейнер виджетов все связи исходного виджета добавляются в список результирующих связей контейнера виджетов.
Из вышесказанного видно, что связи устанавливаются пользователем в процессе конфигурации интерфейса. Однако, для предоставления возможности создания кадров общего назначения с функцией предоставления детализированных данных разных источников одного типа необходим механизм динамической установки связей. Такой механизм предусматривается посредством зарезервированного ключевого идентификатора "<page>" группы атрибутов связей у кадров общего назначения и динамическое назначение связей с идентификатором "<page>" в процессе открытия кадра общего назначения сигналом от другого виджета.
Рассмотрим пример, когда имеется кадр общего назначения "Панель контроля графиком" и множество "Графиков" на разных кадрах. "Панель контроля графиком" имеет связи с шаблонами:
tSek -> "<page>|tSek"
tSize -> "<page>|tSize"
trcPer -> "<page>|trcPer"
valArch -> "<page>|valArch"
При этом каждый виджет "График" имеет атрибуты tSek, tSize, trcPer и valArch. В случае вызова сигнала открытия "Панели контроля графиком" из любого виджета "График" происходит связывания атрибутов "Панели контроля графиком" в соответствии атрибуту, указанному в шаблоне, с атрибутом виджета "График". Как результат, все изменения на "Панели контроля графиком" будут отражаться на графике посредством связи.
В случае наличия у виджета "График" внешних связей на параметры подсистемы "Сбор данных", связи "Панели контроля графиком" будут устанавливаться на внешний источник. Кроме этого, если у "Панели контроля графиком" будут заявлены связи на отсутствующие непосредственно у виджета "График" атрибуты, то будет производится поиск на наличие таких атрибутов у внешнего источника, первого на который установлена прямая связь, выполняя, тем самым, дополнение недостающих связей.
Для наглядного изображения этого механизма приведена таблица 2.2.
Таблица 2.2. Механизм динамической линковки.
Атрибуты "Панели контроля графиком" (шаблон динамической связи)
Атрибуты "Графика"
Атрибуты внешнего "Параметра"
Результирующая связь или значение связующегося атрибута
tSek (<page>|tSek)
tSek
-
"График".tSek
tSize (<page>|tSize)
tSize
-
"График".tSize
trcPer (<page>|trcPer)
trcPer
-
"График".trcPer
valArch (<page>|valArch)
valArch
-
"График".valArch
var (<page>|var)
var
var
"Параметр".var
ed (<page>|ed)
-
ed
"Параметр".ed
max (<page>|max)
-
-
EVAL
min (<page>|min)
-
-
EVAL
3. Исполнение интерфейсов СВУ
Исполнение интерфейса СВУ заключается в запуске нового сеанса проекта или подключении к существующему на уровне движка СВУ. Далее модуль непосредственной визуализации отражает и управляет данными сеанса. Главное окно режима исполнения данного модуля имеет вид, представленный на рис.3.
Реализовано обновление содержимого открытых страниц интерфейса визуализации с периодичностью исполнения сессии проекта. В процессе обновления выполняется:
запрос списка открытых страниц с признаком модификации страницы у модели и проверка соответствия реально открытых страниц этому списку;
запрос ветви данных модифицированных страниц;
обновление содержимого модифицированных страниц и их виджетов в соответствии с полученными измененными данными.
По закрытию "RunTime" окна производится закрытие сессии проекта в движке СВУ.
Механизм запроса только изменённых данных основан на абсолютном счётчике исполнения сессии. При внесении реальных изменений в атрибуты виджетов выполняется запоминание значения этого счётчика, что и позволяет идентифицировать изменённые атрибуты. Такой подход позволяет повысить производительность и уменьшить нагрузку на сетевой обмен в случае доступа к движку СВУ через сеть.
Иерархически модулем предусматривается возможность размещения страниц проекта как на главном окне исполнения (рис.3), так и вкладывая внутрь виджетов контейнеров, а также путем открытия дополнительных окон поверх основного.
При разворачивании главного окна исполнения или переходе в полноэкранный режим выполняется масштабирование содержимого страницы интерфейса СВУ, заполняя всё пространство окна и, позволяя тем самым исполнять проекты, разработанные на одном разрешении экрана, на разных разрешениях.
Главное окно состоит из меню (сверху) строки статуса (снизу) и исполняемого содержимого сеанса между ними. Меню в режиме исполнения позиционируется как инструмент администратора OpenSCADA, содержащий общесистемные функции, и доступно только привилегированным пользователям, состоящим в группе "root". Меню имеет следующую структуру:
"Весь экран" — переключатель полноэкранного режима исполнения.
"Помощь" — Помощь по OpenSCADA и модулю Vision.
"Про" — информация про данный модуль.
"Про Qt" — информация о библиотеке Qt, используемой модулем.
"QTStarter панель инструментов" — Панель, созданная модулем запуска модулей библиотеки Qt. Содержит кнопки для запуска UI модулей системы OpenSCADA, основанных на библиотеке Qt. С помощью этой панели можно открыть несколько экземпляров окон данного модуля или других модулей.
С правой стороны строки статуса размещаются индикаторы часов, текущей станции движка СВУ и пользователя, от имени которого исполняется интерфейс СВУ, а также панель с кнопками квитации нарушений, печати и экспорта. По двойному клику на индикаторе пользователя можно пользователя сменить, введя новое имя и пароль пользователя, а по клику на кнопки квитации — сквитировать нарушения полностью или только нужное уведомление. В главное поле строки статуса выводятся различные информационные сообщения и сообщения помощи.
Режим исполнения (Run-time) в значительной степени поддерживает многоязычность, которая зависит от языка выбранного пользователя или окна исполнения, т.е. если Вы измените пользователя то получите интерфейс исполнения на другом языке этого пользователя. Эта функция включается динамическим переводом сообщений OpenSCADA.
Рис.3. Главное окно режима исполнения.
4. Представление базовых элементов (примитивов)
В данной версии этого модуля реализованы не все образы примитивов заложенные этим проектом. В общем же проектом заложены примитивы:
Id
Наименование
Функция
ElFigure
Элементарные графические фигуры
Примитив является основой для отрисовки элементарных графических фигур со всевозможной комбинацией их в одном объекте. Предусматривается поддержка следующих элементарных фигур:
Линия.
Дуга.
Кривая безье.
Заливка замкнутого пространства.
Для всех фигур, содержащихся в виджете, устанавливаются единые свойства толщины, цвета и т.д., но это не исключает возможность указания вышеперечисленных атрибутов для каждой фигуры отдельно.
FormEl
Элементы формы
Включает поддержку стандартных компонентов формы:
Редактирование строки.
Редактирование текста.
Флажок.
Кнопка.
Выбор из списка.
Список.
Дерево.
Таблица.
Слайдер.
Строка прокрутки.
Text
Текст
Элемент текста(метки). Характеризуется типом шрифта, цветом, ориентацией и выравниванием.
Media
Медиа
Элемент отображения растровых и векторных изображений различных форматов, проигрывания анимированных изображений, проигрывание аудио фрагментов и просмотр видео-фрагментов.
Diagram
Диаграмма
Элемент диаграммы с поддержкой возможности отображения нескольких потоков трендов, частотного спектра, XY диаграмм реального времени, ... .
Protocol
Протокол
Элемент протокола, визуализатора системных сообщений с поддержкой несколько режимов работы.
Document
Документ
Элемент формирования отчётов, журналов и другой документации на основе доступных в системе данных.
Box
Контейнер
Содержит механизм размещения-включения других виджетов с целью формирования новых, более сложных, виджетов и страниц конечной визуализации.
Function, в планах
Функция API объектной модели OpenSCADA
Невизуальный, на стороне исполнения, виджет, позволяющий включать вычислительные функции объектной модели OpenSCADA в СВУ.
Для всех перечисленных и реализованных примитивов, кроме "FormEl", этот модуль поддерживает условную генерацию событий от прозрачности указанного пиксела, боле нуля (не полная прозрачность).
Модулем визуализатора предоставляется и используется ряд специфических атрибутов, общего характера, информация о которых приведена в таблице. Эти атрибуты автоматически создаются визуализатором, при их отсутствии, в момент первого запуска.
Id (область)
Имя
Назначение
statLine (главная страница)
Элементы строки статусов
Текстовое поле с описанием элементов строки статуса пользователя в формате строки "{Id}:{Label}:{ToolTip}:{Color}:{Img}", где:
"Id" — идентификатор, используется также для формирования событий от лица виджета "stIt_{Id}".
"Label" — визуальная метка элемента статуса.
"ToolTip" — всплывающая подсказка около элемента.
"Color" — цвет метки.
"Img" — изображение элемента статуса, вместо метки.
Изменение пользователя или вызов диалога для его выбора. Варианты значения:
"*" — вызов диалога выбора пользователя;
"$" — изменение пользователя на типового;
"{пользователь}" — прямое изменение на пользователь если он доступен.
Более детально рассмотрим реализацию каждого примитива.
4.1. Примитив элементарная фигура (ElFigure)
Реализована поддержка элементарных фигур: линии, эллиптической дуги, кривой Безье и заливка замкнутых контуров цветом и/или изображением. Для элементарных фигур реализованы следующие операции:
создание/удаление фигур;
копирование фигур;
перемещение и изменение размеров фигур с помощью мыши и клавиатуры;
возможность связывать элементарные фигуры друг с другом, получая более сложные, для которых доступны все свойства исходных элементарных фигур;
возможность одновременного перемещения нескольких фигур;
генерация событий клавиш мыши в момент клика мышью на залитые контура;
масштабирование;
поворот;
отражение, частично.
На рисунке представлена часть экрана с кадром, содержащим элементарные фигуры.
Фигуры, лежащие в основе данного виджета, содержат точки(начальная и конечная), которые могут стыковаться с соответствующими точками других фигур, и точки, с помощью которых изменяется геометрия фигуры.
Добавить фигуру можно с помощью мыши:
Выбрать желаемую фигуру из контекстного меню.
Задать с помощью левой кнопки мыши начальную и конечную точки (для линии при удерживании клавиши SHIFT происходит ортогональная её отрисовка).
Удалить фигуру(ы) можно путём нажатия кнопки "Del", имея выделенную(ые) фигуру(ы).
Скопировать фигуру(ы) можно путём нажатия комбинации клавиш "Ctrl" + "C", имея выделенную(ые) фигуру(ы).
Передвинуть/изменить габариты фигуры можно с помощью мыши или клавиатуры:
Выделить фигуру, клацнув по ней левой кнопкой мыши.
Перетащить (с помощью мыши или управляющих клавиш) фигуру или одну из её контрольных точек в желаемое место и отпустить кнопку мыши(клавишу).
Существует возможность перемещать несколько выделенных фигур, выбранных при помощи удержания "Ctrl"(эта опция работает при отключенной кнопке Connetcions(Привязки)) либо при помощи выделения мышкой.
Связать фигуры друг с другом можно следующим образом:
Нажать кнопку Connections.
Выделить одну из фигур и переместить её начальную или конечную точку к желаемой начальной или конечной точке другой фигуры так, чтобы она попадала в появившуюся окружность. Связанные фигуры перемещаются также как и отдельные, общая точка перемещается для всех фигур, к которым она относится(приоритет отдается дуге, две дуги не могут быть соединены непосредственно друг с другом).
Залить замкнутый контур из фигур можно следующим образом:
Нажать кнопку Connections.
Создать замкнутый контур.
Два раза клацнуть мышкой внутри его.
Удалить заливку замкнутого контура можно из контекстного меню, клацнув правой кнопкой манипулятора "мышь" по заливке; разорвав контур заливки; двойным кликом левой кнопки манипулятора "мышь" по уже имеющемуся залитому контуру.
Поворот фигуры осуществляется вокруг центра виджета.
4.2. Примитив текста (Text)
Реализована поддержка элемента текста со свойствами:
Шрифт со свойствами: типа/класса шрифта, размера, усиления, наклонности, подчёркивания и перечёркивания.
Цвет текста.
Ориентация текста.
Автоматический перенос по словам.
Выравнивание текста по горизонтали и вертикали со всеми вариантами.
Отображение фона в виде цвета и/или изображения.
Отображение бордюра вокруг текста с указанным цветом, шириной и стилем.
Формирование текста из атрибутов различного типа и свойств.
На рисунке представлена часть экрана с кадром, содержащим примеры текста с использованием различных параметров.
4.3. Примитив элементов формы (FormEl)
Реализована поддержка элементов формы на кадрах СВУ. Реализованы заложенные свойства, включая следующие элементы формы:
Редактор строки — Представлено следующими видами: "Текст", "Combo", "Целое", "Вещественное", "Время", "Дата", "Время и Дата". Все виды редактора строки поддерживают подтверждение ввода.
Редактор текста — Представляет редактор плоского текста с подтверждением или отказом от ввода.
Поле флажка — Предоставляет поле бинарного флажка.
Кнопка — Предоставляет кнопку с поддержкой: цвета кнопки, изображения в кнопке и режима фиксации.
Выбор из списка — Предоставляет поле выбора элемента со списка указанных элементов.
Список — Предоставляет поле списка с контролем за текущим элементом.
Дерево — Предоставляет элемент дерева с возможностью выбора элементов.
Таблица — Предоставляет элемент таблицы с возможностью выбора ячеек, строк или колонок и редактирования содержимого ячейки.
Слайдер — Элемент слайдера.
Прогрес-бар — Полоска прогресс-бара.
Реализованы режимы: «Включен» и «Активен», а также передача изменений и событий в модель данных СВУ (движок).
На рисунке представлена часть экрана с кадром, содержащим вышеперечисленные элементы формы.
Реализована поддержка элемента построения диаграмм для типов "График", "Спектр" и "XY" со свойствами:
Общие свойства типов диаграммы "График", "Спектр" и "XY":
возможность выбора архиватора, буфера архива или всех данных при работе с архивными данными;
адаптация графика параметра к реальным значениям данных путём подстройки шкалы, в случае отсутствия прямо указанного диапазона значений;
управление масштабом шкалы значений путём увеличения/уменьшения и смещения;
широкий диапазон масштабирования и адаптации шкалы времени с автоматическим приведением запрашиваемых данных к качеству достаточному для отображения, или нужному для экспорта — указанием предельного количества измерений в пикселе;
отображение размерной сетки и маркеров по горизонтали и вертикали с адаптацией к диапазону отображения;
следящий режим за текущим временем путём периодического обновления и смещения времени диаграммы к текущему времени (времени последних данных в буфере архива);
горизонтальный слайдинг/скольжение с помощью мышь;
масштабирование участка обрамлённого окном, мышью.
Свойства типа диаграммы "График":
построение графиков до 100 параметров на одной диаграмме в процентной шкале и возможностью отображения в собственной шкале выбранных параметров;
построение графика для: текущих, архивных и пользовательских данных;
формирования промежуточного буфера отображения для текущих значений;
поддержка активного режима с курсором и получением значений под курсором;
возможность построения графиков как в линейной, так и логарифмической шкале значений.
Свойства типа диаграммы "Спектр":
построение графиков частотного спектра параметров до 100 на одной диаграмме в процентной шкале и возможностью отображения в собственной шкале выбранных параметров;
построение графика для: архивных и пользовательских данных;
поддержка активного режима с курсором и получением значений под курсором;
Свойства типа диаграммы "XY":
построение XY графиков параметров до 50 на одной диаграмме в процентной шкале и возможностью отображения в собственной шкале выбранных параметров;
построение графика для: текущих, архивных и пользовательских данных;
формирования промежуточного буфера отображения для текущих значений;
параметры распределяются парами на график, где чётные по оси Y (0,2,4...) и нечётные по оси X (1,3,5...);
возможность построения графиков как в линейной, так и логарифмической шкале значений.
Модулем визуализатора предоставляется и использует ряд специфических атрибутов данного примитива, информация о которых приведена в таблице.
Id
Имя
Назначение
sclWin
Масштабирование участка обрамлённого окном, мышью
Логический тип атрибута, созадаваемый вручную пользователем в случае надобности. Для значения "истина" включается режим масштабирования участка тренда обрамлённого окном с помощью мыши.
На рисунке представлена часть экрана с кадром, содержащим примеры диаграмм: "График", "Спектр" и "XY".
4.6. Примитив формирования протокола (Protocol)
Реализована поддержка элемента формирования протокола со свойствами:
Формирование протокола из архива сообщений за указанное время и глубину.
Запрос данных из указанных архиваторов сообщений.
Выборка данных из архивов по уровню важности и шаблону категории сообщений.
Поддержка режима слежения за появлением сообщений в архиве сообщений.
На рисунке представлена часть экрана с кадром, содержащим пример протокола.
4.7. Примитив формирования отчётной документации (Document)
Реализована поддержка элемента формирования отчётной документации со свойствами:
Гибкое формирование структуры документа на основе языка гипертекстовой разметки. Это предоставляет поддержку широких возможностей форматирования документов.
Формирование документов по команде или по расписанию. Необходимо для формирования отчётной документации в архив с последующим просмотром архива.
Формирование документа в режиме реального времени. Для формирования документов полностью динамически и на основе архивов за указанное время.
Использование атрибутов виджета для передачи значений и адресов на архивы в документ. Позволяет использовать виджет документа как шаблон при формировании отчётов с другими входными данными.
В основе любого документа лежит XHTML-шаблон. XHTML-шаблон это тег "body" WEB-страницы, содержащий статику документа в стандарте XHTML 1.0, и элементы исполняемых инструкций на одном из языков пользовательского программирования OpenSCADA в виде <?dp {procedure} ?>. Результирующий документ формируется путём исполнения процедур и вставки их результата в документ.
Источником значений исполняемых инструкций являются атрибуты виджета этого примитива, а также все механизмы языка пользовательского программирования. Атрибуты могут добавляться пользователем и линковаться на реальные атрибуты параметров или-же являться автономными, значения которых будут формироваться в скрипте виджета. В случае со слинкованными атрибутами могут извлекаться значения из истории, архива.
На рисунке представлен кадр, содержащий пример документа.
4.8. Примитив контейнера (Box)
Реализована поддержка примитива контейнера, по совместительству выполняющего роль страниц проектов. Данный примитив является единственным элементом-контейнером, который может включать в себя ссылки на кадры из библиотеки, формируя тем самым пользовательские элементы нужной конфигурации. Примитив реализует предусмотренные проектом свойства. Перечислим по пунктам свойства данного примитива:
Контейнер — Позволяет формировать нужные объекты путём группировки базовых в рамках данного примитива.
Страница — Элементы, построенные на данном примитиве, могут выполнять роль страницы пользовательского интерфейса.
Контейнер страниц — Свойство замещения собственного содержимого другой страницей в процессе исполнения. Используется для формирования фреймов на страницах пользовательского интерфейса. Например, главная страница традиционной SCADA системы с объектами сигнализации строится именно таким образом.
Фон — Поддерживает возможность указания фона в виде цвета или изображения.
Бордюр — Поддерживает возможность изображения бордюра с указанным цветом, толщиной и стилем.
Пример редактирования кадра, основанного на данном примитиве, приведен на рис. 2.a, а на рис. 3 изображена страница, содержащая контейнер страниц, построенный на основе данного примитива.
Для настройки собственного поведения в неочевидных ситуациях модулем предоставляется возможность настройки отдельных параметров посредством интерфейса управления OpenSCADA (рис. 6). Таковыми параметрами являются:
Состояние модуля: исполнение, доступное количество экранов в библиотеке Qt и перечень открытых основных окон.
Имя удалённой OpenSCADA станции с движком визуализации СВУ и ссылка на страницу конфигурации перечня внешних OpenSCADA станций.
Начальный пользователь конфигуратора — указывает, от имени какого пользователя открывать конфигуратор без запроса пароля, для локальной станции. Для удалённой станции указывает на пользователя, отличного от типового, указанного в конфигурации хоста.
Пароль пользователя (удалённая станция) — пароль пользователя, отличного от типового, указанного в конфигурации хоста.
Время восстановления подключения, в секундах — указывает на время повтора восстановления потерянного удалённого подключения.
Время жизни страниц в кеше. Визуализатор осуществляет ускорения работы пользовательского интерфейса путём помещения ранее открытых страниц в кеш, для контроля времени хранения страниц в котором данное свойство и предназначено. Указание нулевого значение вообще исключит очистку кеша.
Проекты, через символ разделителя ';', для запуска их автоматического исполнения с запуском модуля. Для предоставления возможности указания открытия окна исполнения проекта на нужном дисплее, много дисплейных систем, предусмотрен формат записи имени проекта "PrjName-1", где 1 — номер целевого дисплея. Для подключения к фоновому или другому открытому сеансу использовать "ses_{SesID}".
Функция выбора дисплея возможна для невиртуального и не повторения рабочего стола, т.е. при использовании xinerma или NVidia в соответствующем режиме. Технически, функция Qt screen() должна возвращать разные виджеты дисплея для их номеров.
Выход при закрытии последнего исполняющегося проекта — полезно для решений сразу запускающихся на интерфейсе исполнения проекта.