Реліз відкритої 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 (RU) та MySQL (RU). Значно підвищило ефективність доступу до БД цих типів.
Оптимізовано механізм перевірки прав доступу. Дозволило знизити час перевірки прав доступу.
3 Уніфікація інтерфейсу керування та побудова протоколу взаємодії на його основі.
В цій версії виконано уніфікацію інтерфейсу керування OpenSCADA у напрямку формування мови запитів, спрощення формування інформаційної частини та обробки командних запитів, а також з метою спрощення формування транспортних протоколів на основі даного інтерфейсу. Результатом даної уніфікації стало підвищення загальної продуктивності запитів за цим інтерфейсом, а також створення транспортного протоколу SelfSystem (RU). За основу цього протоколу взято запити до інтерфейсу керування OpenSCADA, обернуті у тонкий шар керуючого протоколу.
За посередництвом даного протоколу реалізовано взаємодію між різними станціями OpenSCADA в мережі. Наприклад, модуль конфігурації на бібліотеці QT, QTCfg (RU), отримав можливість конфігурації віддалених станцій, дозволяючи будувати розподілені системи з єдиним центром конфігурації. Візуалізатор інтерфейсів користувача на основі бібліотеки QT, Vision (RU), також, отримав можливість формування інтерфейсів та виконання сеансів інтерфейсів користувача, які розташовано на віддалених 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-визуализатор СВУ.
Модульный механизм уведомлений и сигнализации.
Разработка и реализация примитивов СВУ: Документ, Функция и связь.
Реализация механизма: "Темы оформления" и "Карты событий" для СВУ.
Расширение перечня поддерживаемых источников данных.