What's new in QuickOPC 2022.1: Difference between revisions

From OPC Labs Knowledge Base
Line 136: Line 136:
* Added a VBScript example showing how to connections to and disconnections from the OPC UA server, using the {{Style=Identifier|IEasyUAClientConnectionMonitoring}} service and the event pull mechanism.
* Added a VBScript example showing how to connections to and disconnections from the OPC UA server, using the {{Style=Identifier|IEasyUAClientConnectionMonitoring}} service and the event pull mechanism.
* Added a VB.NET example showing how to store current state of the subscribed items in a dictionary.
* Added a VB.NET example showing how to store current state of the subscribed items in a dictionary.
* Added a C# example showing how to obtain "data nodes" under the "Objects" node, recursively.
<!--
<!--
== OPC UA PubSub ==
== OPC UA PubSub ==

Revision as of 13:44, 21 February 2022

See also: Versions; Previous version: What's new in QuickOPC 2021.3

Internal version number: 5.63

Key changes:

  • Initial support for .NET 6.0


Targeting

  • .NET 6.0 is now a supported .NET runtime. Note: When you develop for .NET 6, 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.
  • Maximum supported Windows 10 version is now 21H2.

Licensing

  • The default format of the distributed license key file is now .TXT (Base64 encoded), instead of .BIN. This is intended to prevent issues with mail/antivirus filters which sometimes reject to let through binary files. License Manager accepts the .TXT format since version 2018.2.

Component Improvements

OPC Classic

  • Added ComSecurityParameters.EnsureDataIntegrity property (defaults to false). You can set this property in ComManagement.Instance.Configuration.SecurityParameters. When true (and ComSecurityParameters.UseCustomSecurity is also true, which is the default), it sets the security so that COM verifies that none of the data transferred between client and server has been modified, by specifying RPC_C_AUTHN_LEVEL_PKT_INTEGRITY for the authentication level. Using this authentication level might be necessary on systems with hardening changes for CVE-2021-26414 vulnerability. For related guidance, see COM management.
  • It is possible to enforce early initialization of COM security by calling ComManagement.Instance.AssureSecurityInitialization(). The ComManagement.Instance.AssureSecurityInitializationAndRunOnStaThread method makes it easier to rewrite programs that were originally written to start on an STA thread, but had to be switched to an MTA thread in order to avoid premature COM security initialization.
  • Added ComSecurityParameters.AllowImpersonateClient property (defaults to false). Controls whether the the server is allowed to impersonate the client.
  • COM security initialization success or failure is now logged through the EasyDAClient.LogEntry or EasyAEClient.LogEntry events.
  • COM security initialization success or failure events are now written to the system log. This can be turned on/off by the ComManagement.Instance.LogToSystem property.
  • COM configuration can now be set externally to the program, using Intrinsic Component Configuration.
  • The DANodeDescriptor and AENodeDescriptor classes have been extended by a BrowsePathStartingNodeDescriptor property. This allows to specify a node other than the root node as a starting node for the browse path.
  • Added HasBrowsePath and HasNodeId properties to the DANodeDescriptor and AENodeDescriptor classes.
  • Enhanced error messages.

OPC UA Client-Server

  • Added StartingNodeDescriptor property to the UABrowsePath. This is a generalization of the existing StartingNodeId property, allowing the starting node be specified not just by its node ID, but by any node descriptor (which can then contain a browse path, etc., recursively).

OPC UA PubSub

  • Added ability to load and resolve PubSub configurations from Web resources, using FTP, HTTP or HTTPS.
  • Added UADataSetData.FieldDataDictionaryById property. When metadata is available, this property contains field data for each field in the dataset, keyed by the dataset field Id (a GUID).
  • Added Origin property to the UADataSetHeader (and therefore also to the derived UADataSetData) class. The property contains origin of the dataset. The type and semantics of the origin depends on the transport used. For example, it is a string containing topic name in MQTT transport.
  • Replaced the EasyUASubscribeDataSetFieldArguments.FieldName property by a DataSetFieldDescriptor property, which can contain either a field name, or a dataset field Id (a GUID). Also, the various overloads of the IEasyUASubscriberExtension.SubscribeDataSetField method now take the UADataSetFieldDescriptor object as an input, instead of just the field name. Implicit conversions exist from a string (representing the field name) or a GUID (representing the dataset field Id) to the UADataSetFieldDescriptor.
  • Added recognition of cases when a JSON message is being parsed as UADP, or vice versa, and generate specific errors with messages properly identifying the cause of the problem.
  • In JSON message mapping, added support for DataSetWriterName and ReversibleFieldEncoding flags, introduced in OPC UA specification 1.05.01.

COM Components

  • Updated QuickOpc.h include file (Microsoft C++) for use with ISO C++ 20 Standard.

Services

  • Added the IEasyUAClientConnectionControl service on the EasyUAClient component (Professional Edition and higher). It provides methods to control the OPC UA client connections to the server, and contains methods like LockConnection and UnlockConnection. When the connection is locked, the component will attempt to open it and keep open, and will not automatically disconnect from the server after the connection is unused for certain time. The service is also available via COM, as _EasyUAClientConnectionControl interface. In .NET, it is also possible to use the DisposableLockConnection extension method, which works nicely with "using" statements in C# and VB.NET.
  • Added the IEasyUAClientNodeRegistration service on the EasyUAClient component (Professional Edition and higher). It provides methods to register and unregister nodes, using the corresponding OPC UA services. Node registration (with OPC UA servers that support it) can improve performance with repeatedly accessed nodes. The service is also available via COM, as _EasyUAClientNodeRegistration interface.

Component Refactorings

OPC Classic

  • Properties ExecutionContext and TurnOffActivationSecurity have from EasyMachineParameters (for OPCEnum operations) and EasyClientParameters (for target OPC server operation) have been moved into a new class, ComInstantiationParameters, and a corresponding ComInstantiationParameters property has been added to the EasyMachineParameters and EasyClientParameters classes.
  • The effective COM instantiation parameters are now determined by taking the value from ComManagement.Instance.Configuration.InstantiationParameters, and possibly overriding them by values from EasyXXClient.SharedParameters.ClientParameters.ComInstantiationParameters, or EasyXXClient.SharedParameters.MachineParameters.ComInstantiationParameters.
  • Properties UseCustomSecurity and TurnOffCallSecurity have been moved from EasyMachineParameters (for OPCEnum operations) and EasyClientParameters (for target OPC server operation) and merged into a single set of properties in a new class, ComSecurityParameters, available in the ComManagement.SecurityParameters property.

OPC UA

  • The ServerConditionChanged event, previously available on the IEasyUAClient interface, has been moved to a new service, IEasyUAClientConnectionMonitoring, available from the EasyUAClient component. The service is also available via COM, as _EasyUAClientConnectionMonitoring interface.

OPC UA PubSub

  • The ResolverDescriptor property has been moved from the UASubscribedataSetArguments class to the UADataSetSubscriptionDescriptor class.

User Interface

  • In OPC UA browse controls and dialogs, when an endpoint configuration has been changed from its initial state (e.g. when the user has modified the user identity, or the endpoint selection policy), the OPC UA endpoint icon now indicates that by showing an additional overlay in the upper left corner.
  • Object editor dialogs now contain a ">>> More" checkbox in the tab header area. When checked, an additional Serialization tab is shown. The Serialization tab shows how to create currently the edited object, including all its configured content, in C# and VB.NET.
  • Added Origin field to the OPC UA PubSub dataset header and dataset data controls.

Tools and Online Services

Connectivity Explorer

  • The Connectivity Explorer now has a node for OPC UA PubSub, and it allows the user to browse the relevant parts of the Publish/Subscribe model in the servers, selected dataset fields form published datasets, and display their values in the Live Point Data view.
  • In various property grids, the property name in the description area is now clickable (underlined), and shows a contextual online help associated with that property. Also, a Help command has been added to the context menu on the property grids.
  • Added Lock Connection action on OPC UA endpoints. It allows the user to lock or unlock the connection to the specified endpoint, assuring that the component will attempt to keep the connection open until unlocked. Endpoints nodes with locked connections are marked with a little "lock" overlay icon.
  • Added a little overlay icon to OPC UA endpoint nodes that are "dirty", i.e. modified from their original state (e.g. their endpoint selection policy, or user identity, has been changed by the user).

Demo Servers and Publishers

OpcCmd Utility

  • Using the new --!inputFile|--!if <fileName> command option, it is now possible to switch the tool input to the specified file.
  • The .opccmd file extension is now associated with executing the file using the OpcCmd utility.
  • Added uaClient getService uaClientConnectivityControl command, with lockConnection and unlockConnection subcommands.
  • Added uaClient getService uaClientNodeRegistration command, with registerNode and unregisterNode subcommands.
  • Added interopServices comManagement command, allowing the user to view and change the COM configuration, and assureSecurityInitialization subcommand.
  • Added --OutputFieldsById|-ofbi option to the uaSubscriber subscribeDataSet command. When used, the fields in the dataset messages are outputted with their dataset field Ids, instead of field names.
  • Added --DataSetFieldId|-dsfi <guid> option to the uaSubscriber subscribeDataSetField command. The option allows to specify the dataset field Id (a GUID) of the field to be subscribed to (as an alternative to specifying the field name), when metadata is available.
  • More dense output of trace entries, by shortening the trace event type column to a 3-letter symbol.

Examples

OPC UA Client-Server

  • Added a C# example showing how to lock and unlock connections to an OPC UA server, using the new IEasyUAClientConnectionControl service.
  • Added a C# example showing how to register an unregister nodes in an OPC UA server, using the new IEasyUAClientNodeRegistration service.
  • Added a VBScript example showing how to connections to and disconnections from the OPC UA server, using the IEasyUAClientConnectionMonitoring service and the event pull mechanism.
  • Added a VB.NET example showing how to store current state of the subscribed items in a dictionary.
  • Added a C# example showing how to obtain "data nodes" under the "Objects" node, recursively.