What's New - OPC Data Client 2021.1 (5.60)
Key changes: - Initial support for .NET 5.0 - Support for macOS - OPC A&E under .NET Standard
Release notes/details for Version 2021.1/5.60 - Download the latest version of OPC Data Client here
Internal version number: 5.60
Related links
- Current System Requirements
- General Upgrading Best Practices & Guidance
- Upgrade Guidance for Version 2021.1
- Product documentation
Targeting
- .NET 5.0 is now a supported .NET runtime. Note: When you develop for .NET 5, use .NET Standard 2.1 as target framework. Windows-specific technologies (Windows Forms, WPF) and features that depend on them (Live Binding, Browse Dialogs and Browse Controls, ...) are not yet supported.
- QuickOPC now runs and is supported on macOS (in .NET Core 2.1, .NET Core 3.1 or .NET 5.0+, targeting .NET Standard). Features supported are practically the same as for Linux. Most importantly: Supports only OPC XML-DA and OPC Unified architecture (no OPC Classic).

- Removed upper revision number restriction on supported .NET Core 2.1 and .NET Core 3.1 frameworks.
- Verified functionality under Raspberry Pi OS.
- OPC Alarms and Events (A&E) is now supported under .NET Standard; on Windows only.
Packaging
- In .NET Framework, there is now a dependency on various assemblies from Microsoft Platform Extensions. These assemblies are also installed into the Assemblies/net47 folder. QuickOPC NuGet packages properly reference the corresponding Microsoft Platform Extensions NuGet packages (they do not contain the individual referenced assemblies). This increases the number of files you need to deploy. [1]
- Assemblies that are only used internally are no longer embedded inside the QuickOPC assemblies (this mechanism was used under .NET Framework to reduce the number of files that need to be deployed).[1]
When upgrading from earlier QuickOPC versions, you may have to add a reference to Microsoft.Extensions.Configuration.Abstractions and possibly also Microsoft.Extensions.DependencyInjection.Abstractions assembly (both available under Assemblies\net47 under the product installation directory) to your project. Affected are projects where the QuickOPC components have been instantiated by a code generated by Visual Studio designer, e.g. Windows Forms projects where you have placed some QuickOPC components from the VS Toolbox onto the design area. When instantiating new components in this way in QuickOPC 2021.1, the necessary assembly references are added automatically.
Component Improvements
- Added
FindByNamemethod toConfigurationPartCollection. The method allows finding the (plug-in) configuration part using just the unqualified name, and possibly ignoring the case.
OPC Classic
- Common errors related to server connection are now annotated with explanations and possible causes and remedies.
OPC Data Access and OPC XML-DA
- Many common errors are now annotated with details showing additional pieces of information that have relevance for the error, such as server class, machine name, item ID, property ID, data type, or browse filter.
- Errors created from OPC NET API results are now extended with descriptive error messages (for errors defined in OPC specifications).
OPC Alarms&Events
- It is now possible to specify
AEBrowseFilter.Allin browse parameters passed toIEasyAEClient.BrowseNodes, which allows you to obtain both sources and areas in one call.
OPC UA Client-Server
- Made many OPC UA error messages more dense, and their content more relevant to the problem.
- Textual description of OPC UA status code, based on a list of status codes defined in OPC UA specifications, is automatically added to the message, if the description was not provided by the server or SDK.
- Error messages related to operations on UA nodes are now annotated with the value of the node descriptor used (and, for method calls, also with the method descriptor).
- Greatly improved all error messages related to parsing of OPC UA node IDs and qualified names.
- The new OPC-UA Optimizer plugin improves performance of certain OPC UA operations. It is enabled by default.
- Calls to OPC UA Browse, Read and Write and GetProperty operations that contain identical (except for the State property) arguments are now merged to perform just a operation (request merging). This behavior can be turned off in the OPC-UA Optimizer plugin parameters.
- Added
ExportApplicationConfigurationmethod to theIEasyUAClientApplicationinterface. This method exports the application configuration data in the format used by the .NET SDK from OPC Foundation.
OPC UA PubSub
- Added
EasyUASubscriberConfigurationcomponent. Similarly to other such components, allows the static (shared) parameters of the subscriber be configured through a non-visual component in Visual Studio designer, or from COM tools.
Services
- Added
RemoveInstanceCertificatemethod toIEasyUAClientApplicationservice.
Component Refactorings
OPC Classic
ReadItemValueandReadMultipleItemValuesare now more strict: previously, they accepted any VTQ that had value in it. Now it requires that the quality must be Good (i.e. they longer accept Uncertain qualities). This may be a breaking change.- Boxing of client-side OPC proxies/stubs is now also available in .NET Core (on Windows), not just in .NET Framework. This means that if your .NET Core application is using OPC Classic, it does not require "OPC Core Components" as a prerequisite.
- Further aligned the details of behavior between the native and NET API implementations of OPC DA client, especially in the browsing methods.
OPC XML-DA
- Increased default sizes used in HTTP binding so that communication limits are not exceeded with larger number of items.
OPC Alarms&Events
- Added overloads with more combinations of parameters to
IEasyAEClientExtension.SubscribeEvents, and toAEEventsSubscriptionArgumentsandAESubscriptionFilterconstructors.
OPC UA
- Certificate obtained from GDS is now also stored into the trusted peers certificate store.
- Improved exceptions from the global discovery client by wrapping them and adding a text explaining which operation has failed, and its main parameters.
- Introduced a new object,
UAApplicationManifest, which holds the application registration information together with data related to PKI administration, such as paths to the certificate stores used. - Replaced several properties in
UAClientApplicationParametersobject by a singleApplicationManifestproperty. Use the following table to upgrade your source code that uses theseUAClientApplicationParametersproperties:
| Old | New |
|---|---|
| ApplicationName | ApplicationManifest.ApplicationName |
| ApplicationUriString | ApplicationManifest.ApplicationUriString |
| ProductUriString | ApplicationManifest.ProductUriString |
| ApplicationCertificateSubject | ApplicationManifest.InstanceCertificateSubject |
| ApplicationCertificateStore | ApplicationManifest.InstanceOwnStorePath |
- Certificate store paths that were previously specified in
UACertificateAcceptancePolicyare now set in theUAClientApplicationParameters.ApplicationManifest, with slightly different property names.
User Interface
Windows Forms Dialogs
- Added
ClientSelectorproperty toDAItemDialogandDAPropertyDialogclasses. This property allows the developer to set the parameters of theEasyDAClientobject used to perform the browsing operations of the dialog.
Configuration and Instrumentation
- High-level Intrinsic Component Configuration: You can set parameters of main QuickOPC components externally (using e.g. environment variables, or appsettings.json files), and your software does not have to be prepared upfront.
- High-level programmatic component configuration: You can instantiate the components while passing them a configuration to use.
- Configuration of diagnostics switches and trace sources is now also possible using the XML ".config" file in .NET Core.
- Migrated most event tracing to the new event source mechanism, allowing finer control of the tracing and more distinguished contents in the traces.
- Made it possible to configure parameters of HTTP binding for OPC XML-DA in .NET Core/.NET 5.0+ using intrinsic configuration.
Tools and Online Services
- Made the OpcCmd utility and UADemoPublisher downloads available also for .NET Core 3.1.
- Made the OpcCmd utility and UADemoPublisher downloads available also for .NET 5.0.
OpcCmd Utility
- On first start in interactive mode, the OpcCmd Utility runs an automated application setup. The user is given a choice to select from standard application configurations, such as "OPC Compliance", "Interoperability", or "Testing - Insecure". The default choice is "OPC Compliance".
- Added
!application setupcommand, which either restarts the interactive application setup (choice of standard configuration), or it can be given a name of a standard configuration non-interactively. Added--applicationSetupoption to force the initial application setup on or off. - Added commands that allow operations on the (read-only) PubSub configuration.
- Added commands that allow operations on the (read-only) PubSub security key service.
- Added
aeClientcommand, providing access to OPC A&E functionality. Available subcommands arebrowseNodes,browseServers,getConditionState,subscribeEvents,queryEventCategoriesandquerySourceConditions. - Added ability to obtain browse results as a tree (with
--tree|-tcommand option). - Made OpcCmd utility available as ClickOnce application (in addition to existing formats).
- Structured values are, by default, outputted with a formatted dump of their properties.
- Sequences are now outputted as formatted, colorized tables.
- Added commands and options to allow influencing how values, sequences and forests are displayed.
- Improved usage examples in the utility.
- Added
ua nodeIdandua qualifiedNamecommands, with ability to look up standard names, and print out tables of standard OPC UA node IDs and qualified names. - Added
daClient browseAccessPathscommand. - Added commands that allow to interrogate the PubSub configuration model in the server.
- Added
... getService licenseInfoProvidercommand, withlicenseInfo?subcommand, for displaying license information. - Made OpcCmd option values case insensitive by default, and allowed the case sensitivity be controlled by using the property
Options.CaseSensitive. - Allowed enumerated names (in arguments and options) be abbreviated to an unambiguous prefix, shortening the command if the user prefers that. Whether abbreviations are allowed can be controlled by using the property
Options.Abbreviations. - Added command (
events?, shortened:ev?) to show the events collected during the last command. - Added command (
result?, shortened:r?) to show the result of the last command. - Added possibility to browse sequences element by element, controlled by the keyboard.
- Added commands (under
!diagnostics switches) to view the trace switches and obtain and modify their values (names?,infos?,getInfo,getValue,setValuesubcommands). - Added commands to display (
!diagnostics trace entries?) and clear (!diagnostics trace clear) the trace entries collected by the program. - Added standard subcommand to display trace entries collection during the last command (
traceEntries?, shortened:te?). - Added command to replay the collected trace to a selected listener (
!diagnostics trace entries? replayTo). - Added commands (under
!diagnostics sources) to view the trace sources and obtain and modify their associated values (names?,infos?,getInfo,getSwitchValue,setSwitchValuesubcommands). - In interactive mode, the console window is now automatically resized to a larger size. Added options to control the minimum window height and width.
- More colorized output.
- Added ability to configure the component parameters for OpcCmd externally, using environment variables, JSON files, INI files or XML files.
- Added option to view values as a tree of properties.
- Added option to view values as a nested table of properties.
- Added commands
aeClient manage,daClient manage,uaClient manageanduaSubscriber manage, allowing access (viewing and/or modifications) of static (shared) component parameters. - Added commands to manage plugin configurations:
plugin configuration parts?andplugin configuration part. - Added
getandsetcommands for easier work with properties of target objects. Added--propertyoption for setting the target properties on-the-fly. - Added
multiplesubcommands todaClient readItem,daClient subscribeItem,uaClient readanduaClient subscribecommands. The subcommands allow to perform the operation on the same item repeated specified number of times, and foruaClient readanduaClient subscribe, for specified or all node attributes. - Added
aeClient acknowledgeConditioncommand, with ability to select the condition to be acknowledged from events generated by the previoussubscribeEventscommand. - Event output (from various commands) now includes an incrementing event index with each entry.
- Added program options and command options to influence whether events are collected, and whether the collected events are cleared before the command is executed.
- Added
optioncommand to display or set program options, and--optioncommand option to set the program options for a duration of single command only. - Added
--!foregroundColorand--!backgroundColoroptions to the root command, allowing the user to choose the primary colors used on the console. - Added
uaAdministration pkicommand, with subcommands allowing work with certificate store groups, certificate stores, and individual certificates. It is possible to view their contents, import, export and remove certificates, copy and move them, and also easily trust a rejected certificate or reject a previously trusted certificate. - Added
applicationStoreGroupsubcommand underuaClientApplication, allowing to access the certificate store group for the OPC UA client application. - Added
exportApplicationConfigurationsubcommand underuaClientApplication. The command exports the application configuration in the XML format used by OPC Foundation UA .NET SDK. - Added
uaClientApplication getApplicationManifestcommand. The command displays information from the application manifest, i.e. the application registration information together with data related to PKI administration, such as paths to the certificate stores used. - Added
uaClientApplication exportApplicationManifestcommand. The command exports the application manifest into an XML file (in format specific to QuickOPC).
Connectivity Explorer
- Added "Remove Instance Certificate" command (on the "OPC Unified Architecture" connectivity node).
- ↑ Jump up to:1.0 1.1 Until this version, we have attempted to keep the number of product assemblies, and referenced assemblies that are not part of the shared framework, to minimum. We tried hard, but it was not really feasible to keep following this principle, if we wanted to move the product forward. We understand that deploying a larger number of assemblies can be a nuisance for some users, but believe us, we have not taken the decision lightly.