--------------------------------
-- Description
--------------------------------

This SimApi connects to an OPC UA data source.

See the User Guide for a list of features and installation instructions.

--------------------------------
-- Version 1.16.0
--------------------------------
2024-12-16

* Fix data inconsistency issues when there are data on the server with OPC UA
  quality Bad. Data read as current data always have transformed data with Bad
  quality to a missing value. Data read as historical data previously ignored
  Bad, and used only values whose status were not Bad. With this fix, data read
  as current data and historical data will match.
* User guide improvements: defines how OPC UA quality Good, Uncertain and Bad
  are handled, added MFCS server troubleshooting tips when the Name tag are not
  visible for the Batches node.
* Updated UnifiedAutomation OPC UA NET SDK to 4.1.0

--------------------------------
-- Version 1.15.0
--------------------------------
2024-09-24

* Partial Write back support, for current values only. Full write-back
  support requires support for writing historical data which is
  not available in this version.
* For Sartorius BioPAT MFCS server, version 4.14 and later, all variables
  for a unit are listed directly under the Unit/[Name]/Variables nodes,
  to avoid having to use the Value node for each MFCS OPC UA Variable object.

--------------------------------
-- Version 1.14.0
--------------------------------
2024-09-18

* More detailed logging when reading data from OPC UA server
* Reading data now returns error code on failure instead of just logging
* Updated NUnit to 4.2.2
* More tests for batch node support
* Internal code cleanup and refactoring

--------------------------------
-- Version 1.13.0
--------------------------------
2024-09-09

* Batch node support for Sartorius BioPAT MFCS server, version 4.14 or later
* Updated UnifiedAutomation OPC UA NET SDK to 4.0.2

--------------------------------
-- Version 1.12.0
--------------------------------
2024-05-14

* Thread-safe logging to prevent garbled log entries between threads
* Updated UnifiedAutomation OPC UA NET SDK to 4.0.1

--------------------------------
-- Version 1.11.0
--------------------------------
2023-08-07

* Allow connecting to more than one UA endpoint on the same server.
  The SimApi uses OPC UA Discovery to find the most secure security profile and mode
  that matches the specified endpoint including path.
  Information about this is logged. Search for OpcUaConnection.GetMostSecureEndpoint to find it.
* The server is queried for manufacturer and version of the server whis is logged to the
  log file. Search for OpcUaConnection.LogServerInformation to find it.
* Updated UnifiedAutomation OPC UA NET SDK to 3.3.1

--------------------------------
-- Version 1.10.0
--------------------------------
2023-04-24

This release contains breaking changes how the SimApi exposes nodes and tags to SIMCA-online.
This may require changes for project configurations using this SimApi.

* Use the display names of top level folders instead of OPC UA Node IDs.
  For example "Simulation" instead of "ns=3;s=85/0:Simulation"
* Added support for reading data for OPC UA Variables with child nodes.
  For each such OPC UA Variable, both a SimApi tag and node is created.
  To work in SIMCA-online, the node name gets a prefix of $ to ensure the name
  is unique among tags and nodes in the parent node.
* If an OPC UA node has children with the same display name, the resulting SimApi
  nodes or tags are made unique by prefixing with $.
* Less clutter with fewer nodes: only show nodes that have tags below
  them in the hierarchy.
* Updated UnifiedAutomation OPC UA NET SDK to 3.3.0

--------------------------------
-- Version 1.9.0
--------------------------------
2022-11-21

* More detailed logging of node discovery at startup
* Fixed incorrect method names in log file
* Updated UnifiedAutomation OPC UA NET SDK to 3.2.1

--------------------------------
-- Version 1.8.0
--------------------------------
2022-02-21

* Support for variables exposed by the inmation OPC UA server. This server is not
  OPC UA standards compliant so this fix adds support for Variable nodes with
  TypeDefinition==BaseObjectType.
* Updated UnifiedAutomation OPC UA NET SDK to 3.1.1
* The SimApi now requires NET 4.6.2 or later. We recommend the latest NET 4.8 version.

--------------------------------
-- Version 1.7.0
--------------------------------
2021-06-18
* Added option to read current data with OPC UA HistoryRead for servers that
  do not support current data access which is normally used for real-time data.
* Tags are created for variables of custom types (non-predefined in UA)
* Tags are created for Variables that have child nodes of class Object, to correctly
  expose Variables for Siemens SIMATIC Process Historian OPC UA Server.

--------------------------------
-- Version 1.6.2
--------------------------------
2021-06-11
* Improved logging when the connection to the UA server is lost because of network
  issues or that the server is down. The SimApi automatically re-activates the
  connection when the server is available.
* Allow user name with empty password in the configuration utility.

--------------------------------
-- Version 1.6.1
--------------------------------
2021-04-28
* The SimApi can now connect using the best available OPC UA security policy even
  without username and password. The used security policy is logged.

--------------------------------
-- Version 1.6.0
--------------------------------
2021-03-23
* Tags are created for variables of type BaseVariableType (for KEPServerEX used by Ambr 250)
  for BaseDataVariableType, and for DataItemType or its subtypes (for MFCS4 OPC UA server).
* Create Array Tags: no longer creates array tags for ByteString arrays
  (which typically represent binary content)
* Updated UnifiedAutomation OPC UA NET SDK to 3.0.9

--------------------------------
-- Version 1.5.0
--------------------------------
2021-03-10
* Read current data for array tags (no support for historical data).
* Configuration setting 'Create Array Tags' used to optionally create tags that
  enable array data to be exposed by the SimApi: each element as a separate tag.
  * The number of tags created are based on OPC metadata ArrayDimensions or,
    if not available, the actual data read for the variable at startup.
  * A node for the array variable is created, holding the element tags [0], [1], [2]...
* Config utility: new category 'Advanced settings' with rarely used settings.
* Support more OPC built in data types (always converted to either float or string)
* Updated UnifiedAutomation OPC UA NET SDK to 3.0.8

--------------------------------
-- Version 1.4.1
--------------------------------
2021-02-18
* Log file error messages now list the tags used + better context

--------------------------------
-- Version 1.4.0
--------------------------------
2021-02-16
* Create tags for OPC UA Variable nodes of DataItemType
* Debug logging on startup: Log when tags are not created because of
  unspported types of NodeClass Variable

--------------------------------
-- Version 1.3.0
--------------------------------
2021-02-15
* Added optional setting 'Top level OPC UA nodes' for specifying one or more OPC nodes that will
  be browsed for variables (tags). Results in quicker startup than browsing the entire server.
* Changed the 'Browse node references' setting to be HierarchicalReferences by default to expose all nodes.

--------------------------------
-- Version 1.2.2
--------------------------------
2021-02-10
* Improved logging, and less logging when reading data to not fill the log
* Log and continue browsing OPC nodes if browsing returns an error
* Internal code cleanup

--------------------------------
-- Version 1.2.0
--------------------------------
2021-02-01
* Added a setting 'Browse node references' that controls which nodes are exposed by
  filtering OPC nodes on their reference type:
    Organizes - fewer nodes and faster startup
    HierarchicalReferences - more nodes and variables-in-variables
* Fixed logging: the log .bak file was not overwritten preventing logging from working
* Updated UnifiedAutomation SDK to 3.0.8

--------------------------------
-- Version 1.1.0
--------------------------------
2020-09-30
* Display OPC UA variables that contain/reference other variables as SimApi nodes.
* Display OPC UA variables of built-in data types (BaseDataVariableType) as tags.
* Fixed bug that prevented displaying hierarchical nodes
* Fixed bug that prevented reading historical data for duplicate tags
* Better logging of errors if opening a connection fails
* Updated UnifiedAutomation SDK to 3.0.5

--------------------------------
-- Version 1.0.1
--------------------------------
2020-05-11
* Initial release with Sartorius code signing and setup program.
* For a list of features, see the User Guide.
