From OpenSCADAWiki
Jump to: navigation, search
Other languages:
English • ‎mRussian • ‎Українська

This update of the 0.9 LTS release fixes about 60 bugs and appends VERY MANY improvements with several of significant-conceptual ones, which you can read wholly in the update ChangeLog.

At.png User significant actions on the update

  • DAQ.System: ID of the automaticly generated DA parameters changed to: CPU - "CPU[{N}]", fs - "FS{MP}", hddstat - "DiskSt_{dev}", MEM - "MEM", netstat - "Net_{IF}", sensors - "Sensors", hddsmart - "DiskSMART", ups - "UPS", uptime - "UpTm_{U}".
=> manually relink all the automatically created sources which changed, when you use the Automatic creation mode
  • FIX:UI.VCAEngine: Prevented from connection the attribute "focus" of any included widget to the calculation IOs and appended by processing the exceptions of accessing those IOs for missing included widgets.
=> manually replace all static using the "focus" attribute like to if(alarms_focus) alUnSel = 10; in LibsDB.vcaBase.wlb_Main.alarmsSt to the code if(this.alarms.attr("focus")) alUnSel = 10;

Automation Linux distributive of the project OpenSCADA

  • appending Debian 12 as the distributive base;
  • updating TDE to 14.1.1 with stabilising up to the level of 14.0.13;
  • prevents optionally the system tray from show program icons with different WMID but equal names like to BlueMan;
  • prevents the very flooding in "~/.xsession-errors" by the debug messages like to "[FIXME] UNCLASSIFIED DEVICE name: ...";
  • HWLib: using in calculation Ah from Wh of the Designed Voltage instead the Current Voltage for accordance with the capacity information on the battery;
  • KRDC: restoring the normal functioning from 14.0.13;
  • KRFB: fixing KRFB crashes just the client disconnect;
  • KXKB-KLayouts: Fixing regressions in loss-clean the system keyboard layouts;
  • TDESVN: preventing crashes at accessing DB from KPart;
  • Krusader: fixing of unpacking *.tar.xz and *.txz, so completing of implementation the XZ support there;
  • KMix: adaption the mixers dynamic;
  • KMilo: restoring the brightness control after its breakage;
  • QuickLauncher: it is just ignore empty items, so they will be removed after the configuration updating;
  • TDM: disabling the authentication by a Security Card to prevent hangs at the exit;
  • KOrganizer: improving the attachments dialogue for pointing only file with naming the attachment item from the file name and inline by default; improving the categories editing dialogue for notifying the underlying selecting dialogue about categories changing;
  • TDEPowerSave: prevents of resetting the widget of displaying values the batteries since their become to show empty bar and -1; commented the SLOT slotHelpContents() due to its missing; prevents appearing the false inactivity dialogue to suspend just after awakening, which is appeared especially often on notebooks in work from the battery;
  • KPackage: optimisation of the memory consumption in way of reading "apt-cache dumpavail" result through an temporary file but not through memory, that is the memory consumption on Debian 12 decreased from ~900MB to ~450MB;
  • TDEPrint: fixing of translation of names of groups of the printing properties;
  • translation to Ukrainian: knmap, knutclient, konversation, tdenetworkmanager.

Main WWW-resources, documentation of the project and subprojects

New and significantly updated parts

  • OpenSCADA Core: 3:13:0 => 3:14:0
(Unification the building with adaption ..., Refactoring and unifying the Transports subsystem ..., Control for big memory consumption), Messages Translation — fixes of the conceptual changes of the previous updates)
  • OpenSCADA "Transport" subsystem: 19 => 20
(Refactoring and unifying the Transports subsystem ...)
  • OpenSCADA "DAQ" subsystem: 14 => 15
(Unification of conception the parameter types)
  • DAQ.System: 2.4 => 3.2
(Complete refactoring and expanding for ...)
  • DAQ.LogicLev: 2.7 => 2.9
  • DAQ.DAQGate: 2.11 => 2.13
  • DAQ.ModBus: 3.6 => 3.8
  • DAQ.OPC_UA: 2.6 => 2.8
  • DAQ.JavaLikeCalc: 5.5 => 5.6
  • DAQ.Siemens: 4.4 => 4.5
  • DAQ.AMRDevs: 0.7 => 0.8
  • Transport.SSL: 3.4 => 4.5
(Expanding by support of the initiative connections, adaption to OpenSSL 1.1 and more)
  • Transport.Sockets: 4.5 => 4.8
  • Transport.Serial: 2.6 => 2.7
  • Protocol.SelfSystem: 1.10 => 2.0
(Significant reviewing and fixing in the external connections implementation and more)
  • UI.QTCfg: 5.12 => 6.0
(Unification the building with adaption to Qt6, QtWebEngine, QtMultimediaEngine, ...)
  • UI.QTStarter: 5.14 => 6.0
(Unification the building with adaption to Qt6, QtWebEngine, QtMultimediaEngine, ...)
  • UI.VCAEngine: 7.11 => 7.13
  • UI.Vision: 8.6 => 9.1
(Unification the building with adaption to Qt6, QtWebEngine, QtMultimediaEngine, ...)
  • UI.WebCfgD: 2.4 => 2.5
  • UI.WebVision: 6.8 => 6.9
  • LibsDB.OscadaLibs.DevLib: 2.6 => 3.0
(Appending by many templates with documenting)
  • LibsDB.vcaBase.Main.storeHouse: 1.3 => 1.4

CONCEPTUAL > Unification the building with adaption to Debian 12, Qt6, QtWebEngine, QtMultimediaEngine, OpenSSL3, MIPS

  • FIX: Finished in true building with the core library only in static:
    • the configuration option --enable-CoreLibStatic expanded for definition the AM_CONDITIONAL(CoreLibStatic) and the environment variable LIB_MOD;
    • moduls/*/*/ appended by the option --tag=disable-shared and expanded by using the environment variable LIB_MOD;
    • src_call/ expanded by the AM_CONDITIONAL(CoreLibStatic) specific processing for static linking the core library with all included modules.
  •,acinclude.m4: Cleaned from the deprecated macroses in AutoConf 2.70:
    • AC_LIBTOOL_DLOPEN replaced by LT_INIT([dlopen]);
    • AX_PTHREAD replaced by AC_SEARCH_LIBS(pthread, [pthread_create])
  • acinclude.m4,DAQ.OPC_UA.libOPC_UA,Transport.SSL,Special.FLibSYS: Cleaned from deprecated functions in OpenSSL 1.1 (API 3.0):
    • acinclude.m4: testing function of the macro AX_LIB_OpenSSL() and AX_LIB_OpenSSL_opt() for libcrypto replaced from MD5_Init() to BIO_new(); testing function of the macro AX_LIB_OpenSSL() for libssl replaced from SSL_free() to SSL_new();
    • OPC_UA.libOPC_UA: UA::symmetricEncrypt() and UA::symmetricDecrypt() merged to UA::symmetricCrypt() and switched for using EVP_CipherInit() and EVP_CipherUpdate() instead AES_cbc_encrypt() for new versions;
      • using RSA_public_encrypt() moved to EVP_PKEY_encrypt() and RSA_private_decrypt() moved to EVP_PKEY_decrypt() for new versions.
    • Transport.SSL,Special.FLibSYS: using of MD5() moved to EVP_DigestInit_ex(), EVP_DigestUpdate(), EVP_DigestFinal_ex() for new versions.
  • In appending Qt6 that is appended by Qt6Sensors, Qt6WebEngineWidgets, Qt6MultimediaWidgets.
    • Appended by checking Qt5WebEngineWidgets and Qt5MultimediaWidgets for support in UI.Vision.
    • Appended by checking the declarations-functions clock_nanosleep, pthread_rwlock_timedwrlock, newlocale for very pure environments of MIPS with UCLibC.
    • The parameters --disable-WebKit and --disable-Phonon renamed to --disable-QtWebEngine and --disable-QtMultimediaEngine respectively.
    • The generic variables QtWebKit_{CFLAGS,LIBS} and phonon_{CFLAGS,LIBS} renamed to QtWebEngine_{CFLAGS,LIBS} and QtMultimediaEngine_{CFLAGS,LIBS} respectively.
    • Most of the corresponding messages were improved.
    • Appended by checking the header pthread.h.
  • acinclude.m4: The AutoConf macro AX_LIB_Qt expanded by Qt6 support and improved in MOC and RCC detection for Qt5.
    • Some messages improved.
  • data/{debian,debian_mod}/compat: The level was risen up to 7 for default building at modern Debian distributives.
  • data/{debian,debian_mod}/control: Appended by the dependency variants qt6-base-dev, qt6-webengine-dev, qt6-multimedia-dev and qtwebengine5-dev, qtmultimedia5-dev.
  • ResRW::{resRequestW,resRequestR}(): Appended of using the timed version at the definition HAVE_DECL_PTHREAD_RWLOCK_TIMEDWRLOCK.
  • TSYS::atime2str(),SYS.strftime(): Appended of using the localized data at the definition HAVE_DECL_NEWLOCALE.
  • TSYS::{sysSleep,taskSleep}(): Appended of using the clocked sleep at the definition HAVE_DECL_CLOCK_NANOSLEEP.
  • Control Interface of the main page appended by hiding the tab "Translations" and the language fields at missing the internationalisation in whole.
  • TMess,TModule: The HAVE_LIBINTL_H checking replaced by "#if HAVE_LIBINTL_H", that is checking for 1.
  • Transports.SSL: Adapted to new functions of OpenSSL 1.1 (API 3.0) with treating deprecated ones.
  • UI.{QTStarter,QTCfg,Vision}: Adapting for building with Qt6, including adapting to Qt6WebEngine and Qt6Multimedia:
    • QLayout::{setMargin,margin}() replaced by QLayout::{setContentsMargins,getContentsMargins}();
    • QVariant(char*) replaced by QVariant(QString);
    • the QMouseEvent constructor replaced by one with the global position;
    • QRegExp replaced by the OpenSCADA's variant TRegExp for functions of replacing and testing or by the direct checking;
    • the QComboBox signal activated(const QString&), currentIndexChanged(const QString&) replaced by activated(int), currentIndexChanged(int) respectively;
    • the QSignalMapper signal mapped(QWidget*) replaced by mappedObject(QObject*);
    • QPalette::Background replaced by QPalette::Window and Qt::MidButton by Qt::MiddleButton;
    • QFileDialog::setReadOnly() replaced by setOption();
    • QApplication::desktop() replaced by QScreen;
    • QAction::parentWidget() replaced by parent();
    • QVariant::type() renamed to typeId(), QMouseEvent::{pos,globalPos}() renamed to {position,globalPosition}(), QDateTime::{setTime_t,fromTime_t,toTime_t}() renamed to {setSecsSinceEpoch,fromSecsSinceEpoch,toSecsSinceEpoch}();
    • appended by renaming functions for different Qt versions with help the macro-definitions in different files and for: typeId() to type(), position() to pos(), globalPosition() to globalPos(), setSecsSinceEpoch() to setTime_t(), fromSecsSinceEpoch() to fromTime_t(), toSecsSinceEpoch() to toTime_t(), mappedObject() to mapped(), setSource() to setMedia(), setVolume() to audioOutput()->setVolume(), setMedia() to setSource(), state() to playbackState();
    • appended for support QRegularExpression instead QRegExp in Qt6;
    • the QMouseEvent property mouseBtHold splitted on two QPointF: mouseBtHoldPos, mouseBtHoldPosG;
    • the keyboard combination separator "+" replaced by "|", that is "Qt::SHIFT|Qt::Key_F1";
    • the event QEvent::KeyRelease in LineEdit apply replaced by QEvent::KeyPress;
    • QTStarter: the generic library lib_qtgen appended by the function winFit() of specific windows fitting on mobile systems in common; appended by the attribute Qt::AA_ShareOpenGLContexts before the Qt application object for QtWebEngine work on Qt6;
    • Vision: adaption to Qt WebEngineWidgets instead WebKit and to Qt MultimediaWidgets instead Phonon, and the primitive Document split for force using QTextBrowser in the development mode. Restored in new action items of the library widgets appearance by placing the new actions to Menu before ToolBar.

CONCEPTUAL > Refactoring and unifying the Transports subsystem in the additional parameters management and expanding in using the connection time parameters for registering configuration parameters of external sources

  • the container configuration field "A_PRMS" of the additional parameters moved to the core library from the modules;
  • appended by functions TTransportS::{prm,cntrCmdPrm}(), {TTransportIn,TTransportOut}::prm() with common implementation the additional parameters;
  • conPrm() expanded by support the configuration parameters of external sources like to protocols and it extended to the input part, also as for the User API;
  • conPrm() appended by an argument of the default value and what used in all transport modules;
  • clearConPrm() expanded by clearing single parameter and only from external sources;
  • setConPrm() was removed after implementing this feature in conPrm() and some modules was updated for that: DAQ.AMRDevs, Protocol.SelfSystem;
  • Protocol.SelfSystem is the first protocol who is used now the configuration parameters in transport;
  • the output transports appended by a link to an input transport, who created the output one, and it is used for holding here the configuration parameters of external sources;
  • all configuration of the associated output transports are set hidden;
  • control of the additional parameters moved in own tab "Additional (aprm)" with a function of resetting their values;
  • marking the input and output transports as modified set only at the configuration fields real change.

CONCEPTUAL > Control for big memory consumption

  • SYS: TCntrNode::cntrCmd() in processing the primary commands of the Control Interface appended by their generic logging to control actions caused the big memory consumption.
  • FIX:DAQ: JavaLikeCalc: The strings concatenation operation appended by the limit checking on limUserFile_SZ(10M).
    • System: Appended by DA Process as an interface to Linux processes in control their memory usage.
  • FIX:Archives: The requests TVArchEl::getVals() and "TValue:get:/serv/attr" appended of limiting the requesting depth in limUserIts_N (1e6) items to prevent for big memory consumption.
    • FIX: The Control Interface request "TValue:get:/serv/attr" fixed in limit calculation of the function getVals().
    • FIX:.,FSArch: The values archiving appended by limiting the writing operations at limUserIts_N (1e6) entries for tracing of consuming all memory in some cases.

CONCEPTUAL > Messages Translation (fixes of the conceptual changes of the previous updates)

  • FIX:SYS,DB: TMess::translGet() fixed in detecting the system prestored messages at setting empty translation messages.
    • DB: TTable::fieldSQLSet() adapted to clearing the message base and all translations at zeroing a translation, for clear messages edition in the dynamic translation mode and from non base language.
  • SYS,DB.{SQLite,MySQL,PostgreSQL,FireBird},Protocol.HTTP: The messages translation adapted mostly for language codes more of 2 (two) symbols.
  • Protocol.HTTP,UI.{WebUser,WebVision}: Finished in adapting for dynamic translation the station name with unification the User API function pgCreator() for using language from objFuncCall().
    • Protocol.HTTP: Path from TSYS::ico() used for obtaining translated icons.
  • SYS,UI.{Vision,WebVision}: The function TSYS::atime2str() appended by the date translation and it is used in building the time scale of the primitive Diagram of VCA.
  • FIX:DB: Allowed in true writing of user changes in the Dynamic Translation Mode on non Base Language, by early checking for dynamic data.
  • FIX:DAQ: The DAQ-Templates finished in adapting to translation string type values at their editing and using in the Template Configuration Tab.
    • FIX:DAQGate: Fixed in the values sending of the translatable fields not in the internal translation structure.
  • Protocol: HTTP: Adapted for dynamic translation the station name and processing encoded file names of images.
    • UserProtocol: Fixed-adapted for the dynamic translation of the IO names.
  • FIX:UI.WebUser: Fixed in translation the page name in the index.
  • FIX:UI.WebVision: Fixed in dynamic translation the user name on the index page.

OpenSCADA libraries and projects

  • data/{oscada_plc.xml,oscada_server.xml,oscada_start.xml,ModelsDB/{AGLKS/oscada_AGLKS.xml,Boiler/oscada_Boiler.xml}}: Cleared in the input transport description and the transports appended by the port group: 10002,10003,10004 for WEB and 10005,10006,10007 for CNTR.
  • LibsDB.{OscadaLibs.flb_Controller.test,vcaBase.prj_archBrowser.IDW},ModelsDB.AGLKS.St.{OPC_UA.test,Archive.{MemInfo_use,CPULoad_load}},ModelsDB.Boiler.St.Archive.{MemInfo_use,CPULoad_load}: Adapted to renaming DAQ.System.AutoDA.CPULoad and DAQ.System.AutoDA.MemInfo to DAQ.System.AutoDA.CPU and DAQ.System.AutoDA.MEM.
  • FIX:ModelsDB.AGLKS.St: The input SSL transports set by the port group 10042,10043,10044 for WEB and 10045,10046,10047 for CNTR.
    • FIX:WebUser.test: restored in the text before unification the translation.
    • DAQGate.test: Updated for the parameter cache.
    • LogLevPrm.gen: All parameter objects set for "alDelay" in 1, to prevent the alarm messages at the exiting.
    • Sockets.{testRelease,testRelease1,testRelease2}: disabled by default.
  • LibsDB.OscadaLibs:
    • tmplib_DevLib: The library appended by the templates with documenting:
      • from VPF: Incubator, VSE002, "FF LE-03MB CT (FF_LE)", Ergomera 625(ergomera625);
      • from Blue Star Group: "Goboy 1M (Goboy1M)", "AutoPILOT PRO Flow Computers (AutoPILOT)", "AutoPILOT OLD Flow Computers (AutoPILOT_old)", "Corrector BK (CorBK)", "Tancy Data (TDS)", "UltraMag", "Enron, Daniel (enronDaniel)", FlowGAS.
    • tmplib_base: Appended by a new template for WebUser "HTTP File Server (fileServerHTTP)" with implementing the HTTP File Server in OpenSCADA, currently that is only reading resources with support partiality.
      • digAlarm,manInUnif,anUnif,pidUnifImp,anUnifSt,pidUnif,codeState,SNMP,UPS: The NAME IO set to the type "String (translate)" and the DESCR IO to the type "Text (translate)".
    • tmplib_LowDevLib: Appended by the template "BT: ATORCH UC96".
      • RDTech: Nondouble commands set to send the command twicely for stable applying by the device, postcommand delay set to 0.2 and moved in common.
    • tmplib_base.ntf: Expanded by a possibility of specifying messages to exclude from the notification.
  • LibsDB.vcaBase:
    • wlb_Main.storeHouse: Expanded by creating the item edition form in the main frame after hiding the main table and other.
      • FIX: Prevented of <EVAL> for <NULL> cells in the item report.
      • FIX: Guaranteed in filling the report dialogs by generating the opening events from the procedure.
      • The text fields of the single-item report were cleared from the left margin for texts.
      • The reports appended by processing the links as the external ones.
      • Expanded by processing ID (index) also as other standard fields "NAME", "DSCR" — to control the field visibility.
    • FIX:Main.alarmsSt: Fixed in the alarms_focus variable accessing after removing of forcing the "focus" attribute, which replaced by this.alarms.attr("focus").
    • FIX:wlb_doc.docRepInstVals: Restored in translation values of title and parameter's dimension, name.
    • FIX:wlb_doc.docUsersSet: Appended by encoding the value fields also, due to there can be not just digits now.
    • tmplSO: Some cleaned for items of the ResultGraph page.
    • wlb_Main.ResultGraph: The attribute "grpName" set to the "String (translate)" type.
  • LibsDB.vcaTest: Finished in renaming CPULoad to CPU and MemInfo to MEM.


  • SYS: ico() appended by an argument of obtaining the file path.
    • strLabEnum() appended by an argument "onlyDec" for enumerating one digit.
    • Removed sysClk(), clkCalc(), shrtCnt(), HZ().
    • TError: Removed for DB_TrRemoved.
    • TMess: labStorRemGenStor() renamed to labStorRem(), labStor() cleaned for arguments.
    • TElem: fldList() set to const.
    • TFld: TFld(): Type of the argument vals, nSel changed from "const char *" to "const string&". Removed for selValS(), selValI(), selValR(), selValB(), selNm(), selVl2Nm(), selNm2VlS(), selNm2VlI(), selNm2VlR(), selNm2VlB().
    • TCfg,TVal: Removed getSEL() and setSEL().
    • TCntrNode: isModify() set to constant, save() added by an argument of the maximum error level.
  • DAQ: TController::id() set to const.
  • Transports:
    • TTransportIn,TTransportOut: Moved to the protected section for logLen(), setLogLen(), pushLogMess(). Removed for logItLim(), setLogItLim().
    • TTransportOut: Merged for conPrm() and setConPrm() to one conPrm(), also for UserAPI ones. clearConPrm() expanded by an argument of specifying identifier or group of cleaned parameters.
    • TTransportIn::associateTrO(): expanded by support the different stages ATrStg_Create, ATrStg_Proc.


  • SYS: The new definition DB_GEN "<gen>".
    • Appended sysClk(), setSysClk() for receiving the CPU frequency from DAQ.System.
    • TMess: The new function labStorFromCode() of names the specific storages.
    • TElem: Appended by the function contN() of obtaining for counter of the connected containers.
  • DAQ: TVal: Appended by the function setTime() and by a new flag AttrFlg::NoSave for preventing of marking as modified at the attribute change.
    • TController: Appended by tbl() for tables of the parameter types.
  • UI: User API appended by SYS.UI.mimeGet() of obtaining the MIME type from the file name.
  • Transports: The new definition STR_A_PRM "prms", STR_A_PRM_CFGP "CFG:".
    • TTransportS: The new functions prm(), cntrCmdPrm() of common processing transport parameters.
    • TTransportIn: Appended by the function prm(), conPrm(), clearConPrm(). Appended by the UserAPI function conPrm() and setConPrm() (for compatibility) and in accordance with ones in TTransportOut.


  • Building: Core library version risen to 3:14:0 and the program version risen to 0.9.7. The module version of the subsystem "DAQ" risen to 15, "Transports" risen to 20.
  • FIX:DB,Transports,DAQ.BFN,UI.VCAEngine: Adapted for checking the TBDS::dataDel() success result to prevent hangs here on RO storages with fixing function TTable::fieldSQLDel() for true checking the function success.
  • .,DAQ.{DAQGate,DCON,DiamondBoards,ICP_DAS,LogicLev,ModBus,OPC_UA,Siemens,SoundCard,System},Protocol.{ModBus,OPC_UA},UI.VCAEngine: Simplified significantly in support the selectable types, making that optional and with support the dynamic translation. Allowed also for specifying only list of values.
  • .,Archive.DBArch,DAQ.{BFN,JavaLikeCalc,ModBus,OPC_UA},Protocol.UserProtocol,UI.{VCAEngine,Vision,WebUser}: The Generic Storage renamed from "*.*" to "<gen>":
    • with naming the specific storages as "Generic Storage" and "Configuration File" everywhere through the new function TMess::labStorFromCode();
    • appended by the definition DB_GEN "<gen>", which used everywhere instead "*.*";
    • all generic fields like to "Archiver DB" renamed to "Storage";
    • TMess::labStorRemGenStor() renamed to TMess::labStorRem() and appended by information about all object storages.
  • .,DAQ.{BlockCalc,Comedi,DiamondBoards,FT3,Fastwel,ICP_DAS,SNMP},Protocol.{ModBus,UserProtocol},UI.{VCAEngine,Vision,WebCfg,WebCfgD,WebUser}: std::string::substr() replaced by std::string::find() in places with static obtaining data for comparing, what is clearer, safer and mostly faster for short strings.
  • .,UI.{VCAEngine,Vision}: Improved for messaging the warnings at saving.
  • TCntrNode::cntrCmd() in processing the primary commands of the Control Interface appended by their generic logging.
  • FIX:TCfg::setS() in the variant with RqFlg appended of locking the critical sections at accessing the container TVariant and appended by notification, only on the data stages and without the returning back.


  • .,*: Moved in the DAQ sources to fix table names of different parameter types and adapted to the unified conception the parameter types, that is the configuration fields are hidden now when their are standard ones and it scheduled to be cleaned in whole in v1.0.
  • System: Completely refactored and expanded for:
    • expanding the CPU DA by CPU information and frequency from different sources, including CPUFreq with the control;
    • appending a new DA Power as an interface to Linux Power and DA Process as an interface to Linux processes;
    • Sensors>DA appended by support of the directly accessible sensors "/sys/devices/virtual/thermal/*/temp" and /sys/devices/virtual/hwmon/*/temp*;
    • unification the DA interface calls DA::init(), DA::deInit(), DA::makeActiveDA() with moving most DA modules to call the unified code and implementing for them only the unified function dList();
    • the DA interface class appended by the new signs: isDynamic(), hasSubTypes();
    • appending a mode of the data generic updating from the Service Cycle and the Controller DA Task, by the new function updGen();
    • ID of the automaticly generated DA parameters changed to: CPU - "CPU[{N}]", fs - "FS{MP}", hddstat - "DiskSt_{dev}", MEM - "MEM", netstat - "Net_{IF}", sensors - "Sensors", hddsmart - "DiskSMART", ups - "UPS", uptime - "UpTm_{U}".
  • FIX:DAQGate: Time of the requesting archive increased for 1 (one) microsecond to prevent of spare values requesting and their direct rewriting to the archives.
    • Improved in work with remote host without the time sync:
      • the values can be in future up to one hour;
      • the remote host timestamp everywhere used at the archive presence even in the tag "<vl>";
      • appended of detection the remote host time for its display and using in timestamp the changed values.
  • FIX:LogicLev: Significant improving the Parameter Reflection mode in:
    • dynamic creation and removing attributes;
    • disabling at the error enabling with missing the source parameter with removing all attributes;
    • the selection changed to not editable;
    • measuring the processing time.
  • OPC_UA: Appended by support the asynchronous writing like to DAQ.ModBus.
  • AMRDevs: Adapted in the Kontar part to the new conception of the associated output transports for the input ones.


  • FIX: The message archivers are prevented from resetting the buffer position of the last read message since we get doubling the messages at each updating the subsystem, which is often for updation the value archive connections, and especially at missing the resource lock.
  • FIX: The Control Interface request "TValue:get:/serv/attr" fixed in expanding to equivalent archivers.


  • Sockets,SSL: Appended for support by the port group in the input transports, that is connection to first free. The input transports appended by a configuration field of properties of the initiative connection and the associated output transports.
  • SSL:
    • Expanded by support of the initiative connections:
      • SSL connection code of TSocketOut::{start,stop}() moved to static ones TSocketOut::{connectSSL,disconnectSSL}() for using in the input transport;
      • SSL connection code of TSocketIn::Task() moved to TSocketIn::{start,stop}();
      • removed for support the SSL algorithms and versions specifying in the mode due to that removing in the OpenSSL library and that was not used mostly, so there used only TLS_{client,server}_method() for new libraries (> 1.1) and SSLv23_{client,server}_method() for old ones.
    • FIX: TSocketOut::messIO() prevented from hang at endlessly reading by BIO_read() after the socket closing, by checking errno for EAGAIN.
    • The SSL context moved to the generic module object separately for input (ctxIn) and output (ctxOut) parts and the ciphers information was added for:
      • the generic module object by SSL_CTX_get_ciphers();
      • input-server transport status for SSL_get_shared_ciphers(), SSL_get_client_ciphers() and SSL_get1_supported_ciphers() or SSL_get_ciphers();
      • output-client status for SSL_get1_supported_ciphers() or SSL_get_ciphers().
    • The input and output transports appended by control MSS and the input transports appended by control the system input buffer, both taken from Transport.Sockets.

Transport Protocols

  • FIX:SelfSystem: Significantly reviewed and fixed in the external connections implementation, appended by checking limit the header size. Fixed in double request packing of the output transports at second tries of reconnection or reauth.

User Interface

  • VCAEngine,Vision,WebVision: Appended by support of data built-in to resource marked attributes, primarily for the source attribute of the Media primitive.
  • FIX:Vision: Adapted for obtaining named list of the storages.
  • FIX:VCAEngine: Prevented from connection the attribute "focus" of any included widget to the calculation IOs and appended by processing the exceptions of accessing those IOs for missing included widgets. FIX: Attr::setS() improved in the critical section processing.