OpenSCADAWiki: Doc/VCA/part4/part14
 

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 Адрес Строка Вход

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

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

Таблица. Атрибуты команд получения/установки атрибутов визуальных элементов
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.
Команда активации-создания специфичного для визуализатора атрибута: <activate path="/UI/VCAEngine/{wdg_addr}/%2fserv%2fattr/{attrId}" aNm="{Name}" aTp="{Type} aFlg="{Flags}"/>
attrId Идентификатор атрибута
aNm Имя атрибута
aTp Тип атрибута
aFlg Флаги атрибута
Групповой доступ к значениям атрибутов элементов визуализации (виджетам)
С целью оптимизации трафика сетевого взаимодействия путём исключения мелких запросов, а использования одного, но большого запроса предусмотрен групповой запрос значений атрибутов визуальных элементов. Группировка данного запроса подразумевает запрос атрибутов всей ветви виджета, включая и вложенные элементы. Для данного запроса предусмотрена сервисная команда "/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"/>.

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

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

Таблица. Атрибуты команд механизма манипуляции сеансами
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.