What's new in OPC Studio 2024.1: Difference between revisions

From OPC Labs Knowledge Base
 
(20 intermediate revisions by the same user not shown)
Line 1: Line 1:
[[Category:Documentation and help]] [[Category:Examples]] [[Category:Excel]] [[Category:Excel Connector]] [[Category:Excel Option]] [[Category:GitHub]] [[Category:Licensing]] [[Category:Linux]] [[Category:MQTT]] [[Category:OPC UA Administration]] [[Category:OPC UA PubSub]] [[Category:OPC UA PubSub Sniffing]] [[Category:OpcCmd Utility]] [[Category:PubSub topic tree]] [[Category:Python]] [[Category:UADemoPublisher]] [[Category:What's New]]  
[[Category:Communication packages]] [[Category:Documentation and help]] [[Category:Examples]] [[Category:Excel]] [[Category:Excel Connector]] [[Category:Excel Option]] [[Category:GitHub]] [[Category:Licensing]] [[Category:Linux]] [[Category:MQTT]] [[Category:OPC UA Administration]] [[Category:OPC UA PubSub]] [[Category:OPC UA PubSub Sniffing]] [[Category:OpcCmd Utility]] [[Category:PubSub topic tree]] [[Category:Python]] [[Category:UADemoPublisher]] [[Category:What's New]]  
<div style="text-align: right; direction: ltr; margin-left: 1em;">See also: [[Versions]]; Previous version: [[What's new in QuickOPC 2023.2]]</div>
<div style="text-align: right; direction: ltr; margin-left: 1em;">See also: [[Versions]]; Previous version: [[What's new in QuickOPC 2023.2]]</div>
Internal version number: 5.80
Internal version number: 5.80
Line 18: Line 18:
* '''.NET runtimes: Added support for .NET 8.'''
* '''.NET runtimes: Added support for .NET 8.'''
* Operating systems: Added Windows 11 version 23H2.
* Operating systems: Added Windows 11 version 23H2.
<!--
= Technology =
= Technology =
-->
* The [[OpcLabs.MqttNet communication package]] has been upgraded from MQTTnet and MQTTnet.Extensions.ManagedClient version 3.0.8 to 4.3.3.952.
* Effective with version 5.80.323.1, the referenced version of OpcFoundation.NetStandard.* packages is 1.5.374.78. See [[CVE-2024-38095 Information]].


= Licensing =
= Licensing =
* Excel Connector becomes a separate licensing component (earlier, Excel Option was an "add-on" license under QuickOPC licensing component).
* Excel Connector becomes a separate licensing component (earlier, Excel Option was an "add-on" license under QuickOPC licensing component).
* The trial license for Excel connector allows for up to 15 points to servers other than our own demo servers.
* The trial license for Excel connector allows for up to 15 points to servers other than our own demo servers.
* The '''componentName''' and '''licenseId''' arguments of the {{Style=Identifier|LicensingManagement}}.{{Style=Identifier|RegisterXXXX}} methods are now case-insensitive (e.g. "QuickOpc" instead of more proper "QuickOPC" now works well).
<!--
<!--
= Packaging =
= Packaging =
-->
-->
= Delivery =
= Delivery =
* Python examples are now also available in a public repository on GitHub, https://github.com/OPCLabs/Examples-QuickOPC-Python .
* Python examples are now also available in a public repository on GitHub, https://github.com/OPCLabs/Examples-QuickOPC-Python .
Line 46: Line 48:
-->
-->
== OPC UA PubSub ==
== OPC UA PubSub ==
* '''The standard MQTT topic tree, introduced in version 1.05.03 of OPC UA specification, is now supported (the data and metadata topics).''' By setting the new {{Style=Identifier|AssumeTopicTree property}} in the {{Style=Identifier|UADataSetSubscriptionDescriptor}} to {{Style=Keyword|true}}, you indicate that the topics are organized in the broker in a standard way defined by the OPC UA specification. The {{Style=Identifier|TopicPrefixHead}} property (defaults to "opcua") determines the topic prefix used by all such topics. Topic names or filters (for data and metadata queues) are then constructed automatically, from the publisher Id, writer group name and dataset writer name (any of these can be omitted, too). In addition, the actual topic name of any received message is parsed, and checked against the requirements of the topic tree. If the writer group name or dataset writer name is missing from the received message, it is filled in based on the topic name.
* '''The standard MQTT topic tree, introduced in version 1.05.03 of OPC UA specification, is now supported (the data, metadata and status topics).''' With the topic tree, the topics are organized in the broker in a standard way defined by the OPC UA specification. The component assumes the use of the topic tree automatically, when MQTT transport is used and no individual queue names have been set. In addition, you can enforce the use of the topic tree by setting the new {{Style=Identifier|AssumeTopicTree property}} in the {{Style=Identifier|UADataSetSubscriptionDescriptor}} to {{Style=Keyword|true}}. The {{Style=Identifier|TopicPrefixHead}} property (defaults to "opcua") determines the topic prefix used by all such topics. Topic names or filters (for data, metadata and status queues) are then constructed automatically, from the publisher Id, writer group name and dataset writer name (any of these can be omitted, too). In addition, the actual topic name of any received message is parsed, and checked against the requirements of the topic tree. If the writer group name or dataset writer name is missing from the received message, it is filled in based on the topic name. [https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/2024.1/User%27s%20Guide%20and%20Reference-OPC%20Studio/webframe.html#OPC%20UA%20PubSub%20Topic%20Tree.html Documentation]
* The '''publisher status messages''' (both in UADP and JSON message mappings) are recognized and processed. Any non-operational publisher status is reported as an error through the dataset subscription event handler or callback. With the standard MQTT topic tree, the topic name or filter for the publisher status messages is determined automatically.
* The dataset message event notification now has a new '''PubSubLocators''' property. This property is always non-null (even in case of errors), and contains the information that allows to relate the event to its "source" in the OPC UA PubSub model. The object ('''UAPubSubLocators''') has properties for a publisher Id, writer group Id, writer group name, dataset writer Id, and dataset writer name. The component will fill in as many of these properties as possible, given the circumstances. Knowing such relation comes handy when the dataset subscription filter is not for a single dataset, but for multiple datasets. Note that all information contained in PubSubLocators has already been available inside the dataset data. The difference is that the PubSubLocators object is present even in cases when there is  dataset data - such as in case of errors. The PubSubLocators thus allow to determine the "source" of the error programmatically.
* With the default [[OpcLabs.MqttNet communication package]], you can now enter user name and password for authentication also with Web Sockets connections ("ws:"); previously this was only possible with plain TCP connections to MQTT.
* JSON message parsing has been updated to cover version 1.05.03 of OPC UA.
* JSON message parsing has been updated to cover version 1.05.03 of OPC UA.
* UADP message parsing has been updated to cover version 1.05.03 of OPC UA.
* UADP message parsing has been updated to cover version 1.05.03 of OPC UA.
Line 104: Line 109:
== Demo Servers and Publishers ==
== Demo Servers and Publishers ==
* The OPC UA Demo Publisher is now available under .NET 8.0.
* The OPC UA Demo Publisher is now available under .NET 8.0.
* The OPC UA Demo Publisher can now generate metadata messages.  
* The OPC UA Demo Publisher can now generate metadata messages (in both JSON and UADP message mappings).  
* Added --BrokerMetaDataQueueName (-bmdqn) option to the '''publish''' command of the OPC UA Demo Publisher. This command option allows to specify the queue name where the metadata messages will be sent (used with MQTT).
* Added '''--BrokerMetaDataQueueName (-bmdqn)''' option to the '''publish''' command of the OPC UA Demo Publisher. This command option allows to specify the queue name where the metadata messages will be sent (used with MQTT).
* Added '''--PublisherIdFormat (-pif)''' option to the '''publish''' command. When used with a format like "opclabs-{0}", it tells the demo publisher to generate all publisher Ids as strings in a given format, replacing "{0}" in the format string with the numerical publisher Id.
<!--
<!--
== License Manager ==
== License Manager ==
-->
-->
== OpcCmd Utility ==
== OpcCmd Utility ==
* The OpcCmd utility is now available under .NET 8.0.
* The OpcCmd utility is now available under .NET 8.0.
* The JSON ApplicationDescription, PubSubConnection, ServerEndpoints and Status discovery message types (new in OPC UA 1.05.03) are now recognized by the '''uaPubSubSniffer subscribeCapture''' command.
* The JSON ApplicationDescription, PubSubConnection, ServerEndpoints and Status discovery message types (new in OPC UA 1.05.03) are now recognized by the '''uaPubSubSniffer subscribeCapture''' command.
* The UADP Status discovery message type (new in OPC UA 1.05.03) is now recognized by the '''uaPubSubSniffer subscribeCapture''' command.
* The UADP Status discovery message type (new in OPC UA 1.05.03) is now recognized by the '''uaPubSubSniffer subscribeCapture''' command.
* Added '''--AssumeTopicTree''' option to the '''uaSubscriber subscribeDataSet''' command.
* Improved colorization in table output.
<!--
<!--
=== OPC UA Client-Server ===
=== OPC UA Client-Server ===
Line 124: Line 133:
<!--
<!--
= Product Options =
= Product Options =
-->


= Examples =
= Examples =
== Platform: .NET ==
* '''Added approx. 100 examples in VB.NET (corresponding to their C# counterparts).'''
* The '''EasyOpcUAPubSubDemo''' demo application (source code) is now also available in VB.NET.
<!--
== Platform: COM ==
== Platform: COM ==
== Platform: .NET ==
== Platform: Python ==
-->
== OPC Classic ==
== OPC Classic ==
* Added 14 new examples for OPC-XML (in C#).
* The basic set of OPC-XML examples is now also available in Delphi, VB6, VBScript and PHP.
* The extended set of OPC-XML examples is now also available in VB.NET and Python.
<!--
== OPC UA Client-Server ==
== OPC UA Client-Server ==
== OPC UA PubSub ==
== OPC UA PubSub ==

Latest revision as of 06:42, 8 August 2024

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

Internal version number: 5.80

Key changes:

  • PubSub topic tree
  • Python support on Linux


Fundamentals

  • Python is increasingly treated as a separate "platform", apart from .NET and COM, in the product. Previously (since Python support is built on top of .NET), Python was treated as one of the .NET languages.

Nomenclature

  • Introduced a "product family" concept. The product family is "OPC Studio". The OPC client toolkit product now belongs to this family, and it remains called "QuickOPC" (or "OPC Data Client", as branded by Software Toolbox).
  • A new product in the "OPC Studio" family is "Excel Connector". This is now a separate product, providing essentially what what was before available through the "Excel Option" to the QuickOPC product.

Targeting

  • Python is now supported on Linux operating systems.
  • .NET runtimes: Added support for .NET 8.
  • Operating systems: Added Windows 11 version 23H2.

Technology

Licensing

  • Excel Connector becomes a separate licensing component (earlier, Excel Option was an "add-on" license under QuickOPC licensing component).
  • The trial license for Excel connector allows for up to 15 points to servers other than our own demo servers.
  • The componentName and licenseId arguments of the LicensingManagement.RegisterXXXX methods are now case-insensitive (e.g. "QuickOpc" instead of more proper "QuickOPC" now works well).

Delivery

Installation and Uninstallation

  • The installer is common for the whole OPC Studio product family. At the beginning of the installation the user is given a choice from the predefined products (QuickOPC, Excel Connector), or a custom selection of components.

Component Improvements

OPC UA PubSub

  • The standard MQTT topic tree, introduced in version 1.05.03 of OPC UA specification, is now supported (the data, metadata and status topics). With the topic tree, the topics are organized in the broker in a standard way defined by the OPC UA specification. The component assumes the use of the topic tree automatically, when MQTT transport is used and no individual queue names have been set. In addition, you can enforce the use of the topic tree by setting the new AssumeTopicTree property in the UADataSetSubscriptionDescriptor to true. The TopicPrefixHead property (defaults to "opcua") determines the topic prefix used by all such topics. Topic names or filters (for data, metadata and status queues) are then constructed automatically, from the publisher Id, writer group name and dataset writer name (any of these can be omitted, too). In addition, the actual topic name of any received message is parsed, and checked against the requirements of the topic tree. If the writer group name or dataset writer name is missing from the received message, it is filled in based on the topic name. Documentation
  • The publisher status messages (both in UADP and JSON message mappings) are recognized and processed. Any non-operational publisher status is reported as an error through the dataset subscription event handler or callback. With the standard MQTT topic tree, the topic name or filter for the publisher status messages is determined automatically.
  • The dataset message event notification now has a new PubSubLocators property. This property is always non-null (even in case of errors), and contains the information that allows to relate the event to its "source" in the OPC UA PubSub model. The object (UAPubSubLocators) has properties for a publisher Id, writer group Id, writer group name, dataset writer Id, and dataset writer name. The component will fill in as many of these properties as possible, given the circumstances. Knowing such relation comes handy when the dataset subscription filter is not for a single dataset, but for multiple datasets. Note that all information contained in PubSubLocators has already been available inside the dataset data. The difference is that the PubSubLocators object is present even in cases when there is dataset data - such as in case of errors. The PubSubLocators thus allow to determine the "source" of the error programmatically.
  • With the default OpcLabs.MqttNet communication package, you can now enter user name and password for authentication also with Web Sockets connections ("ws:"); previously this was only possible with plain TCP connections to MQTT.
  • JSON message parsing has been updated to cover version 1.05.03 of OPC UA.
  • UADP message parsing has been updated to cover version 1.05.03 of OPC UA.

Component Refactorings

OPC Classic

  • Added DANodeElement.ToDANodeDescriptor and AENodeElement.ToAENodeDescriptor methods (mainly for use from COM).

OPC UA Administration and PKI

  • The automatically determined OPC UA application URI now uses only the major version part of the application version information, instead of the full version string. This means that all builds of the application with the same major version number are now (by default) considered to be the same OPC UA application. This results in reduced number of situations in which the OPC UA application certificate has to be re-generated. More information: OPC UA Application URI Derivation.

Excel Connector

  • For OPC integration with Excel, Excel Connector is now a separate product in the OPC Studio product family, providing the functionality that was earlier available by combining QuickOPC and Excel Option for QuickOPC.

Tools and Online Services

Demo Servers and Publishers

  • The OPC UA Demo Publisher is now available under .NET 8.0.
  • The OPC UA Demo Publisher can now generate metadata messages (in both JSON and UADP message mappings).
  • Added --BrokerMetaDataQueueName (-bmdqn) option to the publish command of the OPC UA Demo Publisher. This command option allows to specify the queue name where the metadata messages will be sent (used with MQTT).
  • Added --PublisherIdFormat (-pif) option to the publish command. When used with a format like "opclabs-{0}", it tells the demo publisher to generate all publisher Ids as strings in a given format, replacing "{0}" in the format string with the numerical publisher Id.

OpcCmd Utility

  • The OpcCmd utility is now available under .NET 8.0.
  • The JSON ApplicationDescription, PubSubConnection, ServerEndpoints and Status discovery message types (new in OPC UA 1.05.03) are now recognized by the uaPubSubSniffer subscribeCapture command.
  • The UADP Status discovery message type (new in OPC UA 1.05.03) is now recognized by the uaPubSubSniffer subscribeCapture command.
  • Added --AssumeTopicTree option to the uaSubscriber subscribeDataSet command.
  • Improved colorization in table output.

OPC UA PubSub Formatter

  • The OPC UA PubSub Formatter now allows a selection of specification level 1.05.03, and formats the messages accordingly with this new specification. For 1.05.03, it also offers a selection of pre-defined formats (from OPC UA specification Part 14 Appendix A).

Examples

Platform: .NET

  • Added approx. 100 examples in VB.NET (corresponding to their C# counterparts).
  • The EasyOpcUAPubSubDemo demo application (source code) is now also available in VB.NET.

OPC Classic

  • Added 14 new examples for OPC-XML (in C#).
  • The basic set of OPC-XML examples is now also available in Delphi, VB6, VBScript and PHP.
  • The extended set of OPC-XML examples is now also available in VB.NET and Python.

Documentation and Help

  • The User's Guide and Reference has been restructured. The documentation and help body is common for the whole OPC Studio product family. It contains parts common to all products in the family, and parts that are specified to the individual products (QuickOPC, Excel Connector).