Реліз відкритої SCADA(Supervisory control and data acquisition) системи версії 0.6.3 є плановим релізом гілки 0.6.0. У межах цієї версії виконано велику роботу по стабілізації та адаптації до практичних завдань.
Цей документ є обробкою (компіляцією) документа <ChangeLog> системи OpenSCADA версії 0.6.3, який призначено коротко та наочно освітлити нові можливості та зміни системи OpenSCADA. Детально ознайомитися зі всіма змінами у системі OpenSCADA можна у файлі ChangeLog з пакету дистрибутива системи або тут: http://diyaorg.dp.ua/oscadawiki/Works/ChangeLog (RU).
Ключовими особливостями цієї версії є:
Реалізація планових задач.
Підвищення стабільності, стійкості та продуктивності системи.
Удосконалення та стабілізація СВК.
Загальносистемні розширення.
У процесі робіт над релізом було внесено наступні зміни у модулі OpenSCADA:
Archive.FSArch (1.0.1) -- Стабілізація. Переклад інтерфейсу на Німецьку.
Archive.DBArch (0.7.1) -- Стабілізація. Переклад інтерфейсу на Німецьку.
DB.DBF (1.9.1) -- Переклад інтерфейсу на Німецьку.
DB.MySQL (1.4.1) -- Стабілізація. Додання можливості зберігання дати та часу у полі MySQL з типом DATETIME. Переклад інтерфейсу на Німецьку.
DB.SQLite (1.4.1) -- Стабілізація. Забезпечення можливості роботи з файлами БД тільки для читання. Переклад інтерфейсу на Німецьку.
DB.FireBird (0.8.1) -- Переклад інтерфейсу на Німецьку.
DAQ.BlockCalc (1.1.1) -- Стабілізація. Переклад інтерфейсу на Німецьку.
DAQ.JavaLikeCalc (1.3.0) -- Стабілізація. Додання підтримки областей найменувань функцій API користувача. Додання ключових слів using та return.
DAQ.SNMP (0.3.3) -- Стабілізація.
DAQ.LogicLev (0.9.2) -- Стабілізація.
DAQ.ModBus (0.9.1) -- Стабілізація.
DAQ.DCON (0.1.0) -- Новий модуль: У дерево вихідних текстів проекту включено модуль реалізації джерела даних за протоколом DCON (Almaz Karimov).
DAQ.Siemens (1.1.1) -- Стабілізація.
DAQ.System (1.6.2) -- Стабілізація. Адаптовано до підтримки бібліотеки libsensors версії 3 (API версії 4).
DAQ.Transporter (0.3.3) -- Стабілізація.
Transport.Sockets (1.3.6) -- Стабілізація. Додано поле стану для транспортів.
Transport.SSL (0.8.0) -- Новий модуль: Модуль транспорту “SSL”, базований на бібліотеці шифрування OpenSSL.
Special.FLibComplex1 (1.0.3) -- Стабілізація.
Special.FLibSYS (0.7.0) -- Додано параметри для прямого доступу до архівів у функції: varhBeg(), varhEnd(), varhGetR(), varhGetB() та varhGetS(). Додано нові функції: strPath2Sep(), strEnc2HTML() и real2str(). Функцію tmCtime() замінена на tmFStr().
UI.QTCfg (1.7.0) -- Стабілізація. Для формування дерева навігатору використано оптимизований за часом запит гілки вкладених елементів глибиною у один рівень. Додано обмеження розміру ідентифікаторів об'єктів які вводяться.
UI.VCAEngine (0.8.0) -- Стабілізація. Оптимізація на продуктивність. Додано груповий запит атрибутів віджетів гілки віджетів сеансів виконання проектів. Реалізовано примітив "Документ". Підтримка динамічних властивостей фігур примітиву "ElFigure". Багато різних удосконалень.
UI.Vision (0.8.0) -- Стабілізація. Оптимізація продуктивності. Реалізація динамізації всіх параметрів елементів примітиву "ElFigure". Реалізація примітиву "Документ". Додання функції друку та експорту у режимі виконання. Для запиту даних кадрів використано груповий запит, значно підвищуючий продуктивність. Оптимізація алгоритму сортування вкладених віджетів кадрів, що значно підвищили продуктивність роботи великих мнемосхем. Зміна концепції формування елементів примітиву "ElFigure", яка дозволила значно підвищити продуктивність. Реалізація функції візуального масштабування розроблюваних кадрів. Реалізація масштабу шрифту у всіх примітивах. Багато різних удосконалень.
UI.WebVision (0.6.0) -- Стабілізація. Реалізація динамізації всіх параметрів елементів примітиву "ElFigure". Реалізація примітиву "Документ". Для запитів даних кадрів використано груповий запит, який значно підвищуєпродуктивність. Реалізація примітиву "Протокол". Багато різних удосконалень.
UI.WebCfg (1.5.2) -- Стабілізація модуля. Додання дій завантаження та збереження поточної сторінки.
UI.WebCfgD (0.5.0) -- Новий модуль: Реалізація динамічного Web-конфігуратора OpenSCADA.
UI.WebDbg -- Видалення модуля: Модуль відпрацювання взаємодії з Web-інтерфейсами.
1 Реалізація планових задач
У відповідності з планом релізу було виконано наступні завдання:
Реалізація підтримки групових запитів у мові контролю та керування OpenSCADA та оптимізація на його основі мережевих комунікацій різних підсистем OpenSCADA. -- У відповідності з цим завданням було виконано:
Реалізація сервісного запиту гілки атрибутів віджетів '/serv/attrBr'. Запит призначено оптимізувати обмін між візуалізатором та рушієм візуалізації шляхом заміни багатьох мілких запитів одним великим. У випадку обміну за посередництвом мережевих високолатентних каналів даний механізм суттево підвищує продуктивність. Запит було використано у модулях UI.Vision та UI.WebVision.
Реалізовано груповий запит дерева бібліотек віджетів UI.Vision. Дозволив підвищити продуктивність завантаження та обробки великих дерев бібліотек віджетів, особливо у мережі.
Реалізовано та використано оптимізований за часом запит елементів нащадків дерева навігації у UI.QTCfg та UI.WebCfgD. Дозволив виключити зайві, фрагментовані, запити, підвищивши тим самим загальну швидкість формування дерева об'єктів, особливо через мережу.
Розробка та реалізація концепції примітиву СВК “Документ”, призначеного для формування звітної документації. -- Концепція примітиву "Документ" була розроблена та реалізована. Реалізація зачепила забезпечення підтримки на боці рушія СВК (UI.VCAEngine) та візуалізаторів UI.Vision та UI.WebVision.
Міграція модуля конфігурації системи OpenSCADA UI.WebCfg на динамічний інтерфейс DHTML. -- Було виконано не міграцію, а створення нового модуля конфігурації OpenSCADA на основі Web DHTML. Модуль отримав назву UI.WebCfgD. На цей час у дистрибутиві OpenSCADA присутні обидва модулі.
Реалізація безпечного транспорту на основі OpenSSL. -- Результатом реалізації транспорту на основі OpenSSL став модуль підсистеми "Транспорти" OpenSCADA - Transport.SSL. Цей модуль реалізує стандарти шифрування трафіку SSL v2, SSL v3 та TLS v1 як для вхідних, так і для вихідних транспортів.
Реалізація примітивів СВК “Link” та “Function”. -- Ця робота не була виконана та перенесена до наступного релізу.
Переклад триває
2 Підвищення стабільності, стійкості та продуктивності системи.
У процесі робіт над цією версією, а також її практичної адаптації, було виявлено та виправлено біля 120 помилок. Більшість помилок було виявлено у компонентах середовища візуалізації та керування (90 помилок).
Окрім виправлення багатьох помилок було виконано роботу по оптимізації різних компонентів OpenSCADA. Особливо помітної оптимізації піддалося середовище візуалізації та керування (СВК) та його візуалізатори. Головним вектором у оптимізації була оптимізація на продуктивність.
Перелічимо більш суттеві помилки, виправлення яких значно відобразилося на підвищенні стабільності:
Використана функція QWidget::deleteLater() для видалення віджетів та усунення проблеми падіння OpenSCADA у деяких ситуаціях видалення віджетів QT4.
Некоректне видалення елементів std::map у примітіві "ElFigure" модуля UI.Vision та UI.WebVision яке приводило до падіння системи під навантаження, після діб роботи.
Відсутність ресурсу на доступ до строкових атрибутів параметрів підсистеми "Збір даних". На навантажених системах з конкуруючим доступом до загальних даних, наприклад при запуску декількох сеансів одного проекту візуалізації відбувалася помилка пам'яті.
Остаточно виключене падіння системи під час зміни зв'язку у модулі UI.Vision, після закриття діалогу з повідомленням про встановлення не всіх зв'язків.
Виправлена нечутливість до регістру строкових ключових полів БД MySQL, що призводило до перетинання властивостей елементів візуалізації.
Додана підтримка символів переводу строк у атрибутах та іменах тегів XML, що виключило проблеми при передачі великих текстів у атрибутах.
Переглянуто механізм доступу до налагоджувальних повідомлень. Тепер налагоджування включається визначенням змінної OSC_DEBUG з рівнем від 0 до 5. Де 5 рівень більш деталізуючий та має використовуватися з обережністтю.
Реализован механизм ограничения ввода количества символов идентификаторов объектов OpenSCADA в соответствии с размерностью значений их как ключей БД.
Добавлено кодирование идентификаторов объектов OpenSCADA для предотвращения ввода недопустимых в идентификаторе символов.
Увеличение производительности:
Реализован сервисный запрос ветви атрибутов виджетов '/serv/attrBr'. Запрос призван оптимизировать обмен между визуализатором и движком визуализации путём замены множества мелких запросов одним крупным. В случае обмена по сетевым высоколатентным каналам данный механизм существенно повышает производительность.
Использован бинарный алгоритм сортировки кучи при сортировке вложенных виджетов учитывая их порядок. Проблема старого алгоритма начала заметно сказываться после 500 вложенных виджетов.
Добавлен и использован групповой запрос дерева библиотек виджетов UI.Vision.
Реализован и использован новый, оптимизированный по времени, запрос дочерних элементов дерева навигации в UI.QTCfg и UI.WebCfgD.
3 Усовершенствование и стабилизация СВУ.
Наиболее значимые изменения были выполнены в рамках среды визуализации и управления (СВУ), а именно в модулях движка СВУ UI.VCAEngine, визуализаторов UI.Vision и UI.WebVision. Внесённые изменения были направленны на стабилизацию, оптимизацию производительности и улучшение пользовательских свойств СВУ.
Улучшения СВУ:
Для примитива "ElFigure" добавлена поддержка динамических и статических точек; динамических ширин, цветов, и изображений; динамических стилей линий. Всё это предоставило возможность создавать очень сложные динамические фигуры в рамках одного виджета, а также исключило избыточность в наличии отдельных атрибутов координат точек для больших и сложных статических изображений.
Реализована поддержка примитива «Документ» в UI.VCAEngine, UI.Vision и UI.WebVision. Реализация примитива документа предоставила возможность создавать отчётную документацию различной сложности и свойств в окружениях библиотеки QT и Web-технологий системы OpenSCADA.
Добавлена реализация функций печати и экспорта в окне исполняемого проекта. Печать и экспорт реализованы для: страниц, диаграмм и документов. Экспорт страниц и диаграмм осуществляется в изображения, а документа в XHTML.
Изменена концепция отображения примитива "ElFigure" с целью значительного повышения производительности в режиме разработки и исполнения. Изменение заключается в предварительной прорисовке на изображении, и последующей его отправки на экран при запросе на обновление. В случаях формирования больших статических изображений, а поверх них размещения динамики общая производительность интерфейса значительно повышается.
Реализована функция свободного визуального масштаба редактируемых кадров визуального интерфейса модуля UI.Vision. Функция призвана облегчить разработку как мелких, но сложных элементов, так и больших панорамных кадров.
Реализована функция масштабирования шрифта всех примитивов модулей визуализации UI.Vision и UI.WebVision. Масштабирование всех примитивов стало более адекватным в широком диапазоне значений.
Доработано полноценное масштабирование примитива "Диаграмма" модулей визуализации UI.Vision и UI.WebVision.
UI.WebVision: Значительное расширение функциональности модуля, а именно:
Реализовано использование шрифтов TTF и FontConfig для доступа к ним. TTF шрифты использованы для формирование надписей примитива "Диаграмма", что сделало тренды более схожими с ними-же в UI.Vision.
добавлена проверка прав доступа;
реализовано открытие страниц интерфейса в отдельных, всплывающих, окнах;
реализован контроль активного режима в элементах примитива "FormEl";
добавлено блокирование обновления элементов примитива "FormEl", на момент редактирования пользователем;
реализован примитив «Протокол».
Добавлена поддержка типов иконок OpenSCADA “png”, “gif”, “jpg” и “jpeg”.
4 Общесистемные расширения.
К данному релизу было внесено достаточно много общесистемных изменений направленных на расширение функциональности.
Изменения сборочной системы и файла спецификации для формирования RPM-пакета:
Файл спецификации создания RPM пакетов адаптирован для формирования noarch пакетов на ALTLinux. Создан собственный скрипт 'mkdist' для создания «чистого» архива дистрибутива, с коррекцией функционирования команды 'make dist'.
Пакеты документации унифицированы. Информационная документация помещена в бинарный пакет, а документация на программу выделена в отдельный пакет.
Исправлено размещение библиотек и их ссылок по пакетам.
Изменена версия библиотеки ядра OpenSCADA на "0:10:0".
Изменения конфигурации OpenSCADA и демонстрационной БД:
Добавлена поддержка работы OpenSCADA в директории пользователя. Для запуска в пользовательском режие добавлен скрипт 'openscada_start'.
Для QT конфигуратора (UI.QTCfg) пользователь по умолчанию установлен в 'root'.
Добавлена конфигурация собственного интерфейса OpenSCADA на порту 10005 в конфигурационные файлы дистрибутива.
Добавлено конфигурационное поле пути к иконкам OpenSCADA. Поле конфигурации пути к модулям OpenSCADA перемещено на главную страницу системы.
Обновлена демонстрационная БД:
файл БД среды визуализации разделён на файлы БД: vcaBase, vcaTest и vcaAGLKS;
добавлены кадры динамических отчётов на основе примитива «Документ»;
добавлены отчёты в архивном режиме;
страница группы графиков обновлена и исправлена;
добавлена мнемосхема и группа графиков во второй сигнальный объект;
панель управления параметрами расширена для поддержки дискретных параметров (отсекатели);
краны подключены к реальным устройствам динамической модели КС на основной мнемосхеме.
Расширение API пользовательского программирования:
Special.FLibSYS:
функция пользовательского API для преобразования даты и времени в строку tmCtime() заменена на функцию представления даты и времени в произвольном формате tmFStr();
в функции пользовательского API: varhBeg(), varhEnd(), varhGetR(), varhGetB() и varhGetS() добавлен параметр прямого доступа к архиву;
добавлены функции: strPath2Sep(), strEnc2HTML() и real2str().
Добавлена поддержка областей видимости для пользовательских функций. В модуле DAQ.JavaLikeCalc добавлено ключевое слово “using”, для указания области видемости, и ключеве слово “return”.
Разное:
Реализован интерфейс статуса транспортов. Предназначен для детализации текущего состояния и предоставления статистики обмена.
Добавлена возможность хранения и доступа к исполняемым инструкциям XML-узла.
Добавлен шаблон модуля (src/moduls/ui/=Tmpl=) подсистемы «Пользовательские интерфейсы». Шаблон предназначен для создания модулей данной подсистемы на его основе и следуя комментариям в исходном тексте.
Добавлены переводы Ирины и Алексея Попковых на Немецкий язык для модулей: Archive.DBArch, Archive.FSArch, DB.SQLite, DB.MySQL, DB.FireBird, DB.DBF, DAQ.BlockCalc.
Модуль DAQ.System адаптирован к поддержке libsensors версии 3.
5 Планы дальнейшего развития
К релизу следующей версии запланированы решения таких задач:
Расширение API пользовательского программирования функциями:
управления сеансом среды визуализации и управления (СВУ);
управления подсистемой "Сбор данных" (DAQ);
Вынос транспортной и протокольной части модуля DAQ.ModBus в подсистемы "Транспорты" и "Транспортные протоколы". Реализация режима "Slave" сети ModBus.
Создание интерфейса статуса контроллеров подсистемы DAQ для контроля за состоянием источника данных и статистикой сбора данных.
Реализация примитивов "Связь" и "Функция" СВУ.
Реализация стилей и менеджера тем в СВУ.
Реализация поддержки массивов в языке пользовательского программирования JavaLikeCalc и OpenSCADA в целом.