2

I'm managing a rather widely distributed software application in a semi industrial environment. The software at its heart is based on SOA and employs OPC-UA to make communications between important processes (on local or LAN-based machines) possible. These processes are either a server (e.g. an outer network management server, hardware managers server etc.) or a client (customer panel) or both (servers talking to each other). OPC-UA has the following problems:

  • Configuring and maintaining the configurations is a hard job (just Config file settings takes lots of time)
  • Security measures are too much detailed for my needs (certificate management and sudden invalidation of certifications on customer systems)
  • Modeling and networking overheads in the library make it hard to work with in my communications (high data rates usually ends in server and client disconnecting)
  • Unspecified and weird errors like UA Discovery Server stopping to work or respond, etc. which I have reported to OPC GitHub forum many times.
  • Troubleshooting in internal parts of OPC UA is nearly impossible.

Overall, for me its performance and stability are not reliable enough. I am willing to sacrifice features for better performance and reliability. I've even considered to write sockets from bottom-up for my inter-process (IPC) needs. This way I could at least trace errors to their core. Since I do not need its most advertised feature (aka PLC support) I'm desperate to find a good alternative for it. My main requirements are:

  1. OPC-UA like Data Modeling support that enables me to provide a clean interface to customers and other teams (something like IDL).
  2. Publish/Subscribe, Remote Commands, Update Notifications and Node Based Behavior.
  3. Tough Security is not my concern as my network is closed.
  4. High performance for data rates up to 1Gbps (this could mean UDP support).
  5. I am entirely working in .NET framework. So C# support of OPC-UA is a great help for me.

I've looked at DDS (lacks commands and Update Notifications) and WCF (lacks cross platform support) and many more. This link also notes about MQTT: Alternative to OPC-UA

Sina Bizbone
  • 79
  • 1
  • 1
  • 12
  • 3
    Your problems seem to be related in the quality of the products that you are using, instead of OPC UA. If you start building everything from scratch, you will end up with other issues that are not necessarily any smaller. So consider these: - Local Discovery Server is totally optional - Security in OPC UA is optional - Speed may be difficult, but I also depends a bit on the implementation.The upcoming UDP transport protocol would enable a bit faster rates as well - Get a good quality OPC UA SDK with proper support; It may cost you a bit more, but saves you a lot. – Jouni Aro Dec 20 '18 at 15:54
  • @JouniAro Thanks, I need LDS. Security isn't optional as you are forced to work based on certificates (I don't think there's a certificate-less approach). I agree on quality of the products not being high but still troubleshooting is nearly impossible. I'm excited to hear about UDP. Could you mention some good SDKs? I am currently working with the open source one on the GitHub – Sina Bizbone Dec 22 '18 at 12:24
  • 1
    Certificates are optional, if you don't use security. Low-end embedded devices may not even be able to do it. Depends again on the SDK how it makes this possible in practice. Softing provides commercial support for the OPC Foundation SDK. Unified Automation has a good quality .NET SDK - redesigned on the basis of the OPC Foundation SDK for more flexible and easy use. – Jouni Aro Dec 27 '18 at 08:30
  • 1
    You should report LDS problems to GitHub if you wish that they will be addressed. – Jouni Aro Dec 27 '18 at 08:32
  • 1
    @JouniAro Thanks, So it seems the version on the GitHub isn't official nor the only reference. I'll look at the prices for the versions you mentioned / I have reported many bugs to GitHub page and some of them have been addressed in the releases, but there are so many weird things happening in LDS that it has affected my workplace reputation and company's trust in me. So I'm not taking that risk anymore :) – Sina Bizbone Jan 03 '19 at 07:44
  • 1
    The OPC UA Stacks are official and supported by OPC Foundation. The .NET SDK in GitHub is a sample implementation of the SDK layer, provided by the OPC Foundation. LDS is official, provided by the OPC Foundation, as is intended to be production quality, but if it doesn't seem so, you will have to let them know. – Jouni Aro Jan 03 '19 at 08:59

1 Answers1

1

What about Google's gRPC + protobufs?

https://grpc.io/

Kevin Herron
  • 6,500
  • 3
  • 26
  • 35
  • Thanks, I've looked in gRPC but it doesn't seem to have an important feature I need: Update notification on remote property value change. – Sina Bizbone Dec 22 '18 at 12:26
  • @SinaBizbone You implement the server as well, right? Add mechanism to register a kind of callback, from the server back to the client, that would deliver the notification or proerty changes. Use the same protocol for the reverse connection. – Dan Mašek Dec 24 '18 at 01:52
  • @DanMašek: It seems to me that I need to implement a rather minor but necessary framework (or at least a wrapper) on gRPC to meet my needs (such as the one you mentioned). It is a matter of time and money to compare against other options we may have. If I'm convinced gRPC can cover such needs, I will request a extension on my current project to make this happen. – Sina Bizbone Jan 03 '19 at 07:47