OpenSCADAWiki: Doc/ Vision
 
English (1 Kb) English
Ukrainian (1 Kb) Українська

 (2 Kb) Страница заморожена, актуальная тут.

Модуль "Vision" подсистемы "Пользовательские интерфейсы"

Модуль: Vision
Имя: Рабочий пользовательский интерфейс (Qt)
Тип: Пользовательские интерфейсы
Источник: ui_Vision.so
Версия: 4.6
Автор: Роман Савоченко, Максим Лысенко (2007-2012), Ксения Яшина (2007-2008)
Описание: Визуальный рабочий пользовательский интерфейс.
Лицензия: GPL

Contents

Введение

Модуль 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. Модуль СВУ обеспечивает:

2. Инструмент графического формирования интерфейса СВУ

Разработка интерфейса СВУ выполняется в одном окне, реализующем многодокументный интерфейс (MDI) (рис. 2.a). Данный подход позволяет одновременно открывать несколько кадров различных размеров. Использованы следующие механизмы управления разработкой: панели инструментов, пункты меню и контекстное меню. Большинство действий дублируются разными механизмами, что позволяет быстро найти инструмент предпочитаемым способом. Навигационные интерфейсы реализованы присоединяемыми окнами. Конфигурация панелей инструментов и присоединяемых окон сохраняется при выходе и восстанавливается при старте, что позволяет настраивать интерфейс под себя.

Окно разработки интерфейсов СВУ. (137 Kb)
Рис.2.a. Окно разработки интерфейсов СВУ.


Доступ к основным компонентам СВУ производится посредством пришвартованных окон, на рис.2.a эти окна изображены слева. В этих окнах содержатся:

В основном пространстве рабочего окна размещаются окна страниц проектов, кадров библиотек виджетов, пользовательских элементов и элементов примитивов на момент их визуального редактирования.

Сверху рабочего окна содержится меню. В меню размещены все инструменты, необходимые для разработки интерфейсов СВУ. Меню имеет следующую структуру:

Сверху, под меню, или по сторонам располагаются панели инструментов. Панели могут быть скрыты или расположены, что управляется в пункте меню "Вид". Существуют следующие панели инструментов:

Внизу окна разработки СВУ располагается строка статуса. С правой стороны строки статуса размещаются индикаторы визуального масштаба редактируемого кадра, режима изменения размера элементов, режима текущей станции движка СВУ и пользователя, от имени которого ведётся разработка интерфейса СВУ. По двойному клику на индикаторе пользователя можно пользователя сменить, введя новое имя и пароль пользователя. В главное поле строки статуса выводятся различные информационные сообщения и сообщения помощи.

Для редактирования свойств визуальных элементов предусмотрено два диалога. Первый диалог позволяет редактировать свойства контейнеров визуальных элементов (библиотек виджетов и проектов), рис. 2.b. Второй диалог для редактирования свойств самих визуальных элементов, рис. 2.d. Изменения, внесённые в диалогах, сразу же попадают в движок СВУ. Для сохранения этих изменения в БД или восстановления из БД необходимо воспользоваться соответствующими инструментами главного окна разработки.

Диалог редактирования свойств контейнеров визуальных элементов. (42 Kb)
Рис.2.b. Диалог редактирования свойств контейнеров визуальных элементов.


С помощью главной вкладки этого диалога можно установить:

Вкладка "Диагностика" проекта. (61 Kb)
Рис.2.с. Вкладка "Диагностика" проекта.


В этой вкладке Вы можете выбрать время, или освежить к текущему, и размер для получения диагностических сообщений.

Диалог редактирования свойств визуальных элементов. (33 Kb)
Рис.2.d. Диалог редактирования свойств визуальных элементов.


С помощью главной вкладки этого диалога можно установить:

Диалог редактирования свойств контейнеров визуальных элементов содержит две вкладки: вкладку конфигурации основных параметров (рис.2.b) и вкладку конфигурации mime-данных контейнеров (рис.2.e).

Вкладка редактирования mime-данных контейнера визуальных элементов. (39 Kb)
Рис.2.e. Вкладка редактирования mime-данных контейнера визуальных элементов.


Диалог редактирования свойств визуальных элементов содержит четыре вкладки: вкладку конфигурации основных параметров (рис.2.b), вкладку атрибутов элемента (рис.2.f), вкладку обработки элемента (рис.2.g) и вкладку связей элемента (рис.2.h). На разных уровнях иерархии визуальных элементов какие-то вкладки могут быть доступны, а какие-то нет.

Вкладка атрибутов диалога редактирования свойств визуального элемента. (50 Kb)
Рис.2.f. Вкладка атрибутов диалога редактирования свойств визуального элемента.


Вкладка обработки диалога редактирования свойств визуального элемента. (72 Kb)
Рис.2.g. Вкладка обработки диалога редактирования свойств визуального элемента.


Вкладка связей, диалога редактирования свойств визуального элемента. (55 Kb)
Рис.2.h. Вкладка связей диалога редактирования свойств визуального элемента.

2.1. Стили


Известно, что человек может иметь индивидуальные особенности в восприятии графической информации. Если эти особенности не учитывать то можно получить неприятие и отторжение пользователя к интерфейсу ВУ. Такое неприятие и отторжение может привести к фатальным ошибкам при управлении ТП, а также травмировать человека постоянной работой с таким интерфейсом. В SCADA системах приняты соглашения, которые регламентируют требования по созданию унифицированного интерфейса ВУ, нормально воспринимаемого большинством людей. При этом практически отсутствует учёт особенностей людей с некоторыми отклонениями.

С целью учесть это обстоятельство и предоставить возможность централизованно и просто изменять визуальные свойства интерфейса проектом предусматривается реализация менеджера стилей интерфейса визуализации.

Пользователем может быть создано множество стилей, каждый из которых будет хранить цветовые, шрифтовые и другие свойства элементов кадра. Простая смена стиля позволит быстро преобразить интерфейс ВУ, а возможность назначения индивидуальной стиля для пользователя позволит учесть его индивидуальные особенности.

Для реализации этой возможности, при создании кадров необходимо для свойств цвета, шрифта и других установить параметр «Конфигурация» (таблицы во вкладке «Обработка») в значение «Из стиля». А в параметре «Конфигурационный шаблон» указать идентификатор поля стиля. Далее это поле автоматически появится в менеджере стилей и его можно будет там менять. Менеджер стилей доступен на странице конфигурации проекта во вкладке «Стили» (рисунок ниже). На этой вкладке можно создавать новые стили, удалять старые, изменять поля стиля и удалять ненужные.

Вкладка "Стили" страницы конфигурации проекта. (19 Kb)


В целом стили доступны, начиная с уровня проектов. На уровне библиотек виджетов можно только определять поля стилей у виджетов. На уровне проекта при выборе стиля включается работа со стилями, что предполагает доступ к полям стилей вместо непосредственных значений атрибутов. Фактически это означает, что при чтении или записи атрибута виджета указанные операции будут осуществляться с соответствующим полем выбранного стиля.

При запуске проекта на исполнения будет использован установленный в проекте стиль. В последствии пользователь может выбрать стиль из перечня доступных. Выбранный пользователем стиль будет сохранён и использован при следующем запуске проекта.

2.2. Связывание с динамикой

Для предоставления актуальных данных в интерфейс визуализации должны использоваться данные подсистемы "Сбор данных (DAQ)". Природа этих данных следующая:
  1. параметры, содержащие некоторое количество атрибутов;
  2. атрибуты параметра могут предоставлять данные четырёх типов: Логический, Целый, Вещественный и Строковый;
  3. атрибуты параметра могут иметь историю (архив);
  4. атрибуты параметра могут быть для чтения, записи и с полным доступом.

Учитывая первый пункт, нужно обеспечить возможность группового назначения ссылки. Для этого используем концепцию логического уровня.

В соответствии с пунктом 2 связи обеспечивают прозрачное преобразование типов и не требуют специальной конфигурации.

Для удовлетворения возможности доступа к архивам в соответствии с пунктом 3 связи выполняют проверку типа атрибута и, в случае подключения к "Адресу", в значение помещается адрес связи.

В терминах СВУ динамические связи и конфигурация динамики являются одним процессом, для описания конфигурации которого предусматривается вкладка "Обработка" виджетов (рис.2.f). Вкладка содержит таблицу конфигурации свойств атрибутов виджета и текст процедуры вычисления виджета.

Кроме полей конфигурации атрибутов в таблице предусматривается колонка "Обработка" для избирательного использования атрибутов виджетов в вычислительной процедуре виджета и колонки "Конфигурация" и "Конфигурационный шаблон" для описания конфигурации связей.

Колонка "Конфигурация" позволяет указать тип связи для атрибута виджета:

Колонка "Конфигурационный шаблон" позволяет описать группы динамических атрибутов. Например, это могут быть разные типы параметров подсистемы "DAQ" и другие виджеты интерфейса. При корректном формировании этого поля работает механизм автоматического назначения атрибутов, при указании только параметра подсистемы "DAQ" или виджета интерфейса, что упрощает и ускоряет процесс конфигурации. Значение этой колонки имеет следующий формат:

Установка связей может быть нескольких типов, который определяется префиксом:

Обработка связей происходит с периодичностью вычисления виджета в порядке:

На рис. 2.g представлена вкладка связей с возможностью группового и индивидуального назначением атрибутов.

При размещении виджета, содержащего конфигурацию связей, в контейнер виджетов все связи исходного виджета добавляются в список результирующих связей контейнера виджетов.

Из вышесказанного видно, что связи устанавливаются пользователем в процессе конфигурации интерфейса. Однако, для предоставления возможности создания кадров общего назначения с функцией предоставления детализированных данных разных источников одного типа необходим механизм динамической установки связей. Такой механизм предусматривается посредством зарезервированного ключевого идентификатора "<page>" группы атрибутов связей у кадров общего назначения и динамическое назначение связей с идентификатором "<page>" в процессе открытия кадра общего назначения сигналом от другого виджета.

Рассмотрим пример, когда имеется кадр общего назначения "Панель контроля графиком" и множество "Графиков" на разных кадрах. "Панель контроля графиком" имеет связи с шаблонами:

При этом каждый виджет "График" имеет атрибуты 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". Меню имеет следующую структуру:

С правой стороны строки статуса размещаются индикаторы часов, текущей станции движка СВУ и пользователя, от имени которого исполняется интерфейс СВУ, а также панель с кнопками квитации нарушений, печати и экспорта. По двойному клику на индикаторе пользователя можно пользователя сменить, введя новое имя и пароль пользователя, а по клику на кнопки квитации — сквитировать нарушения полностью или только нужное уведомление. В главное поле строки статуса выводятся различные информационные сообщения и сообщения помощи.

Режим исполнения (Run-time) в значительной степени поддерживает многоязычность, которая зависит от языка выбранного пользователя или окна исполнения, т.е. если Вы измените пользователя то получите интерфейс исполнения на другом языке этого пользователя. Эта функция включается динамическим переводом сообщений OpenSCADA.

Главное окно режима исполнения. (107 Kb)
Рис.3. Главное окно режима исполнения.

4. Представление базовых элементов (примитивов)

В данной версии этого модуля реализованы не все образы примитивов заложенные этим проектом. В общем же проектом заложены примитивы:
Id Наименование Функция
ElFigure Элементарные графические фигуры Примитив является основой для отрисовки элементарных графических фигур со всевозможной комбинацией их в одном объекте. Предусматривается поддержка следующих элементарных фигур:
  • Линия.
  • Дуга.
  • Кривая безье.
  • Заливка замкнутого пространства.
Для всех фигур, содержащихся в виджете, устанавливаются единые свойства толщины, цвета и т.д., но это не исключает возможность указания вышеперечисленных атрибутов для каждой фигуры отдельно.
FormEl Элементы формы Включает поддержку стандартных компонентов формы:
  • Редактирование строки.
  • Редактирование текста.
  • Флажок.
  • Кнопка.
  • Выбор из списка.
  • Список.
  • Дерево.
  • Таблица.
  • Слайдер.
  • Строка прокрутки.
Text Текст Элемент текста(метки). Характеризуется типом шрифта, цветом, ориентацией и выравниванием.
Media Медиа Элемент отображения растровых и векторных изображений различных форматов, проигрывания анимированных изображений, проигрывание аудио фрагментов и просмотр видео-фрагментов.
Diagram Диаграмма Элемент диаграммы с поддержкой возможности отображения нескольких потоков трендов, частотного спектра, XY диаграмм реального времени, ... .
Protocol Протокол Элемент протокола, визуализатора системных сообщений с поддержкой несколько режимов работы.
Document Документ Элемент формирования отчётов, журналов и другой документации на основе доступных в системе данных.
Box Контейнер Содержит механизм размещения-включения других виджетов с целью формирования новых, более сложных, виджетов и страниц конечной визуализации.
Function, в планах Функция API объектной модели OpenSCADA Невизуальный, на стороне исполнения, виджет, позволяющий включать вычислительные функции объектной модели OpenSCADA в СВУ.

 (2 Kb) Для всех перечисленных и реализованных примитивов, кроме "FormEl", этот модуль поддерживает условную генерацию событий от прозрачности указанного пиксела, боле нуля (не полная прозрачность).

Модулем визуализатора предоставляется и используется ряд специфических атрибутов, общего характера, информация о которых приведена в таблице. Эти атрибуты автоматически создаются визуализатором, при их отсутствии, в момент первого запуска.
Id (область) Имя Назначение
statLine (главная страница) Элементы строки статусов Текстовое поле с описанием элементов строки статуса пользователя в формате строки "{Id}:{Label}:{ToolTip}:{Color}:{Img}", где:
  • "Id" — идентификатор, используется также для формирования событий от лица виджета "stIt_{Id}".
  • "Label" — визуальная метка элемента статуса.
  • "ToolTip" — всплывающая подсказка около элемента.
  • "Color" — цвет метки.
  • "Img" — изображение элемента статуса, вместо метки.
runWin (главная страница) Окно исполнения Установка режима исполнения главного окна:
  • "Оригинальный размер (0)".
  • "Максимизировать (1)".
  • "На весь экран (2)".
keepAspectRatio (главная страница) Сохранять пропорцию при масштабировании Сохранять пропорцию страниц при масштабировании.
stBarNoShow (главная страница) Не показывать строку статуса Скрыть строку статуса главного окна.
winPosCntrSave (главная страница) Управление и сохранение положений окон Включение управления и сохранения положения окон.
userSetVis (главная страница, создаётся вручную строкового типа) Установка пользователя Изменение пользователя или вызов диалога для его выбора. Варианты значения:
  • "*" — вызов диалога выбора пользователя;
  • "$" — изменение пользователя на типового;
  • "{пользователь}" — прямое изменение на пользователь если он доступен.

Более детально рассмотрим реализацию каждого примитива.

4.1. Примитив элементарная фигура (ElFigure)


Реализована поддержка элементарных фигур: линии, эллиптической дуги, кривой Безье и заливка замкнутых контуров цветом и/или изображением. Для элементарных фигур реализованы следующие операции:

На рисунке представлена часть экрана с кадром, содержащим элементарные фигуры.

Реализация элементарных фигур в Vision(new). (10 Kb)


Фигуры, лежащие в основе данного виджета, содержат точки(начальная и конечная), которые могут стыковаться с соответствующими точками других фигур, и точки, с помощью которых изменяется геометрия фигуры.

Добавить фигуру можно с помощью мыши:
  1. Выбрать желаемую фигуру из контекстного меню.
  2. Задать с помощью левой кнопки мыши начальную и конечную точки (для линии при удерживании клавиши SHIFT происходит ортогональная её отрисовка).

Удалить фигуру(ы) можно путём нажатия кнопки "Del", имея выделенную(ые) фигуру(ы).

Скопировать фигуру(ы) можно путём нажатия комбинации клавиш "Ctrl" + "C", имея выделенную(ые) фигуру(ы).

Передвинуть/изменить габариты фигуры можно с помощью мыши или клавиатуры:
  1. Выделить фигуру, клацнув по ней левой кнопкой мыши.
  2. Перетащить (с помощью мыши или управляющих клавиш) фигуру или одну из её контрольных точек в желаемое место и отпустить кнопку мыши(клавишу).

Существует возможность перемещать несколько выделенных фигур, выбранных при помощи удержания "Ctrl"(эта опция работает при отключенной кнопке Connetcions(Привязки)) либо при помощи выделения мышкой.

Связать фигуры друг с другом можно следующим образом:
  1. Нажать кнопку Connections.
  2. Выделить одну из фигур и переместить её начальную или конечную точку к желаемой начальной или конечной точке другой фигуры так, чтобы она попадала в появившуюся окружность. Связанные фигуры перемещаются также как и отдельные, общая точка перемещается для всех фигур, к которым она относится(приоритет отдается дуге, две дуги не могут быть соединены непосредственно друг с другом).

Залить замкнутый контур из фигур можно следующим образом:
  1. Нажать кнопку Connections.
  2. Создать замкнутый контур.
  3. Два раза клацнуть мышкой внутри его.

Удалить заливку замкнутого контура можно из контекстного меню, клацнув правой кнопкой манипулятора "мышь" по заливке; разорвав контур заливки; двойным кликом левой кнопки манипулятора "мышь" по уже имеющемуся залитому контуру.

Поворот фигуры осуществляется вокруг центра виджета.

4.2. Примитив текста (Text)


Реализована поддержка элемента текста со свойствами:

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

Реализация базового элемента текста в Vision. (12 Kb)


4.3. Примитив элементов формы (FormEl)


Реализована поддержка элементов формы на кадрах СВУ. Реализованы заложенные свойства, включая следующие элементы формы:

Реализованы режимы: «Включен» и «Активен», а также передача изменений и событий в модель данных СВУ (движок).

На рисунке представлена часть экрана с кадром, содержащим вышеперечисленные элементы формы.

Реализация элементов формы в Vision. (25 Kb)


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


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

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

Реализация базового элемента отображения медиа-материалов в Vision. (26 Kb)


4.5. Примитив построения диаграмм/графиков (Diagram)


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

Модулем визуализатора предоставляется и использует ряд специфических атрибутов данного примитива, информация о которых приведена в таблице.
Id Имя Назначение
sclWin Масштабирование участка обрамлённого окном, мышью Логический тип атрибута, созадаваемый вручную пользователем в случае надобности. Для значения "истина" включается режим масштабирования участка тренда обрамлённого окном с помощью мыши.

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

Реализация базового элемента отображения диаграммы в Vision. (10 Kb)


4.6. Примитив формирования протокола (Protocol)


Реализована поддержка элемента формирования протокола со свойствами:

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

Реализация базового элемента отображения протоколов в Vision. (37 Kb)


4.7. Примитив формирования отчётной документации (Document)


Реализована поддержка элемента формирования отчётной документации со свойствами:

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

Источником значений исполняемых инструкций являются атрибуты виджета этого примитива, а также все механизмы языка пользовательского программирования. Атрибуты могут добавляться пользователем и линковаться на реальные атрибуты параметров или-же являться автономными, значения которых будут формироваться в скрипте виджета. В случае со слинкованными атрибутами могут извлекаться значения из истории, архива.

На рисунке представлен кадр, содержащий пример документа.

Реализация базового элемента отображения отчётной документации в Vision. (61 Kb)


4.8. Примитив контейнера (Box)


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


Пример редактирования кадра, основанного на данном примитиве, приведен на рис. 2.a, а на рис. 3 изображена страница, содержащая контейнер страниц, построенный на основе данного примитива.

5. Векторный графический редактор.

5.1. Назначение

Наличие собственного векторного графического редактора является неотъемлемой частью уважающей себя SCADA системы. Опыт показывает, что наиболее информативной формой представления технологических процессов являются мнемосхемы - совокупность сигнальных устройств, изображений оборудования и внутренних связей контролируемого объекта, выполняемые на персональном компьютере. Для их создания можно использовать любой из существующих графических редакторов. Однако, полученные таким образом мнемосхемы являются статическими и не отражают динамику изменения характеристик процесса, а следовательно, они неадекватны и неудобны для восприятия. Таким образом, одной из задач, стоящих перед разработчиками SCADA систем, является создание графического редактора для изображения объектов, характеристики которых могут быть динамически изменены.

5.2. Принципы и функции разработанного графического редактора

Основой описываемого редактора являются три графических примитива: линия, дуга, кривая Безье. К динамически изменяющимся характеристикам этих примитивов относятся:


Контрольные точки примитивов ElFigure (2 Кб)
Рис. 5.2.a. Контрольные точки линии, дуги и кривой Безье.

Примеры примитивов различного цвета, толщины, стилей с бордюрами и без бордюров приведены на рис. 5.2.b.


Примеры элементарных фигур (4 Кб)
Рис. 5.2.b. Примеры примитивов: линия, дуга и кривая Безье слева направо.

Предусмотрена возможность связи различных графических примитивов для создания сложных графических объектов. Если связанные примитивы образуют замкнутый контур, то он может быть залит цветом и/или изображением (рис. 5.2.c).


Заливки замкнутого контура цветом и/или изображениями (6 Кб)
Рис. 5.2.c. Заливки замкнутого контура цветом и/или изображениями.

Графический редактор позволяет масштабировать и поворачивать фигуры (примитивы и сложные графические объекты) (рис. 5.2.d). К возможностям редактора также относятся выделение, перемещение, копирование и удаление фигур.


Масштабирование и поворот фигур. (6 Кб)
Рис. 5.2.d. Масштабирование и поворот фигур.

5.3. Основные принципы работы в описываемом графическом редакторе

Для того, чтобы приступить к работе с графическим редактором после запуска проекта OpenSCADA необходимо вызвать «Рабочий пользовательский интерфейс». Во вкладке «Виджет» содержится перечень существующих графических библиотек и принадлежащих им элементов.


Предположим, что нам необходимо добавить графический элемент в одну из существующих библиотек. Для этого выделим имя библиотеки и нажмем кнопку (Создание нового виджета элементарной фигуры (2 Kb)) на панели инструментов. В появившееся окно введем идентификатор и имя нового графического элемента. После чего перейдем к этому элементу и нажмем кнопку (Переход к редактированию виджета (2 Kb)). Справа появится поле для рисования. С помощью двойного щелчка мышью по этому полю либо при помощи контекстного меню войдем в режим редактирования — режим работы графического редактора, позволяющий осуществлять все предусмотренные манипуляции с фигурами. В тот момент, когда вновь созданный нами графический элемент находится в фокусе, вкладка «Атрибуты» приобретет вид, представленный на рис. 5.3.a.


Атрибуты элементарной фигуры. (17 Кб)
Рис. 5.3.a. Атрибуты элементарной фигуры.

С помощью мыши или поля «Геометрия» вкладки «Атрибуты» зададим размеры поля для рисования и масштабные коэффициенты.


Воспользовавшись полем «Линия» вкладки «Атрибуты», зададим ширину, цвет, стиль линий, которыми будем рисовать. С помощью поля «Граница» зададим ширину и цвет бордюра. Поле «Заполнение» позволяет задать цвет и изображение заливки. «Список элементов» содержит перечень примитивов, используемых при создании графического объекта. Элементы всех полей вкладки «Атрибуты» могут динамически изменяться в скриптах (программах) пользователя.


Графические примитивы могут быть нарисованы с помощью мышки или заданы с помощью списка графических примитивов («Список элементов»). В первом случае координаты контрольных точек создаваемого примитива вычисляются автоматически, ширина, цвет, стиль линии, ширина и цвет бордюра устанавливаются по умолчанию из вкладки «Атрибуты». Во втором случае примитив необходимо описать в «Списке элементов» следующим образом:

line:(x1|y1):(x2|y2):width:color:border_width:border_color:style (1)
arc:(x1|y1):(x2|y2):(x3|y3):(x4|y4):(x5|y5):width:color:border_width:border_color:style (2)
bezier:(x1|y1):(x2|y2):(x3|y3):(x4|y4):width:color:border_width:border_color:style, (3)

Где:

(x1|y1) — координаты первой контрольной точки примитива;
(x2|y2) — координаты второй контрольной точки примитива;
(x3|y3) — координаты третьей контрольной точки примитива;
(x4|y4) — координаты четвертой контрольной точки примитива;
(x5|y5) — координаты пятой контрольной точки примитива;
width — ширина линии, которой будет нарисован примитив;
color — цвет линии, которой будет нарисован примитив;
border_width — ширина бордюра;
border_color — цвет бордюра;
stylе — стиль линии ("0" — сплошная, "1" — пунктир, "2" — точечная).

При этом приоритетными являются значения ширины, цвета, стиля линии, ширины и цвета бордюра, заданные в «Списке элементов». Если необходимо использовать какие-либо характеристики, устанавливаемые полями «Линия» или «Граница» вкладки «Атрибуты», то при описании примитива их следует пропустить. Например, мы хотим создать линию с шириной 3 красного цвета сплошную и без бордюра. При этом в поле «Линия» заданы ширина линии, равная 3, черный цвет линии, сплошной стиль линии; в поле «Граница» заданы ширина бордюра, равная 5, зеленый цвет. Тогда описание примитива в «Списке элементов» должно выглядеть следующим образом:

line:(x1|y1):(x2|y2)::red:0:: (4)

Формы записи (1) - (4) задают статические характеристики примитивов, которые не могут быть изменены программно. Для задания динамических характеристик необходимо использовать форму записи:

line:1:2:w1:c1:w2:c2:s1 (5)

Тогда в окно «Атрибуты» добавятся поля: Точка 1 (1), Точка 2 (2), Ширина 1 (w1), Ширина 2 (w2), Цвет 1 (c1), Цвет 2 (c2), Стиль 1 (s1) (рис.5.3.b) Значения этих полей можно изменять программно, с помощью одного из языков программирования проекта OpenSCADA. Очевидно, что при желании динамическими могут быть объявлены не все свойства примитива, а одно или несколько, кроме того одно динамическое свойство может быть использовано многократно.


Редактирование координат контрольных точек осуществляется либо с помощью мыши, либо путем их изменения в «Списке элементов» для статических точек или прямо во вкладке «Атрибуты», имея в наличии динамические точки («Точка 1»...). Редактирование других характеристик осуществляется с помощью изменения содержимого полей «Линия» , «Граница», «Заполнение» вкладки «Атрибуты» или «Списка элементов».


Динамические атрибуты элементарной фигуры. (29 Кб)
Рис. 5.3.b. Динамические атрибуты элементарной фигуры.

Предусмотрены возможности выделения (щелчок левой кнопкой мыши по фигуре), совместного выделения примитивов (левая кнопка мыши + нажатая клавиша «Ctrl» при выключенной кнопке «Подключиться»), совместного выделения рамкой, рисуемой с помощью нажатой левой кнопки мышки, их перемещения (клавиатура/мышь), копирования и вставки («Ctrl»+«C», «Ctrl»+«V» или из контекстного меню), удаления («Del»).


Для связи примитивов друг с другом необходимо:


Для заливки замкнутого контура необходимо два раза кликнуть мышкой внутри него либо задать заливку в «Списке элементов» следующим образом:

fill:(x1:y1):(x2:y2):...:(xn:yn):color:image — (статика);
fill:1:2:3:...:c1:i1 — (динамика).

Где:

(x1:y1):(x2:y2):...:(xn:yn) — координаты начальных/конечных точек примитивов, образующих замкнутый контур,
color — цвет заливки,
image — изображение заливки.

При этом приоритетными являются значения цвета и изображения заливки, заданные в «Списке элементов». Если необходимо использовать характеристики, устанавливаемые полем «Заполнение» вкладки «Атрибуты», то при описании примитива их следует пропустить.


Для масштабирования фигур необходимо в поле «Геометрия» задать значения масштаба по осям «X» и «Y». Кроме того, существует возможность визуально увеличить/уменьшить изображение, не меняя масштаб. Для этого необходимо выйти из режима редактирования, щелкнуть правой кнопкой мыши по полю виджета, в появившемся контекстном меню выбрать пункт «Увеличить (+10%)»/ «Уменьшить (-10%)» либо покрутить колесико мышки, удерживая при этом нажатой клавишу «Ctrl». Выход из режима редактирования осуществляется либо с помощью нажатия клавиши «Esc», либо с помощью контекстного меню виджета.


Существует возможность поворачивать содержимое виджета. Для поворота созданных объектов следует в окне «Атрибуты» задать «Угол поворота» от -360 до 360.


Графический редактор поддерживает прозрачность цвета, задаваемую следующим образом: color-t, где color — цвет, а t — прозрачность от 0 (полностью прозрачный) до 255 (непрозрачный).

5.4. Контекстное меню графического редактора

Предусмотрено контекстное меню, вызываемое щелчком правой кнопки мышки в области редактируемого виджета. В зависимости от того, какой объект находится под указателем мышки, контекстное меню может принимать несколько различный вид. Ниже, на рисунке 5.4 приведены примеры контекстного меню.


Контекстное меню для линий (27 Кб) Котекстное меню для заливки (26 Кб)
Рис. 5.4. Контекстное меню для линий (линия, дуга, кривая Безье) и для заливки слева направо.

Контекстное меню включает следующие секции (сверху вниз):

5.5. Диалог свойств элементарной фигуры

Диалог, варианты которого представлены на рисунках 5.5.a, 5.5.b, 5.5.c, реализован для интерактивного и удобного управления свойствами фигур(ы).


Диалог свойств элементарной фигуры для одной линии (линия, дуга или кривая Безье) (40 Кб)
Рис. 5.5.a. Диалог свойств элементарной фигуры для одной линии (линия, дуга или кривая Безье).

Диалог свойств элементарной фигуры для группы выбранных линий (33 Кб) Диалог свойств элементарной фигуры для группы фигур в исключенными свойствами (30 Кб)
Рис. 5.5.b. Диалог свойств элементарной фигуры для группы выбранных линий.

Диалог свойств элементарной фигуры для заливки (22 Кб)
Рис. 5.5.c. Диалог свойств элементарной фигуры для заливки.

Как видно из рисунков выше, диалог может иметь три различных формы в зависимости от объекта, для которого вызывается. В заглавии диалога перечислены номера фигур, для которых он вызван. Эти номера соответствуют позиции фигуры в «Списке элементов», начиная сверху.


Если диалог вызван для одиночной фигуры (линия, дуга или кривая Безье), то в нем существует возможность редактировать координаты точек фигуры (рис. 5.5.a). Если точка соединена с точкой другой фигуры или фигур, и включен режим «привязок» ( «Подключиться» ), то введенные координаты будут применены ко всем фигурам, для которых эта точка общая, а заливки, в которых участвует фигура, будут соответственно перерисованы.


Если же диалог вызван для группы выбранных фигур (рис. 5.5.b), то свойства (атрибуты), указанные в диалоге, будут применены ко всем фигурам, перечисленным в заглавии диалога. При вызове диалога в полях свойств будут отображаться данные той фигуры из группы выбранных, относительно которой было вызвано контекстное меню. Существует возможность включать/исключать отдельные свойства диалога. Для этого предусмотрена кнопка (Кнопка включения/исключения свойств (2 Kb)). В случае исключения отдельных свойств они не будут обрабатываться при подтверждении диалога (кнопка «Принять»). При подтверждении диалога все указанные данные для включенных свойств будут применены для всей группы фигур.


Диалог для свойств заливки (рис. 5.5.c) позволяет управлять свойствами отдельной заливки.


При выборе флажка справа от свойства оно (свойство) после подтверждения диалога устанавливается в значение по умолчанию, которое указано во вкладке «Атрибуты». Кнопки «Дин/Стат» делают соответствующие свойства динамическими либо статическими.


6. Общая конфигурация модуля

Для настройки собственного поведения в неочевидных ситуациях модулем предоставляется возможность настройки отдельных параметров посредством интерфейса управления OpenSCADA (рис. 6). Таковыми параметрами являются:
 (2 Kb) Функция выбора дисплея возможна для невиртуального и не повторения рабочего стола, т.е. при использовании xinerma или NVidia в соответствующем режиме. Технически, функция Qt screen() должна возвращать разные виджеты дисплея для их номеров.

Страница конфигурации модуля. (109 Kb)
Рис.6. Страница конфигурации модуля.