From OpenSCADAWiki
Jump to: navigation, search
Other languages:

This update of the 0.8 LTS release fixes about 35 bugs and appends some improvements, which you can read wholly in the update ChangeLog.


  • SYS,Transport,DAQ.DAQGate,UI.{QTCfg,Vision,WebCfgD}: External host upraise is implemented by the function extHostList() extension, the requests reforwarding by function cntrIfCmd() and the input part of the self-system protocol. *: pthread_mutex, MtxAlloc and MtxString moved to the mutex wrapper object ResMtx.
  • DAQ: API functions tplE(), tplIOE(), errE() renamed to elTmpl(), elTmplIO(), elErr().
  • Archive: m_start, run_st, m_db were renamed to mStart, runSt, mDB.


  • SYS: Resources locking in RW object "Res" expanded by the functions (synonyms) lock(), tryLock() and unlock().
    • Additional managing time macro FTM2 is added.
    • TFunction: Virtual function prog() and setProg() is added for allow it's control through an abstract object.
    • User API function SYS.sleep() expanded to accept first argument of time in seconds as float and allow to set here up to nanoseconds.
  • DB: Resource's of the DB allocation TBD::resTbls is added.
  • DAQ.BlockCalc: User API functions cntr(), cfg(), cfgSet() for blocks are added.
  • Archive: messPut(), messGet() and same user API function expanded by the argument "arch" to allow direct to the pointed archivators requesting.
    • User API function messGet() expanded by argument "upTo", for the timeout direct control allow.
    • To messages get functions added a time result of the finished processing. Mostly for allow fast continue from the point after long terminated by the timeout requests.
    • Values archivation a global option is added for time of taken values force to current and override it's source from.
    • To values archive object an option is added for pass values fill to last value.
  • Transport: Starting-connection time is added to the output transports.
  • UI.VCAEngine: User API functions mess{Debug,Info,Note,Warning,Err,Crit,Alert,Emerg}() appended to the run-time widget and included the widget path as the category.
  • Special.FLibSYS: The time functions are appended by tmSleep() for faster access to the short sleeping provides.


  • CoreLib version rise to 2.4. DB,DAQ,Archive,Transport: Module's subsystems' version set to 8.
  • TCntrNode: Free of locked nodes and attach to disabled ones are prevented by propper resource locking to mUse.
  • {DAQ,Transport}.*: Tasks priorities range expanded up to 199 where 100-199 used for SCHED_FIFO tasks planing policy.
  • System configuration fields "workdir", "moddir", "icodir" set to readonly from the configuration interface, mostly for wrong changes prevent and the changes allow only by the configuration file edit.
  • Security: Adapted to prevent passwords storing in open view as hash instead, for: OpenSCADA host (Transports), Protocol.SelfSystem, UI.Vision. crypt_r() using enabled only for "__USE_GNU" and the open passwords store instead.
  • data/debian: the service's script openscada.init moved to separated package openscada-server.


  • All DB modules rewrote to open table without exceptions into the table object constructor.
  • FIX:MySQL,SQLite,PostgreSQL: Prevented the "BEGIN;" and "COMMIT;" request's sequence breakage on high concurrency access activity.
  • FIX:DB.PostgreSQL: Fixed for symbols "'" '"' encoding by it replace to the doubling method. FIX: Fix cycling after unsuccessful a table's structure correction.


  • User API function funcCall() significant expanded to fix the result function for reusing and then significant performance rise.
  • *,LogicLev,ModBus: DAQ redundancy of the dynamic attributes is added.
  • ModBus,Siemens,DCON: Pass of real requests at the first and last iterations, only the procedures execution.
  • FIX:OPC_UA: Module for client renamed to "Client OPC-UA" and for server to "Server OPC-UA".
    • Protocol: Works into the poll mode of input transport are allowed and enabled by default. The Publish service now allowed on the LTS!
    • FIX:libOPC_UA: Packages sequence number managing for server part is fixed by separating from the value of input packages.
      • FIX: Packages sequence number managing for the client part also unified and fixed to prevent the value repeats.
      • Early Acknowledgements processing in request "Publish" is added.
      • TimeStamps into the "Write" client request's are disabled but some servers tell 0x80730000 (OpcUa_BadWriteNotSupported).
      • Successful adapting to work with UAExpert 1.4.
  • JavaLikeCalc: Support of included functions definition and it's call is added. Operation "||" and "&&" formal set to equal priority. Checking for IO moved before constants for it's override. Constant "EVAL" as a synonym to EVAL_REAL is added.
  • FIX:Siemens: A crash problem at high and frequent interaction is fixed, fragments changing (by assign) is moved to replace everywhere. FIX:LibnoDave: gethostbyname() replaced to it's reentrant variant.
  • BlockCalc: Special attribute "this" of the object access set to processing into blocks.


  • messPut() expanded to write messages independent to the alarms table.
  • DBArch,FSArch: Get messages request for equal begin and end time is allowed.
  • FIX:FSArch: Check for duplicate as equal time, category, level (by the option "prevDblTmCatLev") and it prevent is added.
    • Expanded for early limits check and it's check at unpack errors and then prevent storages overfull at close limits and small storages.
    • Check for duplicated at all fixed. Time into cache changed from time_t to int64_t (in microseconds).
    • Get from XML set some optimal. Get from plain allowed for the messages time equal to end.
  • FIX:DBArch: Get messages algorithm is rewrote to request by minutes.
    • Table structure's for value and messages set adaptive and moved to the objects TMArchivator and ModVArchEl.
    • New option of the messages archiver are added: "Store time as pure integer".
    • "Archive size (days)" for both values and messages adapted for set to zero (<0.1) and disable the limit at all.
    • The used table closing after any put request is disabled.


  • FIX:SSL,Sockets: gethostbyname() and getservbyname() replaced to it's reentrant variants.
  • FIX:Serial,Sockets: For result's reading, into output transport, added waiting for data at zero or/and EAGAIN error. FIX: Errors on writing in the output part is fixed. Possible wrong readings after the select() wrong termination, with marking as a data present (some caused), is unified and better adjusted for different modes of the requesting and the not requesting mode of output transport.


  • SelfSystem: Force authentication update by attribute "rqAuthForce" is added. Reforwarding of host's requests by attribute "reforwardHost" into the input part is added.


  • VCAEngine,Vision: Logical groups separator of Widget's attributes is changed from ":" to ": " everywhere, mostly for allow the user attribute value's items separation and description it with the symbol ":". To view "Table" of the primitive FormEl into root tag "tbl" added attribute "sortEn" to direct sorting by columns and header's item option "sort" for point to initiate sorting column.
  • FIX:Vision,WebVision: Mode "XY" of the primitive "Diagram" fixed for build by sorting by 'X' disable, only the hierarchical order. For primitive "Diagram" to data block "data:<dt/>" option "Approximation (aprox)" is added.
  • FIX:UI.QTCfg: External host's status processing mostly improved and fixed. FIX: Timeouts of external host are set configurable by the option "TmConChk". FIX: The options StartUser and StartPath are moved under a resource allocation by the type MtxString.
  • FIX:VCAEngine: The function's resources locking is added for SesPage::setEnable().
    • FIX: setNoTransl() at the attributes loading disabled by some problematic and no a sene.
    • Force inheritance of links types is added, independent from the attribute local modification.
    • To project objects were added a property "EnableByNeed" to control the projects ready after start and prevent long connection by the deferred enabling.
    • Try to enable for disabled pages, at an alarm set action, is prevented by some strange crash here observed, only into LTS.
    • The runtime note messages are added: "User is changed to ...", "User is connected ...", "User is disconnected ...".
  • FIX:Vision:
    • FIX: Too important fixes made in way of adapting to stable work with remote VCA servers:
      • The module's attributes VCAStation, UserStart, UserPass and UserStBar::{user,pass,VCAStation} were moved under resources locking by the MtxString.
      • To both runtime and development parts were added an initial connection with the restore connection timeout, for allow to load the VCA-server resources.
      • Processing of the information dialog about a connection lost was moved to a single request (and thread) from updatePage().
    • FIX: View "Table" of the primitive "FormEl" significant expanded by: global table's attributes: "hHdrVis", "vHdrVis"; row attributes "colorText", "font"; column attributes "color", "colorText", "font".
    • FIX:Included to container's pages align processing rewrote to trace on the widget's geometry update and to the misaligned scroll-bars appearing sometime prevent.
    • FIX: The palette restoring to visibleCheck function is added for prevent FormEl's artifacts at last.
    • FIX: Mouse events at all enabled for "FormEl" primitive and some artifications like ticks lost into Slider fixed.
    • FIX: Context menu problem for views List, Tree and Table of the primitive FormEl is fixed.
    • Requests to an external host moved to using cntrIfCmd().
    • Remote authentication moved to allow use the host authentication by default and the same connection for check it.
    • Timeout of tries of restoring connection to a remote station set to progressive up to the pointed one and the error message display after the timeout value in 3 seconds.


  • SystemTests: The DB tests are expanded by a seek test.