Releases: epics-modules/opcua
v0.10 open62541 SDK integration complete
The branch that integrates the free open62541 SDK client library is merged.
With that, the open62541 client integration is complete and fully functional.
Careful: That option has not seen a lot of production use yet.
What's New
Apart from the open62541 merge,
- options in
st.cmd
or database links can also be separated by spaces or commas (in addition to colons) - fix an issue where the connection status was set to "up" too early
- handle "EncodeableObject" structures (another way structured data can be defined in OPC UA)
- handle "LocalizedText" variables (another string data type on OPC UA)
- full set of CI jobs for both client SDKs on Linux and Windows.
Updating to release 0.10 (from 0.9.5) is considered low-risk for all users: when used with the UA SDK, it contains no major features or fixes.
Thanks to all contributors, especially Dirk Zimoch for his work on the open62541 integration and the other improvements!
As always: Please report any additional findings in the issue tracker.
Full Changelog: v0.9.5...v0.10.0
0.9.5 (WIP) Partial merge of the open62541 SDK client
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
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
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
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)
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
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 theopenssl
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 toimmediate
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
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 optionbini=read|ignore|write
fills that gap, allowing to define the behavior of the record when an OPC UA session is established. Theread
choice (default) updates the record with the server value,ignore
doesn't update the record, andwrite
(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
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
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