What’s New in QuickOPC 5.21

From QuickOPC Knowledge Base
Jump to: navigation, search

Previous: What’s New in QuickOPC-Classic 5.20

Key changes:

  • QuickOPC-Classic Installation Merged with QuickOPC-UA
  • Introduced Browsing Dialogs for OPC-UA
  • Live Binding and Live Mapping for OPC-UA


Installation

  • The QuickOPC-Classic (.NET and COM) and QuickOPC-UA are now merged into one installation package.
  • OPC Core Components Redistributable updated to version 3.00.105.1 (resolves some OPC server enumeration problems on x64 platform).
  • The installation package file is now code-signed, increasing security, improving trust, and providing better download experience from the Web. We use COMODO Code Signing CA 2 certificate.

Technology

  • Built with Visual Studio 2012 Update 1.
  • Due to OPC UA SDK requirements, the minimum platform requirement for QuickOPC-UA is now.NET Framework 3.5 Service Pack 1 “Full”. For QuickOPC.NET, the “Client Profile” is still sufficient.

Licensing

  • A single license can now cover all products or subset of them (QuickOPC-COM, QuickOPC.NET, QuickOPC-UA).
  • Added a LicenseInfo property to EasyDAClient, EasyAEClient, EasyUAClient components. This property allows the developer to retrieve or view all parameters of the installed and recognized license (useful for troubleshooting licensing issues).
  • A viewer form is provided for LicenseInfo in the designer.

Development Tools Integration

  • QuickOPC-UA assemblies are now also using Microsoft Code Contracts, their contract assemblies are shipped with the product, and the contracts are visible in the reference documentation.
  • QuickOPC-UA components are automatically installed into the Visual Studio toolbox.
  • Improved member name selection in Visual Studio (applies when you are selecting a target member for value binding, or when selecting a source event). The new member name editor shows different icons for different member kinds, annotates the members with number of overloads if needed, shows member information (such as type, and description) in the tooltip, allows filtering (e.g. Properties, Event, Methods, Fields), alphabetical or categorized view, and reverting to default member.

Here is how it may look like for selecting target members:

5.21-selectingtargetmembers.png

Here is how it may look like for selecting source events:

5.21-selectingsourceevents.png
  • In Visual Studio, wherever a property represents a time span (in milliseconds), an editor is provided that allows entering the value comfortably:
5.21-timespaneditor.png

Development Models

  • The Live Binding model, previously available for OPC-Classic only, is now also supported for OPC-UA.

With Live Binding, no manual coding is necessary to obtain OPC connectivity. You simply use the Visual Studio Designer to configure bindings between properties of visual or non-visual components, and OPC data. All functionality for OPC reads, writes, subscriptions etc. is provided by the QuickOPC components. The live binding model is allowed by a combination of the existing BindingExtender component, and a new UABinder component.

  • The Live Mapping model, previously available for OPC-Classic only, is now also supported for OPC-UA.

The Live Mapping model allows you to write objects that correspond logically to a functionality provided by whatever is “behind” the OPC data. For example, if part of your application works with a boiler, it is natural for you to create a boiler object in the code. You then describe how your objects and their members correspond to OPC data – this is done using attributes to annotate your objects. Using Live Mapping methods, you then map your objects to OPC data, and perform OPC operations on them. When you subscribe to or read from OPC attributes, incoming OPC value changes can directly set corresponding properties in your objects, without any further coding. You can then focus on writing the code that handles these property changes, abstracting away the fact how they come in. To give a concrete example, here is a piece of code of a .NET object annotated for live mapping with OPC Unified Architecture, in C#:

    [UAType]
    class BoilerInputPipe
    {
        [UANode]
        public FlowTransmitter FlowTransmitter1 = new FlowTransmitter();

        [UANode]
        public Valve Valve = new Valve();
    }
 
  • The Reactive Programming model, previously available for OPC Data Access only, is now also supported for OPC Unified Architecture data. The UAMonitoredItemChangedObservable class serves as push-based notification provider for changes in OPC-UA monitored items. The UAWriteValueObserver is a push-based notification receiver that writes incoming values into an attribute of an OPC-UA node.
  • The Reactive Programming model, previously available for OPC Data Access only, is now also supported for OPC Alarms&Events. The AENotificationObservable class serves as push-based notification provider for OPC-A&E notifications. The AEAcknowledgeConditionObserver is a push-based notification receiver that acknowledges OPC-A&E conditions.

Components

  • New: EasyDAClientConfiguration component allows you to use Visual Studio designer to configure the static properties of EasyDAClient object, such as the security parameters, reconnect and topic retrial delays, etc.
  • New: EasyAEClientConfiguration component allows you to use Visual Studio designer to configure the static properties of EasyAEClient object, such as the security parameters, reconnect delays, buffer size, etc.
  • The DAItemDialog component now retains the filter setting for each node between the invocations of the dialog, making it faster for the user to navigate during the subsequent invocations.
  • Using the MultiSelect property, the DAItemDialog can now be switched to a multi-selection mode, allowing the user to add multiples nodes to the selection set, or remove them; the selected set is carried over to next invocation as well:
5.21-multiselect.png
  • The OpcBrowseDialog component has been extended by an ability to browse OPC-DA access paths, using a new an additional element type (DAAccessPath).
  • The EasyUAClient component is now automatically installed into the Visual Studio Toolbox.
  • QuickOPC-UA is now based on OPC UA SDK 1.01 .NET Stack 333.0 Stable.
  • QuickOPC-UA now allows specifying the user identity to be used by the client, either by anonymous token, user name and password, X.509 certificate, or Kerberos (issued) token. The UAClientSesssionParameters object now has a UserIdentity property with necessary information for this.
  • It is now possible to call (invoke) methods inside OPC-UA servers, and pass input and output arguments to/from them, using EasyUAClient.CallMethod or EasyUAClient.CallMultipleMethods.
  • It is now possible to browse for methods in OPC-UA servers, using one of EasyUAClient.BrowseMethods overloads. The method nodes can also be included in more generic EasyUAClient.BrowseNodes browsing, with the inclusion of UABrowseParameters.Methods in the parameters.
  • An EasyUAClient.BrowseVariables method now allows browsing for OPC-UA variables, i.e. data variables or properties at one. In order to line up better with the proper OPC-UA terminology, the original BrowseVariables method has been renamed to BrowseDataVariables.
  • For OPC-UA, the class for exceptions arising from OPC operations has been renamed from OpcException to UAException, in order to prevent clash with the OpcException class used in OPC “Classic”.
  • When performing a local discovery of OPC-UA servers, the component now attempts to connect to multiple possible discovery endpoints in parallel, speeding up the discovery. This behavior is controlled by the ParallelDiscovery property in the UAClientEngineParameters object.
  • New: EasyUAClientConfiguration component allows you to use Visual Studio designer to configure the static properties of EasyUAClient object, such as the user identity, certificate handling rules, endpoint selection policy, etc.
  • Introduced a browsing dialog for OPC-UA server endpoints, a UAEndpointDialog component:
5.21-uaendpointdialog.png
  • Introduced UAHostAndEndpointDialog component: A browsing dialog for choosing a host (computer) together with an endpoint of an OPC-UA server residing on it.
5.21-uahostandendpointdialog.png
  • Introduced a browsing dialog for choosing an OPC-UA data node, a UADataDialog component:
5.21-uadatadialog.png
  • Introduced a generic OPC-UA browsing dialog with various OPC-UA elements from which the user can select. This dialog, a UABrowseDialog component, can be configured to serve many different purposes.
5.21-uabrowsedialog.png
  • A new object, UANodeDescriptor, is now used at most places where UANodeId has been used previously. The UANodeDescriptor contains the NodeId as a property. The reason for this change is to allow a parallel placement of browse paths into node descriptors. There are conversions and conversion operators (including implicit conversions) between these classes, so most code can remain without change.
  • Individual or combined parts of UANodeId can now be separately retrieved or modified by their corresponding properties, such as ExpandedText, Identifier, NamespaceUriString, NodeIdType, etc.
  • Individual or combined parts of UAQualifiedName can now be separately retrieved or modified by their corresponding properties, such as ExpandedText, Name, and NamespaceUriString.
  • Instead of MaximumAge property, previously available directly on the UAReadArguments object, you now need to go one level deeper, and use MaximumAge property of UAReadArguments.ReadParameters instead.
  • There is now a new ClientMode member on the EasyUAClient object. Its Isolated property, when set to true, allows the connections made by using this particular instance of EasyUAClient be separate from others.
  • Added new (in some cases, just documented existence of) static classes with standard OPC-UA Node IDs: UADataTypeIds, UAMethodIds, UAObjectIds, UAObjectTypeIds, UAReferenceTypeIds, UAVariableIds, and UAVariableTypeIds.
  • Extension method UAApplicationType.IsServer combines recognition of Server and ClientAndServer application types.
  • Extension methods on UANodeElement allow finer categorization of nodes returned by browsing, e.g. IsDataVariable and IsProperty test whether a given node is a Data Variable or a Property.
  • Added possibility to serialize and deserialize practically all QuickOPC-UA objects (and their collections and dictionaries) using Serializable attribute and/or ISerializable interface. This serialization type is typically used with BinaryFormatter for storing objects in a binary format.
  • Added possibility to serialize and deserialize practically all all QuickOPC-UA objects (and their collections and dictionaries) using XmlSerializer and IXmlSerializable. This serialization provides objects storage in XML format.
  • New properties UseCustomSecurity and TurnOffCallSecurity in EasyMachineParameters (for connections to OPCEnum) and in EasyDAClientParameters and EasyAEClientParameters objects (for connections to OPC-DA and OPC-A&E servers) allow finer settings of COM security parameters.
  • The DefaultInstance property (in various objects) has been renamed to SharedInstance.
  • It is now possible to assign own parameter objects to the static and instance properties of EasyAEClient, EasyDAClient and EasyUAClient components. Previously, you could change properties of these parameters objects, but you could not assign a whole new parameter object to them.

Examples

  • Examples for QuickOPC-UA have been downgraded from Visual Studio 2010 to Visual Studio 2008, making it possible for users of Visual Studio 2008 to work with them easily.
  • Many examples in C# have been made available in VB.NET as well. This includes the DocExamples project (for OPC “Classic”) which contains examples that appear in the reference documentation.
  • QuickOPC-UA examples have been merged into common solutions with QuickOPC.NET Examples.
  • The EasyOPC-UA Demo Application now makes use of the browsing dialog for OPC-UA endpoints and data nodes.
  • Added UALiveBindingDemo example: Shows live binding of OPC Unified Architecture information (from sample OPC server) to standard Windows Forms controls (Microsoft). All binding to OPC-UA data is achieved with no manual coding, only by configuring the components in Visual Studio.
  • Added simple ConsoleApplication1 example in Visual F#.

Tools

  • The EasyOPC Options Utility now allows configuring specific COM security parameters for OPCEnum and OPC server connections.

Documentation

  • The conceptual documentation for all QuickOPC products (QuickOPC-COM, QuickOPC.NET and QuickOPC-UA) is now merged into one document.
  • The reference documentation for .NET products (QuickOPC.NET and QuickOPC-UA) is now merged into one package.
  • The reference documentation for QuickOPC.NET now contains VB.NET examples, alongside the (pre-existing) C# examples.

Packaging

  • For OPC-UA, there are new assemblies, EasyOpcUAExtensions, EasyOpcUAForms, and EasyOpcUAInternal. In your OPC-UA projects, it is now almost always necessary to explicitly reference the EasyOpcUAInternal assembly, as well as the BaseLib and BaseLibExtensions and assemblies.
  • Various types have been moved from EasyOpcClassic assembly to the EasyOpcClassicInternal assembly. For OPC “Classic” usage, it is now almost always necessary to explicitly reference the EasyOpcClassicInternal assembly, as well as the BaseLib and BaseLibExtensions and assemblies.

Licensing

  • Also QuickOPC-UA licenses now contain information about software version numbers covered, and a software release date covered, for easier maintenance coverage.