Версию 0.5.0 системы OpenSCADA можно с уверенностью назвать переломной. Дело в том, что данная версия содержит ядро SCADA системы в котором реализованы все запроектированные базовые функции. Кроме этого, система практически вплотную приблизилась к реализации всех запроектированных базовых функций SCADA системы. Так, в дистрибутив системы была включена среда представления Vision Зайчука Евгения. Разработка которой, однако, ещё не завершена. Также, система дважды была использована для решения практических задач. Первой задачей стала - построение динамической модели технологического процесса газо-лифтной компрессорной станции (ГЛКС). Вторая задача представляла собой высокочастотный сбор и архивирование 6 каналов датчиков давлений и 2 канала перепада той-же компрессорной станции на основе одноплатного компьютера (PC/104) с УСО "Athena" фирмы Diamond Systems.
Данный документ является обработкой(компиляцией) документа <ChangeLog> системы OpenSCADA версии 0.5.0 призванный вкратце и доходчиво осветить новые возможности системы OpenSCADA. Детально ознакомиться с изменениями в системе OpenSCADA можно в файле ChangeLog из дистрибутива системы или здесь: http://diyaorg.dp.ua/oscadawiki/wakka.php?wakka=Works/ChangeLog
Ключевыми особенностями данной версии являются:
Новые и значительно обновленные модули:
С целью обеспечения архивирования значений в системе OpenSCADA, была реконструирована подсистема "Архивы". В результате была обеспечена поддержка архивирования как сообщений так и значений.
Архивирование значений строится из архивов и архиваторов. Архив - независимый элемент абстрактного хранилища состоящего из буфера значений и физических элементов архива распределённых между ответственными архиваторами. Архиватор - модульный механизм архивирования в физическое хранилище.
Архив может работать в трёх режимах:
Отдельно взятый архиватор может иметь различную периодичность глубину и физическую основу хранилища, обеспечивая тем самым гибкость при выборе механизма архивирования.
В результате, архив может архивироваться многими архиваторами, предоставляя при этом простой механизм доступа как к данным в целом, так и данным отдельно взятого архиватора.
В модуль архивирования на файловую систему "BaseArh" была добавлена полная поддержка механизма архивирования значений в файлы. Кроме этого, обеспечен разумный подход в архивировании, позволивший значительно сократить размеры архивов. Подход заключается в двойной упаковке архивов. Первая упаковка реализует быстрый последовательный механизм заключающийся в сворачивании смежных точек с одинаковыми значениями в одно значение. Вторая упаковка подразумевает дожатие файла архива стандартным архиватором gzip.
Кроме этого, в модуле BaseArh реализован механизм упаковки данных четырёх стандартных типов системы OpenSCADA: логическое, целое, вещественное и строковое.
Также, в архиватор сообщений модуля BaseArh добавлена поддержка формата архива плоского текста и упаковки файлов архивов архиватором gzip.
Подсистема "Контроллеры" получила более адекватное статусу название: "DAQ", т.е Data acquisition - сбор данных.
Во все задачи периодического опроса добавлена поддержка режима жесткого реального времени на основе POSIX функции clock_nanosleep(). Режим жесткого реального времени поддерживается только при запуске системы с привилегиями "root". В процессе испытаний удалось достичь уверенной реакции не превышающей 2мс на ОС ALTLinux 3.0.
Для предоставления возможности пользователю гибко формировать параметры необходимой ему структуры, добавляя при этом послеобработку параметров физического уровня, была разработана и реализована подсистема параметров логического уровня.
Подсистема содержит параметры и шаблоны параметров логического уровня. На основе шаблона можно легко создавать параметры предопределённой шаблоном структуры и с предопределённой обработкой. В целом, параметр логического уровня может полностью отражать параметр физического уровня или строиться на основе шаблона, собирая в один параметр данные с нескольких физических. Шаблон, в свою очередь, формируется на основе функции из объектной модели системы OpenSCADA. А значит, такой функцией может быть и созданная пользователем функция реализации нужных алгоритмов.
Поскольку параметр контроллера, практически, выступает в роли шлюза между физической средой и SCADA системой, то и уведомлять про состояние физической среды вынужден именно он. Унифицированный механизм уведомления состоит из двух частей.
Первая это уведомление доступности атрибута параметра. Возможна ситуация, когда часть атрибутов параметра доступна, а часть недоступна. При этом, в первую очередь нас интересует именно само состояние доступности. Для индикации о недоступности атрибута было введено понятие "Ошибка значения (EVAL)" которое присваивается атрибуту. Для каждого типа значения было зарезервировано собственное ошибочное значение: EVAL_BOOL(2), EVAL_INT(-2147483647), EVAL_REAL(-3.3E308), EVAL_STR(<EVAL>). Также, в механизм приведения была добавлена поддержка ошибочных значений. Хотя данный механизм и изымает из обращения крайние значения, он всё-же предпочтительнее поскольку идентификация доступности становится предельно простой, что несомненно важно для среды программирования и других подсистем.
Вторая часть это предоставление информации об ошибке в доступном виде. Для этой цели каждый параметр наделён атрибутом "err" строкового типа. Принят следующий механизм формирования этого сообщения:
Такой механизм уведомления позволяет совместить сразу три способа уведомления:
С целью обмена вычисленными данными между системой OpenSCADA и вычислительными модулями была добавлена поддержка параметров в модули вычислителей JavaLikeCalc и BlockCalc.
Параметры выполняют отражение своих атрибутов на данные вычислителя. В случае с модулем "JavaLikeCalc", выполняется отражение параметров вычислительной функции контроллера на атрибут параметра контроллера. В модуле "BlockCalc" выполняется отражение параметров блоков, блочной схемы контроллера, на атрибуты параметра этого-же контроллера. Суть отражения заключается в перенаправлении запроса к значению на внутреннюю структуру.
Этот механизм позволяет создавать параметры с закономерностью изменения значений в атрибутах заложенных пользователем.
Реализован полноценный однопоточный доступ к драйверу фирмы Diamond System с поддержкой сбора данных по прерыванию. Практически это первый пример покадрового сбора и архивирования данных реализованный в системе OpenSCADA. Метод позволяет достичь частоты опроса в 100кГц для платы Athena фирмы Diamond systems.
В первую очередь был добавлен механизм доступа к нескольким записям для функции сканирования таблицы и удаления нескольких записей одним запросом. Данный механизм основан на конкретизации части ключевых полей с обобщением другой части полей. Так, для обобщения по отдельному ключевому полю нужно значение этого поля, при запросе, инициировать пустой строкой.
С целью расширения API подсистемы "БД" была добавлена функция доступа к БД посредством SQL-запров. Естественно, эта функция работает только для БД поддерживающих SQL-запросы.
Однако, наиболее важным изменением стало создание механизма предварительной регистрации(открытия) нужных БД и последующей работы с ними. Этот механизм позволил скрыть особенности настройки БД (могут содержать и пароли) за её идентификатором. Так-же, механизм регистрации БД позволил раскрыть идею одновременного использования различных БД для суммарной загрузки системы. Например, можно выделять конфигурации отдельных контроллеров, сохранять их в собственной БД и распространять независимо. Этот пример вы можете увидеть в демонстрационном пакете системы OpenSCADA данной версии.
С целью унификации адресации динамических узлов для низкоуровневого доступа и доступа через интерфейс управления был реконструирован интерфейс управления системой. В результате реконструкции появилась возможность прозрачного доступа по единому полному пути к любому узлу системы, как на низком уровне так и через интерфейс управления. Кодирование элементов пути было унифицировано, что позволило использовать в пути специальные символы.
Также, был пересмотрен механизм формирования информационной страницы, с целью повысить производительность и сделать этот процесс более надёжным.
Для более надёжного и безопасного приведения типов, при адресации, было внедрено динамическое приведение типов.
Важным приобретением, также, стала поддержка изображений языком интерфейса управления и включение библиотеки формирования изображения GD в систему. На основе этих возможностей были добавлены:
Ранее существующая подсистема функции преобразована в объектную модель с функциями пользователей в роли методов объектов. Теперь, любой объект может предоставлять пользовательские функции для программирования на уровне системы OpenSCADA.
Данный релиз поставляется с четырьмя библиотеками функций для объектной модели системы OpenSCADA. Три из них выполнены в динамических библиотеках, а одна построена на основе Java-подобного языка модуля JavaLikeCalc. Этими библиотеками являются:
Используя эти библиотеки и вычислители модулей JavaLikeCalc и BlockCalc пользователь может строить свои вычислительные алгоритмы или создавать новые библиотеки и функции.
В данный релиз включена первая реализация среды визуализации и управления на основе библиотеки QT - "Vision". Среда всё ещё находится в разработке и не готова к практическому использованию. В тоже время, уже сейчас можно создавать кадры визуализации, наполняя их базовыми компонентами, с последующим их исполнением.
С целью повышения управляемости процессом сборки системы OpenSCADA, система сборки была дополнена условиями позволяющими выборочно отключать сборку модулей.
На основе этого было добавлено условие для исключения из компиляции модуля DiamonBoards и условие выбора системной директории 64-разрядных библиотек на платформе x86_64.
Для реализации в следующей версии можно сформулировать следующие важные задачи:
В процессе тестирования была подтверждена ошибка от 19.12.2005. Ошибка проявляется в сязке NPTL+UI/QTCfg в момент останова системы OpenSCADA. Других проблем эта ошибка невызывает. На момент данного релиза локализовать проблему неудалось.