Release of the open SCADA (Supervisory control and data acquisition) system of version 0.6.4 is the planned release of the 0.6.0 branch. Withing the limits of this version the considerable work on the stabilization and adaptation to the practical problems is made, and also the significant improvements are implemented. This version of the OpenSCADA system is positioned as an official beta version of the stable 0.7.0 version of OpenSCADA for the platform "Linux x86/x86_64".
This document is the processing (compilation) of <ChangeLog> document of the OpenSCADA system of 0.6.4 version, which is designed to briefly and clearly to cover the new features and changes of the OpenSCADA system. The document includes information on changes made in the stabilization releases of the 0.6.3 version. To get acquainted with all the changes in the OpenSCADA system it is possible in the file ChangeLog from the distribution kit of the system, or here: http://wiki.oscada.org.ua/Works/ChangeLog.
Key features of this version are:
Implementation of planned tasks.
Optimization, stability, sustainability and performance increasing of the system.
Improvement and stabilization of the VCA.
Translation of the documentation into English and the program interface into German. Multi-language database.
System-wide expansion.
While working on the release the following changes were made to the OpenSCADA modules:
Archive.FSArch -- 1.0.1 -> 1.3.1, translation of documents in English, stabilization, modifying of the API request of the values and the subsystems at whole to version 2.
Archive.DBArch -- 0.7.1 -> 0.9.0, translation of documents in English, stabilization, modifying of the API request of the values and the subsystems at whole to version 2.
DB.DBF -- 1.9.1 -> 2.0.1, update of the data acquisition mechanism, the expansion of opportunities when working with keys, translation of documents in English.
DB.MySQL -- 1.4.1 -> 1.6.1, stabilization, storage of the multilingual fields, the new macro for the MySQL library detection, updated the data acquisition mechanism, the expansion of opportunities when working with keys, translation of documents in English.
DB.SQLite -- 1.4.1 -> 1.6.1, stabilization, storage of the multilingual fields, the new macro for the SQLite library detection, update of the data acquisition mechanism, the expansion of opportunities when working with keys, translation of documents in English.
DB.FireBird -- 0.8.1 -> 0.9.1, the new macro for the FireBird library detection, update of the data acquisition mechanism, the expansion of opportunities when working with keys, translation of documents in English.
DAQ.DiamondBoards -- 1.1.0 -> 1.2.0, implementation of redundancy, interface translation in German and documentation in English.
DAQ.System -- 1.6.2 -> 1.7.0, implementation of redundancy, interface translation in German and documentation in English.
DAQ.BlockCalc -- 1.1.1 -> 1.2.1, stabilization, implementation of redundancy, interface translation in German and documentation in English.
DAQ.JavaLikeCalc -- 1.3.0 -> 1.5.0, stabilization, increasing the limit on the number of registers in the function to 65535, the implementation of objects, implementation of redundancy, interface translation in German and documentation in English.
DAQ.LogicLev -- 0.9.2 -> 1.0.1, some features enhancements, implementation of redundancy, interface translation in German and documentation in English.
DAQ.SNMP -- 0.3.3 -> 0.4.0, implementation of redundancy, interface translation in German and documentation in English.
DAQ.Siemens -- 1.1.1 -> 1.2.1, stabilization, implementation of redundancy, interface translation in German and documentation in English.
DAQ.ModBus -- 0.9.1 -> 1.0.1,increasing the functionality, a significant stabilization, selection of the protocol part into the separate module Protocol.ModBus, replacing its own mechanism of serial transports with the module Transport.Serial, the use of an individual mechanism of blocking the outbound transports, implementation of redundancy, interface translation in German and documentation in English.
DAQ.DCON -- 0.1.0 -> 0.3.0, stabilization, expanding the list of supported hardware, implementation of redundancy, replacing its own mechanism of serial transports with the module Transport.Serial, interface translation in German and documentation in English.
DAQ.DAQGate -- 0.3.3 -> 0.8.0, renamed from DAQ.Transporter, stabilization, increasing of the functionality, the implementation of vertical and horizontal redundancy, support for forwarding the archives of remote stations, interface translation in German and documentation in English.
DAQ.SoundCard -- 0.6.0, new module of the implementation of access to input data of the sound card, implementation of redundancy, interface translation in German and documentation in English.
DAQ.ICP_DAS -- 0.5.0, new module of the implementation the support of the ICP DAS equipment.
Transport.Sockets - 1.3.6 -> 1.4.0, stabilization, some features enhancements, translation of the documentation in English.
Transport.SSL -- 0.8.0 -> 0.8.2, stabilization, some features enhancements, translation of the documentation in English.
Transport.Serial -- 0.5.0, new module.
Protocol.HTTP -- 1.3.2 -> 1.4.1, stabilization, the support of the Keep-Alive mode, enhancement of the module mechanism of the HTTP protocol, interface translation in German and documentation in English.
Protocol.SelfSystem -- 0.8.0 -> 0.9.1, stabilization, the new API of the outgoing requests of the "Protocols" subsystem , interface translation in German and documentation in English.
Protocol.ModBus -- 0.5.0, new module of the ModBus protocol selected from the module DAQ.ModBus, it supports the server or slave mode of the ModBus network.
Special.FLibComplex1 -- 1.0.3 -> 1.0.4, some improvements in the function of PID-regulator, interface translation in German and documentation in English.
Special.FLibMath -- 0.5.1, interface translation in German and documentation in English.
Special.FLibSYS -- 0.7.0 -> 0.9.0, addition of the user objects and functions to work with them, a significant expansion of library at whole, the stabilization, interface translation in German and documentation in English.
Special.SystemTests -- 1.3.6 -> 1.3.7, changed by changing API, interface translation in German.
UI.QTStarter -- 1.5.1 -> 1.5.3, addition of the insert the function of the own section of the menu in the opened QT window, QT translation of internal QT messages, interface translation in German and documentation in English.
UI.QTCfg -- 1.7.0 -> 1.8.1, stabilization, support of the dynamic table structures, unification of the OpenSCADA management interface, search engine for the element in the branch, the new version of API of the OpenSCADA protocols, selection of several elements of the tree for their group removal, interface translation in German and documentation in English.
UI.WebCfg -- 1.5.2 -> 1.5.3, stabilization, support of the dynamic table structures, using of the general authentication mechanism, interface translation in German and documentation in English.
UI.WebCfgD -- 0.5.0 -> 0.6.2, stabilization, support of the dynamic table structures, unification of the OpenSCADA management interface, the new version of API of the OpenSCADA protocols,using of the general authentication mechanism, interface translation in German and documentation in English.
UI.VCAEngine -- 0.8.0 -> 0.9.0, стабилизация, поддержка стилей, расширение визуального примитива "Протокол", увеличение версии структуры БД до 2, поддержка мнгоязыковости данных, оптимизация хранения данных, представление "Частотный спектр" в примитиве "Диаграмма", поддержка контестного меню в режиме исполнения, перевод интерфейса на Немецкий и документации на Английский.
UI.Vision -- 0.8.0 -> 0.9.0, стабилизация, поддержка стилей, расширение визуального примитива "Протокол", представление "Частотный спектр" в примитиве "Диаграмма", поддержка контестного меню в режиме исполнения, перевод интерфейса на Немецкий и документации на Английский.
UI.WebVision -- 0.6.0 -> 0.7.0, стабилизация, расширение визуального примитива "Протокол", представление "Частотный спектр" в примитиве "Диаграмма", новая версия API протоколов OpenSCADA, использование общего механизма аутентификации, оптимизация скорости и используемой памяти, поддержка контестного меню, перевод интерфейса на Немецкий и документации на Английский.
1 Реализация плановых задач
В соответствии с планом релиза были выполнены следующие задачи:
Расширение API пользовательского программирования функциями:
Для управления сеансом была добавлена библиотека пользовательских функций в модуль UI.VCAEngine. В состав библиотеки вошли функции: vcaWdgList(), vcaNodePresent(), vcaAttrList(), vcaAttrGet(), vcaAttrSet() и vcaSesUser().
Управление контроллерами подсистемы "Сбор данных" и остальными объектами OpenSCADA было реализовано путём добавления типа данных Объект и создания функции пользовательского запроса FLibSYS.xmlCntrReq() к интерфейсу управления.
Модуль DAQ.ModBus дополнен модулем протокола ModBus, что позволило работать в режиме сервера(подчинённого) сети ModBus.
Реализованы механизмы резервирования. В подсистему "Сбор данных" добавлен механизм горизонтального резервирования и все модули этой подсистемы адаптированы для поддержки горизонтального резервирования. В модуль DAQ.DAQGate добавлены функции вертикального резервирования, включая восстановление архивов и шлюзование архивов удалённых станций. Реализован механизм горячей компенсации дыр в архивах из архивов резервных источников.
В DAQ.JavaLikeCalc Добавлена полная поддержка объектов и массивов. Реализованы механизмы доступа к элементам “.prop” и "[prop]". Реализованы функции объектов и их вызов. Язык в целом унифицирован для работы с разными типами данных с помощью одной команды виртуальной машины.
Добавлена поддержка стилей для интерфейсов СВУ.
Реализация примитивов «Связь» и «Функция» СВУ. -- Данная работа не была выполнена и перенесена к следующему релизу.
2 Оптимизация, повышение стабильности, устойчивости и производительности системы.
В процессе работ над данной версией, а также её практической адаптации, было обнаружено и исправлено в общей сложности более 200 ошибок.
Кроме исправления множества ошибок была проделана работа по оптимизации различных компонентов OpenSCADA. Особенно заметной оптимизации подверглась среда визуализации и управления (СВУ) и её визуализаторы. Основным вектором в оптимизации стала оптимизация используемой памяти.
Перечислим наиболее существенные ошибки исправление которых значительно отразилось на повышении стабильности:
Общесистемные:
Исправлены конфигурационные файлы для обеспечения удалённых соединений, по умолчанию.
Сборка главной пускающей программы отделена от сборки библиотеки в директорию src_call/ с целью обеспечения безошибочной сборки RPM-пакетов в многопоточном режиме.
Запускающий скрипт режима пользователя "openscada_start" исправлен с целью копирования конфигурационного файла oscada_start.xml в /.openscada/oscada.xml и локального использования его.
Выполнена адаптация для использования QT 4.5. Глобально добавлена переменная окружения LC_NUMERIC=C с целью окончательного исправления проблемы разделителя в вещественных числах на различных локалях.
Режим использования кеша системной БД изменён для использования только в случае отсутствия основной БД.
Добавлен ресурс для доступа к XML-дереву конфигурационного файла. Для доступа к XML-дереву использован не режим генерации исключений при ошибках, что исправило утечку ресурсов (Стэк) в некоторых контекстах.
Исправлен конфликт ресурса возникающий при попытке удаления одного и того же дочернего элемента компонента OpenSCADA из разных потоков.
Добавлен ресурс для доступа к контейнерам структуры элементов TElem. Были обнаружены конфликты при использовании общего TElem из разных TConfig разных потоков в UI.WebVision.
Добавлена поддержка обновления статуса соединения удалённых станций в модуле UI.QTCfg.
В модуль Protocol.HTTP:
Добавлена поддержка режима "KeepAlive", который нужен для нормальной работы WEB-браузера Opera.
Исправлен пропуск и неполная обработка символа '\r' в конце строк протокола HTTP. Исправлена работа в Konqueror 4.
СВУ:
Сделано множество исправлений и улучшений в связке визуализации и архивирования.
Работа механизма тренда примитива «Диаграмма» СВУ исправлена при работе на длинных интервалах времени. Исправлена работа с отдельно выбранным архиватором.
Алгоритм выявления факта модификации атрибутов и виджетов модуля UI.VCAEngine при исполнении проектов вынесен в функцию modifChk() и доработан для учёта возможности переполнения и сброса счётчика тактов исполнения интерфейса визуализации.
В модуль DAQ.ModBus внесено множество исправлений и выполнена реконструкция для обеспечения поддержки различных интерфейсов, включая ModBus/ASCII. Запись в контроллер сделана только в случае реального изменения значений и записи не EVAL значений.
Для исходящего транспорта модуля Transport.Sockets исправлено переподключение и восстановление сеанса, а также добавлен подконтрольный таймаут соединения.
Исправлен экспорт больших участков архива, а также функция управления ограничениями запроса для буферов с фиксированным размером.
Оптимизация и повышение производительности:
Режим работы с таблицами БД изменён на режим, незакрывающий таблицы сразу по завершению работы с ними. Закрытие производится через минуту после последнего использования таблицы. Такой подход значительно повысил скорость доступа к БД.
Реализован кеш ресурсов в модуле UI.WebVision. Повышает производительность при построении образов примитивов ElFigure на основе изображений.
Структуры БД СВУ изменена для повышения производительности и исключения потерянных записей в БД. Версия API БД установлена в 2.
Добавлен индивидуальный механизм блокирования исходящих транспортов. Использовано для монопольного доступа к транспорту без блокирования всего протокола в DAQ.ModBus и Protocol.SelfSystem.
Оптимизации использования памяти:
Реализован тип данных TVariant для прозрачного хранения данных разных типов. Объект использован для получения прямого доступа к атрибутам виджетов “id” и “path” и исключения избыточного хранения данных этих атрибутов в модуле VCA UI.VCAEngine.
Глобальный объект ресурса и его использование унифицированы. Для ресурса на чтение-запись использованы POSIX функции pthread_rwlock_*().
Контейнер групп детей в TCntrNode сделан динамическим.
Упрощён механизм хранения атрибутов в виджетах СВУ.
Объект описания атрибутов СВУ TFld использован однократно для наследованых атрибутов. Уменьшено потребление памяти до 30%.
3 Усовершенствование и стабилизация СВУ.
Заметные изменения были выполнены в рамках среды визуализации и управления (СВУ), а именно в модулях движка СВУ UI.VCAEngine, визуализаторов UI.Vision и UI.WebVision. Внесённые изменения были направленны на стабилизацию, оптимизацию потребления памяти и улучшение пользовательских свойств СВУ.
Улучшения СВУ:
Добавлена трансляция перевода основных диалогов QT в стандарт I18N.
Добавлены функции пользовательского API для расширенного доступа к элементам сеанса проекта из скриптов элементов(виджетов) визуализации.
Добавлена поддержка альфа-канала, т.е. полупрозрачности в указании цвета всех элементов примитива ElFigure СВУ.
Атрибут “root” СВУ перемещён в основной контейнер атрибутов виджетов. Добавлен атрибут “parent” для предоставления информации о родительском виджете. Добавлены атрибуты “tipTool” и “tipStatus” для предоставления возможности наделения виджетов СВУ контекстными подсказками в модуле движка визуализации UI.VCAEngine.
В модуле UI.WebVision изменена концепция формирования образа примитива ElFigure на формирование образов с заполнениями в отдельных изображениях и последующей сборки их в результирующее изображение.
Реализован механизм очистки изменений виджетов СВУ. Часто нужен для сброса локальных изменений и для возврата к наследованным свойствам.
Реализована поддержка контекстного меню для виджетов в режиме исполнения проектов СВУ.
Реализовано скрытие панели меню в режиме исполнения проекта модулем UI.Vision для непривилегированных пользователей. Панель меню в режиме исполнения теперь позиционируется как инструмент администратора OpenSCADA, содержащий общесистемные функции. Функции печати и экспорта продублированы на панели состояний.
Добавлен индикатор часов на панели состояний в режиме исполнения проекта модулем UI.Vision для полноэкранного исполнения.
Реализована базовая поддержка многодисплейных систем в модуле UI.Vision.
Внесены изменения в структуру БД СВУ для повышения производительности и исключения потерянных записей в БД. Версия структуры БД СВУ увеличена до 2.
В примитив СВУ "Диаграмма" добавлено представление частотного спектра данных архива значений.
Добавлена пользовательская функция vcaSesUser() в пользовательское API СВУ.
СВУ: В примитив «Протокол» добавлено свойство порядка сортировки и свойства описания оформления элементов. Добавлена проверка на отключенность трендов, включая и условие не корректного цвета, в примитив «Диаграмма».
Добавлена поддержка стилей.
4 Перевод документации на Английский язык и интерфейса программы не Немецкий. Многоязыковая БД.
Проделана большая работа по переводу интерфейса программы на Немецкий Ириной Попковой. Были переведены интерфейс ядра OpenSCADA и модулей: UI.WebVision, UI.QTCfg, DAQ.DCON, DAQ.LogicLev, DAQ.DAQGate, DAQ.DiamondBoards, DAQ.ModBus, DAQ.SoundCard, DAQ.Siemens, DAQ.SNMP, DAQ.System, DAQ.JavaLikeCalc, Protocol.HTTP, Protocol.SelfSystem, Special.FLibComplex1, Special.FLibMath, Special.FLibSYS, Transport.Serial, Special.SystemTests, UI.VCAEngine, UI.QTStarter, UI.Vision, UI.WebCfg. Включен патч Клауса Фетчера для коррекции перевода интерфейса на Немецкий.
Лысенко Максимом выполнен перевод документации на Английский для общесистемной документации и для модулей: DB.SQLite, DB.MySQL, DB.FireBird, DB.DBF, Archive.DBArch, Archive.FSArch, DAQ.System, DAQ.LogicLev, DAQ.DAQGate, DAQ.JavaLikeCalc, DAQ.ModBus, DAQ.SoundCard, DAQ.Siemens, DAQ.SNMP, DAQ.DiamondBoards, DAQ.BlockCalc, Transport.Sockets, UI.WebCfgD, UI.QTStarter, UI.QTCfg, Transport.Serial, Transport.SSL, Protocol.SelfSystem, Protocol.HTTP.
В ядро системы OpenSCADA добавлена поддержка многоязыковых текстовых переменных. Благодаря этой функции демонстрационные БД отдельных языков объединены в одну многоязыковую БД, которая включает Английский(базовый), Русский и Украинский языки. Многоязыковость поддерживается модулями БД DB.SQLite и DB.MySQL. Демонстрационный конфигурационный файл также переведен на Английский(базовый), Русский и Украинский языки.
5 Общесистемные расширения.
К данному релизу было внесено достаточно много общесистемных изменений, направленных на расширение функциональности.
Расширение API пользовательского программирования:
В библиотеку системного API Special.FLibSYS пользователя добавлены:
Функции: sysCall(), int2str(), str2real(), str2int(). Функция sysCall() открывает широкие возможности пользователю OpenSCADA путём вызова любых системных программ, утилит и скриптов, а также получения посредством них доступа к огромному объёму системных данных.
Добавлены функции dbReqSQL() и messGet(), которые используют в качестве возврата объекты.
Добавлен объект XMLNodeObj, функция xmlNode() для создания объекта и функция xmlCntrReq() для отправки запроса к интерфейсу управления OpenSCADA.
Добавлен объект VArchObj и функции vArh(), vArhBuf() для его создания. Используется для полного доступа к архивам. Добавлена пользовательская функция планирования в стандарте Cron tmCron().
Добавлена функция FFT в объект архива VArchObj для обработки архива быстрым преобразованием в ряд Фурье.
Добавлены функции кодирования/декодирования бинарных данных в текст: strEnc2Bin() и strDec4Bin().
В объект экземпляра (TValFunc) исполнения функций системы OpenSCADA (TFunction) добавлен атрибут пользователя для предоставления возможности разделения прав на исполнения функций пользовательского API.
Реализован тип данных TVariant для прозрачного хранения данных разных типов. Объект использован для получения прямого доступа к атрибутам виджетов “id” и “path” и исключения избыточного хранения данных этих атрибутов в модуле VCA UI.VCAEngine.
Предел количества переменных (регистров), используемых пользователем в функции, расширен с 255 до 65535 в DAQ.JavaLikeCalc.
Реализованы пользовательские объекты. Поддерживается базовый объект TVarObj и объект массива TAreaObj. Добавлена поддержка выходных параметров в функциях объектов.
В DAQ.JavaLikeCalc Добавлена полная поддержка объектов и массивов. Реализованы механизмы доступа к элементам “.prop” и "[prop]". Реализованы функции объектов и их вызовы. Язык в целом унифицирован для работы с разными типами данных при помощи одной команды виртуальной машины. Добавлена поддержка установки времени выполнения контроллеров в стандарте Cron.
Удалены прямые функции доступа к архивам. Вместо них должны использоваться встроенные функции объекта архива.
Реализована первичная поддержка модели объектов OpenSCADA (DOM) для доступа из языков пользовательского программирования.
В исходящий транспорт добавлена DOM-функция messIO() для предоставления пользователю возможности отправки прямых запросов через транспорты.
Изменения демонстрационной БД:
Полноценные объекты сигнализации.
Создан шаблон кадра сводных графиков, содержащего до 80 графиков одновременно.
Добавлена контекстная помощь к элементам мнемосхемы.
Обновлена панель навигации и добавлены кнопки квитации аварийных сообщений.
Добавлены объёмные элементы трубопровода.
Добавлено контекстное меню для шаровых кранов.
Увеличен размер шрифта значений элементов видов аналоговых сигналов.
Обновлены панели управления трендами и документами.
Демо БД обновлена для реализации структуры БД СВУ версии 2.
Обновлен перевод БД СВУ на Английский и добавлен перевод на Украинский.
Обновлен алгоритм создания архивных документов.
Функции документа для суммирования и усреднения участка архива исправлены с целью использования последнего значения.
Добавлено имя пользователя сеанса для размещения в протоколе действия.
БД и конфигурационный файл переформированы для установки языком по умолчанию Английского.
Расширена функциональность главной страницы объектов сигнализации.
Увеличены шрифты кадра контура, а так же добавлены кнопки ступенчатого изменения значения.
Разное:
Добавлена возможность индивидуальной загрузки из выбранной БД или конфигурационного файла.
Реализована полная поддержка списков разрешённых и запрещённых модулей, замена списка автоматических модулей. Реализована таблица для контроля за загруженными разделяемыми библиотеками (модулями). Реализовано ручное подключение/отключение модулей.
Режим работы с таблицами БД изменён на режим не закрывающий таблицы сразу по завершению работы с ними. Закрытие производится через минуту после последнего использования таблицы. Такой подход значительно повысил скорость доступа к БД.
Добавлена микросекундная часть времени в системные сообщения OpenSCADA.
Добавлен специальный флаг выбора ключа для использования его в функциях запроса к БД dataSeek() и dataDel(), что позволило выбирать ключи для запроса не только текстового типа. Флаг использован во всех интерфейсах.
Добавлен механизм статуса для объектов контроллеров подсистемы «Сбор данных».
Документ руководства по OpenSCADA отформатирован для печати и добавлен в репозиторий.
Увеличена версия API модулей подсистем: "Архивы" и "Сбор данных" до 3 и "Протокол" до 2.
Реализован механизм статуса для основных подсистем и их модулей.
x86-зависимый механизм измерения коротких интервалов времени везде заменён стандартным. Функция вычисления частоты процессора отключена для не x86 и x86_64 архитектур.
Добавлена вкладка формирования SQL-запроса в страницу конфигурации БД.
Добавлена поддержка полностью динамических структур элемента таблицы в конфигураторах UI.QTCfg, UI.WebCfg, UI.WebCfgD
Добавлен механизм сигналов, основанный на API сообщений.
DAQ.DAQGate:
Модуль DAQ.Transporter переименован в DAQ.DAQGate и расширен для поддержки горизонтального и вертикального резервирования, а также для работы с архивами.
Постоянные запросы к удалённому контроллеру сгруппированы в один запрос.
Добавлено обновление списка параметров и соединение архивов с ними.
Изменена концепция синхронизации для DAQ.DAQGate и резервирования сбора данных.
Порядок удалённых станций сделан значащим.
Выполнена некоторая очистка кода.
Исправлен доступ к атрибуту ошибки “err”.
Механизм восстановления из архивов несколько обновлен с целью исправления потери значений в DAQ.DAQGate и системе резервирования.
DAQ.DCON: Включен патч Алмаза Каримова для множества исправлений и улучшений.
Добавлена функция TSYS::cron() для планирования исполнения задач.
DB: Добавлена запись значения в языке по умолчанию в случае создания новой записи и неиспользования языка по умолчанию. Добавлена возможность использования переводов из многоязыковой БД в одноязыковой конфигурации.
Изменения сборочной системы и файла спецификации для формирования RPM-пакета:
Создан шаблонный модуль "=Tmpl=" для подсистем: "Транспорты" и "Протоколы".
Обновлен spec-файл формирования RPM-пакетов. Для требований дистрибутива Fedora адаптирован отдельный spec-файл Алексеем Попковым и при участии Пётра Леменкова. Добавлены autoconf макросы для более эффективного обнаружения ресурсов БД MySQL, FireBird и SQLite. Исправлена и адаптирована сборка модулей на libtool 2.2.
Из репозитория удалены файлы, которые могут быть созданы командой “autoreconf -iv”.
Версия библиотеки OpenSCADA изменена в 0:11:0.
6 Планы дальнейшего развития
К промышленному релизу версии 0.7.0 запланировано решение таких задач:
Реализация примитивов "Связь" и "Функция" СВУ с целью предоставления инструмента графического программирования.
Реализация модуля БД ОДБС, PostgresSQL и транспортного модуля БД.
Реализация нового механизма/модуля тестов системы OpenSCADA.