DiamondBoards – Добавлен модуль поддержки плат сбора данных от Diamond Systems.
Информацию по модулям можно получить из документации на них!
Для более детальной информации о изменениях в текущей версии обращайтесь к <ChangeLog> и исходным текстам системы. Текущий срез системы OpenSCADA всегда можно получить из SVN репозитория: <svn co svn://oscada.org/trunk/OpenSCADA)>
1. Новый уровень динамизации элементов системы.
В процессе реализации динамической архитектуры системы возникли проблемы разделения доступа к потенциально динамическим узлам. Проблема заключалась в исключении вероятности выполнения кода уже отключенного элемента. По началу, проблема решалась путём захвата ресурса на объект, но отсутствие иерархии объектов и большая вероятность не освобождения ресурсов после исключений не решили проблемы полностью. Отсутствие иерархии привело к ситуациям когда удаляемый объект был свободен, но ниже стоящих объект занят и предупреждение об этом через деструктор чаще всего приводило к фатальным последствиям.
В текущей версии эти проблемы полностью решены путём наследования всех динамических объектов от объекта динамического узла TCntrNode. На основе этого объекта реализована иерархия объектов и добавлены служебные виртуальные функции preEnable(), postEnable(), preDisable() и postDisable() призванные предупреждать объект про включение и отключение от узла.
Для предотвращения не освобождения ресурса был создан шаблон AutoHD для хранения ресурса и его освобождения в деструкторе в случае разрушения.
Благодаря этим решениям была достигнута высокая степень стабильности что доказывается прохождением всех модулей теста на периодическое отключение/подключение!
2. Добавлена среда программирования в систему.
В текущую версию добавлена среда программирования. Под средой программирования подразумевается комплекс средств и решений предоставляющих пользовательскую среду программирования в системе OpenSCADA. В состав этих решений вошли:
подсистема «Функции»;
библиотеки функций;
вычислительные контроллеры.
Подсистема «Функции» предназначена для предоставления централизованного механизма доступа к функциям. Функции в подсистеме хранятся в библиотеках. При этом сама подсистема никаких библиотек и функций не хранит. Все библиотеки функций предоставляются заинтересованными модулями и подсистемы путём регистрации в подсистеме.
Библиотеки функций могут предоставляться модулями и подсистемами. Библиотеки функций могут быть как статическими, так и динамическими. Динамические библиотеки предоставляют пользователю возможность создавать новые библиотеки и функции.
Вычислительные контроллеры предоставляют вычислительное окружение на основе существующих функций, т.е. содержат сами значения.
3. Добавлена поддержка БД SQLite.
Для добавления в систему OpenSCADA возможности удобного хранения локальных данных встраиваемых систем была добавлена поддержка маленькой но мощной локальной БД SQLite. SQLite хранит базу данных в одном компактном файле что существенно для встраиваемых систем.
4. Систематизирован API языка управления системы.
С целью упрощения и систематизации API языка управления системой, а также для будущего отражения языка управления через сетевые протоколы было выполнено сведение всех обращений к одной функции. Кроме того эта функция была наделена возможностью обрабатывать полный путь запроса из любой точки дерева.
В самом языке был пересмотрен интерфейс запроса элементов списков и таблиц с добавлением возможности модификации записей таблиц.
5. Добавлен демонстрационный пакет.
В целях облегчения первоначального старта и изучения системы был создан демонстрационный пакет с базовой конфигурацией всех подсистем и модулей.
6. Удалена прослойка ядер и сформулировано чёткое понятие «Подсистема».
Признана лишней и удалена прослойка ядер в системе OpenSCADA. Также сформулировано понятие подсистемы. Подсистемами являются все объекты непосредственно принадлежащие системе. Каждая подсистема должна наследоваться от объекта TSubSYS (ранее TGRPModule). Подсистема может быть простой и модульной. Модульная подсистема может расширяться посредством модулей.
7. Систематизирован процесс формирования и архивирования сообщений.
В данной версии пересмотрен механизм формирования сообщений. Благодаря покрытию всей системы динамическими узлами включенных в дерево появилась возможность определения адреса узла который однозначно адресует элемент системы. А адрес элемента системы который сгенерировал сообщение важная составляющая для категоризации сообщения а следовательно для управления потоком сообщений.
В настоящей версии принято в качестве категории сообщения указывать его путь. А для повышения гибкости разбора сообщений, на уровне архивирования была добавлена поддержка шаблонов со специальными символами: '*', '?' и '\'.
Данные решения позволяют создавать архивы сообщений для отдельно взятых подсистем!
8. Добавлена поддержка работы в режиме демона.
В текущей версии была добавлена поддержка работы системы OpenSCADA в режиме демона. Данная возможность позволяет запускать OpenSCADA как сервис. Для реализации возможности запуска как сервис был создан скрипт запуска подсистемы OpenSCADA «oscadad». Данный скрипт поставляется вместе с системой.
9. Добавлена возможность работы с единой БД.
С целью облегчения восприятия механизма работы с БД была добавлена возможность использования одного типа и имени БД во всех подсистемах. Данная возможность не исключает варианта указания отдельных БД и при этом позволяет упростить манипуляции с БД. Например скопировать БД всей системы можно поменяв тип и имя БД в одном месте и нажать кнопку «Сохранить систему».
10. Систематизированы команды управления элементами системы.
Для управлением загрузкой, запуском, остановкой и другими процессами системы OpenSCADA использовались различные команды. В данной версии они систематизированы и сведены к четырём командам:
Загрузка - загрузка своих данных из БД;
Сохранение - сохранение своих данных в БД;
Запуск - связывание элемента с другими подсистемами;
Останов - отключение элемента от других подсистем.
11. Обновлена документация на систему включая API и документацию на модули;
В целях публикации последних изменений в системе и для исправления ранне допущенных ошибок был полностью обновлен проект системы. Кроме этого была обновлена документация всех модулей и добавлена документация на новые модули.