Compatibility and Versions checking: what could/should a client rely on for the interface?|OPC UA Implementation: Stacks, Tools, and Samples|Forum|OPC Foundation

Avatar
Search
Forum Scope


Match



Forum Options



Minimum search word length is 3 characters - maximum search word length is 84 characters
Lost password?
sp_Feed sp_PrintTopic sp_TopicIcon
Compatibility and Versions checking: what could/should a client rely on for the interface?
Avatar
Patrick Berger
Member
Members
Forum Posts: 18
Member Since:
02/22/2022
sp_UserOfflineSmall Offline
1
10/27/2025 - 06:41
sp_Permalink sp_Print

Hi all

We implemented a lot of different interfaces for our products, and we had always some issues or soultions regarding different interface versions of communication partners.

With OPC UA, there is a promise that this will be solved in a robust manner. therefore some questions arise: So what must be provided by the server?

  • I assume that for each used NodeSet with its Namespace and details, there must be an entry in the Namespace-Array. Accessing the namespace-details in the ServerType isn't possible, because it is optional (https://reference.opcfoundatio.....docs/6.3.1). So as client, at this point we get just the URIs. On the other side, with the URIs the client could rely on that there is no breaking change (https://reference.opcfoundatio...../docs/11.3). But no informations regarding intermediate versions.
  • A client could only rely on all mandatory parts of a specification (https://reference.opcfoundatio.....103/docs/3) -> that is clear, but most specifications defines more elements optional, than mandatory. on the other side the server could react with errors (e.g. BadNotImplemented) or just provide default values (e.g. empty strings) for mandatory parts, to bypass this requirement.
  • Does the ServerStatus https://reference.opcfoundatio.....docs/12.10 provide BuildInfos regarding the used SDK or in general the OPC UA Server?
  • If there are different profiles available, the interface and also the application will propably have an implementation progress.
  • Any "software revision" provided by the nameplate will cover the entire machine - not just the OPC UA server or the interface definition. In addition this is only available whithin a limitted scope like companion specifications.

I've the feeling to overlook the basic version-information... like it is done for Rest-API versioning

 

Thanks, and best regards

P51D

Avatar
Randy Armstrong
Admin
Forum Posts: 1656
Member Since:
05/30/2017
sp_UserOfflineSmall Offline
2
10/28/2025 - 21:39
sp_Permalink sp_Print sp_EditHistory

Profiles are the primary way to to determine what functionality is supported.

NodeSet minor versions are always backward compatible.

NodeSet major versions are not.

Usually, the URI will change with the major version. 

The Namespaces component of the Server Object has all of the metadata associated with the NamespaceUris.

Avatar
Patrick Berger
Member
Members
Forum Posts: 18
Member Since:
02/22/2022
sp_UserOfflineSmall Offline
3
11/03/2025 - 06:49
sp_Permalink sp_Print sp_EditHistory

Randy Armstrong said
Profiles are the primary way to to determine what functionality is supported.
  

But then we got the key-problems:

  • how could a client read out the supported profiles from a server?
  • it seems that OPC UA server doesn't offer a "interface version" in a common/generic way. If I implement the Machinery Basic Building Blocks V1.04, then I earn 4-7 additional nodeSets. Each of them has his own version and URI information - but what the machine really provides as funcitonality at the interface (assuming that no machine provide all defined things from day 1) is the question.
Avatar
Randy Armstrong
Admin
Forum Posts: 1656
Member Since:
05/30/2017
sp_UserOfflineSmall Offline
4
11/03/2025 - 17:51
sp_Permalink sp_Print

Every Server should publish a list of Profiles that it supports:

ServerProfileArray lists the Profiles that the Server supports. The String shall be the URI of the Profile. See OPC 10000-7 for definitions of OPC UA Server Profiles. This list should be limited to the Profiles the Server supports in its current configuration.

https://reference.opcfoundatio.....docs/6.3.2

Avatar
Patrick Berger
Member
Members
Forum Posts: 18
Member Since:
02/22/2022
sp_UserOfflineSmall Offline
5
11/10/2025 - 02:11
sp_Permalink sp_Print

Oh, I've didn't seen this - thanks for the link.

Based on your answer this list isn't limitted to the scope of server capabilities but also includes all used companion specification or vendor specific defined profiles?

I'm not shure if all servers are conform to this (at least the uamit demo server isn't it) https://github.com/umati/Sample-Server. So from a robust client perspecivte this isn't a feacable way.

Avatar
Randy Armstrong
Admin
Forum Posts: 1656
Member Since:
05/30/2017
sp_UserOfflineSmall Offline
6
11/10/2025 - 03:15
sp_Permalink sp_Print

It includes all profiles for any CS supported by the server.

While all servers may not support today, it is something that can be easily filled in as part of a dialog with server vendors.

I believe that certification testing will require that this property be filled out correctly.

So insisting on certified servers would make the field more useful.

Forum Timezone: America/Phoenix
Most Users Ever Online: 510
Currently Online:
Guest(s) 23
Currently Browsing this Page:
1 Guest(s)
Top Posters:
Forum Stats:
Groups: 2
Forums: 10
Topics: 1508
Posts: 5103