What's new in QuickOPC 2017.1

From OPC Labs Knowledge Base
Jump to navigation Jump to search

Previous: What’s New in QuickOPC 2016.2 (5.41)

Internal version number: 5.50

Key changes:

  • Live Binding for WPF
  • Excel Real Time Data
  • Connectivity Explorer Tool


  • .NET Framework 4.6.2 added to the official list of supported frameworks.
  • .NET Framework 4.7 added to the official list of supported frameworks.

OPC Compliance Certification

  • The product has been re-certified by OPC Foundation Certification Testing Laboratory for OPC UA compliance, by the means of its Connectivity Explorer tool. Note that due to the fact that the certification has been done with the product that has already been released, the billboard in the standalone installer still refers to the older certification.


  • In licenses issued from release date of version 2017.1 onwards, COM platform (API) is no longer licensed in the Standard edition. To be absolutely clear, this change affects how QuickOPC is used (called). It does not refer or relate to COM usage in OPC specifications; "Classic", COM/DCOM-based OPC Data Access is still licensed in the Standard edition.
  • In licenses issued from release date of version 2017.1 onwards, OPC Alarms&Events is no longer licensed in the Standard edition.
  • In licenses issued from release date of version 2017.1 onwards, OPC XML-DA is no longer licensed in the Standard edition.


  • Updated to newer BoxedApp SDK: 2017.3.
  • Updated to newer Inno Setup: 5.5.9.

Installation and Uninstallation

  • New "Command Prompt From Here" links are now being installed into the product folder, JScript Examples in WSH, PHP Console Examples, and VBScript Examples in WSH folders. These links allow the user to quickly start a CMD window with the current directory set to the chosen place, for quick experiments and exploration.
  • The Production installer has been extended by a 'productionexcel' setup type, and by an 'options\excel' component.
  • The Production installer now supports a new /LicenseFile2 switch. This can be used to install a second license file.
  • The type libraries that were earlier installed under Lib subdirectory have now been moved to SDK\lib.

Component Improvements

  • Performance improvements (throughout the supported OPC specifications) in event notification/callback pipeline.
  • Improved resiliency of EasyDAClient, EasyAEClient, EasyUAClient components against user's code failures in event handlers and callbacks. Exceptions in event handlers and callbacks are now caught closer to the source, eliminating or limiting their ability to destabilize the client engine.

Component Improvements (OPC UA)

  • Added UANetworkDiscoveryQuery object, and [I]EasyUAClient.DiscoverServersOnNetwork methods, for discovering servers on a multicast subnet using LDS-ME (this has been an experimental feature in version 2016.2).
  • When writing to nodes of OPC UA data types Integer, Number or UInteger (or their arrays), you no longer have to specify the data type explicitly. If you do not specify the data type, the component will now use the widest type available (by default).
  • When writing to nodes of OPC UA data types Integer or UInteger (or their arrays), when the data type is not specified explicitly, the component will now use the narrowest type available when you set the new UAClientSessionParameters.WriteNarrowestIntegerType property to 'true'.
  • When writing to nodes of OPC UA data types Number (or their arrays), when the data type is not specified explicitly, the component will now use the narrowest type available when you set the new UAClientSessionParameters.WriteNarrowestRealType property to 'true'.
  • When writing GUID-typed values in OPC UA, you can now pass in a string as well (not just System.Guid); the string will be parsed and converted to a GUID.
  • For array values, the DAVtq.DisplayValue and UAAttributeData.DisplayValue methods now display a list of array dimensions (in angular brackets), and a (possibly shortened) list of array elements. The previous behavior displayed just a type name, but no actual values.
  • Added ShortDiscoveryUrl property to EndpointDescriptor (for OPC Classic). The short string is formed by removing the CLSID part, if both the ProgID and the CLSID are present.
  • Added UADiscoveryParameters.ReturnSameSites property. When set to true, the network addresses in endpoint URLs returned from discovery will be replaced by that of a discovery endpoint.
  • Added UAEndpointSelectionPolicy.EnforceSamePort property (defaults to 'true'). When enabled, replaces the port number in the selected endpoint by the value used for discovery. The semantics of the existing UAEndpointSelectionPolicy.EnforceSameSize property has been changed so that it now also applies to the host name part.
  • Added UAClientSessionParameters.MaximumReferencesPerBrowseNode property. It determines the maximum of references the server has to return per browse node, or is zero for no limitation.
  • In OPC UA stack configuration, the default value for MaxArrayLength has been increased from 65535 to 655350 (ten-fold). Consequently, for counts up to several hundred thousands of items, developers will not have to resort to custom OPC UA stack configurations.
  • The component now automatically reads certain nodes from the ServerCapabilities object, interprets them and acts accordingly:
    • OperationLimits.MaxNodesPerRead is used to split larger Read operations so that the server can handle them.
    • OperationLimits.MaxNodesPerWrite is used to split larger Write operations so that the server can handle them.
    • Sampling intervals smaller than MinSupportedSampleRate are clamped to this value.
  • The UAEngineParameters now contains an additional boolean property RestrictToSupportedTypes (defaults to 'false', but is set to 'true' in OpcCompliant settings). When 'true', reads, writes and subscriptions are restricted to types that are fully supported, and return an error with corresponding description otherwise. Note that the additional data type checks may have negative impact on the performance.
  • Improved error message in UAServiceException, now providing service result information in form of a status code (symbolic, if available; numeric otherwise), and an information about the inner result, if present.

Component Improvements (COM Platform)

  • The default COM interfaces now consistently contain the Clone method, wherever applicable.

Component Refactorings

  • Changed type of public properties derived from HashSet<> to Collection<>, in order to facilitate XAML serialization. This affects: UAEndpointDiscoveryQuery.DiscoveryUriStrings, UANetworkDiscoveryQuery.ServerCapabilityFilter, UAApplicationElement.ServerCapabilities, UAQueryServersFilter.ServerCapabilities, UACertificateAcceptancePolicy.TrustedEndpointUrlStrings (used in EasyUAAdaptableParameters.CertificateAcceptancePolicy), UAHostParameters.DiscoveryUriTemplateStrings, and UABrowseParameters.ReferenceTypeIds (here, a new UANodeIdCollection type has been introduced). The collections (as opposed to sets) allow duplicate entries, but we have made sure that duplicates are properly merged (and thus do not cause any harm) wherever the value is interpreted.

User Interface

  • When the user edits a User Identity on the OPC UA endpoint node, a Refresh of the node occurs automatically and immediately, with the new settings in effect.
  • Added Duplicate Endpoint Node (for OPC UA) and Duplicate Server Node commands to the context menu on endpoint or server nodes, respectively.
  • Added IncludeProperties property to UABrowseMode and UADataDialog. Determines whether Property nodes will be included in browse results.
  • Added a context menu with Reset command to all property grids in Windows Forms. This commands allows the user to reset the selected property to its initial value.
  • Most "Standard Name" items in property grids now offer a drop-down list with standard values to choose from.
  • Added explanatory tooltips to various nodes in browse controls and dialogs.

Live Binding

  • In the Binding Collection Editor (in Windows Forms), it is now possible to view and modify the design-time properties of each binding: The name (Name) used in code to identify the object, whether a member variable will be generated for the component (GenerateMember), and the visibility level of the object (Modifiers).
  • It is now possible to "subscribe" to OPC-DA property points (DAPropertyPoint). Because OPC "Classic" properties do not support subscriptions and we do not emulate them, this operation behaves as a single "get" of the property value.
  • It is now possible to expand and edit the Point property of a binding and its sub-properties directly in the Binding Collection Editor, without necessarily having to invoke the Point Editor dialog (and switch to its Properties tab) for that. This makes the manual/bulk editing scenarios easier.

Live Binding for WPF

  • It is now possible to use the Live Binding features also in Windows Presentation Foundation (WPF) applications.

Excel Real Time Data

  • An RTD server is now included with the product. This allows Excel users to retrieve OPC data in real time. Our server is called Connectivity RTD Server.
  • RTD function topics can be written manually in short, "friendly" format in most cases. Alternatively, for fine-grained settings of all possible parameters, an XML-based topic format is available.
  • The Connectivity Explorer application makes it easy generate cells with RTD references. Single cell, or a range of cells can be transferred from Connectivity Explorer to Excel using copy-and-paste od drag-and-drop, and the corresponding RTD syntax will be created automatically.
  • Supported OPC specifications are OPC Data Access, OPC XML-DA and OPC Unified Architecture (Data).
  • Besides just values, it is possible to address timestamps, qualities, associated error message, and other useful information that comes with the data. It is also possible to access OPC properties.
  • By appending a source cell reference to the list of RTD function arguments, it is possible to achieve writing, also without any programming. The RTD server will write the value from the referenced cell into the OPC server automatically whenever it changes.
  • Wide range of data types is supported; conversions are made automatically to achieve interoperability with Excel.


  • For Visual C++ developers, we now install a header file with #import and #define directives referencing QuickOPC type libraries. The file name is QuickOpc.h and is located in the SDK\include subdirectory. Including this header file gives you immediate access to all types defined in the QuickOPC type libraries. It is recommended that you put #include "QuickOPC.h" directive at the beginning of your C++ files, or into your "stdafx.h" file. You may also have to either copy the file to the directory you want, or add the path to SDK\include to your Visual C++ include directories. The Visual C++ examples have been all shortened by #include-ing this file.
  • Added assemblies to support Live Binding for WPF; the main new assembly is OpcLabs.BaseLibPresentation. There are also several accompanying design-time and contract assemblies.
  • Added NuGet packages with console-based examples in C# and VB.NET (from DocExamples and UADocExamples projects). The package names are OpcLabs.QuickOpc.Sample.CS and OpcLabs.QuickOpc.Sample.VB.


  • Added About command (and a descriptive About box) to the Launcher (as a button on the main form, and a command on the system menu). The About box also contains a System Info button, making it easy to obtain computer-related information that may useful for troubleshooting.

Connectivity Explorer

  • The Connectivity Explorer application allows the user to navigate through hierarchy of OPC Data Access and OPC Unified Architecture servers and data nodes. The user can subscribe to data changes, and view the results live.
  • Individual points, or a selected set of points, can be read or written to.
  • Selected data can be transferred to Excel, where it continues to stay subscribed, giving cell values that are dynamically updated with live OPC data.
  • Point parameters can be edited before a subscription, read or write is made.
  • Multiple points can be easily subscribed to at once, using the "Bulk Add" command.
  • The live view can be turned online/offline with a single push of a button.
  • Single cell, or any range of cells can be copied to clipboard and pasted to other programs.
  • Data can be copied to clipboard either statically, using their current value, or (for Excel) dynamically, using RTD function (see Excel Real Time Data).
  • The currently displayed list of points can be saved to an XML file, or retrieved from a file.
  • Various connectivity options can be configured, and the configuration can be in turn used when the same data is accessed by Excel.


  • Enhanced the documentation to describe how Live Binding can be used in WPF applications.
  • A documentation for the OpcLabs.BaseLibPresentation assembly added to the reference part of the documentation.


  • Added many C# and VB.NET examples showing the various ways in which the OPC UA node IDs can be constructed.
  • More (OPC UA) Delphi examples (earlier just in Reference) added right into the conceptual documentation.
  • Added COM example (ReadMultipleItems) in Visual C++ 6.0 (Visual Studio 6.0). See Using QuickOPC from Visual C++ 6.0 for more/related information.
  • Reorganization - for example, some very small standalone projects have been moved into the DocExamples project.
  • Thanks to an improvement in DAVtq.DisplayValue and UAAttributeData.DisplayValue methods, the demo applications now display array values better. Array values are now displayed as a list of array dimensions (in angular brackets), and a (possibly shortened) list of array elements. The previous behavior displayed just a type name, but no actual values.

Removed Parts

  • Removed the obsoleted DABinder and UABinder components, and everything that related to them. Use PointBinder instead.
  • Removed the obsoleted OPCDataNETEngine component (Software Toolbox OPC Extender replacement).
  • Removed the obsoleted "OPC Foundation White Papers" from the bonus material.

See also: Versions