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

This update is done after 1.5 years of releasing the 0.9 LTS, then it worth as 10 updates by there have fixed about 250 bugs and append many improvements, which you can read wholly in the update ChangeLog.

The key features of the update are:

  • significant expanding and stabilisation of the Web-interface during practical exploiting in a large distributed solution based on the module UI.WebVision; also expanding and stabilisation the hot development during the multiple execution of the developing project;
  • testing, fixing, and extending the redundancy in the messages part, also through the practical exploiting in a large distributed and also redundant solution, in the common-system code and the module DAQ.ModBus;
  • complete restructuring, improvement and addition of the OpenSCADA libraries in the SQLite files;
  • general documentation enhancements, appending for the all libraries documentation and revision for most module documentation.

1 OpenSCADA libraries and projects

  • FIX:DB.LibsDB.{OscadaLibs,vcaBase}: Translation updating.
    • FIX:JavaLikeCalc.doc,doc: The user interface library "Documents" and the JavaLikeCalc "Reports' and documents' library" revised, improved, appended, documented and the documentation appended to offline.
      • FIX:doc: {docUsersSet,docAlarmsRep,docMessRep}: The field "Parameter" renamed to "Source" in the way of global unification of the alarm messages structure of the function alarmSet().
        • Appended for implementing "Year report of the month values (docRepYear)" with a function of entering values in the manual mode, support for the manual values storing into the message archive, their display in the table and diagram.
        • {doc,docDin,docRep2WorkSh(renamed docRepSm2),docAlarmsRep,docRepInstVals(renamed docGasNodeMgn),docMessRep,docUsersSet, docRepDay(renamed docGasNodeDayA),docRepMonth(renamed docGasNodeMonthA),docRepYear(renamed docResourcesYear)}: made the JavaLikeCalc translation by tr().
        • {docRepInstVals,docRep2WorkSh,docRepDay,docRepMonth}: Significantly rewrote, improved and made secondly usable, by allowing the DAQ-parameters connecting.
        • docMessRep: Appended for processing the remote stations as additional sources and anytime.
      • JavaLikeCalc.doc: Appended for implementing the "Diagram (diagram)" building in SVG.
    • PrescrTempl,prescr: The user interface library and the template library "Prescriptions" revised, improved, appended, documented and the documentation appended to offline.
      • PrescrTempl: Appended for the "Manager" template, moved from the controllers library.
      • prescr: Items of the library expanded for DB linking and the command and program tables automatic creation.
  • DB.LibsDB.vcaElectroEls: The user interface library "Elements of the electric" revised, improved, appended, documented and the documentation appended to offline.
    • Appended for the four unified items: "Key, unified (keyUnif)", "Switch, unified (swUnif)", "General state, unified (stGenUnif)", "Area state, unified (stAreaUnif)".
  • FIX:DB.LibsDB.OscadaLibs:
    • Updated for some messages.
    • FIX:base: The template library "Main library" revised, improved, appended, documented and the documentation appended to offline.
      • {anUnif,anUnifSt,manInUnif,digAlarm,codeState,pidUnif,pidUnifImp,SNMP,UPS}: Moved under the unified alarms forming and controlling mechanism.
      • Appended for the "initConsAssignTrs" template of the assigned output transports processing of the initial Sockets' connections for any type of the source objects, that is DAQ-modules and logical level controllers and parameters.
      • Appended for the "codeState" template of the state forming by a code.
      • Appended for the complex notifier implementation in the template "ntf", the separate JavaLikeCalc function and the user protocol objects "SMS" and "SMTP" are marked for obsolete.
      • Appended for the "UPS" template, moved from the "Industrial devices" library.
    • FIX:DevLib: The template library is a splitted part of the original library "Devices" under the name "Industrial devices", which revised, improved, appended, documented and the documentation appended to offline.
      • FIX:IEC60870: Appended for the separate time "tmPoolAll" of the period of the complete polling.
        • Appended for the package M_ME_TF_1, M_ME_NC_1 support, expanded for the SQ-mode support, tested for M_ME_TF_1 and M_ME_NC_1, M_ME_NB_1 in the SQ-mode, set AI to "real".
        • Appended for the option "syncTimePLC" to controll the PLC synchronisation.
      • Appended for the true DCON implementation in the templates DCON_Prt, DCON_Prt_DI, DCON_Prt_AO, DCON_Prt_DO, the user protocol object "DCON" is removed.
      • Appended for a full featured implementation of the protocol OWEN in the data acquisition part.
      • Appended for the DNP3 implementation and it tested with outstation-demo from opendnp3.
      • Appended for the counter modules Pulsar-M (pulsarM) implementation.
      • Appended for the ModBus scanner implementation as the template "ModBusScan".
    • LowDevLib: The template library is a splitted part of the original library "Devices" under the name "Low-level devices", which revised, some improved, documented and the documentation appended to offline.
      • FIX:{1W_DS9097,1W_DS9097U}: Fixed for the device family detection as the template 0x7F, detected on the last DS2413 with the first byte 0xBA.
      • Appended for the template "MAX6675" implementation of the low-level SPI Cold-Junction-Compensated K-Thermocouple-to-Digital Converter.
      • Appended for the template "SHT3x" implementation of the low-level humidity sensors.
      • Appended for the templates ADS111x(ADS101x) and MCP4725 implementation of the low-level I2C chips.
    • FIX:JavaLikeCalc.techApp: The JavaLikeCalc library "Technological apparatuses" documented and the documentation appended to offline. All Cyrillic symbols removed from identifiers of the models and all texts corrected.
    • tests: The template library "Tests" renamed from the library "S7".
    • JavaLikeCalc.servProc: The JavaLikeCalc library "Service procedures" revised, some improved, documented and the documentation appended to offline.
      • docOffLine: Significantly expanded for detailing the error messages and placing the unfinished pages to the argument "pagesCur" for continue the termination.
    • JavaLikeCalc.regEl: The JavaLikeCalc library "Regulation elements" documented and the documentation appended to offline.
  • FIX:DB.LibsDB.vcaBase:
    • FIX: Complete and significant cleaning from the Cyrillic symbols and improving in the original identifiers and messages, renaming their to English.
    • Most standard cadres and widgets adapted to styles and the style "Light" created for all projects.
    • FIX:Main: The user interface library "Main elements" revised, improved, appended, documented and the documentation appended to offline.
      • FIX:{alarmsAct,alarmsSt}:
        • Expanded for support quittance-confirmation, comments and custom fields.
        • The field "Parameter (prm)" renamed to "Source" where placed all remoted and local sources.
      • RootPgSo: Improved for dynamically create signal objects, the number of which is limited only by the total length of the signal objects names and their two rows. The signal object buttons generating in the right of the logo is supported also. The types of views also unified for ID "view[1..6]", when user can their assign in self way. The compatibility with the original names of the views was saved, for present projects!
      • Appended for:
        • the control panel-window "Graph parameter calculation (graphCalc)";
        • the objects widget "Object properties (objProps)";
        • the alarms frame "Alarms — report (alarmsStReport)";
        • the widget "Image label (ImgLab)";
        • the frame "Users manager (userManager)".
      • grph_panel: Appended for an independent button of switching to the cursor time instead the indirect switching at the depth of decreasing.
      • ElViewGraph: Font size of the name decreased from 15 to 11 and trend color of the disabled items set by default to "gray".
      • The prescription frames "prescrEdit", "prescrRun" and "prescrRunSimple" moved to the new library "Prescriptions (prescr)".
      • cntrRegul: The trends width increased to 2 pixels.
    • FIX:mnEls: The user interface elements library "Mnemo elements" documented and the documentation appended to offline.
  • FIX:Model.{AGLKS,Boiler}: Significantly updated regarding the common libraries' changes.
    • FIX: Significantly cleaned and all original identifiers renamed to English, during the documentation revision.
    • FIX: AGLKS.vca,Boiler.St: Adapted to the new changes of the main page.
      • The style "Light" created for all projects. The styles moved under a scheme of direct styles disabling at their presence instead "No style" and the style "Default" is appended.
    • FIX:Model.AGLKS:
      • FIX:St:
        • FSArch.1m: The strange and temporary message archivers removed: FSArch.{NetRequsts,test,StatErrors}, DBArch.test and added the actual ones: FSArch.{alarms,actions,SYS}, DBArch.SYS.
      • FIX:vca: The analog parameters and graphics is relinked.

2 API

!!!!:Changes:

  • SYS: The ResMtx default constructor set to true for "isRecurs" but it is the typical situation.
    • The most functions of appending to the nodes container expanded for returning the result created node ID/name for: chldAdd(), TSecurity::{usrAdd(),grpAdd()}, TTypeBD::open(), TTypeTransport::{inAdd(),outAdd()}, TValue.chldAdd(), DAQ.{TController::add(),TParameter::add(),BlockCalc.blkAdd()}, TTypeArchivator::{messAdd(),valAdd()}, TArchiveS::valAdd(), UI.VCAEngine::{wlbAdd(),prjAdd(),WLib.add(),Project.add(),Project.Page.pageAdd()}, UI.WebUser.uPgAdd().
    • TFld::Selected everywhere renamed to TFld::Selectable.
    • The special function strMess() variant with limiting in the result message size is removed and replaced by the function strEncode() in the type TSYS::Limit.
    • chldList() and chldPresent() set to virtual.
  • DAQ,Special: The attribute "run_st" in TPrmTmplLib and TSpecial renamed to runSt.
  • Archives: TArchiveS::messPut() cleaned from the argument "force".
  • Protocols.HTTP: User API functions pgAccess(), pgCreator() moved from TProtocol to TProtocolIn.
  • Transports.In: The function protocol() renamed to protocols() and protocolFull() removed.

Appends:

  • SYS: Common locks mechanism is added by a locks container, the function commonLock().
    • TConfig,*: The user API functions TConfig::cfg() and TConfig::cfgSet() of the configuration expanded by the permition control.
    • Appended for the configuration context resetting functions to defaults TCfg::toDefault() and TConfig::cfgToDefault().
    • TFunction object appended by a mark of the function procedure changing isChangedProg() and the flag TFld::Selectable and the function ioAdd() appended by the result for the appended IO position.
    • The Control Interface request "load" expanded for specifying the selected DB in the attribute "force" to perform such operations for concrete nodes.
    • XMLNode: The attributes getting function attr() expanded for the optional argument of the presence detection.
    • The user space "Array" expanded by the functions indexOf() and lastIndexOf().
    • The user API function SYS.fileRead() expanded by the arguments of the reading block offset and size.
    • The user API function strEncode() appended for support the variants "ToLower" and "Limit".
    • The user API appended for the function strFromCharUTF() of forming string from UTF-8, UTF-16, UTF-16LE, UTF-16BE, UTF-32, UTF-32LE, UTF-32BE.
    • Appended for the definition SERV_TASK_PER=10 of the service task periodicity.
    • The user API appended for the function SYS.fileSize().
    • The function str2atime() is appended to convert from string time to the UNIX epoch time supporting GMT.
    • TError appended for naming the error codes in the enum "Codes", which used everywhere.
    • The special archive names appended for the name ALRM_ARCH_CH_NM ("<alarmsChange>") of just changing the presented alarms.
    • The limits appended by USER_ITS_LIMIT (1000000) for limit the items number like to user arrays from DAQ.JavaLikeCalc.
  • DB: Appended for the transactions closing control into the OpenSCADA core by the functions trTm_ClsOnOpen(), trTm_ClsOnReq() and trPr_ClsTask().
    • Appended for the DB-objects reenabling control at the function disabledByUser().
    • Appended for configuration of the "Opened tables lifetime" of the inactive tables closing by the function tblLifeTime().
    • The attribute TBD::mEn moved to the protected space.
  • Transports:
    • In: Appended by the virtual functions keepAliveReqs(), keepAliveTm() for the true KeepAlive on Web.
    • Out: Appended for a service of closing output transports at the lifetime (inactivity) by the service function outLifeTime().
      • Expanded by the attempts field ot the generic control in the function attempts().
      • Unified for the last request time control in the function lstReqTm().
      • The function outAddrHelp() of taken common address help for the output transport modules was added.
  • Protocol.HTTP: Appended for the user API function setUser() to change the authenticated user.
  • DAQ: TController::alarmSet() expanded for the argument "force" to force the alarms on the controller objects in the redundancy.
    • The DAQ-parameter appended for the User-API function alarmSet() and the function vlSetRednt() of the unified values writing in the redundancy.
    • TDAQS::rdRestDtTm() expanded from the float to double type return.
    • Appended for the user API function daqAt().
    • The user API function funcCall() expanded by the "err" argument.
    • JavaLikeCalc: The User API functions charAt() and charCodeAt() expanded to support UTF. The User API functions expanded by isNaN() for bool, integer, real, string (especially for checking numbers in the string).
  • Archives:
    • The objects TMArchivator and TArchiveS appended of the function redntTm() and rdTm() to obtain last time of the message archives redundancy.
    • TArchiveS::rdRestDtOverTm() expanded from the float to double type return.
    • Val: The value archives appended by the common option autoIdMode() of the mode of forming ID of the automatic created archives with the enum variants AutoIdMode::{BothPrmAttrId,OnlyPrmId,OnlyAttrId}.
    • Val: The user API functions getVals() and setVals() added to implement generic archives/history accessing mechanism in an array and the fixed periodicity.
  • UI: The inline documentation declaration from description some nodes is unified in the function TUIS::docKeyGet().
    • VCAEngine: The user API function this.ownerSess().uiCmd() added on the session level. The runtime widget appended of the user API function this.attrList() of obtaining list of the widget attributes.

3 SYS

  • FIX: The source code messages and program documentation:
    • TMess: Appended for the environment variable LC_ALL cleaning and setting "LANG" if empty, to prevent from overriding LC_NUMERIC=C at the last.
    • FIX:.,*: Fixed for many original messages of the source code also during the most modules documenting.
    • FIX:DAQ.JavaLikeCalc: The JavaLikeCalc code translation by the function tr() fixed in creating the translations table "Trs" and entries here in the simple mode (single language).
    • The inline documentation:
      • The offline documentation appended by some OpenSCADA modules and most libraries of the internal procedures and graphical elements. The common CSS-styles file of the offline documentation "doc/en/files/doc.css" improved in disable the transparent background color and some properties of the language selector.
      • Declaration from description some nodes is unified in the function TUIS::docKeyGet() and the nodes appended for that:
        • the DAQ-template and JavaLikeCalc libraries;
        • the VCA-libraries in UI.VCAEngine and UI.Vision.
      • UI: TUIS::docGet() appended by a code of the LTS build checking and using the LTS frozen documentation on the OpenSCADA file-server.
      • FIX:DAQ.JavaLikeCalc,UI.VCAEngine: Fixed in the offline documentation declaration for "User_API".
  • FIX: Building:
    • FIX:configure.ac: Core library version risen to 3:7:0 and the program version risen to 0.9.1.
    • The Debian 10, CentOs 8 and Ubuntu 20.04 root file systems (chroots) are appended for build OpenSCADA.
      • The source codes significantly cleaned at the building warnings of GCC 9 (CentOs 8).
      • UI.{QTCfg,Vision}: Adapted to build in the environment of Debian 10 for Qt5.11.3, GCC8 and an error about a conflict in the macro message() into StdLibC++ through Qt5.
  • Android: The behaviour of using the environment variable QT_SCALE_FACTOR on Android is observed, what set to 1.5 and the default font "Helvetica,12,-1" with QScrollBar CSS rule are removed.
  • The module version of the subsystem "Special" risen to 12; of the subsystem "DB", "DAQ", "Archives" and "UI" risen to 13; of the subsystem "Transports" risen to 15.
  • FIX: Threading, tasks, realtime and locks:
    • Some common data resources of dataRes() replaced by own resources, mostly due to the observed locking problems in Protocol.HTTP and DAQ.ModBus.
    • FIX: Common locks mechanism is added by a locks container, the function commonLock().
      • FIX: Transport.{Sockets,SSL}: Used for system functions like to getaddrinfo(), which is not multithreaded one.
    • The tasks planning appended for phasing their invoking, what make the CPU loading even.
    • FIX: The function TCntrNode::nodeDis() waiting fixed for zero time and the function chldDel() set to no waiting by default.
    • FIX: Fix for the negative priority of the policy "BATCH".
    • Archive,DAQ.Controller: For the current time of messages and values mostly used TSYS::curTime()/1000000 instead time(NULL) due to the message and value time is in microseconds and mark by TSYS::curTime().
  • FIX: Redundancy:
    • .,UI.{QTCfg,Vision,WebCfg,WebCfgD}: The function "Local primary commands transfer" of the redundant systems is unified and expanded for complete moving to TCntrNode::cntrCmd(), so the function works now for any calls also from the user programming environment.
    • Archives,DAQ.DAQGate: The messages bottom time border processing for redundancy and the DAQGate changed to use time of the last message to repeat it requesting for two time, to prevent the messages losses on the border.
      • FIX: The redundancy and DAQ.DAQGate restored for writing the big value archive's blocks, mostly in restoring the value archive parts.
      • The first alarms obtaining in the messages redundancy enabled only at presence the message archivers in the redundancy.
      • Placing messages to the archivers of the redundancy procedure TMArchivator::redntDataUpdate() changed to use the function put(), to do this operation atomically for all obtained messages under a lock.
    • DAQ,DAQ.*: Writing values in the redundancy is unified under the new function vlSetRednt(). The service "TValue::get:/serv/attr" expanded to some spare request of the last requested value to prevent EVAL here at the connection loss.
  • The function strEncode() appended by the variant "Limit" to limit the string size counting for the UTF-8 variability, and such items moved to it instead removed limiting variant of the function strMess(): TConfig keys, DAQ-Template IOs, DB.SQLite, UI.QTCfg.
  • FIX: Configuration:
    • TConfig,TCfg: The key fields appended for their size limiting before cutting on the DB side.
      • *: Adapted in the adding functions to treat the ID or name forming and to limit its size, returning the result name to the creator, using the node function chldAdd() expanding in direct return the ID and to just remove the new node for equal ones.
      • DAQ: Identifiers of the logical level IO of the DAQ-templates expanded to the size limit up to 1.5*OBJ_ID_SZ=30 symbols and have added for these shrinking on creating.
      • Transports: Size of the output transports ID set to OBJ_ID_SZ*2, since it can be combined from the ordinal node ID and some prefix, in the automatic mode.
      • Appended by a function of setting the TCfg fields to the default value, to prevent loading values of previous records for miss fields.
    • TConfig,*: The user API functions cfg() and cfgSet() of the configuration expanded by the permition control.
    • The loading from selected DB improved in checking the DB enabling before, in the function TSYS::chkSelDB().
    • TCntrNode,DAQ,DAQ.JavaLikeCalc: Appended for the function load__() to treat some doings in the loading end.
  • Control Interface:
    • *: Unified in the modification control of the node objects and cleaned the spare modifications, moving the calculation context modification to the option "modifCalc".
    • .,UI.{QTCfg,WebCfgD}: Tables expanded for difference help per columns and cells.
      • Transports: Table of the external OpenSCADA hosts expanded for the context help to the transport address cell, using the function outAddrHelp().
  • The DAQ-templates and all their implementations appended by a function of selectable attributes creation from the template field "Value" of the two and three lines, TFunction::IO appended by the flag TFld::Selectable.
  • The unified DAQ-templates implementation TPrmTempl::Impl is finished and such items migrated and adapted to it: DAQ.{JavaLikeCalc,ModBus,LogicLev,Siemens}, Protocol.{ModBus,UserProtocol}, UI.WebUser.
  • FIX:DAQ,Archive.DBArch: The TElem copy constructor was implemented to fix problems into Archive.DBArch at multiple groups-tables in the group table mode.
  • Function,DAQ.{JavaLikeCalc,LogicLev,ModBus,Siemens}: Expanded for tracing the function program changing and hot restarting the executing procedures, by setting the flag "f_start".
  • TMess,XMLNode: Appended for the function setUTF8() of forming UTF-8 from their code, taken from XMLNode to use in other places.

4 DB

  • FIX:*: The configuration context resetting function cfgToDefault() used in the function dataSeek() and fieldSeek() begin, due to it is an obligatory operation for the configuration file at least and must be done for the DB configuration also, for new fields.
  • Appended for the transactions closing control into the OpenSCADA core whether in the service task, for the timeout > 10 seconds, or in a different per DB task of fast transactions closing of the shared DBMS. For what appended the functions trTm_ClsOnOpen(), trTm_ClsOnReq() and trPr_ClsTask().
  • DB-objects appended for restoring their enabling after the connection loss (or other reason) for meaned to enable and not disabled by the user, by disabledByUser().
  • Appended for configuration of the "Opened tables lifetime" of the inactive tables closing.
  • FIX:{SQLite,MySQL,PostgreSQL,FireBird}:
    • FIX:{MySQL,PostgreSQL,FireBird}: Improved and tested for hot restoring of the losses connections and without the data loss.
      • FIX:FireBird: Restored for the main work in the primary keys requesting and adapted to FireBird version 3.
      • FIX:MySQL: Resolved for crashing in the built-in reconnection (by MYSQL_OPT_RECONNECT), which replaced for the own and hot reconnection. Fixed for the error "BLOB/TEXT can't have a default value (1)" on modern MariaDB server versions, wholly removing the DEFAULT for TEXT.
    • SQLite: Appended for correct treating the locking of the SQLite DB files, at accessing to common libraries from different processes.

5 DAQ

  • TController::alarmSet(): Expanded by implementing the alarms triggering conception, which means also of passing messages to the buffer for clearance the alarms only at the alarms presence.
    • Globally unified and completely described in the documentation for messages from the controller objects and DAQ-parameters, when the parameter-source in the message appended for the controller object name.
    • FIX: Changed to use complete parameter ID-path, to prevent collisions in alarms from parameters with even IDs but different sources.
  • FIX:*: The property period() is set actual in early, at the configuration "SCHEDULE" changing, for true data period of the archives.
  • Expanded for early enabling the template libraries in the loading stage, initially for transport protocols based on the DAQ-templates.
  • FIX:ModBus:
    • FIX: The mode "Asynchronous write" restored and tested in writing after restoring the connection, to use it for the losses preventing. The asynchronous writing moved to the after requesting stage with oppresing-delay the writen values changing in the attributes, before the writing buffer clearance.
    • FIX: Fixed for work in the redundancy mode.
    • FIX: The common function upVal() is separated to two functions upValStd() and upValLog() of the parameter types separate updating for the "Standard" firstly and the "Logical" type in the last, for cases of using data of the "Standard" type parameters in the "Logical" ones.
    • Expanded in work with wrong or empty connection transport, to allow it set-change from external procedures.
    • Expanded for the flag "s" of the strict requesting at the complex data.
  • FIX:JavaLikeCalc: Expanded for try of the restoring the previous procedure executing at the new one error, mostly from DAQ-templates.
    • FIX: Fixed for crashing in the hot compiling, mostly at returning to the correct procedure after the wrong one compiling, in case of the procedure uses internal functions and possible external ones also due to missing for clearing "fPrmst". All these clearings are unified in the functions buildClear(), workClear().
    • Set to stop the functions at the program source changing for apply the changes.
    • FIX: Prevented for the recursive call, observed on the recursive widgets creating in UI.VCAEngine.
  • Siemens: Extended for direct specifying the data type of the link address. LibnoDave updated to 0.8.5.1.
  • DAQGate: Expanded by an option and a function of placing different remote controllers to the virtual parameters.

6 Archives-History

  • FIX:Mess:
    • /serv/mess: In put it is improved for independent writing to the archive and just to update the presented alarms.
    • Messages of the function's Mess->put() macrosses "message", "mess_info", ... redirected to the buffer writing, to prevent of direct writing to the archivers.
    • TArchiveS::messPut() cleaned from the argument "force".
  • FIX:Val:
    • TVArchive::getVals(): Improved for processing not free buffers (for a fixed period) of the data requesting from the buffer and different archivers, using an intermediate buffer array which is back replayed at the end.
    • FIX: Improved for the limit processing independently for the buffer and the archivers and their periodicity, to work the long ranged and high periodicity data requests.
    • FIX: TValBuf.get() switched from the exceptions emitting to return EVAL at the requested data missing.
    • The value archives appended by the common option "Mode of forming ID of the automatic created archives" with selection from the modes: "Both parameter and attribute ID", "Only parameter ID", "Only attribute ID". For the possibility to control the automatic archives naming.
    • TVArchive::{setVals(),setVal()}: Access to the archive writing functions restricted only for users in the group "Archive".
  • FIX:FSArch: The XML mode of the messages appended by the positions cache.
    • FIX: The messages archivation is significantly improved and fixed in placing several different messages in even time.
    • FIX: Fixed for the info.db removing and processing by using the DB address as a unique essence instead limited DB-identifier, what currently is named through indexing the equal ones.
    • FIX: The archive folder creation moved in the begin, before the locking and the info.db creating.
    • FIX: Fixed for archiving double messages in the mode of preventing the doubles - rewriting.
  • FIX:DBArch:
    • FIX: Fixed for the value archives including to an archiver for the not grouped archiving mode.
    • FIX: Finally fixed for the single-value requests of the value archive, after the not full fix from 2018-02-23 only for the archiver data period 1 second.
    • Adapted to work in the only direct archive writing mode on the archives group mode for updating the meta at writing.

7 Transports

  • .,*: Expanded for support the multiple protocols selecting and the function protocol() renamed to protocols().
    • Appended for a service of closing output transports at the lifetime (inactivity) by the service function outLifeTime(), unified for the last request time control in the function lstReqTm().
  • FIX:Serial: Fixed for the "Modem" mode of the output transports in the correct processing the function ResMtx::tryLock() result. The flow control field moved to the options field due to a need with direct disabling some options like to -RS485.
  • FIX:Sockets,SSL: Expanded for support IPv6 both for input and output transports using getaddrinfo().
    • Appended for processing (connecting) all IP addresses resolved from the symbolic one, especially for the output transports.
    • The output transports appended for direct definition several host addresses.
    • The output transports improved in using the tries after the error "Reading timeouted." of responding to request.
    • FIX:Sockets: Fixed in processing the output transports with the address "SOCK:{N}" of the initiative connections to clean up the address by setting it to "SOCK:-1", then preventing of the restarting possibility with using already closed socket's handler but possible allocated already by another part of the program.
      • Address of the input transports in the TCP-mode can be expanded for addition parameters and currently the next one after the mode field is identification message of the initiative connection into the mode 2, so this mode expanded for sending identification messages after establish the initiative connections.
      • "TCP:" prefix of the addresses set to nonobligatory-optional.
      • The address mode of the input transports set to 1 (do not close, only by the KeepAlive parameters) by default.
      • The default port set to 10005.
    • SSL: Appended for treating NO_*_METHOD for TLS1, TLS1_1, TLS1_2, DTLS1 and for direct support DTLSv1_2. The default port set to 10045.

8 Transport Protocols

  • FIX:HTTP: Appended for the true KeepAlive support by the input transport functions keepAliveTm() and keepAliveReqs(). Expanded for the DB table "HTTP_AuthSessions" of the external authentication sessions.
  • FIX:ModBus: The input part expanded for the DAQ-templates using.
    • The data types list of the IO table appended by the type "Object".
    • The protocol variant recognising for input requests some improved for detecting difference RTU and TCP variants, appending to that the transport type.
  • UserProtocol: Expanded by the DAQ-templates support.
  • SelfSystem: Expanded for the output transport attempts support.

9 User Interface

  • FIX: TUIS::mimeGet() changed in the behaviour of determining the file extension "svg" as "image/svg+xml" for correct and multiple SVG files display on WEB.
  • FIX:VCAEngine,Vision,WebVision: The variant "LineEdit" of the primitive "FormEl" appended for the view "Password".
  • FIX: The VCA-styles moved under a scheme of enabling styles at their presence instead disabling by "No style" and fixed in the the new items creating and at all.
  • VCAEngine,Vision: All information moved to the status field for widgets, libraries and projects; what appended for the calculating procedure state - inherited, redefined.
  • FIX:VCAEngine:
    • Pages of the projects appended for the type "Link", to optimise the memory consumption on fully dynamic and highly replicated pages, on the project's session side. The pages opening in the project's execution (sessions) improved to prevent spare and double opening and closing, which is critical one to manage the linked pages.
    • Many measures of the visual items edition in time of the project execution:
      • Fixed in deletion the project pages in time of the project execution, to prevent the objects lock and to provide their early linking for removing the session pages together the project pages.
      • Session objects moved under own data lock to prevent the dead locking in the complex situations due to the style calls uses indirect parent().
    • Optimisation the remote development:
      • the info control services "/prm/cfg/prj", "/page/page" appended by getting of number of the child pages in the attribute "chPgN" at setting "getChPgN";
      • appended to prevent the widgets' icons transmitting in the control service "/serv/wlbBr" of the complete widgets' tree loading, setting the attributes "disIconsW", "disIconsCW".
    • The project sessions of the VCA moved at the last from the modification control for the development mode.
    • Expanded for the direct definition of the visualiser specific attributes, marking their by the prefix "vs_".
    • FIX: The project session command "close" of the service "/serv/pg" forced to processing, what actual to the linked pages.
    • FIX: The VCA pages loading procedure appended for cleaning the spare records and records of inherited but missed widgets of the "*_incl" table.
    • FIX: Fixed in the User API function tr() work from documents.
  • FIX:QTCfg,Vision: Fixed in processing the syntax highlighting of the text fields to load firstly the syntax rules and next the text, to prevent the text corruption in some cases, detected into the transport exchanging log and Qt 5.11.
    • Appended for buttons of the force loading and saving, into the menu.
    • Table forming improved for the allowed width getting from maximumViewportSize().
  • FIX:Vision,WebVision: Improved for the scrollbar control of the included pages, to ensure they work separately, not two together.
    • FIX:ElFigure: The mirroring support is completed in the implementing for the common, shape Arc draw and it generic and image fills. The filling by image prevented from lacks at accessing outside the image.
    • FIX:Diagram:
      • FIX:Trends: Expanded in the time scale building for many days with the time complete hiding and show the first value in the left, using the timezone offset. Appended for support the big time range intervals per month.
      • Disabled in limiting the requested archive values precision, for long counters.
      • Improved in the remote work on slow channels and with the value buffers period in 10 seconds.
    • Text,Media,Box: Expanded to display the activity cursor.
    • FormEl: Some views (Line edit, Text edit, Combo box, List, Tree, Table) expanded for custom background and border by the visualiser specific attributes "vs_background", "vs_border".
    • Appended for the visualiser specific attribute "vs_winTitle" of the dynamic window title value.
  • FIX:Vision:
    • Optimisation the remote development:
      • The projects tree switched to download the branches partially at expanding, to improve it work on slow connections.
      • The widgets tree improved in the work on slow connections, disabling the widgets' icons downloading at the threshold of the complete tree downloading time more for 5 seconds and enabling that at the time less for 0.1 second.
    • Expanded for the planning of the updating period depending to the real connection quality of the runtime mode, like to UI.WebVision.
    • FIX: Common fixes and improvements of the runtime window modes:
      • FIX: Manual scaling of the runtime window (for full-screen or maximise) improved and fixed in the processing the sign isResizeManual.
      • FIX: Fixed in starting to the full-screen mode and not full scaling at restoring to not zero window position.
    • FIX:FormEl:
      • FIX:Table: Tables fitting improved to use maximum width from the widget size and the maximum view port, but the maximum view port only can be uninitiated here yet. Final fix for the tables fitting, moving the procedure in events: create, resize and show. Prevented from casual crashing.
      • FIX:Date: Fixed for crashing at setting configuration.
    • FIX: Fixed for the master page regular replacing (crashing) and scaling into the run-time mode.
    • FIX: The runtime executing was fixed from crashing in closing external windows at closing the main window.
    • FIX: Fixed in the properties edition dialogues of Pages/Libraries and Widgets for:
      • preventing for closing at Esc;
      • disabling for timeouted cancelling of the LineEdit;
      • unbinding the edited state from the visibility for TextEdit;
      • preventing from the changes loss into the tab "Process";
      • appending for warnings about the inherited calculation procedure changing.
    • The focus control rewrote to the VCA-widgets specific one and not Qt-widgets, like to UI.WebVision, what prevents some problems.
    • ElFigure: The figure edition switched to the normal mode, without any transformation (rotation and mirroring).
  • FIX:WebVision:
    • FIX:Main operation:
      • FIX: The JS function servSet() of writing to the server switched to the synchronous mode to prevent loses.
      • The main checking of the background objects is made unified and expanded for support the optional background objects, to decrease the overall number of the background objects, where the obligatory currently are: "ElFigure", "Diagram", "Document", "FormEl"; and the optional is only "Text".
      • The main window vertical expanding threshold set to 10% of the window decreasing size and to 50% for shrinking, to prevent flicking on FireFox for notes about block the external windows. The built-in scaling mode set to use-enable in relation from window.devicePixelRatio equal to 1, on the WebBrowser level.
      • Significantly improved in the connection losses detection for the main page reload, for the cases of return back to already closed sessions in WebBrowser.
      • Appended for implementation the visualiser specific attribute "userSetVis".
      • FIX: Restored in the full widgets tree reloading to restore the function of removing missed widgets in the visualiser at their removing into the VCA-engine.
      • FIX: Prevented from spare and separate requesting of the included pages' content, in the starting.
      • FIX: Improved for the focus control behaviour and fixed to prevent mouse events to behind pages.
    • Appended for the pages cache be controlled in the lifetime and the pages maximum number, both on the server and WebBrowser side, then the module is more suitable now to work in the operative mode!
    • Sessions control:
      • Expanded for the possibility of the opened sessions manual closing from the administrator user.
      • FIX: The ordinal users prevented from connection to foreign sessions.
      • FIX: The main requesting code of GET significantly simplified to prevent of reconnections to the VCA-sessions without the local ones.
      • Appended for the state of the opened sessions on the control page, including the connected project and the user.
    • FIX:Status bar:
      • Appended for the alarm level with a function of the global quietation, sending "ws_alarmLev".
      • Expanded for the VCA-styles support in their display and changing.
      • FIX: Fixed in form the statusbar size, updating and preventing from its flicking at the master page updating.
    • FIX:FormEl:
      • FIX:{Tree,Table}: Are fixed for true counting the border width and padding in the result geometry.
        • FIX:Tree: Fixed for processing the empty string in the end. Appended for scaling the control tree images.
    • Expanded for setting the VCA visual elements at the "class" attribute to "Primitive {WPrimitive}" and the "id" attribute to the widget identifier like to "wdg_{id}", for simplifying the customisation.
  • FIX:QTStarter: The function updLookFeel() fixed for the void return type. Right mouse key and context menu emulation is added at holding the left mouse key during the time set by the command line option --simulRightMKeyTm. This time set to 2 seconds for Android.
  • FIX:QTCfg:
    • FIX: Fixed for applying forgotten changes of the editable widgets at switching to a different node. The TextEdit items fixed for the editing sate detection, what is unbidden from the visibility.
    • The Node groups hint is added for a command of the node adding.
    • The moving operations, in the configuration table, expanded by the hot keys "Ctrl+Up" and "Ctrl+Down".
    • Optimisation the remote work:
      • Prevented from the navigation tree updating at selecting any item.
      • Makes slower the cycle of the periodic updating after the busy dialog appearing.
    • Set fast for the closing time of the configurator window with many OpenSCADA inactive external hosts, by early notifying the host tasks.
  • WebUser: Expanded by the DAQ-templates support.

10 Special

  • FIX:FLibSYS:
    • FIX:IO: write() fixed for the default data type obtain, wrong data type obtaining set safe.
    • CRC: Completed by using normal polynomials, the input and output references and the XOR for output.
    • VArchObj: Access to the archive writing functions restricted only for users in the group "Archive".

11 Service updates