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