Открытая SCADA система OpenSCADA принадлежит к классу SCADA(Supervisory Control and Data Aquisition) систем. Системы данного класса используются как элемент систем автоматизации технологических процессов(АСУ-ТП).
Система OpenSCADA строится как модульная и высокомасштабируемая система. Следовательно, внутренняя структура системы должна удовлетворять высоким требованиям гибкости.
Для получения данных извне в системе OpenSCADA предусмотрены, так называемые, "Источники данных". Все источники данных содержатся в одноимённой подсистеме и группированы по типам источников данных, определяющих модуль подсистемы источников данных (DAQ). Модуль является отделяемым компонентом системы OpenSCADA, который для модулей подсистемы "DAQ" содержит контролеры с параметрами предопределённой структуры. Под структурой параметра подразумевается наполненность его атрибутами.
Природа источника данных может колебаться от "сырого" до полноценного. Под "сырым" подразумевается источник, который предоставляет только элементарные сигналы (целое, вещественное, логическое). Под полноценным подразумевается источник, который в параметре содержит атрибуты дополнительного значения, покрывающие практически все диагностические задачи, т.е. параметр является законченным объектом, нетребующим дополнительной информации.
Учитывая такой разброс, может возникнуть ситуация, когда информации в объекте параметра недостаточно для описания объекта в целом и нужен производный объект на более высоком уровне абстракции. Решением такой ситуации может быть формирование дополняющих параметров, что является ненаглядным и вносит путаницу. Более правильным решением будет создание прослойки, так называемого "Логического уровня", выполняющей функции гибкого формирования параметров/объектов необходимой структуры, включая пост-обработку.
2 Назначение
Функционально разработка предназначена для предоставления в системе OpenSCADA механизма свободного формирования объектов параметров нужной структуры.
Эксплуатационным назначением разработки является:
расширение сферы применения системы OpenSCADA за счёт увеличения гибкости описания объектов параметров;
сокращения затрат труда на создание сложных автоматизированных систем.
3 Требования
Архитектурно логический уровень должен удовлетворять следующим требованиям:
реализовываться в виде подсистемы системы OpenSCADA (подсистема "Параметры");
содержать контейнеры параметров и шаблонов параметров;
Исходя из архитектурных соображений, можно сформировать требования к отдельным компонентам.
Требования к подсистеме "Параметры":
содержать контейнеры параметров и их шаблонов;
предоставлять механизм периодического обсчёта параметров, построенных на шаблонах;
предоставлять сценарии пользовательского интерфейса для конфигурации подсистемы и доступа к параметрам и их шаблонам.
Требования к объектам "Шаблоны параметров":
содержать структуру атрибутов параметра;
поддерживать пользовательский доступ к атрибутам (сторона конфигурации): константа, связь;
поддерживать группировку связей атрибутов по параметрам с автоматическим назначением нужных атрибутов после указания параметра;
поддерживать возможность указания типа атрибута (сторона результирующего параметра): не атрибут, атрибут с полным доступом, атрибут с доступом только на чтение;
предоставлять механизм вычисления импортируемых атрибутов с целью формирования новых (на основе объектной модели системы OpenSCADA);
предоставлять сценарии пользовательского интерфейса для конфигурации шаблона параметров.
Требования к объектам "Параметров":
поддерживать режимы: прямое отображение и формирование по шаблону;
реализация высокопроизводительного механизма связывания с исходными атрибутами/параметрами;
предоставлять сценарии пользовательского интерфейса (интерфейс управления системой) для конфигурации параметра.
4 Проектирование
Исходя из вышеизложенных требований, разработаем Логический уровень параметров. Общая структура Логического уровня в контексте взаимодействия с физическим представлена на рис. 1.
Рис. 1. Общая структура логического уровня
Разработка подсистемы "Параметры" ничем существенно не отличается от других подсистем системы OpenSCADA, поэтому рассматривать особенности её формирования не будем. Шаблоны параметров и параметры являются интересным вопросом, поэтому рассмотрим особенности их формирования.
Требованиями к шаблону параметров озвучена необходимость содержания структуры атрибутов, которые будут фигурировать как со стороны конфигурации параметра, так и со стороны результирующих атрибутов. Кроме того, необходимо обеспечить возможность вычисления атрибутов. Хорошим решением будет использования для этих целей объектов функций среды программирования. Такой подход избавит от необходимости создания механизма добавления атрибутов, поскольку добавляться и формироваться они будут в виде параметров функции. Общую структуру формирования параметра по шаблону представлено на рис. 2.
Рис. 2. Формирование параметра логического уровня по шаблону
Архитектура логического уровня получается предельно простая. В виде диаграммы классов её можно изобразить следующим образом (рис 3). Описание классов приведено в таблице 1.
Рис. 3. Диаграмма классов логического уровня параметров
Таблица 1. Классы логического уровня параметров
Класс
Ответственность
Связи
TParamS
Класс подсистемы "Параметры". Содержит механизм вычисления параметров на шаблонах
Содержит параметры и их шаблоны.
TParam
Класс параметра. Содержит структуру связей, кадр значений функции и может выполнять вычисления с помощью функции шаблона
Содержится в подсистеме "Параметры". Включает кадр значений объекта функции.
TPrmTmpl
Класс шаблона параметра. Содержит структуру атрибутов(параметров функции)
Содержится в подсистеме "Параметры". Включает ссылку на объект функции.
Логику работы логического уровня параметров можно записать следующим образом:
Параметр связывается с шаблоном, из которого приобретает структуру атрибутов в соответствии с функцией шаблона.
В момент связывания параметра с функцией выполняется связывание кадра значений параметра с функцией из шаблона.
Далее, в соответствии с шаблоном функции, формируется структура связей.
Исходя из структуры связей формируется форма связывания параметра.
Пользователь устанавливает связи.
После этого при доступе к атрибутам полученного параметра производится проверка на наличие прямой связи. В случае наличия прямой связи запрос перенаправляется по этой связи, в противном случае значение берётся из кадра значений функции.
В этот момент работает вычисление функции шаблона, по кадру значений параметров. При этом, перед вычислением производится чтение значений по ссылкам, а после вычисления запись результатов по этим ссылкам.
В шаблоне параметра, у атрибута, предусмотрено два свойства: "Атрибут", "Доступ" и "Значение". Свойство "Атрибут" описывает отражения на атрибут параметра. Предусмотрены следующие варианты этого свойства:
не атрибут - параметр функции не является атрибутом;
только чтение - параметр функции является атрибутом с доступом только на чтение;
полный доступ - параметр функции является атрибутом с полным доступом.
Свойство "Доступ" определяет связи этого параметра функции с физическим уровнем. Предусмотрены следующие варианты этого свойства:
константа - устанавливается только на уровне шаблона;
публичная константа - устанавливается на уровне параметра, пользователем;
Связь - связь на атрибут параметра физического уровня.
Поле "Значение" описывает значение для констант и предпочитаемый атрибут параметра для связей. Описание предпочитаемого атрибута параметра для связей используется в целях описания неявного распределения атрибутов параметров. Структура описания следующая: <Описание параметра>|<атрибут>. Где "Описание параметра" используется для объединения параметров и помещения на форму конфигурации, а атрибут для автоматического связывания при назначении параметра.
5 Реализация
В процессе реализации были созданы все компоненты, а также сценарии конфигурации, интерфейса управления, для них. Формы конфигурации подсистемы "Параметры" приведены на рис. 4. и рис. 5. Формы конфигурации шаблонов параметров приведены на рис. 6 и рис. 7. Формы конфигурации параметров логического уровня приведены на рис. 8, рис. 9 и рис.10.
6 Замечания
В процессе реализации остался не решен вопрос производительности. Проблема заключается в том, что для адресации атрибутов используется строковый идентификатор, причём как при обращении к атрибутам параметра, так и в процессе вычисления кадра значений функцией шаблона. В результате этого, общее время вычисления и доступа оказывается значительным!
В процессе использования логического уровня параметров появилась мысль задействовать разработанные механизмы на физическом уровне отдельных источников данных. Например, эти механизмы можно использовать в источнике данных контроллеров S7 для формирования параметров требуемой структуры. Отличием от логического уровня параметров будет только иной смысл связей, так они будут описывать блоки данных и смещения в них.
В последствии практического использования и соображений выше было выполнено упразднение подсистемы логического уровня параметров, как отдельной сущности, а её механизмы в составе шаблонов параметров и параметров логического уровня были перемещены в подсистему "DAQ" (шаблоны параметров) и в отдельные модули (параметры логического уровня). Таким образом, стало возможным включение механизмов формирования параметров по шаблону в любой модуль источника данных.
Реализован механизм полного описания шаблона в нем самом. Теперь не нужно отдельно формировать функции для объектной модели.