Доклад

«Открытая SCADA система OpenSCADA версия 0.4.0»

Докладчик:	Савоченко Роман Алексеевич

О проекте OpenSCADA

Добрый день! Меня зовут Савоченко Роман Алексеевич. Я сотрудник фирмы НИП «ДIЯ». Свой доклад я хотел посвятить релизу открытой SCADA системы OpenSCADA версии 0.4.0.

На прошлой конференции я расказывал о проекте OpenSCADA. Напомню суть этого проекта.

Проект открытой SCADA системы «OpenSCADA" был основан в начале 2003г мною (Савоченко Романом Алексеевичем) и Бортником Тимофеем Владимировичем. Перед проектом ставилась цель создания потенциально новой: открытой, многоплатформенной и модульной SCADA системы. Эти и производные цели проекта вы можете видеть на слайде. На настоящий момент система OpenSCADA уже имеет осязаемый вид, т.е. все последние релизы пакуются в дистрибутив содержащий, кроме всего прочего, демонстрационную БД для быстрого старта.

Кроме применения, непосредственно, в роли SCADA системы, OpenSCADA с успехом может применяться в других смежных областях. Степень охвата смежных областей можно сопоставить со степенью модульности системы OpenSCADA. Учитывая высокую степень модульности системы трудно сразу представить все потенциально возможные сферы применения системы OpenSCADA. Из наиболее ярких смежных областей применения можно отметить такие:

встраиваемые (embeded) системы, в том числе и PLC;

создание и исполнения различных моделей (технологических, химических, физических, электрических процессов);

сбор, обработка, представление и архивирование данных аппаратно-программных платформ.

Что нового в OpenSCADA 0.4.0

Теперь рассмотрим новшества OpenSCADA версии 0.4.0 которая вышла 11 сентября 2005г.

Новый уровень динамизации системы.

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

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

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

В текущей версии эти проблемы полностью решены. Благодаря чему была достигнута высокая степень стабильности что доказывается прохождением всех модулей теста «Периодическое отключение/подключение модулей»!

Создание среды программирования системы.

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

подсистема «Функции» системы OpenSCADA;

библиотеки функций;

вычислительные контроллеры и другие вычисляющие узлы системы.

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

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

Добавление поддержки БД SQLite.

Для добавления в систему OpenSCADA возможности удобного хранения локальных данных встраиваемых систем была добавлена поддержка маленькой но мощной локальной БД SQLite. SQLite хранит базу данных в одном компактном файле что существенно для встраиваемых систем.

В настоящий момент БД на основе SQLite активно используются конфигурацией среды представления для процессорных плат фирмы DiamondSystems, а также в демонстрационном пакете системы OpenSCADA.

Систематизация API языка управления системы.

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

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

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

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

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

Добавление демонстрационного пакета.

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

Удаление прослойки ядер и формулирование чёткого понятия «Подсистема».

Признана лишней и удалена прослойка ядер в системе OpenSCADA. Также сформулировано понятие подсистемы.

Подсистемами являются все объекты непосредственно принадлежащие системе. Каждая подсистема должна наследоваться от объекта TSubSYS (ранее TGRPModule).

Подсистемы могут быть обычными и модульными. Модульные подсистемы могут расширяться посредством модулей.

Систематизация процесса формирования и архивирования сообщений.

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

Для повышения гибкости разбора сообщений, на уровне архивирования, была добавлена поддержка шаблонов с возможностью использования специальных символов регулярных выражений: '*', '?' и '\'.

Данные решения позволяют создавать архивы сообщений для отдельно взятых подсистем!

Добавление поддержки работы в режиме демона.

В текущей версии была добавлена поддержка режима демона. Данный режим позволяет запускать систему OpenSCADA как сервис.

Для реализации возможности запуска системы OpenSCADA как сервис был создан скрипт запуска “oscadad”. Данный скрипт поставляется вместе с системой.

Добавление возможности работы с единой БД.

С целью облегчения восприятия механизма работы с БД была добавлена возможность использования одного типа и имени БД во всех подсистемах.

Данная возможность не исключает варианта указания отдельных БД, но при этом позволяет упростить манипуляции с БД в целом. Например скопировать БД всей системы можно поменяв тип и имя БД в одном месте и нажать кнопку «Сохранить систему».

Систематизация команд управления узлами системы.

Для управлением загрузкой, запуском, остановом и другими процессами в системе OpenSCADA использовались различные команды. В данной версии они систематизированы и сведены к четырём командам: «Загрузка», «Сохранение», «Запуск», «Останов».

При этом по команде «Загрузка» выполняется загрузка конфигурации из БД и конфигурационного файла. На этой стадии не допускается связывание с другими подсистемами и компонентами. По команде «Запуск» производится связывание с другими подсистемами и завершение приведения в рабочее состояние.

Обновление документации на систему включая API и документацию на модули.

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

Планы проекта OpenSCADA

Работа над текущей версией закончена и сейчас строятся новые планы по развитию системы.

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

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

Наделение модуля «Операционная система» подсистемы «Контроллеры» функцией определения активных источников данных и автоматического создания параметров для доступа к этим данным.

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

Создание WIKI-ресурса для проекта системы OpenSCADA.

Из долгосрочных планов можно отметить следующие задачи которые должны быть решены к функциональному релизу версии 0.5.0:

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

Реализация логического уровня параметров предназначенного для создания параметров собственной структуры на основе других параметров.

Реализация архива значений для хранения истории значений по отдельным атрибутам параметров.

Итог

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

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

опрос источников данных (реализована поддержка источников данных на основе плат фирмы Diamond Systems);

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

удалённое конфигурирование и контроль за работой системы посредством WEB-интерфейса.

К версии 0.5.0 системы OpenSCADA планируется закончить реализацию основных компонентов SCADA систем что откроет возможность использования системы в более широком круге задач.

Контакты

Ресурс проекта:	http://diyaorg.dp.ua
Разработчики:	Савоченко Роман Алексеевич rom_as@diyaorg.dp.ua Зайчук Евгений Николаевич evgen@diyaorg.dp.ua
Консультанты:	Бортник Тимофей Владимирович timbortnik@hotbox.ru
Спонсоры:	Научно-инновационное предприятие «ДIЯ» diya@diyaorg.dp.ua

5

2004-07-22T08:22:27