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, stabilization, support of styles, expanding the visual primitive "Protocol", version of the database structure increases to 2, the support of the multi-language data, optimization of data storage, presentation of "Frequency spectrum" in the primitive "Diagram", support of the context menu in the execution mode, interface translation in German and documentation in English.
UI.Vision -- 0.8.0 -> 0.9.0, stabilization, support of styles, expanding the visual primitive "Protocol", presentation of "Frequency spectrum" in the primitive "Diagram", support of the context menu in the execution mode, interface translation in German and documentation in English.
UI.WebVision -- 0.6.0 -> 0.7.0, stabilization, expanding the visual primitive "Protocol", presentation of "Frequency spectrum" in the primitive "Diagram", New version of API of OpenSCADA protocols, using of the general authentication mechanism, optimizing of the speed and memory usage, support of the context menu, interface translation in German and documentation in English.
1 Implementation of planned tasks
In accordance with the plan of the release there were performed the following tasks:
Extension of the API of user programming with the functions:
For the session management it has been added the library of user functions to the module UI.VCAEngine. The library includes the following functions: vcaWdgList(), vcaNodePresent(), vcaAttrList(), vcaAttrGet(), vcaAttrSet() и vcaSesUser().
Management of the controllers of the subsystem "Data acquisition" and of the other OpenSCADA objects was implemented by adding the type of data Object and creation of the user request FLibSYS.xmlCntrReq() to the management interface.
The module DAQ.ModBus is supplemented with the protocol module ModBus, that allowed to work in server (slave) mode of the ModBus network.
The redundancy mechanisms are implemented. In the subsystem "Data acquisition" it is added the mechanism of horizontal redundancy and all the modules of this subsystem are adapted to support the horizontal redundancy. The functions of the vertical redundancy are added in the module DAQ.DAQGate, including the restoration of archives and archives locking of the remote stations. The mechanism of the hot compensation of the holes in the archives from the archives of the back-up sources is implemented.
Into the DAQ.JavaLikeCalc it is added the full support of the objects and arrays. The mechanisms of access to the elements ".prop" and "[prop]" are implemented. The functions of objects and of their execution are implemented. The language is unified at whole to work with different data types with the help of the single command of the virtual machine.
The styles support for the VCA interfaces is added.
Implementation of the primitives "Link" and "Function" of the VCA. -- This work was not done and is moved on to the next release.
2 Optimization, stability, sustainability and system performance increasing.
While working on this version, as well as its practical adaptation, it was discovered and corrected in a total of more than 200 errors.
Except the correction of the errors the work under the optimization of the various components of OpenSCADA. Particularly the noticeable optimization was made in the visualization control area (VCA) and in its visualizers. The main vector in the optimization was the optimization of memory usage.
Here are the most significant error, correction of which has the significant effect on improving of the stability:
Wide-system:
The configuration files for the remote connection by default are fixed.
Compiling of the main starting program is separated from the library compiling into the directory src_call/ in order to ensure the error-free compiling of RPM-packages in the multithreaded mode.
Starting script of the user mode "openscada_start" is corrected in order to copy the configuration file oscada_start.xml to the /.openscada/oscada.xml and to local using of it.
The adaption for the QT 4.5 using is done. The variable of the environment LC_NUMERIC = C is globally added in order to finally fix the problems of the separator in the real numbers in the different locales.
Mode of cache using by the system database is changed to use only in the case of absence of the main database.
The resource for access to the XML-tree of configuration file is added. To access the XML-tree not the mode of the generation of the errors exceptions is used, this corrected the leakage of resources (Stack) in some contexts.
The resource conflict arises when trying to delete one and the same child element of the OpenSCADA component from the different threads is fixed.
The resource for access to the container structure of the elements TElem is added. Conflicts were detected using the general TElem from different TConfig of the different threads in UI.WebVision.
The support for updating of the status of connection of the remote stations in the module UI.QTCfg is added.
Into the module Protocol.HTTP:
The support for the "~ KeepAlive" mode is added, which is needed for normal operation of the Opera WEB-browser.
The omission and not full processing of the the character '\r' at the end of the HTTP protocol lines is fixed. Fixed the work in Konqueror 4.
VCA:
A lot of fixes and improvements in conjunction of the visualization and archiving are made.
The work of the trend primitive "Diagram" of the VCA is fixed when working on long time intervals. The work with individually selected archiver is fixed.
Algorithm of the identification of the fact of modifying the attributes and widgets of the module UI.VCAEngine whilr the execution of projects is submitted to the function modifChk() and retreated to take into account the possibility of overflow and reset of the cycles of execution counter of the visualization interface.
A lot of bug fixes are made in the module DAQ.ModBus and the reconstruction for the support of various interfaces, including ModBus/ASCII is implemented. The record to the controller is made only in the case of a real change in values and record of the not EVAL values.
For the outgoing transport of the module Transport.Sockets the reconnection and restoration of the session is fixed, it is also added the controlled timeout of the connection.
The export of large areas of the archive is fixed, as well as the function of management of the requests restrictions for buffers with the fixed size.
Optimization and productivity improvement:
Working mode with the DB tables is changed to the one which do not close the tables immediately after the completion of work with them. Closing is made in a minute after the last use of the table. This approach significantly increased the speed of access to the database.
The cache of the resources is implemented in the module UI.WebVision. It increases the productivity in the construction of images of ElFigure primitives based on the images.
Database Structure of the VCA is changed to improve the productivity and to avoid the lost of records in the database. DB API version is set to 2.
The individual mechanism to block the outgoing transports is added. It is used for the exclusive access to transport without blocking of the entire protocol in the DAQ.ModBus and Protocol.SelfSystem.
Optimizing of the memory usage:
The data type TVariant for the clear storage of date of different types. The object is used to obtain the direct access to the attributes of widgets "id" and "path" and to avoid the excessive storage of these attributes in the module VCA UI.VCAEngine.
The global resource object and its use are standardized. For the resource to the read-write the POSIX functions pthread_rwlock_ *() are used.
The container of the children groups in the TCntrNode is made the dynamic one.
The mechanism for storing the attributes in the VCA widget is simplified.
The description object of the VCA attributes TFld is used only once for the inherited attributes. The memory using is reduced by the 30%.
3 Improvement and stabilization of the VCA.
Significant changes have been implemented within the visual control area (VCA), namely in the VCA engine modules UI.VCAEngine, in the visualizers UI.Vision and ~ UI.WebVision. The changes were aimed to the stabilizing, optimizing of memory usage and improvement of the user functions of the VCA.
Improvements of the VCA:
The transfer of the translation of the main QT dialogues to the standard I18N.
The functions of the user API for enhanced access to the elements of the session of the project from the scripts of elements'(widgets') of visualization are added.
The support of alpha channel, ie translucency, in the indication of colors of all elements of the VCA primitive ElFigure is added.
Attribute "root" of the VCA is moved to the main widgets' attributes' container . Attribute "parent" is added to provide information about the parent widget. The attributes "tipTool" and "tipStatus" are added to provide an opportunity for providing the VCA widgets with the contextual help in the module of the visualization engine UI.VCAEngine.
In the UI.WebVision module the conception of forming the image of the primitive ElFigure is changed to the formation of images with filling in the individual images and their subsequent integration into the resulting image.
The mechanism of the VCA widgets' changes clear is implemented. It is often need to reset the local changes and to return to the inherited properties.
The support for the context menu for widgets in the execution mode of the VCA projects is implemented.
The hiding of the the menu bar in the mode of execution of the project by the UI.Vision module for unprivileged users is implemented. Menu Bar in the execution mode is now positioned as the tool of the OpenSCADA's administrator, which contain system-wide functions. Print and export functions are duplicated on the status bar.
The clock on the status panel is added in the execution mode of the project by the UI.Vision module for full-screen performance.
The basic support for the multi-display systems is implemented in the UI.Vision module.
Changes in the structure of the VCA database are added to improve performance and to avoid the lost of records in the database. The version of the DB structure of the VCA is increased to 2.
Into the VCA primitive "Diagram" it is added the representation of the frequency spectrum of the archive data values.
The user function vcaSesUser() into the user API of the VCA is added.
VCA: Into the primitive "Protocol" the property of the sorting order and description of elements' design property are added. Check for disable of the trends, including the condition of the not correct color are added to the primitive Diagram.
The support of styles is added.
4 Translation of documents in English and the program's interface in German. Multi-language database.
Much has been done to translate the program interface into German by Irina Popkova. The OpenSCADA kernel interfaces have been translated and the module ones: 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. The patch of the Klaus Fetscher for the correction of the interface translation into German is included.
The English translation of documentation for system-wide documentation and modules is done by Maxim Lysenko: 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.
To the OpenSCADA system kernel the support for multilingual text variables is added. Owing to this feature the demonstration databases of individual languages merged into one multilingual database, which includes English (basic), Russian and Ukrainian languages. Multi-language is supported by the modules and databases DB.SQLite DB.MySQL. Demo configuration file is also translated into English (basic), Russian and Ukrainian languages.
5 System-wide expansions.
For this release it was made a lot of system-wide changes aimed to enhancing of the functionality.
Extension of the user programming API:
Into the user's library of the system API Special.FLibSYS are added:
Functions: sysCall(), int2str(), str2real(), str2int(). sysCall() function opens wide possibilities to the OpenSCADA user by calling any system software, utilities and scripts, as well as by way of access to the huge volume of system data.
The functions dbReqSQL() and messGet() are added, which are used as return objects.
The XMLNodeObj object is added, the function xmlNode () for the creation of the object and function xmlCntrReq () for sending the request to the management interface of OpenSCADA are added.
The VArchObj object and vArh(), vArhBuf() functions are added for it's creation. It is used for full access to the archives. The user function for the planning in th standard Cron tmCron () is added.
The FFT function is added into the archive object VArchObj for processing of the archive with the Fast Fourier Transform.
The encode/decode of the binary data to the text functions are added:: strEnc2Bin() and strDec4Bin().
Into the object of the instance (TValFunc) of the system functions of OpenSCADA execution (TFunction) it is added the attribute of the user allowing the sharing of rights to execute the user's API.
The data type TVariant for the clear different types data storage is implemented. The object is used to obtain the direct access to the attributes of widgets "id" and "path" and to avoid the excessive storage of these attributes in the VCA UI.VCAEngine module.
The limit of the number of variables (registers) used by the user in the function, is increased from 255 to 65535 in DAQ.JavaLikeCalc.
The user objects are implemented. The base object TVarObj and the array object TAreaObj are supported. The support for output parameters in the functions of objects is added.
The full support for objects and arrays in DAQ.JavaLikeCalc is added. The mechanisms to access the elements ".prop" and "[prop]" are implemented. The functions of objects and their executions are implemented. Language at whole is unified to work with different types of data using the single command of the virtual machine. The support for installing the run-time of the controller in the standard Cron is added.
Удалены прямые функции доступа к архивам. Вместо них должны использоваться встроенные функции объекта архива.
Реализована первичная поддержка модели объектов 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.