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:

  • More examples


Targeting

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

Installation and Uninstallation

  • The Launcher now has an information pane at the bottom, showing a description for the currently selected item.

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 new extension methods to the IEasyUAClient.SubscribeMultipleMonitoredItems method, named SubscribeMultipleDataChanges and SubscribeMultipleEvents, allowing to specify an array of monitored item arguments, and a common data change notification or event notification callback.
  • 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.
  • Renamed EasyXXXXConfiguration components to EasyXXXXManagement, i.e. EasyDAClientConfiguration to EasyDAClientManagement, EasyAEClientConfiguration to EasyAEClientManagement, EasyUAClientConfiguration to EasyUAClientManagement and EasyUASubscriberConfiguration to EasyUASubscriberManagement. This is a breaking change if you use the affected components, but it can be easily resolved by simple text find&replace.

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.
  • When displaying a value, by default, the OpcCmd utility will now not expand the sub-properties of a property that is at its default value. This creates an output that is still complete, but in many cases shorter. This behavior can be changed using the format string to always expand all properties, or to completely hide the properties that are at their defaults.
  • More concise value output in OpcCmd utility for some objects - achieved by hiding properties whose value is evident from the string form of the value, or other properties that are shown.
  • When displaying a value, by default, the OpcCmd utility now highlights the property values that are not at their default, using a different color. This behavior can be changed using the format string to never highlight any property values, or to highlight them all.

OPC UA PubSub Formatter

  • The OPC UA PubSub Formatter can now show the format of JSON Delta frames, Event messages, and Keep-Alive messages.
  • You can now select from 4 pre-defined datasets in the OPC UA PubSub Formatter.

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 Python example showing how to subscribe to OPC Classic (OPC A&E) events and obtain the notification events by pulling them.
  • Added a Delphi example showing how to use OPC Data Access event pull with multiple subscribed items.
  • Improved Delphi examples to show proper OleVariant clearing, for avoiding memory leaks.

OPC Classic

  • Added C# examples showing how to read a single item, or just its value, 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.
  • Enhanced the XmlLogger and XmlEventLogger examples in C# and VB.NET by progress indication.
  • Reactive Programming: Added an example showing how to observe OPC DA data with percent deadband.

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 C# examples showing how to subscribe to single and multiple OPC monitored items with percent 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 a C# example showing that either a single client object, or multiple client objects can be used to read values from two servers.
  • Added example for server condition monitoring (IEasyUAClient.ServerConditionChanged event).
  • Added a C# example showing how the OPC UA status codes are formatted into a string containing the symbolic name of the status code.
  • 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.
  • Added UAHmiScreen example in C#: Shows how to implement an HMI screen by storing OPC Unified Architecture node IDs in the Tag property of screen controls, and animate the controls by subscribing to all items at once. Also shows a possibility how to write to an OPC item from the screen.
  • Added UALiveBindingDemo2 example in C#: Shows advanced live binding features in OPC UA. Among others, it demonstrates binding kinds (binding to local vs. UTC timestamp), conversions (use of LinearConverter, even bi-directionally), animations (moving a control around the form, depending on an OPC tag value), and cumulative binding (Adding incoming values to ListBox or ListView).
  • Added UALogAsStringToSql example in C#: Logs OPC Unified Architecture data changes into an SQL database, using a subscription. Values of all data types are stored in a single NVARCHAR column.
  • Added UALogAsUnionToSql example in C#: Logs OPC Unified Architecture data changes into an SQL database, using a subscription. Values of different data types are stored in separate columns.
  • Added UASubscribeFromXml example in C#: Loads a list of OPC Unified Architecture items from an XML file and subscribes to them.
  • Added UAXmlLogger example in C#: Logs OPC Unified Architecture data changes into an XML file.
  • Added UAXmlEventLogger example in C#: Logs OPC UA Alarms&Conditions event notifications into an XML file.
  • 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 showing how to observe OPC UA data with absolute deadband.
  • Reactive Programming: Added an example showing how to observe OPC UA data with percent deadband.
  • 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.