Версию 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. Других проблем эта ошибка невызывает. На момент данного релиза локализовать проблему неудалось.