Skip to content

Releases: epics-modules/opcua

0.9.5 (WIP) Partial merge of the open62541 SDK client

17 Jun 11:46
v0.9.5
Compare
Choose a tag to compare

Partial merge (no support for structures) of the branch that interfaces the free open62541 SDK client library.
This attaches an official release number to the merge, which helps users to properly include it into their build/deployment workflows.

Apart from the open62541 merge,

  • There have been a number of minor fixes and clean-ups in the build and the end2end test suite.
  • The structure of the binary distribution has changed - it now contains two EPICS modules: a proper support module and an IOC module that uses it. This should make it easier to include the binary distribution into a user setup.

Updating to release 0.9.5 is considered low-risk for all users: when used with the UA SDK, it contains no major features or fixes with respect to 0.9.4.

Thanks a lot to all contributors!
As always: please report any additional findings in the issue tracker.

0.9.4 (WIP) Minor fixes and new end-to-end tests

20 Mar 17:17
Compare
Choose a tag to compare

Bugfixes/enhancements and a new end-to-end test suite - Work-in-Progress

Fixes a minor bug introduced in 0.9.0:

  • STAT/SEVR were changed to NO_ALARM when processing a record while the connection is down (#127).

Adds a missing feature to the OPC UA Security support:

  • Support user/password identity on an unsecured connection (#132) - contributed by Markus Meyer (HZDR).

The end-to-end test suite provided by the ESS (work by Ross Elliot and Karl Vestin) has been merged. See the end2endTest README and the GitHub Actions definitions for details. These tests are not part of a regular make run and need to be run explicitly.

Updating to release 0.9.4 is recommended for all users.

Thanks a lot to all contributors!
As always: please report any additional findings in the issue tracker.

0.9.3 (WIP) Bugfix release

20 Sep 11:34
Compare
Choose a tag to compare

Bugfixes for opcuaShow() and early processing of records - Work-in-Progress

Fixes two bugs introduced in 0.9.0:

  • The opcuaShow command was causing segfaults when matching record names under specific conditions (#125).
  • OPC UA records that were processed early by other EPICS mechanisms could end up totally blocked (#126).

Updating to release 0.9.3 is recommended for all users.

Thanks to @bkuner for finding and reporting these issues.
As always: please report any additional findings in the issue tracker.

0.9.2 (WIP) Bugfix release

16 Aug 10:13
Compare
Choose a tag to compare

Bugfixes for EMBED build and ai records with linear conversion - Work-in-Progress

Fixes two bugs introduced in 0.9.0:

  • The EMBED deploy mode was broken.
  • ai records using linear conversion were getting stuck with no way to resolve the situation (#124)

Updating to release 0.9.2 is recommended for all users.

Thanks to @bkuner for finding and reporting these issues.
As always: please report any additional findings in the issue tracker.

0.9.1 (WIP) Bugfix release (for 3.15 static builds)

07 Jul 11:41
Compare
Choose a tag to compare

Bugfix for 3.15 Static Builds - Work-in-Progress

Fixes a bug introduced in 0.9.0 that made statically built IOCs crash, if they were built against Base 3.15 releases.

Updating to release 0.9.1 is recommended for all users and mandatory when building static IOCs with EPICS Base 3.15.

As always: please report any findings in the issue tracker.

0.9 (WIP) OPC UA Security, improved iocShell commands, Windows

05 Jul 16:26
Compare
Choose a tag to compare

OPC UA Security, improved iocShell commands, Windows support - Work-in-Progress

Release 0.9 adds a bunch of features:

  • OPC UA Security is fully supported.
    OPC UA Security adds secure connections based on the openssl libraries and X.509 certificates. The security features have been extensively tested (thanks to Roland Fleischhauer at HZB/BESSY) and work with self-signed certificates as well as in a CA based PKI system.
    User authentication is supported through simple user/password or X.509 certificate.
    See the separate Security related README for details and instructions.
  • Improved iocShell commands: more power, less typing.
    The iocShell interface (configuration and debugging commands) has been greatly improved and simplified, resulting in less commands that are shorter and more powerful, making use of globbing wildcards where possible.
    All existing commands are still working and emit a deprecation warning when used.
    The iocShell extended help (usage information) is available for the new commands where supported.
  • Write-on-change mode for user-defined structures.
    A new field in the opcuaItemRecord, WOC, can be set to immediate to trigger immediate writing of a user-defined data structure whenever any of the elements have been changed on the IOC.
  • EPICS record timestamp from data.
    For user-defined structures, the opcuaItemRecord can be configured to read a timestamp from a top-level data element. Any data element record linked to the structure can select to use this timestamp as a third alternative to the server and source timestamps.
  • Support for the Windows platform.
    The module compiles and works on Windows, using the Windows variant of the UA SDK bundle (thanks to Carsten Winkler at HZB/BESSY).

Release 0.9 also fixes a number of bugs, most of them appearing in special situations / corner cases.

Updating to release 0.9 is recommended for all users and use cases.

NOTE:
OPC UA Security is ON by default and will not connect to servers insecurely.
You need to explicitly set the option sec-mode=None for the session to run without Security.

Please also see the list of issues closed in v0.9.0 and the changes since v0.8.0.

As always: please report any findings in the issue tracker.

0.8 (WIP) Namespace Mapping, BINI option

16 Nov 16:22
Compare
Choose a tag to compare

Mapping of namespaces and configurable behavior at initialization (BINI) - Work-in-Progress

Release 0.8 adds two features:

  • Configurable mapping of namespace index numbers between client (IOC) and server through their URI identifier.
    Server namespaces have a unique URI identifier. Servers may shuffle the namespace index numbers (used in INP/OUT link configuration) between reboots. A new IOC shell command allows to map the index numbers used on the IOC to their URIs. Whenever a session is established, the IOC reads the server's namespace array, compares URIs, and uses the correct server-side index numbers in the communication.
  • Behavior at initialization (BINI) link option to control how the IOC acts when a session is established.
    The standard EPICS PINI mechanism (processing records at initialization) does not work with the OPC UA support, as sessions may be established a long time after the IOC reboot. The new link option bini=read|ignore|write fills that gap, allowing to define the behavior of the record when an OPC UA session is established. The read choice (default) updates the record with the server value, ignore doesn't update the record, and write (for output records) writes the record value to the OPC UA server.

Release 0.8 also fixes a bug that was introduced with the batch mechanism in 0.7. This bug caused initial read requests to be dropped silently, leaving the records INVALID until the server was eventually sending an update after the variable changed.

Handling of the initial read requests has been improved in a way that avoids unnecessary additional load on the server.

The build system now supports statically linking the UA SDK libraries into a shared support library, removing the need to separately deploy and link the SDK.

Updating to release 0.8 is recommended for all users and use cases.

Please also see the list of issues closed in v0.8.0 and the changes since v0.7.0.

As always: please report any findings in the issue tracker

0.7 (WIP) Better Performance for Read/Write Operations

15 Sep 10:27
Compare
Choose a tag to compare

Batching Read and Write Requests for Better Performance - Work-in-Progress

Release 0.7 adds new low-level handling for single-node read and write requests. (Serving requests coming from periodically scanned or passive records.)

Instead of executing each request instantly with each request getting its separate OPC UA service call, the requests are queued (three prioritized queues controlled by the EPICS record PRIO field) and a separate worker thread works off these queues and creates batches of requests that are combined into a single service call.

Throttling parameters can be set through the opcuaSetOption interface. If both *-timeout-min and *-timeout-max are set, the wait time is interpolated depending on the actual number of nodes in the batched request.

Option Setting
nodes-max maximum number of nodes for any service call
read-nodes-max maximum number of nodes for read requests
read-timeout-min minimum time to wait (in ms) after a read request
read-timeout-max time to wait (in ms) after a read request for the maximum number of nodes
write-nodes-max maximum number of nodes for write requests
write-timeout-min minimum time to wait (in ms) after a write request
write-timeout-max time to wait (in ms) after a write request for the maximum number of nodes

Please also see the list of issues closed in v0.7.0 and the changes since v0.6.0.

As always: please report any findings in the issue tracker

0.6 (WIP) Support for Writing of User-Defined Structures

27 Jul 16:43
Compare
Choose a tag to compare

Added Support for Writing of User-Defined Structures - Work-in-Progress

Release 0.6 adds support for writing of User-Defined Structures. The user sets the data elements of a structure by writing to the output records connected to those elements. Once the related opcuaItemRecord is processed for writing, it updates all changed elements in the structure and sends it to the OPC UA server.

The opcuaItemRecord is improved: Writing to the READ or WRITE fields will execute the appropriate action. Writing to the PROC field or FLNK processing will execute the default action configured in the DEFACTN field.
The STATCODE and STATTEXT fields hold the OPC UA status code and status text of the last operation.

The sources of Google Test and Google Mock and their EPICS support have been moved into a module of their own, gtest.

Please also see the list of issues closed in v0.6.0 and the changes since v0.5.0.

As always: please report any findings in the issue tracker

0.5.2 (WIP) Bugfixes for 0.5

29 Aug 13:48
Compare
Choose a tag to compare
Pre-release

Fixes bugs in the 0.5 release - Work-in-Progress

Bugfix release 0.5.2 fixes a number of bugs that were showing up in 0.5.1.
Some of these fixes were cherry-picked from current development, others were originally developed for this release and will be implemented on master later on.

  • Fix failing range check for negative float/double values (#56)
  • Avoid calling the registerNodes service when there are no nodes to register (#53)
  • Avoid calling the readRequest and writeRequest services when the connection is down (#54)

Update recommended for all uses of release 0.5.