OpenSCADAWiki: Doc/VCA Engine ...

Home | Index | Changes | Comments | Users | Registration | Login  Password:  
 
English (1 Кб) English Version
Ukrainian (1 Кб) Українська версія?

Модуль подсистемы “Пользовательские интерфейсы” <VCAEngine>

Модуль:VCAEngine
Имя:Движок среды визуализации и управления
Тип:Пользовательские интерфейсы
Источник:ui_VCAEngine.so
Версия:1.3.0
Автор:Роман Савоченко
Описание:Основной движок среды визуализации и управления.
Лицензия:GPL

Contents

Введение

Модуль VCAEngine предоставляет движок среды визуализации и управления (СВУ) в систему OpenSCADA. Сам модуль не реализует визуализации СВУ, а содержит данные в соответствии с идеологией "Модель/данные – Интерфейс". Визуализация данных этого модуля выполняется модулями визуализации СВУ, например, модулем Vision и WebVision.


Среда визуализации и управления (СВУ) является неотъемлемой составляющей SCADA системы. Она применяется на клиентских станциях с целью доступного предоставления информации об объекте управления и выдачи управляющих воздействий на объект. В различных практических ситуациях и условиях могут применяться СВУ, построенные на различных принципах визуализации. Например, это могут быть библиотеки виджетов QT, GTK+, wxWidgets или гипертекстовые механизмы на основе технологий HTML, XHTML, XML, CSS и JavaScript или сторонние приложения визуализации, реализованные на различных языках программирования Java, Python и т.д. Любой из этих принципов имеет свои преимущества и недостатки, комбинация которых может стать непреодолимым препятствием в возможности использования СВУ в том или ином практическом случае. Например, технологии вроде библиотеки QT позволяют создавать высокореактивные СВУ, что несомненно важно для станций оператора управления технологическим процессом (ТП). Однако, необходимость инсталляции данного клиентского ПО в отдельных случаях может сделать использование его невозможным. С другой стороны, Web-технологии не требуют инсталляции на клиентские системы и являются предельно многоплатформенными (достаточно создать ссылку на Web-сервер в любом Web-браузере), что наиболее важно для различных инженерных и административных станций, но реактивность и надёжность таких интерфейсов ниже, что практически исключает их использования на станциях оператора ТП.


Система OpenSCADA имеет предельно гибкую архитектуру, которая позволяет создавать внешние интерфейсы, в том числе и пользовательские, на любой основе и на любой вкус. Например, среда конфигурации системы OpenSCADA доступна как на QT библиотеке, так и на Web-основе.


В тоже время независимое создание реализаций СВУ на различной основе может повлечь за собой невозможность использования данных конфигурации одной СВУ в другой. Что неудобно и ограничено с пользовательской стороны, а также накладно в плане реализации и последующей поддержки. С целью избежать этих проблем, а также создать в кратчайшие сроки полный спектр различных типов СВУ основан проект создания концепции СВУ. Результатом этого проекта и стал данный модуль движка(модели данных) СВУ, а также модули непосредственной визуализации Vision и WebVision.

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

Данный модуль движка(модели данных) СВУ предназначен для формирования логической структуры СВУ и исполнения сеансов отдельных экземпляров проектов СВУ. Также модуль предоставляет все необходимые данные конечным визуализаторам СВУ как посредством локальных механизмов взаимодействия OpenSCADA, так и посредством интерфейса управления OpenSCADA для удалённого доступа.


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

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

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


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

3. Архитектура

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


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


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


Описанная структура СВУ приведена на рис. 3.


Обобщённая структура СВУ. (252 Кб)
Рис.3 Обобщённая структура СВУ.

Данная архитектура СВУ позволяет реализовать поддержку трёх уровней сложности процесса разработки интерфейсов управления:

3.1. Кадры и элементы отображения(виджеты)

Кадр — это окно, непосредственно предоставляющее информацию пользователю в графической и/или текстовой форме. Группа взаимосвязанных кадров формирует цельный пользовательский интерфейс ВУ.


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


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


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


Производные кадры/виджеты могут содержать другие виджеты(вложенные), которые могут быть склеены(связаны) логикой один с другим с помощью одного из языков пользовательского программирования, доступного в системе OpenSCADA (рис.3.1.1).


Пример структуры производного виджета. (176 Кб)
Рис.3.1.1 Пример структуры производного виджета.

Виджет является элементом, посредством которого обеспечивается:


Настройка и связывание виджетов производится посредством их свойств. Родительский виджет и виджеты, содержащиеся в нем, могут дополняться пользовательскими свойствами. В последствии пользовательские и статические атрибуты связываются со свойствами вложенных виджетов посредством внутренней логики. Для отображения динамики (т.е. текущих и архивных данных) свойства виджетов динамизируются, т.е связываются с атрибутами параметров OpenSCADA или свойствами других виджетов. Использование для связывания вложенных виджетов внутренней логикой доступных языков пользовательского программирования системы OpenSCADA снимает вопрос реализации сложной логики визуализации, обеспечивая тем самым высокую гибкость. Практически можно создавать полностью динамизированные кадры со сложными взаимосвязями на уровне пользователя.


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


Карта «использующего» наследования компонентов концепции/движка (225 Кб)
Рис.3.1.2 Карта «использующего» наследования компонентов концепции/движка

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


Вычисление и обработка виджета в целом выполняется в следующей последовательности:

3.2. Проект

Непосредственная конфигурация и свойства конечного интерфейса визуализации содержаться в проекте интерфейса визуализации СВУ. Может быть создано множество проектов интерфейсов визуализации.


Каждый проект включает кадры из библиотек кадров/виджетов. Кадр предоставляет инструмент для привязки динамики к описанным в нём свойствам. Все свойства кадра могут быть связаны с динамикой или разрешены константами, а могут выступать в роли шаблона для формирования производных страниц. Фактически каждый кадр может содержать множество страниц с собственной динамикой. Данный механизм позволяет предельно упростить процесс создания однотипных кадров инженером АСУ-ТП или пользователем системы OpenSCADA для простого мониторинга. Примером таких однотипных кадров могут быть: группы контуров, группы графиков, протоколы и различные сводные таблицы. Мнемосхемы технологических процессов редко подпадают под такую схему и будут формироваться прямо в описании кадра.


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


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


Иерархическое представления компонентов проекта классического интерфейса ВУ технологического процесса. (40 Кб)
Рис.3.2 Иерархическое представления компонентов проекта классического интерфейса ВУ технологического процесса.

В соответствии с рис.3.1.2 объекты сессии проекта наследуются от абстрактного объекта "Widget" и используют соответствующие объекты проекта. Так, сессия ("Session") использует проект ("Project") и формирует развёрнутое дерево на основе него. Страница проекта "Page" прямо используется страницей сессии "SessPage". Остальные объекты ("SessWdg") разворачиваются в соответствии с иерархией элементов страницы (рис.3.1.2).


В дополнение к стандартным свойствам абстрактного виджета ("Widget") элементы страницы и сами страницы сессии получают свойства: хранения кадра значений вычислительной процедуры, обсчёта процедур и механизм обработки событий. Страницы сессии в дополнение ко всему содержат контейнер следующих по иерархии страниц. Сессия в целом обсчитывается с указанной периодичностью и в последовательности:


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


В сессии реализована поддержка специальных свойств страниц:


На основе этих свойств реализованы следующие типы страниц:


Переключение, открытие, замещение и навигация по страницам реализованы на основе обработки событий по сценарию в атрибуте активного виджета "evProc". Сценарий этого атрибута записывается в виде списка команд с синтаксисом: <event>:<evSrc>:<com>:<prm>. Где:


Реализованы следующие команды:


Специальные символы шаблона расшифровываются следующим образом:


Для понимания работы механизма шаблонов приведём несколько реальных примеров:


В качестве примера приведём сценарий обеспечения работы главной страницы интерфейса пользователя:

ws_BtPress:/prev:prev:/pg_so/*/*/$
ws_BtPress:/next:next:/pg_so/*/*/$
ws_BtPress:/go_mn:open:/pg_so/*/mn/*
ws_BtPress:/go_graph:open:/pg_so/*/ggraph/*
ws_BtPress:/go_cadr:open:/pg_so/*/gcadr/*
ws_BtPress:/go_view:open:/pg_so/*/gview/*
ws_BtPress:/go_doc:open:/pg_so/*/doc/*
ws_BtPress:/go_resg:open:/pg_so/rg/rg/*
ws_BtPress:/so1:open:/pg_so/1/*/*
ws_BtPress:/so2:open:/pg_so/2/*/*
ws_BtPress:/so3:open:/pg_so/3/*/*
ws_BtPress:/so4:open:/pg_so/4/*/*
ws_BtPress:/so5:open:/pg_so/5/*/*
ws_BtPress:/so6:open:/pg_so/6/*/*
ws_BtPress:/so7:open:/pg_so/7/*/*
ws_BtPress:/so8:open:/pg_so/8/*/*
ws_BtPress:/so9:open:/pg_so/9/*/*
ws_BtPress:*:open:/pg_control/pg_terminator


В связке с вышеописанным механизмом на стороне визуализации (RunTime) построена логика, регулирующая, каким образом открывать страницы. Логика построена на следующих атрибутах базового элемента "Box":


Логика определения способа открытия страниц работает следующим образом:

3.3. Стили

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


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


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


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


Вкладка \'Стили\' страницы конфигурации пр
 (79 Кб)
Рис. 3.3 Вкладка "Стили" страницы конфигурации проекта.

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


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

3.4. События, их обработка и карты событий

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


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


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


В целом предусмотрены четыре типа событий:


Само событие представляет мало информации, особенно если его обработка происходит на уровнях выше. Для однозначной идентификации события и его источника событие в целом записывается следующим образом: "ws_BtPress:/curtime". Где:

ws_BtPress — событие;
/curtime — путь к дочернему элементу, сгенерировавшего событие.

В таблице 3.4 приведён перечень стандартных событий, поддержка которых должна быть обеспечена в визуализаторах СВУ.


Таблица 3.4. Стандартные события

IdОписание
Клавиатурные события: key_[pres|rels][Ctrl|Alt|Shift]{Key}
*SC#3b Скан код клавиши.
*#2cd5 Код неименованной клавиши.
*Esc "Esc".
*BackSpace Удаления предыдущего символа — "<-".
*Return, *Enter Ввод — "Enter".
*Insert Вставка — "Insert".
*Delete Удаление — "Delete".
*Pause Пауза — "Pause".
*Print Печать экрана — "Print Screen".
*Home Дом — "Home".
*End Конец — "End".
*Left Влево — "<-".
*Up Вверх — '^'.
*Right Вправо — "->".
*Down Вниз — '\/'.
*PageUp Страницы вверх — "PageUp".
*PageDown Страницы вниз — "PageDown".
*F1 - *F35 Функциональная клавиша от "F1" до "F35".
*Space Пробел — ' '.
*Apostrophe Апостраф — '`'.
*Asterisk Звёздочка на дополнительном поле клавиатуры — '*'.
*Plus Плюс на дополнительном поле клавиатуры — '+'.
*Comma Запятая — ','.
*Minus Минус — '-'.
*Period Точка — '.'.
*Slash Наклонная черта — '\'.
*0 - *9 Цифра от '0' до '9'.
*Semicolon Точка с запятой — ';'.
*Equal Равно — '='.
*A - *Z Клавиши букв латинского алфавита от 'A' до 'Z'.
*BracketLeft Левая квадратная скобка — '['.
*BackSlash Обратная наклонная линия — '/'.
*BracketRight Правая квадратная скобка — ']'.
*QuoteLeft Левая кавычка — '''.
События клавиатурного фокуса.
ws_FocusIn Фокус получен виджетом.
ws_FocusOut Фокус утерян виджетом.
Мышиные события:
key_mouse[Pres|Rels][Left|Right|Midle] Нажата/отпущена кнопка мыши.
key_mouseDblClick Двойное нажатие левой кнопки мыши.
События квитирования на стороне визуализатора.
ws_alarmLev Квитирование всех нарушений всеми способами уведомления.
ws_alarmLight Квитирование всех нарушений уведомления миганием/светом.
ws_alarmAlarm Квитирование всех нарушений уведомления гудком.
ws_alarmSound Квитирование всех нарушений уведомления звуком/речью.
События примитива элементарной фигуры ElFigure:
ws_Fig[Left|Right|Midle|DblClick] Активация фигур (заливок) клавишей мыши.
ws_Fig[n][Left|Right|Midle|DblClick] Активация фигуры (заливки) [n] клавишей мыши.
События примитива элементов формы FormEl:
ws_LnAccept Установлено новое значение в строке ввода.
ws_TxtAccept Изменено значение редактора текста.
ws_ChkChange Состояние флажка изменено.
ws_BtPress Кнопка нажата.
ws_BtRelease Кнопка отпущена.
ws_BtToggleChange Изменена вдавленность кнопки.
ws_CombChange Изменено значение поля выбора.
ws_ListChange Изменен текущий элемент списка.
ws_SliderChange Изменение положения слайдера.
События примитива медиа-контента Media:
ws_MapAct{n}[Left|Right|Midle] Активирована медиа-область с номером {n} клавишей мыши.
ws_MediaFinished Окончание проигрывания Медиа-потока.

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


Механизм "Сценарии управления открытием страниц" основан на базовом атрибуте виджета "evProc" и детально описан в разделе 3.2.


Механизм "Обработка событий с помощью вычислительной процедуры виджета" основан на атрибуте "event" и пользовательской процедуре вычисления на одном из языков пользовательского программирования OpenSCADA. События по мере поступления аккумулируются в атрибуте "event" до момента вызова вычислительной процедуры. Вычислительная процедура вызывается с указанной периодичностью вычисления виджета и получает значение атрибута "event" в виде списка событий. В процедуре вычисления пользователь может: проанализировать, обработать и исключить обработанные события из списка, а также добавить в список новые события. Оставшиеся после исполнения процедуры события, анализируются на предмет соответствия условиям вызова сценарием первого механизма после чего оставшиеся события передаются на верхний по иерархии виджет для обработки им, при этом осуществляется коррекция пути событий в соответствии с иерархией проникновения события.


Содержимое атрибута "event" является списком событий формата <event>:<evSrc>, с событием в отдельной строке. Приведём пример процедуры обработки событий на Java-подобном языке пользовательского программирования OpenSCADA:

using Special.FLibSYS;
ev_rez = "";
off = 0;
while(true)
{
  sval = strParse(event,0,"\n",off);
  if( sval == "" ) break;
  else if( sval == "ws_BtPress:/cvt_light" ) alarmSt = 0x1000001;
  else if( sval == "ws_BtPress:/cvt_alarm" ) alarmSt = 0x1000002;
  else if( sval == "ws_BtPress:/cvt_sound" ) alarmSt = 0x1000004;
  else ev_rez+=sval+"\n";
}
event=ev_rez;

3.5. Сигнализация

Важным элементом любого интерфейса визуализации является уведомление пользователя про нарушения — сигнализация. Для упрощения восприятия, а также в виду тесной связности визуализации и уведомления (как правило уведомление дополняет визуализацию) решено интегрировать интерфейс уведомления в интерфейс визуализации. Для этого во всех виджетах предусматриваются два дополнительных атрибута (уровня сеанса): "alarm" и "alarmSt". Атрибут "alarm" используется для формирования сигнала виджетом в соответствии с его логикой, а атрибут "alarmSt" используется для контроля за фактом сигнализации ветви дерева сеанса проекта.


Атрибут "alarm" является строкой и имеет следующий формат: {lev|categ|message|type|tp_arg}
Где:


Атрибут "alarmSt" является целым числом, которое отражает максимальный уровень сигнала и факт квитирования ветви дерева сеанса проекта. Формат числа имеет следующий вид:


Формирование сигнала и получение его визуализатором.
Формирование сигнала производится самим виджетом путём установки собственного атрибута "alarm" нужным образом, и в соответствии с ним устанавливается атрибут "alarmSt" текущего и вышестоящих виджетов. Визуализаторы получают уведомление о сигнале с помощью стандартного механизма уведомления об изменении атрибутов виджетов.


Такой механизм предоставляет возможность формировать интерфейсы сигнализации как на уровне подсистемы "Сбор данных", так и прямо на уровне представления.


Учитывая то, что обработка условий сигнализации осуществляется в виджетах, страницы, содержащие объекты сигнализации, должны исполняться в фоне, не зависимо от открытости их в данный момент. Это осуществляется путём установки флага исполнения страницы в фоне.


Хотя механизм сигнализации и построен в среде визуализации, возможность формирования невизуальных элементов сигнализации остаётся, например, путём создания страницы, которая никогда не будет открываться.


Квитирование
Квитирование производится путём указания корня ветви виджетов и типов уведомления. Это позволяет реализовать квитирование на стороне визуализатора как по группам, например, по объектам сигнализации, так и индивидуально по объектам. При этом можно независимо квитировать разные типы сигнализаций. Установка квитирования производится простой модификацией атрибута "alarmSt".


Пример скрипта для работы с сигналами приведён ниже:

//Выделение факта наличия сигнализаций разных способов уведомления
cvt_light_en = alarmSt&0x100; cvt_alarm_en = alarmSt&0x200; cvt_sound_en = alarmSt&0x400;
//Выделение факта наличия несквитированных сигнализаций разных способов уведомления
cvt_light_active = alarmSt&0x10000; cvt_alarm_active = alarmSt&0x20000; cvt_sound_active = alarmSt&0x40000;
//Обработка событий кнопок квитирования и квитирование разных способов уведомлений 
ev_rez = "";
off = 0;
while(true)
{
  sval = strParse(event,0,"\n",off);
  if( sval == "" ) break;
  else if( sval == "ws_BtPress:/cvt_light" ) alarmSt = 0x1000001;
  else if( sval == "ws_BtPress:/cvt_alarm" ) alarmSt = 0x1000002;
  else if( sval == "ws_BtPress:/cvt_sound" ) alarmSt = 0x1000004;
  else ev_rez+=sval+"\n";
}
event=ev_rez;

3.6. Управление правами

Для разделения доступа к интерфейсу ВУ и его составляющим каждый виджет содержит информацию о владельце, его группе и правах доступа. Права доступа записываются, как принято в системе OpenSCADA, в виде триады: <пользователь><группа><остальные>, где каждый элемент состоит из трёх признаков доступа. Для элементов СВУ принята следующая их интерпретация:


В режиме разработки используется простая схема доступа "root.UI:RWRWR_", что означает — все пользователи могут открывать и просматривать библиотеки, их компоненты и проекты; а редактировать могут все пользователи группы "UI" (пользовательские интерфейсы).


В режиме исполнения работают права, описанные в компонентах интерфейса.

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

Для предоставления актуальных данных в интерфейс визуализации должны использоваться данные подсистемы "Сбор данных (DAQ)". Природа этих данных следующая:

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

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


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


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


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


Вкладка «Обработка» страницы конфигурации виджета. (115 Кб)
Рис. 3.7.a Вкладка "Обработка" страницы конфигурации виджета.

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


Если в колонке "Обработка" стоит true, то в вычислительной процедуре становится доступной переменная {идентификатор виджета}_{идентификатор строки}, например cw_value.


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


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


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


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


На рис. 3.7.b представлена вкладка связей с групповым назначением атрибутов путём указания только параметра, а на рис. 3.7.с с индивидуальным назначением атрибутов.


Вкладка «Связи» страницы конфигурации виджета c групповым назначением атрибутов путём указания только параметра. (64 Кб)
Рис. 3.7.b Вкладка "Связи" страницы конфигурации виджета c групповым назначением атрибутов путём указания только параметра.

Вкладка «Связи» страницы конфигурации виджета c индивидуальным назначением атрибутов.\n (66 Кб)
Рис. 3.7.с Вкладка "Связи" страницы конфигурации виджета c индивидуальным назначением атрибутов.

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


Вкладка «Связи» страницы конфигурации контейнера виджетов, включающего виджеты со связями.\n (111 Кб)
Рис. 3.7.d Вкладка "Связи" страницы конфигурации контейнера виджетов, включающего виджеты со связями.

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


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


При этом каждый виджет "График" имеет атрибуты tSek, tSize, trcPer и valArch. В случае вызова сигнала открытия "Панели контроля графиком" из любого виджета "График" происходит связывания атрибутов "Панели контроля графиком" в соответствии атрибуту, указанному в шаблоне, с атрибутом виджета "График". Как результат, все изменения на "Панели контроля графиком" будут отражаться на графике посредством связи.


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


Для наглядного изображения этого механизма приведена таблица 3.7.


Таблица 3.7. Механизм динамической линковки.

Атрибуты "Панели контроля графиком" (шаблон динамической связи) Атрибуты "Графика" Атрибуты внешнего "Параметра" Результирующая связь или значение связующегося атрибута
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.8. Примитивы виджетов

Любой вновь создаваемый виджет основывается на одном из нескольких примитивов(конечный элемент визуализации) путём установки родственной связи как прямо на примитив, так и посредством нескольких промежуточных пользовательских виджетов. Каждый из примитивов содержит механизм (логику) модели данных. Экземпляр виджета хранит значения свойств конфигурирования примитива специально для себя.


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


В таблице 3.8.a приведён перечень примитивов виджетов(базовых элементов отображения).


Таблица 3.8.a. Библиотека примитивов виджетов(базовых элементов отображения)

IdНаименованиеФункция
ElFigureЭлементарные графические фигуры

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

  • Линия.
  • Дуга.
  • Кривая безье.
  • Заливка замкнутого пространства.

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

FormElЭлементы формы.

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

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

Каждый примитив и виджет содержит общий набор свойств/атрибутов в составе, приведенном в таблице 3.8.b:


Таблица 3.8.b. Общий набор свойств/атрибутов в виджете

IdИмяНомерЗначение
id Id - Идентификатор элемента. Атрибут только для чтения, призванный предоставить информацию об идентификаторе элемента.
path Путь - Путь к этому виджету. Атрибут только для чтения и предоставления информации об расположения элемента.
parent Родитель - Путь к родительскому виджету. Атрибут только для чтения и предоставления информации о расположении предка, от которого унаследован виджет.
owner Владелец - Владелец и группа виджета в форме "[владелец]:[группа]". По умолчанию "root:UI".
perm Доступ -

Права доступа к виджету в форме "[польз.][группа][другие]".
Где "польз.", "группа" и "другие" это:

  • "__" — нет доступа;
  • "R_" — только на чтение;
  • "RW" — чтение и запись.

По умолчанию 0664(RWRWR_).

root Корень 1 Идентификатор виджета-примитива (базового элемента), который лежит в основе образа визуализации виджета.
name Имя - Имя элемента. Модифицируемое имя элемента.
dscr Описание - Описание элемента. Текстовое поле для прикрепления к виджету краткого описания.
en Включен 5 Состояние элемента — "Включен". Отключенный элемент не отображается при исполнении.
active Активный 6 Состояние элемента — "Активный". Активный элементы может получать фокус при исполнении, а значит получать клавиатурные и иные события с последующей их обработкой.
geomX Геометрия:x 7 Геометрия, координата 'x' положения элемента.
geomY Геометрия:y 8 Геометрия, координата 'y' положения элемента.
geomW Геометрия:ширина 9 Геометрия, ширина элемента.
geomH Геометрия:высота 10 Геометрия, высота элемента.
geomXsc Геометрия:x масштаб 13 Масштаб элемента по горизонтали.
geomYsc Геометрия:y масштаб 14 Масштаб элемента по вертикали.
geomZ Геометрия:z 11 Геометрия, координата 'z' (уровень) элемента на странице. Также определяет порядок передачи фокуса между активными элементами.
geomMargin Геометрия:отступ 12 Геометрия, поля элемента.
tipTool Помощь:подсказка 15 Текст краткой помощи или подсказки по данному элементу. Обычно реализуется как всплывающая подсказка при удержании курсора мыши над элементом.
tipStatus Помощь:состояние 16 Текст информации о состоянии элемента или руководства к действию над элементом. Обычно реализуется в виде сообщения в строке статуса при удержании курсора мыши над элементом.
* Модификации из сеанса данного атрибута корневой страницы осуществляет запись сообщения в строку статуса окна визуализации сеанса.
contextMenu Контекстное меню 17

Контекстное меню в форме списка строк: "[ItName]:[Signal]".
Где:

  • "ItName" — имя элемента;
  • "Signal" — имя сигнала, результирующее имя сигнала: "usr_[Signal]".
evProc Обработка событий -

Атрибут для хранения сценария обработки событий непосредственного управления пользовательским интерфейсом. Сценарий представляет собой список команд интерфейсу визуализации, генерируемых при поступлении события (атрибут event). Прямая обработка событий для управления страницами в форме: "[event]:[evSrc]:[com]:[prm]". Где:

  • "event" — ожидаемое событие;
  • "evSrc" — источник события;
  • "com" — команда сеанса (open, next, prev);
  • "prm" — параметр команды, где используется:
    • pg_so — прямое имя желаемой страницы с префиксом;
    • 1 — имя новой страницы в общем пути, без префикса;
    • * — имя страницы берётся из имени предыдущей страницы;
    • $ — указывает на место относительно которого открывается страница.

Примеры:

  • ws_BtPress:/prev:prev:/pg_so/*/*/$
  • ws_BtPress:/next:next:/pg_so/*/*/$
  • ws_BtPress:/go_mn:open:/pg_so/*/mn/*
  • ws_BtPress:/go_graph:open:/pg_so/*/ggraph
Дополнительные атрибуты для элементов, помещённых в проект в роли страницы.
pgOpen Страница:открыта - Признак "Страница открыта".
* Модификации из сеанса осуществляет немедленное открытие/закрытие страницы.
pgNoOpenProc Страница:обрабатывать закрытой - Признак "Исполнять страницу даже если она закрыта".
pgOpenSrc Страница:источник открытия 3 Полный адрес страницы, открывшей данную.
* Запись/очистка адреса виджета — инициатора открытия осуществляет немедленное открытие/закрытие страницы. В случае записи адреса и выполнения других условий осуществляется динамическое связывание текущего виджета с инициатором (связывание с динамикой).
pgGrp Страница:группа 4 Группа страницы.
Дополнительные атрибуты режима исполнения.
event Обработка событий - Специальный атрибут для сбора событий виджета в списке, разделённом новой строкой. Данный атрибут доступен только в сеансе. Доступ к атрибуту защищён ресурсом с целью избежания потери событий. Атрибут всегда доступен в скрипте виджета.
load Загрузка -1 Виртуальная команда групповой загрузки данных.
focus Фокус -2 Специальный атрибут индикации факта получения фокуса активным виджетом. Данный атрибут доступен только в сеансе. Атрибут этого виджета и вложенных виджетов доступен в скрипте виджета.
perm Доступ -3 Виртуальный атрибут проверки прав активного пользователя на просмотр и контроль над виджетом.

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

3.8.1. Элементарные графические фигуры (ElFigure)

Примитив является основой для отрисовки элементарных графических фигур со всевозможной комбинацией их в одном объекте. Учитывая широкий спектр всевозможных фигур, которые должен поддерживать примитив, и в тоже время являться достаточно простым в использовании и, по возможности, в реализации, решено было ограничить перечень базовых фигур, используемых для построения результирующих графических объектов до таких фигур: линия, дуга, кривая Безье и заливка замкнутых контуров. Основываясь уже на этих базовых фигурах, можно строить производные фигуры, комбинируя базовые. В рамках примитива существует возможность задания прозрачности цвета в диапазоне [0..255], где '0' — полная прозрачность.


Перечень дополнительных свойств/атрибутов данного примитива приведён в таблице 3.8.1.


Таблица 3.8.1. Набор дополнительных свойств/атрибутов в примитиве ElFigure

IdИмяНомерЗначение
lineWdth Линия:ширина 20 Ширина линии.
lineClr Линия:цвет 21

Имя цвета в виде "color[-alpha]", где:

  • "color" — стандартное имя цвета или числовое представление из трёх шестнадцатеричных чисел цвета "#RRGGBB";
  • "alpha" — уровень альфа-канала (0-255).

Примеры:

  • "red" — сплошной красный цвет;
  • "#FF0000" — сплошной красный цвет в цифровом коде;
  • "red-127" — полупрозрачный красный цвет.
lineStyle Линия:стиль 22 Стиль линии (сплошная, пунктир, точечная).
bordWdth Граница:ширина 23 Ширина бордюра линии. Нулевая ширина указывает на отсутствие бордюра.
bordClr Граница:цвет 24 Цвет бордюра (детали в атрибуте 21).
fillColor Заполнение:цвет 25 Цвет заливки (детали в атрибуте 21).
fillImg Заполнение:изображение 26

Имя изображения в форме "[src:]name", где:

  • "src" — источник изображения:
    • file — прямо из локального файла по пути;
    • res — из таблицы mime ресурсов БД.
  • "name" — путь файла или идентификатор mime-ресурса.

Примеры:

  • "res:backLogo" — из таблицы mime ресурсов БД для идентификатора "backLogo";
  • "backLogo" — как и предыдущий;
  • "file:/var/tmp/backLogo.png" — из локального файла по пути "/var/tmp/backLogo.png".
orient Угол поворота 28 Угол поворота содержимого виджета.
elLst Список элементов 27

Список графических примитивов в формате:

  • Линия. Форма записи в списке:
    line:(x|y)|{1}:(x|y)|{2}:[width|w{n}]:[color|c{n}]:[bord_w|w{n}]:[bord_clr|c{n}]:[line_stl|s{n}]
  • Дуга. Форма записи в списке:
    arc:(x|y)|{1}:(x|y)|{2}:(x|y)|{3}:(x|y)|{4}:(x|y)|{5}:[width|w{n}]:[color|c{n}]:[bord_w|w{n}]:[bord_clr|c{n}]:[line_stl|s{n}]
    Пример дуги с назначением точек (4 Kb)
  • Кривая Безье. Форма записи в списке:
    bezier:(x|y)|{1}:(x|y)|{2}:(x|y)|{3}:(x|y)|{4}:[width|w{n}]:[color|c{n}]:[bord_w|w{n}]:[bord_clr|c{n}]:[line_stl|s{n}]
  • Заливка. Форма записи в списке:
    fill:(x|y)|{1},(x|y){2},...,(x|y)|{n}:[fill_clr|c{n}]:[fill_img|i{n}]

Где:

(x|y) — прямая точка (x,y) координаты в пикселах с плавающей точке;
{1}...{n} — динамические точки 1...n;
width, bord_w — прямая ширина линии и бордюра в пикселах с плавающей точкой;
w{n} — динамическая ширина 'n';
color, bord_clr, fill_clr — прямой цвет линии, бордюра и заполнения в виде имени или 32-битного кода с альфа: {имя}-AAA, #RRGGBB-AAA;
c{n} — динамический цвет 'n';
line_stl — прямой стиль линии: 0-Сплошная, 1-Пунктирная, 2-Точечная;
s{n} — динамический стиль 'n';
fill_img — прямое изображение заполнения в формате "[src%3Aname]", где:
"src" — источник изображения:
file — непосредственно из локального файла по пути;
res — из таблицы mime-ресурсов БД.
"name" — путь файла или идентификатор mime-ресурса.
i{n} — динамическое изображение заполнения 'n'.

Например:

  • line:(50|25):(90.5|25):2:yellow:3:green:2
  • arc:(25|50):(25|50):1:4:(25|50)::#000000-0
  • fill:(25|50):(25|50):c2:i2
  • fill:(50|25):(90.5|25):(90|50):(50|50):#d3d3d3:h_31
Атрибуты для каждой точки из списка графических фигур elLst
p{n}x Точка {n}:x 30+n*6 Координата 'x' точки {n}.
p{n}y Точка {n}:y 30+n*6+1 Координата 'y' точки {n}.
w{n} Ширина {n} 30+n*6+2 Ширина {n}.
с{n} Цвет {n} 30+n*6+3 Цвет {n} (детали в атрибуте 21).
i{n} Изображение {n} 30+n*6+4 Изображение {n} (детали в атрибуте 26).
s{n} Стиль {n} 30+n*6+5 Стиль {n}.

3.8.2. Элементы формы (FormEl)

Примитив, предназначенный для предоставления стандартных элементов формы в распоряжение пользователя. Общий перечень атрибутов зависит от типа элемента. Перечень дополнительных свойств/атрибутов данного примитива приведён в таблице 3.8.2.


Таблица 3.8.2. Набор дополнительных свойств/атрибутов в примитиве FormEl

IdИмяНомерЗначение
elType Тип элемента 20 Тип элемента (Строка редактирования; Редактор текста; Флажок; Кнопка; Выбор из списка; Список; Слайдер; Полоса прокрутки). От его значения зависит перечень дополнительных атрибутов.
Строка редактирования:
value Значение 21 Содержимое строки.
view Вид 22 Вид строки редактирования (Текст; Комбобокс; Целое; Вещественное; Время; Дата; Дата и время).
cfg Конфигурация 23

Конфигурация строки. Формат значения данного поля для различных видов строки:

Текст — конфигурация форматированного ввода по шаблону с параметрами:
A — Необходим ASCII алфавитный символ. A-Z, a-z.
a — Разрешён но не необходим ASCII алфавитный символ.
N — Необходим ASCII алфавитно-цифровой символ. A-Z, a-z, 0-9.
n — Разрешён но не необходим ASCII алфавитно-цифровой символ.
X — Необходим любой символ.
x — Разрешён но не необходим любой символ.
9 — ASCII цифра необходима. 0-9.
0 — ASCII цифра разрешёна но не необходима.
D — ASCII цифра необходима. 1-9.
d — ASCII цифра разрешёна но не необходима (1-9).
# — ASCII цифра или знаки плюс/минус разрешёны но не необходимы.
H — Необходим символ шестнадцатиричного числа. A-F, a-f, 0-9.
h — Разрешён но не необходим символ шестнадцатиричного числа.
B — Необходим бинарный символ. 0-1.
b — Разрешён но не необходим бинарный символ.
> — Все следующие алфавитные символы в верхнем регистре.
< — Все следующие алфавитные символы в нижнем регистре.
! — Выключение преобразования регистра.
\\ — Используйте в разделителях для экранирования специальных символов, которые перечислены.

Комбобокс — список значений редактируемого комбо-бокса по строкам.
Целое — значение целого числа в форме: "[Минимум]:[Максимум]:[ШагИзменения]:[Префикс]:[Суффикс]".
Вещественное — значение вещественного числа в форме: "[Минимум]:[Максимум]:[ШагИзменения]:[Префикс]:[Суффикс]:[ЗнаковПослеТочки]".
Время, Дата, Дата и время — формировать дату по шаблону с параметрами:

d — номер дня (1-31);
dd — номер дня (01-31);
ddd — сокращённое наименование дня ("Mon" ... "Sun");
dddd — полное наименование дня ("Monday" ... "Sunday");
M — номер месяца (1-12);
MM — номер месяца (01-12);
MMM — сокращённое имя месяца ("Jan" ... "Dec");
MMMM — полное имя месяца ("January" ... "December");
yy — последние две цифры года;
yyyy — год полностью;
h — час (0-23);
hh — час (00-23);
m — минуты (0-59);
mm — минуты (00-59);
s — секунды (0-59);
ss — секунды (00-59);
AP,ap — отображать AM/PM или am/pm.
confirm Подтверждать 24 Включение режима подтверждения.
font Шрифт 25

Имя шрифта в виде "{family} {size} {bold} {italic} {underline} {strike}",
где:

  • "family" — семейство шрифта, для пробелов используйте символ '_', вроде: "Arial", "Courier", "Times_New_Roman";
  • "size" — размер шрифта в пикселах;
  • "bold" — усиление шрифта (0 или 1);
  • "italic" — наклонность шрифта (0 или 1);
  • "underline" — подчёркивание шрифта (0 или 1);
  • "strike" — перечёркивание шрифта (0 или 1).

Примеры:

  • "Arial 10 1 0 0 0" — Arial шрифт размером 10 пикселов и усиленный.
Редактор текста:
value Значение 21 Содержимое редактора.
wordWrap Перенос слов 22 Автоматический перенос текста по словам.
confirm Подтверждать 24 Включение режима подтверждения.
font Шрифт 25 Имя шрифта в виде "{family} {size} {bold} {italic} {underline} {strike}" (детали выше).
Флажок:
name Имя 26 Имя/метка флажка.
value Значение 21 Значение флажка.
font Шрифт 25 Имя шрифта в виде "{family} {size} {bold} {italic} {underline} {strike}" (детали выше).
Кнопка:
name Имя 26 Имя, надпись на кнопке.
value Значение 21 Значение для фиксированной кнопки.
img Изображение 22

Изображение на кнопке. Имя изображения в форме "[src:]name", где:

  • "src" — источник изображения:
    • file — прямо из локального файла по пути;
    • res — из таблицы mime ресурсов БД.
  • "name" — путь файла или идентификатор mime-ресурса.

Примеры:

  • "res:backLogo" — из таблицы mime ресурсов БД для идентификатора "backLogo";
  • "backLogo" — как и предыдущий;
  • "file:/var/tmp/backLogo.png" — из локального файла по пути "/var/tmp/backLogo.png".
color Цвет 23

Цвет кнопки. Имя цвета в виде "color[-alpha]", где:

  • "color" — стандартное имя цвета или числовое представление из трёх шестнадцатеричных чисел цвета "#RRGGBB";
  • "alpha" — уровень альфа-канала (0-255).

Примеры:

  • "red" — сплошной красный цвет;
  • "#FF0000" — сплошной красный цвет в цифровом коде;
  • "red-127" — полупрозрачный красный цвет.
colorText Цвет:текст 27 Цвет текста. (детали выше)
checkable Переключатель 24 Признак функционирования как фиксированная кнопка.
font Шрифт 25 Имя шрифта в виде "{family} {size} {bold} {italic} {underline} {strike}" (детали выше).
Выбор из списка:
value Значение 21 Текущее значение списка.
items Элементы 22 Перечень элементов списка.
font Шрифт 25 Имя шрифта в виде "{family} {size} {bold} {italic} {underline} {strike}" (детали выше).
Список:
value Значение 21 Выбранное значение списка.
items Элементы 22 Перечень элементов списка.
font Шрифт 25 Имя шрифта в виде "{family} {size} {bold} {italic} {underline} {strike}" (детали выше).
Слайдер и полоса прокрутки:
value Значение 21 Положение слайдера.
cfg Конфигурация 22

Конфигурация слайдера в формате: "[ВертОриент]:[Минимум]:[Максимум]:[ОдинШаг]:[СтрШаг]".
Где:

  • "ВертОриент" — признак вертикальной ориентации, по умолчанию ориентация горизонтальная;
  • "Минимум" — минимальное значение;
  • "Максимум" — максимальное значение;
  • "ОдинШаг" — размер одного шага;
  • "СтрШаг" — размер страничного шага.

3.8.3. Элемент текста (Text)

Данный примитив предназначен для вывода простого текста, используемого в роли меток и различных подписей. С целью простого создания частых декоративных оформлений примитив должен поддерживать обвод текста рамкой. Перечень дополнительных свойств/атрибутов данного примитива приведён в таблице 3.8.3.


Таблица 3.8.3. Набор дополнительных свойств/атрибутов в примитиве Text

IdИмяНомерЗначение
backColor Фон:цвет 20

Фоновый цвет. Имя цвета в виде "color[-alpha]", где:

  • "color" — стандартное имя цвета или числовое представление из трёх шестнадцатеричных чисел цвета "#RRGGBB";
  • "alpha" — уровень альфа-канала (0-255).

Примеры:

  • "red" — сплошной красный цвет;
  • "#FF0000" — сплошной красный цвет в цифровом коде;
  • "red-127" — полупрозрачный красный цвет.
backImg Фон:изображение 21

Фоновое изображение. Имя изображения в форме "[src:]name", где:

  • "src" — источник изображения:
    • file — прямо из локального файла по пути;
    • res — из таблицы mime ресурсов БД.
  • "name" — путь файла или идентификатор mime-ресурса.

Примеры:

  • "res:backLogo" — из таблицы mime ресурсов БД для идентификатора "backLogo";
  • "backLogo" — как и предыдущий;
  • "file:/var/tmp/backLogo.png" — из локального файла по пути "/var/tmp/backLogo.png".
bordWidth Граница:ширина 22 Ширина бордюра.
bordColor Граница:цвет 23 Цвет бордюра (детальнее в атрибуте 20).
bordStyle Граница:стиль 24 Стиль бордюра (None;Dotted;Dashed;Solid;Double;Groove;Ridge;Inset;Outset).
font Шрифт 25

Имя шрифта в виде "{family} {size} {bold} {italic} {underline} {strike}",
где:

  • "family" — семейство шрифта, для пробелов используйте символ '_', вроде: "Arial", "Courier", "Times_New_Roman";
  • "size" — размер шрифта в пикселах;
  • "bold" — усиление шрифта (0 или 1);
  • "italic" — наклонность шрифта (0 или 1);
  • "underline" — подчёркивание шрифта (0 или 1);
  • "strike" — перечёркивание шрифта (0 или 1).

Примеры:

  • "Arial 10 1 0 0 0" — Arial шрифт размером 10 пикселов и усиленный.
color Цвет 26 Цвет текста (детальнее в атрибуте 20).
orient Угол поворота 27 Ориентация текста, поворот на угол.
wordWrap Перенос слов 28 Автоматический перенос текста по словам.
alignment Выравнивание 29 Выравнивание текста (Вверху слева; Вверху справа; Вверху по центру; Вверху по ширине; Внизу слева; Внизу справа; Внизу по центру; Внизу по ширине; По центру слева; По центру справа; По середине; По центру по ширине).
text Текст 30 Значение текста. Используйте "%{n}" для помещения значения аргумента {n} (от 1).
numbArg Количество аргументов 40 Количество аргументов.
Атрибуты аргументов
arg{x}val Аргумент {x}:значение 50+10*x Значение аргумента
arg{x}tp Аргумент {x}:тип 50+10*x+1 Тип аргумента: "Integer", "Real", "String"
arg{x}cfg Аргумент {x}:конфигурация 50+10*x+2

Конфигурация аргумента:

  • строка : [len] — ширина строки;
  • вещественное: [wdth];[form];[prec] — ширина значения, форма значения ('g', 'e', 'f');
  • целое: [len] — ширина значения.

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

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


Таблица 3.8.4. Набор дополнительных свойств/атрибутов в примитиве Media

IdИмяНомерЗначение
backColor Фон:цвет 20

Фоновый цвет. Имя цвета в виде "color[-alpha]", где:

  • "color" — стандартное имя цвета или числовое представление из трёх шестнадцатеричных чисел цвета "#RRGGBB";
  • "alpha" — уровень альфа-канала (0-255).

Примеры:

  • "red" — сплошной красный цвет;
  • "#FF0000" — сплошной красный цвет в цифровом коде;
  • "red-127" — полупрозрачный красный цвет.
backImg Фон:изображение 21

Фоновое изображение. Имя изображения в форме "[src:]name", где:

  • "src" — источник изображения:
    • file — прямо из локального файла по пути;
    • res — из таблицы mime ресурсов БД.
  • "name" — путь файла или идентификатор mime-ресурса.

Примеры:

  • "res:backLogo" — из таблицы mime ресурсов БД для идентификатора "backLogo";
  • "backLogo" — как и предыдущий;
  • "file:/var/tmp/backLogo.png" — из локального файла по пути "/var/tmp/backLogo.png".
bordWidth Граница:ширина 22 Ширина бордюра.
bordColor Граница:цвет 23 Цвет бордюра (детальнее в атрибуте 20).
bordStyle Граница:стиль 24 Стиль бордюра (None;Dotted;Dashed;Solid;Double;Groove;Ridge;Inset;Outset).
src Источник 25

Имя источника медиа в форме "[src:]name", где:

  • "src" — источник:
    • file — прямо из локального (визуализатор и движок) файла по пути;
    • res — из таблицы mime ресурсов БД;
    • stream — URL потока проигрывания видео или аудио.
  • "name" — путь файла или идентификатор mime-ресурса.

Примеры:

  • "res:workMedia" — из таблицы mime ресурсов БД для идентификатора "workMedia";
  • "workMedia" — как и предыдущий;
  • "file:/var/tmp/workMedia.mng" — из локального файла по пути "/var/tmp/workMedia.mng";
  • "stream:http://localhost.localhost:5050" — проигрывание видео или аудио из URL.
type Тип 27

Тип медиа, вариант:

  • "Изображение" — растровое или векторное(может не поддерживаться) изображение, вроде: PNG, JPEG, GIF;
  • "Анимация" — простое анимированное изображение, вроде: GIF, MNG;
  • "Полное видео" — полное видео, аудио или поток, вроде: OGG, OGM, AVI, MKV, MPG, MP3, MP4.
areas Области карты 28 Количество активных областей.
Атрибуты изображения (Image)
fit Заполнять виджет 26 Признак "Согласовать содержимое с размером виджета".
Атрибуты видеоролика (Movie)
fit Заполнять виджет 26 Признак "Согласовать содержимое с размером виджета".
speed Скорость проигрывания 29 Скорость проигрывания, в процентах от оригинальной скорости. Если значение меньше 1%, то проигрывание прекращается.
Атрибуты полноформатного видео (Full video)
play Играть 29 Видео/аудио - "Играть".
roll Завор. проигр. 30 Повтороение проигрывания по завершению.
pause Пауза 31 Приостановить проигрование.
size Размер 32 Общий размер видео (в миллисекундах).
seek Положение 33 Позиция проигрывания видео (в миллисекундах).
volume Громкость 34 Громкость звука (0...100).
Активные области
area{x}shp Область {x}:образ 40+3*x Вид области (Rect;Poly;Circle).
area{x}coord Область {x}:координаты 40+3*x+1 Координаты областей. Через запятую идут координаты: "x1,y1,x2,y2,xN,yN"
area{x}title Область {x}:заголовок 40+3*x+2 Заголовок области.

3.8.5. Элемент построения диаграмм/трендов (Diagram)

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


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


Таблица 3.8.5. Набор дополнительных свойств/атрибутов в примитиве Diagram

IdИмяНомерЗначение
backColor Фон:цвет 20

Фоновый цвет. Имя цвета в виде "color[-alpha]", где:

  • "color" — стандартное имя цвета или числовое представление из трёх шестнадцатеричных чисел цвета "#RRGGBB";
  • "alpha" — уровень альфа-канала (0-255).

Примеры:

  • "red" — сплошной красный цвет;
  • "#FF0000" — сплошной красный цвет в цифровом коде;
  • "red-127" — полупрозрачный красный цвет.
backImg Фон:изображение 21

Фоновое изображение. Имя изображения в форме "[src:]name", где:

  • "src" — источник изображения:
    • file — прямо из локального файла по пути;
    • res — из таблицы mime ресурсов БД.
  • "name" — путь файла или идентификатор mime-ресурса.

Примеры:

  • "res:backLogo" — из таблицы mime ресурсов БД для идентификатора "backLogo";
  • "backLogo" — как и предыдущий;
  • "file:/var/tmp/backLogo.png" — из локального файла по пути "/var/tmp/backLogo.png".
bordWidth Граница:ширина 22 Ширина бордюра.
bordColor Граница:цвет 23 Цвет бордюра (детальнее в атрибуте 20).
bordStyle Граница:стиль 24 Стиль бордюра (None;Dotted;Dashed;Solid;Double;Groove;Ridge;Inset;Outset).
trcPer Период слежения (с) 25 Режим и периодичность слежения.
type Тип 26 Тип диаграммы: "Trend", "Спектр".
Атрибуты тренда/графика (Trend)
tSek Время:сек 27 Текущее время, секунд.
tUSek Время:микросек 28 Текущее время, микросекунды.
tSize Размер, сек 29 Размер тренда, секунды.
curSek Курсор:сек 30 Положение курсора, секунды.
curUSek Курсор:микросек 31 Положение курсора, микросекунды.
curColor Курсор:цвет 32 Цвет курсора.
sclColor Шкала:цвет 33 Цвет шкалы/решетки (детальнее в атрибуте 20).
sclHor Шкала:горизонтальная 34 Режим горизонтальной шкалы/решетки: "No draw", "Grid;Markers" и "Grid and markers".
sclVer Шкала:вертикальная 35 Режим вертикальной шкалы/решетки: "No draw", "Grid", "Markers", "Grid and markers", "Grid (log)", "Marker (log)", "Grid and markers (log)".
sclVerScl Шкала:верт. масштаб (%) 40 Вертикальный масштаб графика в процентах.
sclVerSclOff Шкала:смещ. верт. масштаба (%) 41 Смещение вертикального маштаба в процентах.
sclMarkColor Шкала:Маркеры:цвет 36 Цвет маркеров шкалы/решетки (детальнее в атрибуте 20).
sclMarkFont Шкала:Маркеры:шрифт 37

Шрифт маркеров шкалы/решетки. Имя шрифта в виде "{family} {size} {bold} {italic} {underline} {strike}",
где:

  • "family" — семейство шрифта, для пробелов используйте символ '_', вроде: "Arial", "Courier", "Times_New_Roman";
  • "size" — размер шрифта в пикселах;
  • "bold" — усиление шрифта (0 или 1);
  • "italic" — наклонность шрифта (0 или 1);
  • "underline" — подчёркивание шрифта (0 или 1);
  • "strike" — перечёркивание шрифта (0 или 1).

Примеры:

  • "Arial 10 1 0 0 0" — Arial шрифт размером 10 пикселов и усиленный.
valArch Архиватор значений 38 Архиватор значений в форме "МодульАрхивов.IdАрхиватора".
valsForPix Значений на пиксел 42 Количество значений на пиксел. Увеличить для расширения точности экспорта на больших интервалах времени.
parNum Количество параметров 39 Количество параметров, отображаемых на одном тренде.
Индивидуальные атрибуты параметров тренда/графика
prm{X}addr Параметр {X} :адрес 50+10*{X}

Полный адрес к атрибуту параметра {X} DAQ или архиву.
Пример:

  • "/DAQ/System/AutoDA/MemInfo/use" — адрес к атрибуту "use" параметра "MemInfo" контроллера "AutoDA" DAQ модуля "System";
  • "/Archive/va_CPULoad_load" — адрес к архиву "CPULoad_load".
prm{X}bordL Параметр {X} :граница отображ.:нижняя 50+10*{X} +1 Нижняя граница значений параметра {X}.
prm{X}bordU Параметр {X} :граница отображ.:верхняя 50+10*{X} +2 Верхняя граница значений параметра {X}.
prm{X}color Параметр {X} :цвет 50+10*{X} +3 Цвет отображения тренда параметра {X} (детальнее в атрибуте 20).
prm{X}width Параметр {X} :ширина 50+10*{X} +6 Ширина линии тренда параметра {X}, в пикселах.
prm{X}val Параметр {X} :значение 50+10*{X} +4 Значение параметра {X} под курсором.
prm{X}prop Параметр {X} :свойства 50+10*{X} +7

Свойства реального архива в виде "BegArh:EndArh:DataPeriod", где:

  • BegArh, EndArh, DataPeriod — начало, конец и период данных архива в секундах, в реальном представлении вплоть до микросекунд (1e-6).

3.8.6. Элемент построения протоколов, на основе архивов сообщений (Protocol)

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


Таблица 3.8.6. Набор дополнительных свойств/атрибутов в примитиве Protocol

IdИмяНомерЗначение
backColor Фон:цвет 20

Фоновый цвет. Имя цвета в виде "color[-alpha]", где:

  • "color" — стандартное имя цвета или числовое представление из трёх шестнадцатеричных чисел цвета "#RRGGBB";
  • "alpha" — уровень альфа-канала (0-255).

Примеры:

  • "red" — сплошной красный цвет;
  • "#FF0000" — сплошной красный цвет в цифровом коде;
  • "red-127" — полупрозрачный красный цвет.
backImg Фон:изображение 21

Фоновое изображение. Имя изображения в форме "[src:]name", где:

  • "src" — источник изображения:
    • file — прямо из локального файла по пути;
    • res — из таблицы mime ресурсов БД.
  • "name" — путь файла или идентификатор mime-ресурса.

Примеры:

  • "res:backLogo" — из таблицы mime ресурсов БД для идентификатора "backLogo";
  • "backLogo" — как и предыдущий;
  • "file:/var/tmp/backLogo.png" — из локального файла по пути "/var/tmp/backLogo.png".
font Шрифт 22

Имя шрифта в виде "{family} {size} {bold} {italic} {underline} {strike}",
где:

  • "family" — семейство шрифта, для пробелов используйте символ '_', вроде: "Arial", "Courier", "Times_New_Roman";
  • "size" — размер шрифта в пикселах;
  • "bold" — усиление шрифта (0 или 1);
  • "italic" — наклонность шрифта (0 или 1);
  • "underline" — подчёркивание шрифта (0 или 1);
  • "strike" — перечёркивание шрифта (0 или 1).

Примеры:

  • "Arial 10 1 0 0 0" — Arial шрифт размером 10 пикселов и усиленный.
headVis Заголовок видим 23 Заголовок таблицы видим или нет.
time Время, сек 24 Текущее время, секунд.
tSize Размер, сек 25 Размер запроса, секунды. Установите значение в '0' для получения всех нарушений, для "lev" < 0.
trcPer Период слежения (с) 26 Режим и периодичность слежения.
arch Архиватор 27 Архиватор сообщений в форме "МодульАрхивов.IdАрхиватора".
tmpl Шаблон 28

Шаблон категории или регулярное выражение "/{re}/". Для шаблона зарезервированы символы:

  • '*' — множество любых, группа символов;
  • '?' — любой, один символ;
  • '\\' — используйте для экранирования специальных символов.
lev Уровень 29 Уровень сообщений. Установите значение < 0 для получения текущих нарушений.
viewOrd Порядок отображения 30 Порядок отображения ("По времени", "По уровню", "По категории", "По сообщению", "По времени (обратно)", "По уровню (обратно)", "По категории (обратно)", "По сообщению (обратно)").
col Показать колонки 31

Список видимых и порядок колонок, разделённый символом ';'. Поддерживаются колонки:

  • "pos" — номер строки;
  • "tm" — дата и время сообщения;
  • "utm" — микросекундная часть времени сообщения;
  • "lev" — уровень сообщения;
  • "cat" — категория сообщения;
  • "mess" — текст сообщения.
itProp Свойства элемента 32 Количество свойств элементов.
Индивидуальные атрибуты свойств элементов
it{X}lev Элемент {X}:уровень 40+5*{X} Критерий: уровень элемента {X}. Более или равно указанному.
it{X}tmpl Элемент {X}:шаблон 41+5*{X} Критерий: шаблон категории элемента {X} (детальнее в атрибуте 28).
it{X}fnt Элемент {X}:шрифт 42+5*{X} Шрифт элемента {X} (детальнее в атрибуте 22).
it{X}сolor Элемент {X}:цвет 43+5*{X} Цвет элемента {X} (детальнее в атрибуте 20).

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

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


Таблица 3.8.7. Набор дополнительных свойств/атрибутов в примитиве Document

Id Имя Номер Значение
style CSS 20 Правила CSS в строках, вроде "body { background-color:#818181; }".
tmpl Шаблон 21 Шаблон документа в XHTML. Начинается с тега "body" и включает процедурные вставки:
doc Документ 22 Финальный документ в XHTML. Начинается с тега "body".
font Шрифт 26

Базовый шрифт текста документа. Имя шрифта в виде "{family} {size} {bold} {italic} {underline} {strike}",
где:

  • "family" — семейство шрифта, для пробелов используйте символ '_', вроде: "Arial", "Courier", "Times_New_Roman";
  • "size" — размер шрифта в пикселах;
  • "bold" — усиление шрифта (0 или 1);
  • "italic" — наклонность шрифта (0 или 1);
  • "underline" — подчёркивание шрифта (0 или 1);
  • "strike" — перечёркивание шрифта (0 или 1).

Примеры:

  • "Arial 10 1 0 0 0" — Arial шрифт размером 10 пикселов и усиленный.
bTime Время:начало 24 Время начала документа, секунд.
time Время:текущее 23 Время генерации документа, секунд. Записать время для генерации документа от этой точки.
n Размер архива 25 Количество документов или глубина архива.
Атрибуты включеного режима архивирования
aCur Архив:курсор:текущий - Позиция текущего документа в архиве. Запись значения <0 производит архивацию текущего документа.
vCur Архив:курсор:вид - Текущий визуализируемый документ архива. Запись значения -1 — выбор следующего документа, -2 — выбор предыдущего документа.
aDoc Архив:текущий документ - Текущий документ архива в XHTML. Начинается с тега "body".
aSize Архив:размер - Реальный размер архива документа.

Возможности примитива "Документ":


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


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


На рис. 3.8.7.a изображена структурная схема виджета примитива "Документ". Согласно этой структуре "Документ" содержит: XHTML-шаблон, результирующие документы и скрипт обработки данных. Источником данных для скрипта и результирующих документов являются атрибуты виджета.


Структурная схема примитива «Документ». (42 Кб)
Рис.3.8.7.a Структурная схема примитива "Документ".

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


Генерация документа всегда производится в момент установки атрибута времени <time> относительно установленного начального времени документа в атрибуте <bTime>. При выключенном архиве результирующий документ помещается непосредственно в атрибут <doc>. При включенном архиве результирующий документ помещается в ячейку под курсором, атрибут <aCur>, а так-же в <doc> если значение курсора архива <aCur> и курсора визуализируемого документа <vCur> совпадают. Атрибуты архивных курсоров предусматривают несколько командных значений:


Как было указано выше динамика шаблона документа определяется вставками исполняемых инструкций вида <?dp {procedure} ?>. В процедурах могут использоваться одноимённые атрибуты виджета и функции пользовательского интерфейса программирования OpenSCADA. Кроме атрибутов виджета зарезервированы специальные атрибуты (табл. 3.8.7.a).


Кроме специальных атрибутов в XHTML шаблоне зарезервированы теги и атрибуты тегов специального назначения (табл. 3.8.7.a).


Таблица 3.8.7.a. Специальные и зарезервированные элементы шаблона.

Имя Назначение
Атрибуты
rez Атрибут результата исполнения процедуры, содержимое которого помещается в дерево документа.
lTime Время последнего формирования. Если документ формируется впервые то <lTime> равен <bTime>.
rTime Содержит время для перебираемых значений в секундах. Определяется внутри тегов с атрибутом "docRept".
rTimeU Содержит время для перебираемых значений в микросекундах. Определяется внутри тегов с атрибутом "docRept".
rPer Содержит периодичность перебора значений (атрибут "docRept").
mTime, mTimeU, mLev, mCat, mVal Определяются внутри тегов с атрибутом "docAMess" при разборе сообщений архива сообщений:
mTime — время сообщения;
mTimeU — время сообщения, микросекунды;
mLev — уровень сообщения;
mCat — категория сообщения;
mVal — значение сообщения.
Специальные теги
Специальные атрибуты стандартных тегов
body.docProcLang Язык исполняемых процедур документа. По умолчанию это JavaLikeCalc.JavaScript.
*.docRept="1s" Тег с указанным атрибутом при формировании размножается путём смещения времени в атрибуте "rTime" на значение указанное в данном атрибуте.
*.docAMess="1:PLC*" Указывает на необходимость размножения тега с атрибутом сообщения из архива сообщений за указанный интервал времени и в соответствии с уровнем (1) и шаблоном запроса (PLC*). В шаблоне запроса может указываться регулярное выражение в виде /{re}/. Для данного тега, в процессе размножения, определяются атрибуты: mTime, mTimeU, mLev, mCat и mVal.
*.docRevers="1" Указывает на инвертирование порядка размножения, последний сверху.
*.docAppend="1" Признак необходимости добавления результата выполнения процедуры в тег процедуры. Иначе результат исполнеия заменяет содержимое тега.
body.docTime Время формирования документа. Используется для установки атрибута <lTime> при следующем формировании документа. Не устанавливается пользователем!
table.export="1" Включение возможности экспорта содержимого указанной таблицы в CSV-файл и другие табличные форматы.

3.8.8. Контейнер (Box)

Примитив контейнера используется для формирования составных виджетов и/или страниц пользовательского интерфейса. Перечень дополнительных свойств/атрибутов данного примитива приведён в таблице 3.8.8.


Таблица 3.8.8. Набор дополнительных свойств/атрибутов в примитиве Box

IdИмяНомерЗначение
pgOpenSrc Страница:источник открытия 3 Полный адрес страницы, которая включена внутрь данного контейнера.
pgGrp Страница:группа 4 Группа контейнера страниц.
backColor Фон:цвет 20

Фоновый цвет. Имя цвета в виде "color[-alpha]", где:

  • "color" — стандартное имя цвета или числовое представление из трёх шестнадцатеричных чисел цвета "#RRGGBB";
  • "alpha" — уровень альфа-канала (0-255).

Примеры:

  • "red" — сплошной красный цвет;
  • "#FF0000" — сплошной красный цвет в цифровом коде;
  • "red-127" — полупрозрачный красный цвет.
backImg Фон:изображение 21

Фоновое изображение. Имя изображения в форме "[src:]name", где:

  • "src" — источник изображения:
    • file — прямо из локального файла по пути;
    • res — из таблицы mime ресурсов БД.
  • "name" — путь файла или идентификатор mime-ресурса.

Примеры:

  • "res:backLogo" — из таблицы mime ресурсов БД для идентификатора "backLogo";
  • "backLogo" — как и предыдущий;
  • "file:/var/tmp/backLogo.png" — из локального файла по пути "/var/tmp/backLogo.png".
bordWidth Граница:ширина 22 Ширина бордюра.
bordColor Граница:цвет 23 Цвет бордюра (детальнее в атрибуте 20).
bordStyle Граница:стиль 24 Стиль бордюра (None;Dotted;Dashed;Solid;Double;Groove;Ridge;Inset;Outset).

3.9. Использование БД для хранения библиотек виджетов и проектов

Хранение данных виджетов и библиотек виджетов реализовано в БД, доступных системе OpenSCADA. БД организована по принадлежности данных к библиотеке. Т.е. отдельная библиотека хранится в отдельной группе таблиц одной или разных БД. Перечень библиотек виджетов хранится в индексной таблице библиотек с именем "VCALibs" и структурой “Libs”. Экземпляр этой таблицы создаётся в каждой БД, где хранятся данные этого модуля с перечнем библиотек, содержащихся в конкретно взятой БД. В состав таблиц, принадлежащих библиотеке виджетов, входят следующие:


Проекции (структуры) основных таблиц таковы :

3.10 API пользовательского программирования и сервисные интерфейсы OpenSCADA

3.10.1. API пользовательского программирования

API пользовательского программирования движка визуализации представлено непосредственно объектами OpenSCADA, формирующие пользовательский интерфейс, а именно "Сеансом" и "Виджетами/страницами". Для пользователя эти объекты предоставляют набор функций управления:


Объект "Сеанс" ( this.ownerSess() )


Объект "Виджет" (this)

Объект "Виджет", примитива "Документ" (this)


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


Список виджетов (WdgList)
Описание: Возвращает список виджетов в контейнере виджетов или список дочерних виджетов. Если установлено <pg>, то возвращается список страниц для проектов и сеансов.
Параметры:

ID Имя Тип Режим По умолчанию
list Список Строка Возврат
addr Адрес Строка Вход
pg Страницы Bool Вход 0

Присутствие узла (NodePresent)
Описание: Проверка на присутствие узла, включая виджеты, атрибуты и другие.
Параметры:

ID Имя Тип Режим По умолчанию
rez Результат Bool Возврат
addr Адрес Строка Вход

Список атрибутов (AttrList)
Описание: Возвращает список атрибутов виджета. Если установлен <noUser> тогда возвращаются только не пользовательские атрибуты.
Параметры:

ID Имя Тип Режим По умолчанию
list Список Строка Возврат
addr Адрес Строка Вход
noUser Без пользовательских Bool Вход 1

Запрос атрибута (AttrGet)
Описание: Запрос значения атрибута виджета. Запрос может осуществляться как указанием полного адреса атрибута в <addr>, так и отдельно адреса виджета в <addr>, а идентификатора атрибута в <attr>.
Параметры:

ID Имя Тип Режим По умолчанию
val Значение Строка Возврат
addr Адрес Строка Вход
attr Атрибут Bool Вход

Установка атрибута (AttrSet)
Описание: Установка значения атрибута виджета. Установка может осуществляться как указанием полного адреса атрибута в <addr>, так и отдельно адреса виджета в <addr>, а идентификатора атрибута в <attr>.
Параметры:

ID Имя Тип Режим По умолчанию
addr Адрес Строка Вход
val Значение Строка Вход
attr Атрибут Bool Вход

Пользователь сеанса (SesUser)
Описание: Возвращает пользователя сеанса по пути к виджету сеанса.
Параметры:

ID Имя Тип Режим По умолчанию
userПользовательСтрокаВозврат
addr Адрес Строка Вход

3.10.2. Сервисные интерфейсы OpenSCADA

Сервисные интерфейсы это интерфейсы доступа к системе OpenSCADA посредством интерфейса управления OpenSCADA из внешних систем. Данный механизм положен в основу всех механизмов обмена внутри OpenSCADA, реализованных посредством слабых связей и стандартного протокола обмена OpenSCADA.

Доступ к значениям атрибутов элементов визуализации (виджеты)

С целью предоставления унифицированного, группового и сравнительно быстрого доступа к значениям атрибутов визуальных элементов предусмотрена сервисная функция визуального элемента "/serv/attr" и команды получения/установки значений атрибутов: <get path="/UI/VCAEngine/{wdg_addr}/%2fserv%2fattr"/> и <set path="/UI/VCAEngine/{wdg_addr}/%2fserv%2fattr"/>. Атрибуты данных команд, предусматривающие различные механизмы запроса, представим в таблице 4.13.1.


Таблица 3.10.2.a. Атрибуты команд получения/установки атрибутов визуальных элементов

IdИмяЗначение
Команда запроса визуальных атрибутов виджета: <get path="/UI/VCAEngine/{wdg_addr}/%2fserv%2fattr"/>
tm Время/счётчик изменений Установка времени/счётчика изменений для запроса только изменившихся атрибутов.
<el id="{attr}" p="{a_id}">{val}</el> Формирование дочерних элементов с результатами атрибутов В дочернем элементе указываются: строковых идентификатор {attr} атрибута, индекс {a_id} атрибута и его значение {val}.
Команда установки визуальных атрибутов виджета: <set path="/UI/VCAEngine/{wdg_addr}/%2fserv%2fattr"/>
<el id="{attr}">{val}</el> Установка атрибутов В дочерних элементах указывается идентификатор атрибута {attr} и его значение {val}.
Групповой доступ к значениям атрибутов элементов визуализации (виджетам)

С целью оптимизации трафика сетевого взаимодействия путём исключения мелких запросов, а использования одного, но большого запроса создан групповой запрос значений атрибутов визуальных элементов. Группировка данного запроса подразумевает запрос атрибутов всей ветви виджета, включая и вложенные элементы. Для данного запроса предусмотрена сервисная команда "/serv/attrBr". Запрос данной сервисной команды эквивалентен сервисной команде "/serv/attr" и выглядит следующим образом:
<get path="/UI/VCAEngine/{wdg_addr}/%2fserv%2fattrBr"/>

tm — Время/счётчик изменений. Установка времени/счётчика изменений для запроса только изменившихся атрибутов.

Результат:
<el id="{attr}" p="{a_id}">{val}</el> — Элементы с результатами атрибутов. В элементе указываются: строковый идентификатор {attr} атрибута, индекс {a_id} атрибута и его значение {val}.
<w id="{wid}" lnkPath="{lnk_path}">{childs+attrs}</w> — Элементы с дочерними виджетами и их атрибутами. В элементе указываются идентификатор дочернего виджета {wid} и путь виджета на который ссылается данный виджет если он является ссылкой {lnk_path}.

Доступ к страницам сеанса

С целью унификации и оптимизации доступа к страницам предусмотрена сервисная функция сеанса "/serv/pg" и команды запроса перечня открытых страниц (<openlist path="/UI/VCAEngine/ses_{Session}/%2fserv%2fpg"/>); открытия страницы (<open path="/UI/VCAEngine/ses_{Session}/%2fserv%2fpg"/>); и закрытия страницы <close path="/UI/VCAEngine/ses_{Session}/%2fserv%2fpg"/>).


Результатом запроса перечня открытых страниц являются дочерние элементы <el>{OpPage}</el> содержащие полный путь открытой страницы. Кроме перечня открытых страниц запрос возвращает значение текущего счётчика вычисления сеанса в атрибуте <tm>. Если данный атрибут устанавливается при запросе, то для каждой открытой страницы возвращается список изменённых с момента указанного значения счётчика виджетов открытой страницы.

Управление сигнализацией

Для предоставления механизма глобального контроля за сигнализацией сеанса предусмотрена сервисная функция сеанса "/serv/alarm" и команды запроса статуса сигналов (<get path="/UI/VCAEngine/ses_{Session}/%2fserv%2falarm"/>); и квитирование сигналов (<quittance path="/UI/VCAEngine/ses_{Session}/%2fserv%2falarm"/>).


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


Запрос на квитирование выполняет квитирование указанного виджета, атрибут <wdg>, в соответствии с шаблоном, атрибут <tmpl>.

Манипуляция сеансами проектов

Для предоставления унифицированного механизма манипуляции сеансами визуализаторам СВУ в модуле движка СВУ (VCAEngin) предусмотрена сервисная функция "/serv/sess" и команды запроса перечня открытых сеансов, подключения/создания нового сеанса и отключения/удаления сеанса: <list path="/UI/VCAEngine/%2fserv%2fsess"/>, <connect path="/UI/VCAEngine/%2fserv%2fsess"/> и <disconnect path="/UI/VCAEngine/%2fserv%2fsess"/> соответственно. Атрибуты данных команд, предусматривающие различные механизмы запроса, представим в таблице 4.13.5.


Таблица 3.10.2.b. Атрибуты команд механизма манипуляции сеансами

IdИмяЗначение
Команда запроса перечня открытых сеансов для проекта: <list path="/UI/VCAEngine/%2fserv%2fsess"/>
prj Указание проекта Указывает проект, для которого возвращать перечень открытых сеансов.
<el>{Session}</el> Контроль перечня сеансов В дочерних элементах указываются сеансы, открытые для запрошенного проекта.
Команда подключения/открытия сеанса: <connect path="/UI/VCAEngine/%2fserv%2fsess"/>
sess Установка и контроль имени сеанса Если атрибут определён, то производится подключение к существующему сеансу, иначе создание нового сеанса. В случае открытия нового сеанса в данный атрибут помещается его имя.
prj Установка имени проекта Используется для открытия нового сеанса для указанного проекта и если атрибут {sess} не указан.
Команда отключения/закрытия сеанса: <disconnect path="/UI/VCAEngine/%2fserv%2fsess"/>
sess Установка имени сеанса Указывает имя сеанса от которого выполняется отключение или закрытие. Сеансы, не являющиеся фоновыми и к которым ни один из визуализаторов не подключен, автоматически закрываются.
Групповой запрос дерева библиотек виджетов

С целью оптимизации производительности локального и особенно сетевого взаимодействия предусмотрена сервисная функция "/serv/wlbBr" и команда запроса дерева библиотек виджетов: <get path="/UI/VCAEngine/%2fserv%2fwlbBr"/>. Результатом запроса является дерево с элементами библиотек виджетов, теги <wlb>. Внутри тегов библиотек виджетов содержаться тег иконки <ico> и теги виджетов библиотеки <w>. Теги виджетов, в свою очередь, содержат тег иконки и теги дочерних виджетов <cw>.

4. Конфигурация модуля посредством интерфейса управления OpenSCADA

Посредством интерфейса управления OpenSCADA компоненты, которые его используют, можно конфигурировать из любого конфигуратора системы OpenSCADA. Данным модулем предоставляется интерфейс для доступа ко всем объектам данных СВУ. Главная вкладка конфигурационной страницы модуля предоставляет доступ к библиотекам виджетов и проектам (рис. 4.1). Вкладка "Сеансы" предоставляет доступ и открытым сеансам проектов (рис. 4.2). Для настройки движка синтеза речи предусмотрена соответствующая страница (рис. 4.3).


Главная конфигурационная страница модуля. (99 Кб)
Рис.4.1 Главная конфигурационная страница модуля.

Вкладка "Сеансы" конфигурационной страницы модуля. (85 Кб)
Рис.4.2 Вкладка "Сеансы" конфигурационной страницы модуля.

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


Вкладка конфигурации движка синтеза речи. (76 Кб)
Рис.4.3 Вкладка конфигурации движка синтеза речи.

Конфигурация контейнеров виджетов, в лице библиотек виджетов и проектов выполняется посредством страниц на рис. 4.4 (для проекта) и рис.4.5 (для библиотеки виджетов). Библиотека виджетов содержит виджеты, а проект — страницы. Оба типа контейнера содержат вкладку конфигурации Mime-данных, используемых виджетами (рис.4.6).


Страница конфигурации проектов. (112 Кб)
Рис.4.4 Страница конфигурации проектов.

С помощью этой страницы можно установить:


Страница конфигурации библиотек виджетов. (109 Кб)
Рис.4.5 Страница конфигурации библиотек виджетов.

С помощью этой страницы можно установить:


Вкладка конфигурации mime-данных контейнера. (99 Кб)
Рис.4.6 Вкладка конфигурации mime-данных контейнера.

Конфигурация сеанса проекта значительно отличается от конфигурации проекта (рис. 4.7), однако также содержит страницы проекта.


Страница конфигурации сеансов проектов. (124 Кб)
Рис.4.7 Страница конфигурации сеансов проектов.

С помощью этой страницы можно установить:


Страницы конфигурации визуальных элементов, расположенных в разных контейнерах, могут сильно отличаться, однако, это отличие заключается в наличии или отсутствии отдельных вкладок. Главная вкладка визуальных элементов фактически везде одинакова, отличаясь на одно конфигурационное поле (рис. 4.8). У страниц присутствуют вкладки дочерних страниц и вложенных виджетов. У контейнерных виджетов содержится вкладка вложенных виджетов. Все визуальные элементы содержат вкладку атрибутов (рис. 4.9), кроме логических контейнеров проектов. Элементы, на уровне которых можно формировать пользовательскую процедуру и определять связи, содержат вкладки "Обработка" (рис. 4.10) и "Связи" (рис.4.11).


Главная вкладка конфигурации визуальных элементов. (129 Кб)
Рис.4.8 Главная вкладка конфигурации визуальных элементов.

С помощью этой страницы можно установить:


Вкладка атрибутов визуальных элементов. (139 Кб)
Рис.4.9 Вкладка атрибутов визуальных элементов.

Вкладка обработки визуальных элементов. (148 Кб)
Рис.4.10 Вкладка обработки визуальных элементов.

Вкладка связей визуальных элементов. (108 Кб)
Рис.4.11 Вкладка связей визуальных элементов.

 
There are 22 files on this page.[Display files/form]
There is no comment on this page. [Display comments/form]