Реліз відкритої SCADA(Supervisory control and data acquisition) системи версії 0.6.0 позиціонується як концепт-реліз. Це пов'язано з тим, що на цей час, фактично, реалізовано основні функції концепції SCADA системи, які було сформульовано проектом OpenSCADA у 2003 році.
Головною метою даного релізу є надання спільноті користувачів та розробників вільного програмного забезпечення (ПЗ) концепції та платформи для відпрацювання рішень побудови комплексних SCADA-систем та інших суміжних рішень, з цілеспрямованим удосконаленням та стабілізацією наявних компонентів, а також розробки потрібних розширень та модулів.
Цей документ є обробкою(компіляцією) документа <ChangeLog> системи OpenSCADA версії 0.6.0, який призначено коротко та наочно освітлити нові можливості системи OpenSCADA. Детально ознайомитися зі змінами у системі OpenSCADA можна у файлі ChangeLog з дистрибутиву системи або тут: http://diyaorg.dp.ua/oscadawiki/Works/ChangeLog.
Ключовими особливостями даної версії є:
Концепція середовища візуалізації та керування (СВК), а також візуалізатор СВК на основі бібліотеки QT4.
Значне підвищення стабільності, стійкості та продуктивності системи.
Уніфікація інтерфейсу керування та побудова транспортного протоколу взаємодії на його основі.
Уніфікація механізму побудови параметрів підсистеми "Збір даних" за шаблоном.
Розширення основної мови ( JavaLikeCalc (RU) ) та API рівня користувальницького програмування.
Перехід на бібліотеку QT версії 4 у модулях, які використовують цю бібліотеку.
Загальне покращення API ядра системи OpenSCADA.
Загальне покращення збіркової системи, як наслідок покращення та розширення підтримуваних платформ.
Новий сайт проекту OpenSCADA.
Нові та поновлені модулі:
Transport.Sockets (1.3.0) -- Загальна стабілізація модуля.
Archive.FSArch (0.9.5) -- Оптимізовано архіватор значень. Додано архівацію повідомлень у форматі плоского тексту. Модуль перейменовано з "BaseArh" у "FSArch". Виправлено багато помилок.
Archive.DBArch (0.5.0) -- Новий модуль архівації повідомлень та значень до БД.
DB.DBF (1.8.1) -- Загальна стабілізація модуля.
DB.MySQL (1.3.0) -- Додано підтримку API запиту переліку наявних таблиць та структури цих таблиць. Значна стабілізація та оптимізація модуля.
DB.SQLite (1.3.0) -- Додано підтримку API запиту переліку наявних таблиць та структури цих таблиць. Значна стабілізація та оптимізація модуля.
DB.FireBird (0.6.0) -- Новий модуль підтримки СУБД "FireBird (RU)".
Protocol.HTTP (1.3.0) -- Значна переробка та стабілізація модуля.
Protocol.SelfSystem (0.7.0) -- Новий модуль власного протоколу OpenSCADA, базованого на інтерфейсі керування OpenSCADA.
Special.FLibComplex1 (1.0.0) -- Загальна стабілізація модуля.
Special.FLibSYS (0.5.0) -- Результат поеднання з модулем Special.FLibTime та робіт по уніфікації користувальницького API роботи з архівами.
Special.SystemTests (1.3.5) -- Поновлено деякі тести.
DAQ.DiamondBoards (1.0.0) -- Переглянуто механізм збору за посередництвом переривань, виправлено багато помилок, разом з бібліотекою API версії 5.91 виправлено проблеми блокування потоків та випущено фінальний реліз.
DAQ.System (1.5.0) -- Загальна стабілізація модуля. Перейменовано з "OperationSystem".
DAQ.BlockCalc (1.0.0) -- Деякі покращення у механізмі зв'язування, розширена функція копіювання контролерів, блоків та параметрів, виправлення помилок та фінальний реліз.
DAQ.JavaLikeCalc (1.0.0) -- Розширено граматику мови, додано підтримку механізму прекомпіляції процедур користувача та наступного їх використання у різних частинах OpenSCADA, виправлення помилок та фінальний реліз.
DAQ.LogicLev (0.9.0) -- Винесений до модуля код підсистеми "Параметри" OpenSCADA 0.5.0 з розширеням функціоналу та виправленням помилок.
DAQ.CIF (0.9.0) -- Новий модуль джерела даних контролерів фірми Siemens серії S7 (300,400) за допомогою мережі ProfiBUS, протоколу MPI та комунікаційного процесору фірми Hilcher CIF50PB.
DAQ.SNMP (0.3.0) -- Новий модуль базової підтримки протоколу Simple Network Management Protocol у режимі читення.
DAQ.ModBus (0.4.0) -- Новий модуль підтримки джерел даних, які доступно за протоколом ModBus.
DAQ.Transporter (0.3.0) -- Новий модуль підтримки механізму відображення даних підсистеми "Збір даних" віддалених OpenSCADA станцій на локальні.
UI.QTStarter (1.5.0) -- Перехід на бібліотеку QT версії 4, загальна стабілізація та виключення зовнішніх викликів функцій QT.
UI.QTCfg (1.5.0) -- Перехід на бібліотеку QT версії 4, підтримка зображень у інтерфейсі керування, загальна стабілізація та отимізація.
UI.WebCfg (1.5.0) -- Загальна стабілізація модуля.
UI.VCAEngine (0.5.0) -- Новий модуль рущія середовища візуалізації та керування (СВК).
UI.Vision (0.5.0) -- Новий модуль візуалізатора середовища візуалізації та керування (СВК) на бібліотеці QT.
UI.WebVision (0.2.0) -- Новий модуль візуалізатора середовища візуалізації та керування (СВК) на основі WEB-технологій (XHTML, JavaScript, CSS, AJAX).
1 Концепція середовища візуалізації та керування (СВК), а також візуалізатор СВК на базі бібліотеки QT4.
Основним нововведенням релізу 0.6.0 системи OpenSCADA стала базова реалізація гнучкого середовища візуалізації та керування (СВК). СВК OpenSCADA побудована за концепцією «модель даних» - «вигляд», де «модель даних» описує структуру та обчислення візуального інтерфейсу (ВІ), а «вигляд» реалізує безпосередне представлення та контакт з користувачем. Такий підхід дозволяє реалізовувати візуалізацію з використанням різних графічних бібліотек та оточень інтерфейсу користувача. Реалізована підтримка режиму розробки та виконання інтерфейсу користувача на основі відомої графічної бібліотеки QT4. На основі WEB-технологій створена базова реалізація візуалізатора з підтримкою режиму виконання (RunTime).
Концепцією передбачена можливість формування широкого діапазону інтерфейсів користувача різної складності. В основу всіх цих інтерфейсів покладено обмежений набір базових примітивів. Комбінуючи ці примитиви можна створювати як похідні кадри елементів візуалізації користувача, так і сторінки кінцевих інтерфейсів візуалізації. Визначено наступний набір базових примітивів:
ElFigure -- Елементарні графічні фігури.
FormEl -- Елементи форми.
Text -- Текст.
Media -- Медіа.
Diagram -- Діаграма.
Protocol -- Протокол.
Document -- Документ.
Function -- Функція API объектной моделі OpenSCADA.
Box -- Контейнер.
Link -- Лінії зв'язку.
З числа перелічених примітивів у даному релізі залишилися не реалізованими: "Document", "Function" та "Link". Їх реалізацію заплановано після виходу версії 0.6.0.
Реалізуємий проект СВК передбачає підтримку наступних функцій:
три рівні складності у формування інтерфейсу візуалізації, дозволяє органічно освоювати та застосовувати інструментарій за методикою від простого до складного:
формування з шаблоних кадрів шляхом призначення динаміки (можливо і без графічної конфігурації);
графічне формування нових кадрів шляхом використання готових елементів візуалізації з бібліотеки (мнемосхеми);
формування нових кадрів, шаблоних кадрів та елементів відображення в бібліотеці.
побудова інтерфейсів візуалізації практично будьякої складності починаючи від простих плоских інтерфейсів моніторингу і закінчуючи повноціними ієрархічними інтерфейсами, які використовуються в SCADA системах;
надання різних способів формування та конфігурації користувальницького інтерфейсу, які основано на різних інтерфейсах графічного представлення (QT, Web, Java ...) або-ж за посередництвом стандартного інтерфейсу керування системою OpenSCADA;
зміну динаміки у процесі виконання;
побудова нових шаблоних кадрів на рівні користувача та формування спеціалізованих, під галузь застосування, бібліотек кадрів (наприклад включення кадрів параметрів, графіків та інших елементів з ув'язкою їх один з одним), у відповідністтю з концепцією вторинного використання та накопичення;
Переклад триває
построение новых пользовательских элементов визуализации и формирование, специализированных под область применения, библиотек кадров, в соответствии с теорией вторичного использования и накопления;
описание логики новых шаблонных кадров и пользовательских элементов визуализации как простыми связями так и лаконичным, полноценным языком пользовательского программирования;
возможность включение в пользовательские элементы визуализации функций (или кадров вычисления функций) объектной модели OpenSCADA, практически связывая представление с алгоритмом вычисления (например, визуализируя библиотеку моделей аппаратов ТП для последующего визуального построения моделей ТП);
разделение данных пользовательских интерфейсов и интерфейсов представления этих данных, позволяющее строить интерфейс пользователя в одной среде, а исполнять во многих других (QT, Web, Java ...);
возможность подключения к исполняющемуся интерфейсу, для наблюдения и коррекции действий (например, при обучении операторов и контроля в реальном времени за его действиями);
визуальное построение различных схем, с наложением логических связей и последующим централизованным исполнением в фоне (визуальное построение и исполнение математических моделей, логических схем, релейных схем и иных процедур);
предоставление функций объектного API в систему OpenSCADA, может использоваться для управления свойствами интерфейса визуализации из пользовательских процедур;
построение серверов кадров, элементов визуализации и проектов интерфейсов визуализации с возможностью обслуживания множественных клиентских соединений;
простая организация клиентских станций на различной основе (QT, Web, Java ...) с подключением к центральному серверу;
полноценный механизм разделения полномочий между пользователями, позволяющий создавать и исполнять проекты с различными правами доступа к его компонентам;
гибкое формирование правил сигнализаций и уведомления, с учётом и поддержкой различных способов уведомления;
поддержка пользовательского формирования палитры и шрифтовых предпочтений для интерфейса визуализации (темы);
поддержка пользовательского формирования карт событий под различное оборудование управления и пользовательские предпочтения;
поддержка профилей пользователей, позволяющая определять различные свойства интерфейса визуализации (цветовая гамма, шрифтовые особенности, предпочтительные карты событий);
гибкое хранение и распространение библиотек виджетов, кадров и проектов интерфейсов визуализации в БД, поддерживаемых системой OpenSCADA; практически пользователю нужно только зарегистрировать полученную БД с данными.
2 Значительное повышение стабильности, устойчивости и производительности системы.
В процессе работ над версией 0.6.0 было выполнено ряд мероприятий по общей стабилизации системы OpenSCADA, а также по повышению производительности системы. Перечислим наиболее важные из них:
Исправлена глобальная проблема недостаточного покрытия ключевых переменных ресурсами. Проблема отчётливо выявила себя на многоядерных архитектурах.
Исключена возможность прямого вызова QT-методов из не QT-потоков во всех QT-модулях. Приводило к падению OpenSCADA при остановке.
Механизм захвата ресурсов пересмотрен, исправлен для работы в многоядерных системах и оптимизирован. В результате повысилась общая стабильность и производительность.
Исправлены функции TSYS::addr2str() и TSYS::str2addr(). Приводило к непонятным падениям модуля QTCfg.
Внедрение ассоциативных контейнеров (map и hash_map) в наиболее ответственные узлы OpenSCADA. Значительно повысило скорость доступа к элементам больших массивов, например:
при доступе к динамическим объектам динамического дерева во время разбора полного пути динамического объекта;
при работе со свойствами элементов конфигурации и таблиц БД.
Систематизирован и унифицирован интерфейс управления системой и его язык. Повысило функциональные качества и реактивность интерфейсов и протоколов построенных на нём.
Добавлена возможность адресации отдельных элементов записи таблиц БД. Повысило производительность доступа к БД путём запроса только нужных элементов записи.
Добавлен механизм запоминания смещения в строке, для основных функций, при разборе пути или адреса с разделителем. Исключило геометрический рост затрат времени на разбор строки, от количества элементов в ней.
Оптимизация реализации запросов в модулях БД: SQLite и MySQL. Значительно повысило эффективность доступа к БД этих типов.
Оптимизирован механизм проверки прав доступа. Позволило снизить время проверки прав доступа.
3 Унификация интерфейса управления и построение протокола взаимодействия на его основе.
В данной версии произведена унификация интерфейса управления OpenSCADA в направлении формализации языка запросов, упрощения формирования информационной части и обработки командных запросов, а также с целью упрощения формирования транспортных протоколов на основе данного интерфейса. Результатом данной унификации стало повышений общей производительности запросов по данному интерфейсу, а так-же создание транспортного протокола SelfSystem. За основу этого протокола взяты запросы к интерфейсу управления OpenSCADA, обёрнутые в тонкий слой управляющего протокола.
Посредством данного протокола реализовано взаимодействие между различными станциями OpenSCADA в сети. Например, модуль конфигурации на библиотеке QT, QTCfg?, получил возможность конфигурации удалённых станций, позволяя строить распределённые системы с единым конфигурационным центром. Визуализатор пользовательских интерфейсов на основе библиотеки QT, Vision?, также, получил возможность формирования пользовательского интерфейса и исполнение сеансов пользовательских интерфейсов, расположенных на удалённых OpenSCADA станциях, формируя тем самым конфигурацию с сервером визуализации. Ко всему этому был реализован первый модуль отражения данных удалённых станций OpenSCADA на локальных, им стал модуль отражения данных подсистемы "Сбор данных". В последствии планируется создание таких, транспортных, модулей для остальных модульных подсистем.
А следом за данными решениями был добавлен механизм сервисных функций интерфейса управления. Данный механиз позволяет получить доступ к данным со сложным форматированием и больших объёмов в приоритетном режиме запроса и оптимальной для передачи форме.
4 Унификация механизма построения параметров подсистемы "Сбор данных" по шаблонам.
В версию 0.5.0 был внедрён механизм формирования параметров подсистемы "Сбор данных" с нужной пользователю структурой, т.е. по шаблону. Данный механизм был реализован в виде отдельной подсистемы "Параметры". В данном релизе идея формирования параметров подсистемы "Сбор данный" по шаблонам была расширена на все остальные модули подсистемы "Сбор данных". При этом ранее существующая подсистема "Параметры" была преобразована в равноценный модуль логического уровня параметров "LogicLev?", а шаблоны стало возможным формировать на уровне подсистемы "Сбор данных", группируя их по библиотекам шаблонов. Фактически, любой модуль, предоставляющий доступ к данным высокоинтеллектуальных источников, может включать поддержку парметров, формируемых по шаблону, внося свой смысл в ссылку внутреннего уровня. Примером такого модуля стал модуль доступа к данным контроллеров фирмы Siemens серии S7 по протоколу MPI сети ProfiBUS CIF?.
Шаблоны параметров стали формироваться независимо от существующих функций, путём формирования собственной функции обработки параметров и последующей её компиляции в модуле, предоставляющем механизм компиляции языка пользовательского программирования. Шаблон может быть сформирован вообще без пользовательской процедуры, если нужно только пассивное, выборочное отражение параметров.
5 Расширение основного языка ( JavaLikeCalc ) и API уровня пользовательского программирования.
Компилирующий интерпретатор Java-подобного языка, вместе с библиотеками функций пользовательского программирования фиксированного типа (API) формируют среду пользовательского программирования системы OpenSCADA.
В данном релизе Java-подобный язык обзавёлся:
полноценной поддержкой циклов while и for;
механизмом прерывания зациклившихся процедур;
операциями префиксного и постфиксного инкремента и декремента;
механизмом прекомпиляции пользовательских программ различных подсистем;
API функций пользовательского программирования было унифицировано и определяется библиотеками функций:
FLibSYS -- Библиотека системного API, на момент данного релиза содержит функции для работы с временем и датой, а также архивами сообщений и значений.
FLibMath -- Библиотека математических функций.
FLibComplex1 -- Библиотека функций совместимости со SCADA "Complex1".
6 Переход на библиотеку QT версии 4 в модулях, использующих эту библиотеку.
В виду выхода новой версии библиотеки QT (версия 4) и повсеместного её распространения, а также начала работ над средой визуализации и управления (СВУ), решено было перевести существующие модули, основанные на QT, на новую версию.
Такая работа была полностью выполнена и модули подсистемы "Пользовательские интерфейсы": QTCfg?, QTStarter и Vision? функционируют на основе библиотеки QT версии 4. В виду наличия в ранних версиях определённых проблем и отсутствия некоторых функций рекомендуется использовать версию библиотеки не менее 4.3.
В результате перехода на библиотеку QT4 удалось добиться большей стабильности и расширить функциональные характеристики модулей её использующих.
7 Общие улучшения API ядра системы OpenSCADA.
В процессе работ над данным релизом были внесены определённые изменения в API системы OpenSCADA. В большей мере это связано с процессами: стабилизации, оптимизации, фиксации ошибок и общим улучшением API и в меньшей степени с добавлением новых функций. Перечислим наиболее значительные изменения:
Унификация API интерфейса управления OpenSCADA. Детальнее об этом в разделе 3.
В подсистеме безопасности, у пользователей и групп пользователей, устранена индексация пользователей и групп пользователей. Также, устранена группа пользователя по умолчанию. Выполнено с целью устранения двойной идентификации, поскольку присутствует быстрая идентификация по символьному идентификатору/имени.
Упразднена подсистема "Параметры", а её функции вынесены в модуль логического уровня "LogicLev?" подсистемы "Сбор данных". Шаблоны параметров сгруппированы по библиотекам и размещены в подсистеме "Сбор данных". Детальнее об этом в разделе 4.
Добавлен механизм компиляции процедур в модулях подсистемы "Сбор данных", для использования пользовательского программирования в различных узлах OpenSCADA.
Добавлен шаблон функции локализации сообщений _() с целью унификации, повышения читабельности исходного текста и уменьшения насыщенности.
Добавлены шаблоны функций для формирования сообщений в OpenSCADA и повышения читабельности исходного текста, а так-же уменьшения насыщенности. Добавлены шаблоны функций: message(), mess_err(), mess_info() и подобные.
Унифицированы точки состояний контроллеров подсистемы. Теперь состояние «Включен» подразумевает установку всех связей, а «Запущен» только фактический сбор данных.
Практически все функции установки параметров переименованы к виду setMethod().
Добавлена поддержка атрибута видимости полей записи БД. Это позволяет повысить производительность работы с БД за счёт получения только нужных данных.
Добавлена поддержка глобального кода ошибки в объекте TError. Используется для избирательной обработки ошибок.
Механизм захвата ресурсов пересмотрен, исправлен для работы в многоядерных системах и оптимизирован.
Добавлен механизм предварительной инициализации создаваемых архивов значений в модулях сбора данных. Удалось добиться исключения дополнительной настройки архива при конфигурации атрибутов параметров.
Добавлена поддержка механизмов запроса перечня доступных в БД таблиц и их структуры, а также редактирования их содержимого посредством интерфейса управления и конфигураторов OpenSCADA.
Реализована поддержка исходящих протоколов. Внутренний интерфейс протокола реализован потоковым, со специализированной для протокола структурой.
Детальнее ознакомиться с API данной версии можно в соответствующем документе "API системы OpenSCADA".
8 Общее улучшения сборочной системы, как следствие, упрощение и расширение поддерживаемых платформ.
С целью реализации функции полноценного, раннего, уведомления об отсутствии нужных для сборки зависимостей сценарий проверки окружения был дополнен кодом проверки основных зависимостей сборки. В результате этого, уведомления о всех неудовлетворённых зависимостях будут выданы на стадии конфигурации сборочной системы, что ускоряет разрешение зависимостей или принятие решения об отключения сборки того или иного модуля.
Формат документации, размещённой в дереве исходного текста и тарболе проекта, был изменён на pdf, в виду более простой манипуляции с ним на стадии установки.
9 Новый сайт проекта OpenSCADA.
В процессе работы над данным релизом, для проекта OpenSCADA был создан новый сайт (http://oscada.diyaorg.dp.ua), основанный на CMS-движке Typo3. Сайт является многоязычным и содержит основную информацию о проекте OpenSCADA, сохраняя большой потенциал по расширению. Для этого сайта были выполнены переводы основных информационных материалов на Украинский и Английский языки.
Запланировано добавление следующих функций на главном сайте: форума, галереи скриншотов и других медиа-материалов, почтовой рассылки, трекера изменений и работ ведущихся по проекту.
10 Планы дальнейшего развития
Планируются последующие, частые релизы в пределах версии 0.6.0, с целью оперативного отслеживания процесса прикладной адаптации и стабилизации. В финале планируется выпуск стабильной-промышленной версии 0.7.0 для платформы Linux x86, x86-64.
Для реализации к версии 0.7.0, по промежуточным версиям 0.6.0, можно определить следующие важные задачи:
Web-визуализатор СВУ.
Модульный механизм уведомлений и сигнализации.
Разработка и реализация примитивов СВУ: Документ, Функция и связь.
Реализация механизма: "Темы оформления" и "Карты событий" для СВУ.
Расширение перечня поддерживаемых источников данных.