Commercial OPC-UA server implementation on Linux|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
Commercial OPC-UA server implementation on Linux
Avatar
Simon de Kraa
The Netherlands
Member
Members
Forum Posts: 12
Member Since:
02/24/2022
sp_UserOfflineSmall Offline
1
02/24/2022 - 08:34
sp_Permalink sp_Print

Hi,

At the moment we develop our own OPC-UA server using the following Python library:

https://github.com/FreeOpcUa/p…..thon-opcua

We now are thinking of switching to a commercial product.

The product we tried is KEPServerEX with the MQTT client driver on Microsoft Windows.

This works but we would like to have an implementation on Linux.

Any suggestions would be appreciated.

Thank you.

Regards,

Simon.

Avatar
Randy Armstrong
Admin
Forum Posts: 1580
Member Since:
05/30/2017
sp_UserOfflineSmall Offline
2
02/24/2022 - 15:27
sp_Permalink sp_Print

What are you looking for in a commercial server?

A kepware like product with drivers for almost everything?

Or do you have specific needs?

Avatar
Simon de Kraa
The Netherlands
Member
Members
Forum Posts: 12
Member Since:
02/24/2022
sp_UserOfflineSmall Offline
3
02/25/2022 - 04:56
sp_Permalink sp_Print

Randy Armstrong said
What are you looking for in a commercial server?

A kepware like product with drivers for almost everything?

Or do you have specific needs?

  

Hi Randy,

Sorry for the late response. I thought I would get notified of new comments but that is not the case.

The Python library that we now use to create an OPC-UA server has occasional quirks. This takes us a lot of time and effort to solve. That is why we thought it would be good to look at a commercial solution where we have maintenance and support. Building an OPC-UA server is not our core business.

Kepware’s solution where we send JSON messages to our MQTT broker which are picked up by the Kepware MQTT client and transformed to OPC-UA format and made available to external systems (e.g. DCS) is what would work for us. The extra tooling (configuration, OPC-UA client, …) surrounding it is a nice bonus, but not strictly necessary. Furthermore, the price for this Kepware setup with the MQTT client is also not based on the number of tags, which is also attractive to us.

But, we do prefer Linux instead of Microsoft Windows so that is why we are looking for alternatives.

Thanks for your response and hope you can help us further.

Regards,

Simon.

Avatar
Randy Armstrong
Admin
Forum Posts: 1580
Member Since:
05/30/2017
sp_UserOfflineSmall Offline
4
02/25/2022 - 15:59
sp_Permalink sp_Print sp_EditHistory

Sounds like a lot of work to do something that could be done easily with a commercial SDK.

You have choices in Java, C# and C++ which would all be more reliable than the open source Python library.

Avatar
Simon de Kraa
The Netherlands
Member
Members
Forum Posts: 12
Member Since:
02/24/2022
sp_UserOfflineSmall Offline
5
03/03/2022 - 13:38
sp_Permalink sp_Print

But with a commercial SDK we still have to build the OPC-UA server itself right? And get the messages in using e.g. mqtt. The same as we do at this moment with the Python library.

We were thinking of buying a COTS solution for this that runs on Linux. Just run the software and do not bother with the details. Mqtt in, OPC-UA out. That’s it.

Or am I mistaken? I’m not that familiar with OPC-UA to be honest.

And again, sorry for the late reply…

Avatar
Randy Armstrong
Admin
Forum Posts: 1580
Member Since:
05/30/2017
sp_UserOfflineSmall Offline
6
03/03/2022 - 16:13
sp_Permalink sp_Print

You have to program the mapping between the MQTT messages and OPC UA. This requires a considerable amount of configuration even of you are using a product like KepServer and that is only of if the format of the messages conforms to what KepServer expects.

If you have existing messages that need to be mapped you need custom code.

Avatar
Simon de Kraa
The Netherlands
Member
Members
Forum Posts: 12
Member Since:
02/24/2022
sp_UserOfflineSmall Offline
7
03/03/2022 - 23:52
sp_Permalink sp_Print

Well, I tried KepServer with their MQTT client and and it was surprisingly easy to get messages emitted from OPC-UA server.

MQTT broker –> Kepware MQTT client –> KepServer (–> OPC-UA server)

I just had to send the message in the correct format to our MQTT broker and let KepServer to detect the tags and data types and that’s about it.

Looking at our own implementation of the OPC-UA server this was a breeze.

Okay, I had to actually create the devices in KepServer but that was about it (maybe this can be automated as well by a certain OPC-UA message format? Not sure…).

 

But maybe I misunderstood.

When you wrote SDK I assumed this is “just” a library with the OPC-UA implementation. Something that we can use to create our own OPC-UA server.

KepServer on the other hand is a complete product where I do not need to program myself. I prefer to have such a solution. The only drawback for us is that is only runs on Windows where we prefer Linux.

So that is why I was asking for a KepServer like product where we do need to program ourselves that runs on Linux.

 

Hope this makes sense.

Avatar
Randy Armstrong
Admin
Forum Posts: 1580
Member Since:
05/30/2017
sp_UserOfflineSmall Offline
8
03/04/2022 - 15:46
sp_Permalink sp_Print

KepServer provides an automated way to convert the MQTT messages to an OPC UA address space.

This saves you a lot of effort if you can live with the format required by KepServer.

You may want to look at Java based products, such as Ignition.

https://opcfoundation.org/prod…..w/ignition

Avatar
Simon de Kraa
The Netherlands
Member
Members
Forum Posts: 12
Member Since:
02/24/2022
sp_UserOfflineSmall Offline
9
05/06/2022 - 23:04
sp_Permalink sp_Print

We evaluated the Ignition product on Linux/Docker and it looked very promising. We were able to create/read/update/delete folder/tags using REST API. But unfortunately their OPC server implementation could not emit any other status code than Good and Bad. And we need to have more control.

So we have to look for another OPC-UA solution. Any suggestions are appreciated.

We are also thinking about your suggestion for a commercial solution. Because we want to deploy on Linux I guess Java would be a good choice. Python would also be an option, but I could not find a commercial solution there.

https://www.unified-automation…..e-sdk.html

Any directions and input is appreciated.

BTW

Converting JSON to OPC-UA using MQTT gave us a problem with e.g. datetime fields that are processed as string. Data types are automatically derived from the JSON value which is not always what you want. There is no type hinting available. We found this to be an issue in most implementations and could not find a solution.

Avatar
Randy Armstrong
Admin
Forum Posts: 1580
Member Since:
05/30/2017
sp_UserOfflineSmall Offline
10
05/08/2022 - 21:26
sp_Permalink sp_Print

Converting JSON to OPC-UA using MQTT gave us a problem with e.g. datetime fields that are processed as string.

Which is why the UA spec defines a datatime format to use:

https://reference.opcfoundatio…..2/#5.4.2.6

Avatar
Simon de Kraa
The Netherlands
Member
Members
Forum Posts: 12
Member Since:
02/24/2022
sp_UserOfflineSmall Offline
11
05/09/2022 - 11:35
sp_Permalink sp_Print

Thank you for the link!

I tried this format before, but it didn’t work. I think this is probably because the decoder does not adhere to the standard. I will contact the supplier and point them out to how it should actually work and maybe they can make the necessary changes.

Avatar
Simon de Kraa
The Netherlands
Member
Members
Forum Posts: 12
Member Since:
02/24/2022
sp_UserOfflineSmall Offline
12
05/12/2022 - 00:58
sp_Permalink sp_Print

Randy Armstrong said
Sounds like a lot of work to do something that could be done easily with a commercial SDK.

You have choices in Java, C# and C++ which would all be more reliable than the open source Python library.  

We would like to investigate this path.

We see several SDKs available and find it difficult to choose one.

What we are looking for is the following rather basic functionality:

  • Client
    • Create/read/update/delete nodes
    • Ability to set the status code of a node
  • Server
    • Full security / authentication features
    • Internal storage of the nodes structure and values

Platform: Linux or agnostic

Language: Python, JavaScript, Java, C++, …

Any suggestions or directions are appreciated.

Forum Timezone: America/Phoenix
Most Users Ever Online: 510
Currently Online: ruslan khionidi
Guest(s) 17
Currently Browsing this Page:
1 Guest(s)
Top Posters:
Forum Stats:
Groups: 2
Forums: 10
Topics: 1446
Posts: 4891