What's new in QuickOPC 2021.3

From OPC Labs Knowledge Base
See also: Versions; Previous version: What's new in QuickOPC 2021.1

Internal version number: 5.62

Key changes:


Targeting

  • Operating Systems: Added Windows Server 2022 (x64), to the list of supported systems.
  • .NET Runtimes: .NET Core 2.1 is no longer supported.

Component Improvements

  • The ILicenseInfoProvider.LicenseInfo property now returns (specially marked) elements for licenses that has been considered but dropped during the license verification and evaluation. With licensing errors that result in a trial license being used, this allows the user to diagnose licensing problems sooner - before the run-time limit associated with the trial license is reached.

OPC Data Access and OPC XML-DA

  • Added more IEasyDAClient.ReadItem, ReadItemValue, ReadMultipleItems and ReadMultipleItemValues extension method overloads with read parameters object (DAReadParameters). This allows shorter coding when e.g. a value age, or reading from the device needs to be specified.

OPC Alarms&Events

  • Added more overloads of the AENotificationObservable.Create method, allowing to pass less arguments.

OPC UA Client-Server

  • Added IEasyUAClient.ReadValue extension method overloads with index range list.
  • Added IEasyUAClient.Read and IEasyUAClient.ReadValue extension method overloads with read parameters object (UAReadParameters). This allows shorter coding when e.g. maximum value age, or reading from the device needs to be specified.
  • Added (extension) method IEasyUAClient.WaitForMultiple. Subscribes to the specified nodes&attributes, and monitors their data until the predicates specified for each item become true, an error occurs, or the alloted time elapses.
  • Added (extension) method IEasyUAClient.WaitForMultipleValues. Subscribes to the specified nodes&attributes, and monitors their data until they have at least the status severity specified for each item, an error occurs, or the alloted time elapses.
  • Added (extension) method IEasyUAClient.WaitForValue. Subscribes to the specified node&attribute, and monitors its data until it has "good" status severity, an error occurs, or the alloted time elapses.
  • Added Description property to the UAStatusCode class. Returns textual description of the status code, or an empty string if the description is not available.
  • Added Message property to the UAServiceResult class. Returns the message associated with the service result. The component tries to fill it in if no text is provided by the server. Empty if no description is available.
  • Conversions from UAEUInformation and UARange objects to OPC UA structures are now supported, making it possible to write them into the OPC server.
  • Operation monitoring: The arguments of the IEasyUAClient.ServerConditionChanged event, i.e. the EasyUAServerConditionChangedEvenArgs, now contain a Statistics property. This property contains a ConnectedConditionStatistics object, with large amount of information about the connection to the server. There is a sequential connection attempt count, and an AutomatonStateStatistics object for each of the connection states (Disconnected, Connecting, Connected, and Disconnecting), and for an "Unconnected" state, which represents a state other than Connected. For each of these states, you can obtain information such as how many time it was entered, when it was first entered, when the last cycle started and how long it did last, what is the minimum, maximum, and accumulated duration of the state, and much more. For the current state, you can also obtain information such as when it was entered and how long it is active.
  • Added OperationTimeout property to UAClientSessionParameters class. This is the timeout used when sending requests (in milliseconds). Previously, this timeout had to be configured in SDK configuration (by providing a modified XML configuration file).
  • When reading the NodeClass attribute of a node, the returned value is UANodeClass and not an Int32. Note that this is potentionally a breaking change.

OPC UA PubSub

  • Delta frames in JSON message mapping are now supported.

User Interface

  • Added ClientSelector property to AEAreaOrSourceDialog, AEAttributeDialog, AECategoryDialog and AEConditionCategoryDialog. This allows to specify the parameters of the client object used by the dialog.
  • Added AEClientSelector and DAClientSelector properties to the OpcBrowseControl and OpcBrowseDialog objects. This allows to specify the parameters of the client objects used by the control or the dialog.
  • Added ClientSelector property to UABrowseControl, UABrowseDialog, UADataDialog, UAEndpointDialog and UAHostAndEndpointDialog. This allows to specify the parameters of the client object used by the control or dialog.

Component Refactorings

  • Elements returned from ILicenseInfoProvider.LicenseInfo that represent date/time or a timespan are now returned as a DateTime or TimeSpan, respectively, instead of just "raw" UInt64 or UInt32. This helps to interpret the commonly needed elements such as ReleaseDateCovered.
  • In standard formats for DAVtq and UAAttributeData, the zero date in timestamps is now displayed as "MinValue" instead, making the output shorter.

OPC Classic

  • The default (general) output format for DAVtq now displays only the short name of the value type (without namespace).
  • Improved error enhancement (details added to error texts in some common scenarios).

OPC UA

  • The default (general) and brief output formats for UAAttributeData now display only the short name of the value type (without namespace).
  • Improved error enhancement (details added to error texts in some common scenarios).
  • Errors from session connections and reconnections are now enhanced by connection attempt number, last connected time, and unconnected timespan.
  • In transitions to the Connecting state, the string form of the EasyUAServerConditionChangedEventArgs now includes the sequential connection attempt number, allowing the user to easily assess whether the connection is "down" for an extended period of time.

Configuration and Instrumentation

  • It is possible to configure ClientSelector property of the AEAreaOrSourceDialog, AEAttributeDialog, AECategoryConditionDialog and AECategoryDialog using the Intrinsic Component Configuration on the AEDialog base component.
  • It is possible to configure AEClientSelector and DAClientSelector property of the OpcBrowseControland OpcBrowseDialog using the Intrinsic Component Configuration.
  • It is possible to configure ClientSelector property of the UADataDialog, UAEndpointDialog and UAHostAndEndpointDialog using the Intrinsic Component Configuration on the UADialog base component.
  • It is possible to configure ClientSelector property of the UABrowseControl and UABrowseDialog using the Intrinsic Component Configuration.
  • Improved generated log entries related to OPC UA .NET SDK configuration, for easier troubleshooting.

Tools and Online Services

Demo Servers and Publishers

  • The UADemoPublisher can now produce Delta frames in JSON message mapping (when KeyFrameCount >= 2).

OpcCmd Utility

  • The uaClient command now has a new --ServerConditionChanged (-scc) option, which enables event notifications related to server condition changes (connecting/connected/disconnecting/disconnected).
  • Added the --EndpointAnonymous|-ea <bool> option to various uaClient subcommands, allowing to explicitly enable/disable the use of anonymous user token.
  • Added the waitForItemValue subcommand under the daClient command.
  • Added the waitForValue subcommand under the uaClient command.

OPC UA PubSub Formatter

  • The OPC UA PubSub Formatter can now show the format of JSON Delta frames, Event messages, and Keep-Alive messages.

Examples

  • Added a C# example that shows how to display all fields of the available license(s).

Platform: COM

  • Added an OPC-UA demo application written in C++ (with use of MFC). Both the source code, and the executable are installed.
  • Added a VBA example in Microsoft Access. The example reads an OPC UA value and shows it on a form that opens automatically on database startup.
  • Added a Delphi example showing how to use OPC Data Access event pull with multiple subscribed items.

OPC Classic

  • Added a C# example showing how to read a single item, specifying that the read should be performed from the device.
  • Added C# examples showing how to subscribe to single and multiple OPC items with percent deadband.
  • Added a C# example showing how to use isolated client objects for separate connections to the target OPC DA server.
  • Added one more C# example of node browsing.
  • Added one more C# example for the GetMultiplePropertyValues method.
  • Added examples for the SubscribeMultipleItems method showing how to use integers and general objects for identification of the subscriptions.
  • Added a C# example for the ChangeMultipleItemSubscriptions method.
  • Added a C# example for the WriteMultipleItems method.
  • Added C# examples for the usage of OPC A&E area or source dialog, OPC A&E attribute dialog, OPC A&E category dialog, and OPC A&E category condition dialog.
  • Added C# example that shows how to allow browsing for an OPC Data Access node by placing a browsing control (OpcBrowseControl) on the form.
  • Added an example showing how to use reactive development model for OPC Alarms&Events.

OPC UA Client-Server

  • Added C# examples showing how to read a single node or multiple nodes, specifying that the read should be performed from the device (data source).
  • Added C# examples showing how to subscribe to single and multiple OPC monitored items with absolute deadband.
  • Added a C# example showing how to subscribe to a range of elements from an array.
  • Added a C# example showing how to set various OPC UA timeouts.
  • Added a C# example showing how to use isolated client objects for separate connections to the target OPC UA server.
  • Added a C# example showing how to browse all forward references from a given node.
  • Added a C# example showing how to unsubscribe from just some monitored items.
  • Added example for server condition monitoring (IEasyUAClient.ServerConditionChanged event).
  • Added a C# example showing how to configure OPC UA .NET SDK using an external file (UANetSdkConfiguration project), both for .NET Framework and .NET Core/.NET 5+.
  • Added C# example that shows how to allow browsing for an OPC UA node by placing a browsing control (UABrowseControl) on the form.
  • Reactive Programming: Added an example showing how to observe a range of elements from an array.
  • Reactive Programming: Added an example showing how to observe OPC UA data with data change trigger.
  • Reactive Programming: Added an example that shows an OPC UA data change observable with specified timeouts.
  • All .NET examples now consistently use opc.tcp: endpoints of the sample servers, instead of http:.

Documentation and Help

  • Added documentation topic about OPC UA user authentication, with an example.
  • Enhanced documentation related to OPC DA read parameters (setting value age, choosing to read from the cache or from the device).
  • Enhanced documentation related to OPC UA read parameters (setting maximum age, choosing to read from the cache or from the data source, or setting the encoding name).
  • Enhanced documentation related to OPC UA timeouts (the parameters available, their meaning, and how to set them).
  • Examples that were in the DocExamples, UADocExamples and ReactiveDocExamples projects but were not in the User's Guide were added to the documentation.
  • Fix: Added missing remarks to enum members.
  • Fixed invalid links to enum members.