What's new in OPC Studio 2024.2: Difference between revisions
From OPC Labs Knowledge Base
(→OPC UA) |
|||
(23 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
[[Category:Documentation]] [[Category:Examples]] [[Category:Installation]] [[Category:Python]] [[Category:What's New]] | [[Category:Documentation]] [[Category:Examples]] [[Category:Installation]] [[Category:Object Aliasing]] [[Category:OPC Wizard]] [[Category:Python]] [[Category:User Authentication]] [[Category:What's New]] | ||
<div style="text-align: right; direction: ltr; margin-left: 1em;">See also: [[Versions]]; Previous version: [[What's new in OPC Studio 2024.1]]</div> | <div style="text-align: right; direction: ltr; margin-left: 1em;">See also: [[Versions]]; Previous version: [[What's new in OPC Studio 2024.1]]</div> | ||
Internal version number: 5.81 | Internal version number: 5.81 | ||
''Key changes: '' | ''Key changes: '' | ||
* | * New product: OPC Wizard | ||
* User Authentication Improvements | |||
<br/> | <br/> | ||
= Fundamentals = | |||
* Introduced a new product in the OPC Studio family: '''OPC Wizard'''. OPC Wizard a toolkit for rapid OPC UA server development. | |||
<!-- | <!-- | ||
= Nomenclature = | = Nomenclature = | ||
--> | --> | ||
Line 16: | Line 18: | ||
= Technology = | = Technology = | ||
* OPC UA Client-Server parts are now based on OPC Foundation UA-.NETStandard 1.5. | * OPC UA Client-Server parts are now based on OPC Foundation UA-.NETStandard 1.5.374.126. | ||
= Licensing = | = Licensing = | ||
* The {{Style=Identifier|LicenseInfo}} property on the main components now returns the dictionary alphabetically ordered. | * The {{Style=Identifier|LicenseInfo}} property on the main components now returns the dictionary alphabetically ordered. | ||
= Packaging = | |||
* There is a new NuGet package, '''OpcLabs.QuickOpc.Design''', which provides (part of) the design-time features. The package is marked as "development dependency", i.e. its assemblies will not be referenced by your project. | |||
<!-- | <!-- | ||
= Delivery = | = Delivery = | ||
--> | --> | ||
Line 42: | Line 45: | ||
* Added static property {{Style=Identifier|ObjectsStrict}} to the {{Style=Identifier|UABrowseParametersClass}}, and modified the behavior of the {{Style=Identifier|Objects}} static property. The {{Style=Identifier|ObjectsStrict}} static property now returns browse parameters according to strict interpretation of the OPC UA specification, and browses only the '''HasComponent''' references. The {{Style=Identifier|Objects}} static property uses a loose interpretation (needed for some non-compliant servers), and browses any '''HierarchicalReferences'''. | * Added static property {{Style=Identifier|ObjectsStrict}} to the {{Style=Identifier|UABrowseParametersClass}}, and modified the behavior of the {{Style=Identifier|Objects}} static property. The {{Style=Identifier|ObjectsStrict}} static property now returns browse parameters according to strict interpretation of the OPC UA specification, and browses only the '''HasComponent''' references. The {{Style=Identifier|Objects}} static property uses a loose interpretation (needed for some non-compliant servers), and browses any '''HierarchicalReferences'''. | ||
* Added a new overload of the {{Style=Identifier|IEasyUAClient}}.{{Style=Identifier|Browse}} extension method. The overload takes an endpoint descriptor, node descriptor, node classes, and reference type id as inputs. | * Added a new overload of the {{Style=Identifier|IEasyUAClient}}.{{Style=Identifier|Browse}} extension method. The overload takes an endpoint descriptor, node descriptor, node classes, and reference type id as inputs. | ||
* '''It is now possible to dynamically change the identity of the user on an existing connection (OPC UA session). This is sometimes called "user switching", and is done by defining the {{Style=Identifier|UserIdentity}} with an {{Style=Identifier|AliasName}} instead of a concrete user, and defining and later changing the corresponding alias value, using the methods on the {{Style=Identifier|AliasManagement}}.{{Style=Identifier|Instance}} object. More information: [https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/2024.2/User%27s%20Guide%20and%20Reference-OPC%20Studio/webframe.html#Dynamic%20User%20Identity%20Change.html Dynamic User Identity Change].''' | |||
* Added {{Style=Identifier|WithIdentityAlias}} extension method on the {{Style=Identifier|UAEndpointDescriptor}} object. The method returns the endpoint descriptor modified to use the specified alias name for the user identity, which is useful for dynamic user identity changes. | |||
* For a username token identity, added method and constructor overloads that allow to specify just the user name, providing a default (empty) password. | |||
* '''When using {{Style=Identifier|X509CertificateTokenInfo}} in {{Style=Identifier|UserIdentity}} to identify the user by a certificate, it is now possible to specify that the user certificate comes from the platform certificate store. The {{Style=Identifier|X509CertificateTokenInfo}} now contains a CertificateQuery object that specifies the criteria for selecting the certificate. When the {{Style=Identifier|SourceType}} property of the certificate query is {{Style=Identifier|File}}, the certificate is loaded from a file in the file system, and the {{Style=Identifier|FileName}} property contains the name of the certificate file. When the {{Style=Identifier|SourceType}} property of the certificate query is {{Style=Identifier|PkiStore}}, the certificate store is identified by the {{Style=Identifier|StoreLocation}} and {{Style=Identifier|StoreName}} properties, and the certificate search criteria are specified using the {{Style=Identifier|PkiFindType}} and {{Style=Identifier|FindValue}} properties. You can, for example, set {{Style=Identifier|FindByThumbprint}} as the {{Style=Identifier|PkiFindType}}, and specify the certificate thumbprint in the {{Style=Identifier|FindValue}} property.''' | |||
* QuickOPC now reads the {{Style=Identifier|Server}}.{{Style=Identifier|ServerCapabilities}}.{{Style=Identifier|MaxMonitoredItemsPerSubscription}} standard server variable, and when provided, it automatically creates and manages more subscriptions if needed (even if they have otherwise the same subscription parameters), so that it each subscription is only filled with the number of monitored items it can hold, but not more. This is especially useful with embedded (PLC) servers with limited capabilities. | |||
* Added {{Style=Identifier|MaximumMonitoredItemsPerSubscription}} property to {{Style=Identifier|UAEnhancedClientSessionParameters}}. When this property is set to -1 (the default), the client will determine the maximum number of monitored items in one subscription automatically, using the information provided by the server, or an internal algorithm. In absence of all other information, the maximum number of monitored items in one subscription is not limited (equals to {{Style=Identifier|Int32}}.{{Style=Identifier|MaxValue}}). When this property is set to a non-negative number, the client will use the value of the property as the maximum number of monitored items in one subscription. | |||
<!-- | <!-- | ||
== OPC UA Complex Data == | == OPC UA Complex Data == | ||
Line 98: | Line 107: | ||
* The "Administer OPC UA Application" now allows the user to specify Host names that go into the application instance certificate (used with applications that are Servers). | * The "Administer OPC UA Application" now allows the user to specify Host names that go into the application instance certificate (used with applications that are Servers). | ||
* The property grid on the "Application certificate" tab of the "Administer OPC UA Application" dialog now also has a dedicated row for the the Domain Component element of the certificate Subject Name. | * The property grid on the "Application certificate" tab of the "Administer OPC UA Application" dialog now also has a dedicated row for the the Domain Component element of the certificate Subject Name. | ||
== Windows Forms Dialogs == | == Windows Forms Dialogs == | ||
* Added {{Style=Identifier|LooseReferenceTypes}} property to the {{Style=Identifier|UADataDialog}} class. When {{Style=Keyword|true}} (the default), it causes the dialog to browse following very wide set of reference types, in order to cope with non-compliant servers. | * Added {{Style=Identifier|LooseReferenceTypes}} property to the {{Style=Identifier|UADataDialog}} class. When {{Style=Keyword|true}} (the default), it causes the dialog to browse following very wide set of reference types, in order to cope with non-compliant servers. | ||
== Windows Forms Controls == | == Windows Forms Controls == | ||
* '''Inside the control for {{Style=Identifier|UserIdentity}}, the part for {{Style=Identifier|X509CertificateTokenInfo}} has been extended to allow the choice of certificates coming from platform certificate stores. It allows the user to select the location and name of the certificate store, the find type, and the find value. | |||
= Development Productivity = | = Development Productivity = | ||
Line 120: | Line 127: | ||
--> | --> | ||
== OPC UA == | == OPC UA == | ||
* It is now possible to change (many of) the low-level setting of the OPC UA stack and SDK directly from the code, using [https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/2024.2/User%27s%20Guide%20and%20Reference-OPC%20Studio/webframe.html#OPC%20UA%20Application%20Configuration.html Configuration Property Overrides]. It is no longer necessary to provide a separate XML configuration file for it. From the OPC UA .NET stack and SDK, we have also generated a brief reference documentation for these settings - see [https://www.opclabs.com/files/onlinedocs/UA-.NETStandard/Latest/Browser%20Help/webframe.html#Opc.Ua.Core~Opc.Ua.ApplicationConfiguration_members.html ApplicationConfiguration Class Members]. | |||
* There are now three separate event log sources: '''"OPCLabs-UAClientEngine"''' for events coming from the OPC UA client part of QuickOPC, '''"OPCLabs-UAPubSubEngine"''' for events comings from OPC UA PubSub part, and '''"OPCLabs-UAServerEngine"''' for event coming from the OPC UA server part of OPC Wizard (previously, single '''"OPCLabs-UAEngine"''' event source was used). | * There are now three separate event log sources: '''"OPCLabs-UAClientEngine"''' for events coming from the OPC UA client part of QuickOPC, '''"OPCLabs-UAPubSubEngine"''' for events comings from OPC UA PubSub part, and '''"OPCLabs-UAServerEngine"''' for event coming from the OPC UA server part of OPC Wizard (previously, single '''"OPCLabs-UAEngine"''' event source was used). | ||
<!-- | <!-- | ||
Line 130: | Line 138: | ||
== Connectivity Explorer == | == Connectivity Explorer == | ||
* Added two new endpoints under "Well-known" OPC UA Client-Server points: One for the standard OPC UA server endpoint on the local computer ("opc.tcp://localhost:4840"), and the other for default server endpoint of servers created with OPC Wizard ("opc.tcp://localhost:48040"). | * Added two new endpoints under "Well-known" OPC UA Client-Server points: One for the standard OPC UA server endpoint on the local computer ("opc.tcp://localhost:4840"), and the other for default server endpoint of servers created with OPC Wizard ("opc.tcp://localhost:48040"). | ||
== Demo Servers and Publishers == | |||
* The '''publish saveConfiguration''' command of the '''UADemoPublisher''' now has an '''--Encoding|-e <encoding>''' option which allows to choose the JSON encoding type for the output (can be Compact/Verbose/Reversible/NonReversible, default is Compact). Previously, the output was always in the Reversible encoding. | |||
<!-- | <!-- | ||
== License Manager == | == License Manager == | ||
--> | --> | ||
== OpcCmd Utility == | == OpcCmd Utility == | ||
<!-- | |||
=== OPC UA Client-Server === | === OPC UA Client-Server === | ||
--> | |||
=== OPC UA Client === | |||
* All commands that have an endpoint descriptor arguments now accept an additional command option '''--EndpointUserCertificateQuery|-eucq'''. This option is for user certificates stored in platform certificate stores. The query is specified using a syntax comprising of the store location, store name, find type, and find value. For example, the certificate can be found by its thumbprint. | |||
* The '''uaClient collectSoftwareInfo''' command now also collects the new server capabilities introduced in OPC UA 1.05 (such as MaxSessions, MaxSubscriptions, etc.). | * The '''uaClient collectSoftwareInfo''' command now also collects the new server capabilities introduced in OPC UA 1.05 (such as MaxSessions, MaxSubscriptions, etc.). | ||
== OPC UA Server == | === OPC UA Server === | ||
* The '''uaServer start''' command starts an OPC UA server with pre-defined content (data variables | * The '''uaServer start''' command starts an OPC UA server with pre-defined content (data variables with various behaviors and data types under the standard Objects folder). By default, it opens its endpoint on "opc.tcp://localhost:48040/". | ||
=== OPC UA PubSub === | |||
* Added '''--ResolverPublisherEndpointMessageSecurity|-rpems <uaMsml>''' command option to the '''uaSubscriber subscribeDataSetCommand'''. This command option allows you to specify the allowed message security modes for the connection to the publisher endpoint (e.g. '''Secure'''). | |||
<!-- | <!-- | ||
=== Common === | === Common === | ||
== All Command-Line Tools == | == All Command-Line Tools == |
Latest revision as of 15:16, 5 November 2024
See also: Versions; Previous version: What's new in OPC Studio 2024.1
Internal version number: 5.81
Key changes:
- New product: OPC Wizard
- User Authentication Improvements
Fundamentals
- Introduced a new product in the OPC Studio family: OPC Wizard. OPC Wizard a toolkit for rapid OPC UA server development.
Targeting
- .NET 7 is no longer supported (Microsoft end of support May 14, 2024), but will likely work. .NET 6 and and .NET 8 continue to be supported.
- Windows 11 version 21H2 is no longer supported (Microsoft end of support October 10, 2023), but will likely work.
Technology
- OPC UA Client-Server parts are now based on OPC Foundation UA-.NETStandard 1.5.374.126.
Licensing
- The LicenseInfo property on the main components now returns the dictionary alphabetically ordered.
Packaging
- There is a new NuGet package, OpcLabs.QuickOpc.Design, which provides (part of) the design-time features. The package is marked as "development dependency", i.e. its assemblies will not be referenced by your project.
Installation and Uninstallation
- The Setup wizard for QuickOPC now offers a choice of "express installation" for Python development. When selected, only the setup components relevant for Python developers are installed.
- The .NET examples group is split into sub-groups for C#, C++/CLI, F#, PowerShell and VB.NET.
Component Improvements
OPC UA
- Added static method UANodeId.FromUABuiltInType, and an implicit conversion operator, for conversion from UABuiltInType to a UANodeId representing the datatype Id for the built-in type.
- Added method UANodeId.ToUABuiltInType, and an explicit conversion operator, for conversion from UANodeId representing the data type Id to UABuiltInType that corresponds to the data type.
- Added constructors to UADataValue and UAAttributeData that allow specifying just the value and source timestamp.
OPC UA Client-Server
- Added static property ObjectsStrict to the UABrowseParametersClass, and modified the behavior of the Objects static property. The ObjectsStrict static property now returns browse parameters according to strict interpretation of the OPC UA specification, and browses only the HasComponent references. The Objects static property uses a loose interpretation (needed for some non-compliant servers), and browses any HierarchicalReferences.
- Added a new overload of the IEasyUAClient.Browse extension method. The overload takes an endpoint descriptor, node descriptor, node classes, and reference type id as inputs.
- It is now possible to dynamically change the identity of the user on an existing connection (OPC UA session). This is sometimes called "user switching", and is done by defining the UserIdentity with an AliasName instead of a concrete user, and defining and later changing the corresponding alias value, using the methods on the AliasManagement.Instance object. More information: Dynamic User Identity Change.
- Added WithIdentityAlias extension method on the UAEndpointDescriptor object. The method returns the endpoint descriptor modified to use the specified alias name for the user identity, which is useful for dynamic user identity changes.
- For a username token identity, added method and constructor overloads that allow to specify just the user name, providing a default (empty) password.
- When using X509CertificateTokenInfo in UserIdentity to identify the user by a certificate, it is now possible to specify that the user certificate comes from the platform certificate store. The X509CertificateTokenInfo now contains a CertificateQuery object that specifies the criteria for selecting the certificate. When the SourceType property of the certificate query is File, the certificate is loaded from a file in the file system, and the FileName property contains the name of the certificate file. When the SourceType property of the certificate query is PkiStore, the certificate store is identified by the StoreLocation and StoreName properties, and the certificate search criteria are specified using the PkiFindType and FindValue properties. You can, for example, set FindByThumbprint as the PkiFindType, and specify the certificate thumbprint in the FindValue property.
- QuickOPC now reads the Server.ServerCapabilities.MaxMonitoredItemsPerSubscription standard server variable, and when provided, it automatically creates and manages more subscriptions if needed (even if they have otherwise the same subscription parameters), so that it each subscription is only filled with the number of monitored items it can hold, but not more. This is especially useful with embedded (PLC) servers with limited capabilities.
- Added MaximumMonitoredItemsPerSubscription property to UAEnhancedClientSessionParameters. When this property is set to -1 (the default), the client will determine the maximum number of monitored items in one subscription automatically, using the information provided by the server, or an internal algorithm. In absence of all other information, the maximum number of monitored items in one subscription is not limited (equals to Int32.MaxValue). When this property is set to a non-negative number, the client will use the value of the property as the maximum number of monitored items in one subscription.
OPC UA PubSub
- The "tls" scheme can now be used in resource addresses, and is equivalent to "mqtts" or "ssl".
OPC UA Administration and PKI
- On Windows, certificate directory store paths that are too long to work normally are automatically detected and transformed to Windows extended-length paths.
Component Refactorings
- Renamed properties in NotifyingWidget: QueueCallbacks to QueueNotifications, CallbackQueueCapacity to NotificationQueueCapacity, and CallbackQueueIdleTimeToSleep to NotificationQueueIdleTimeToSleep.
OPC UA
- Turned UACodeBits static class (with list of integer constants) to an enumeration. Added implicit conversion operator from UACodeBits enumeration to UAServiceResult.
- Renamed classes (generally by adding the word "Client", in order to achieve the necessary distinction from classes used in server development); corresponding COM interfaces have been renamed in the same way:
- EasyUAAdaptableParameters to EasyUAClientAdaptableParameters.
- EasyUAEngineParameters to EasyUAClientEngineParameters.
- EasyUAInstanceParameters to EasyUAClientInstanceParameters.
- EasyUASharedParameters to EasyUAClientSharedParameters.
- UAEnhancedSessionParameters to UAEnhancedClientSessionParameters.
- UASmartEngineParameters to UASmartClientEngineParameters.
- UASmartSessionParameters to UASmartClientSessionParameters.
OPC UA Administration and PKI
- The default application URI template string has changed. It now uses canonicalized host name, and "http" scheme instead or "uri". For more information, see OPC UA Application URI Derivation.
User Interface
OPC UA Administration and PKI
- On the "Application certificate" tab in the "Administer OPC UA Application" dialog, the program now detects a mismatch between the application URI configured in the application manifest, and the application URI in the certificate (Subject URL Name). A warning is issued when the mismatch is detected, and an automatic fix (regenerating the self-signed certificate) is offered.
- In the methods that invoke the "Administer OPC UA Application" dialog, you can now programmatically control whether the Pull Certificate Management features are allowed in the dialog (the Pull Certificate Management is typically used with OPC UA clients, but not with OPC UA servers).
- The "Administer OPC UA Application" now allows the user to specify Host names that go into the application instance certificate (used with applications that are Servers).
- The property grid on the "Application certificate" tab of the "Administer OPC UA Application" dialog now also has a dedicated row for the the Domain Component element of the certificate Subject Name.
Windows Forms Dialogs
- Added LooseReferenceTypes property to the UADataDialog class. When true (the default), it causes the dialog to browse following very wide set of reference types, in order to cope with non-compliant servers.
Windows Forms Controls
- Inside the control for UserIdentity, the part for X509CertificateTokenInfo has been extended to allow the choice of certificates coming from platform certificate stores. It allows the user to select the location and name of the certificate store, the find type, and the find value.
Development Productivity
Visual Studio Integration
- The Visual Studio extension (VSIX) has been renamed from "QuickOPC" to "OPC Studio".
Configuration and Instrumentation
OPC UA
- It is now possible to change (many of) the low-level setting of the OPC UA stack and SDK directly from the code, using Configuration Property Overrides. It is no longer necessary to provide a separate XML configuration file for it. From the OPC UA .NET stack and SDK, we have also generated a brief reference documentation for these settings - see ApplicationConfiguration Class Members.
- There are now three separate event log sources: "OPCLabs-UAClientEngine" for events coming from the OPC UA client part of QuickOPC, "OPCLabs-UAPubSubEngine" for events comings from OPC UA PubSub part, and "OPCLabs-UAServerEngine" for event coming from the OPC UA server part of OPC Wizard (previously, single "OPCLabs-UAEngine" event source was used).
Tools and Online Services
Connectivity Explorer
- Added two new endpoints under "Well-known" OPC UA Client-Server points: One for the standard OPC UA server endpoint on the local computer ("opc.tcp://localhost:4840"), and the other for default server endpoint of servers created with OPC Wizard ("opc.tcp://localhost:48040").
Demo Servers and Publishers
- The publish saveConfiguration command of the UADemoPublisher now has an --Encoding|-e <encoding> option which allows to choose the JSON encoding type for the output (can be Compact/Verbose/Reversible/NonReversible, default is Compact). Previously, the output was always in the Reversible encoding.
OpcCmd Utility
OPC UA Client
- All commands that have an endpoint descriptor arguments now accept an additional command option --EndpointUserCertificateQuery|-eucq. This option is for user certificates stored in platform certificate stores. The query is specified using a syntax comprising of the store location, store name, find type, and find value. For example, the certificate can be found by its thumbprint.
- The uaClient collectSoftwareInfo command now also collects the new server capabilities introduced in OPC UA 1.05 (such as MaxSessions, MaxSubscriptions, etc.).
OPC UA Server
- The uaServer start command starts an OPC UA server with pre-defined content (data variables with various behaviors and data types under the standard Objects folder). By default, it opens its endpoint on "opc.tcp://localhost:48040/".
OPC UA PubSub
- Added --ResolverPublisherEndpointMessageSecurity|-rpems <uaMsml> command option to the uaSubscriber subscribeDataSetCommand. This command option allows you to specify the allowed message security modes for the connection to the publisher endpoint (e.g. Secure).
Examples
Platform: .NET
- Wherever feasible, converted the C# and VB.NET example projects for Console and Windows Forms to the "SDK" (multi-target) format, allowing them to be built for and run on either .NET Framework 4.7.2+, or .NET 6+.
- Split the example solutions to separate client development, subscriber development, and server development. Some common projects are shared between the solutions.
- Renamed project folders, adopting a naming convention which clearly distinguishes between common, client, server, and subscriber examples (using "Common-", "Client-", "Server-", and "Subscriber-" prefix).
OPC UA Client-Server
- Added C# example showing how to read the build information of the server.
- Added C# example showing how to remove the own application certificate.
Documentation and Help
- Significantly improved the reference documentation.
- Removed integration with Visual Studio help system (Microsoft Help Viewer). Instead, links to the full Web-based reference documentation are provided from all IntelliSense topics.