Jump to content

Recommended Posts

Hi,

Has anyone gone down the road of evaluating or has experience implementing the OPC UA architecture? There are a couple of toolkits out there so thankfully there is no real need to tackle the OPC .NET API. At this point I'm trying to fetter the tech side of it. What were the unexpected roadblocks you ran into?

If anyone can share their experiences it would be appreciated.

Thanks!

Link to comment

I have used the NI OPC-UA toolkit in a bunch of projects. Both as a client and server.

Had an issue with an earlier version of the toolkit (2015) where it was not working correctly with authentication, but NI released a patch for that.

The only other strange thing is that the client (or server, cannot remember which it is) does not support Data Change events, so you have to poll. Oh yes the other weird thing is that when you do get a Data Change event you get the data coming in as a variant, but unlike regular variants this one seems to know nothing about its own type. This actually caused a bit of drama for me but managed to find a work-around as the data change event does actually include the type, so I was able to shove it back into the variant.

Link to comment
5 hours ago, Neil Pate said:

Oh yes the other weird thing is that when you do get a Data Change event you get the data coming in as a variant, but unlike regular variants this one seems to know nothing about its own type. This actually caused a bit of drama for me but managed to find a work-around as the data change event does actually include the type, so I was able to shove it back into the variant.

Yuck. Has NI been prodded about this?

Link to comment

I wasn't the one to do this, but someone here evaluated it and had issues with performance -- it seemed to all be running in a relatively single-threaded way, even on the server. Also, the newer features (alarms, etc) took up a ton of memory compared to what we expected. However performance issues are always tied to a use case -- should be easy to grab an eval and test.

Because of the way that OPC UA data models work, the NI server shows up kind of strangely in third party clients. It probably works fine for more advanced tools like kepserver, but I was playing with a fairly low level python client and the representation was weird to me. If you want to use a 3rd party client I'd also grab the eval and test it out.

Link to comment
19 hours ago, Neil Pate said:

The only other strange thing is that the client (or server, cannot remember which it is) does not support Data Change events, so you have to poll.

I made the Server a Client of itself, in order to get events when true Clients changed things.  A bit weird.

  • Like 1
Link to comment

Thanks everyone for the insights. After a lot of digging I too found it odd that the Data Change events weren't handled and the implementation(s) tend to go the binary route where DCOMs had to be configured. Yuck.

As this project will run on an intranet the benefits (or complexities for that matter) of the OPC UA securities are of no real benefit as it'll just be a data pipe in the end.

There's a client from  unified-automation.com/ that's free that was an easy install and immediately found the server on the Wago SPS for anyone that looking to do a bit of experimenting.

Link to comment

When you've got too many new variables it's nice to know something works as it should (the UA client)! At this point I will not integrate the OPC UA.

You did get me thinking though and I'd look into using the .NET OPC UA Client API for the simple fact the client worked so smoothly. The quality of the API is likely high too.  https://www.unified-automation.com/products/client-sdk/net-ua-client-sdk.html

-Peter

Link to comment

For one of my projects that used OPC-UA I had probably 500 different nodes in the system. I did not really want to handle the data read using a case structure with 500 cases, so I went 100% down the route of name based lookup data structure implemented using Variant Attributes. I managed to extend this to a tree based system data viewer and configurable data logger, without ever actually using explicit node names (well, not perfectly but close enough).

For the most part I did not have to fight with OPC-UA, it just worked.

Link to comment
  • 1 month later...

Hey Neil - I am in the process of designing a 50 node (RT Linux) system with around 100 tags per node.  I was briefly thinking about using NSV's or RTI-DDS but now am thinking that OPC-UA would be a better solution for publishing tag values.  Do you have any performance metrics like tag updates /s for your implementation?.   I have seen some pretty nice OPC UA Client Viewers that function like the NI DSM but would prefer a native LV viewer.  Would you consider offering your OPC UA Viewer and Data logger as a toolkit?

Edited by viSci
Link to comment

Sorry if I have mislead you, looking back at my post I have to make a correction to my vocabulary. The whole system probably had about 10 nodes in total and the LabVIEW based controller had to implement several OPC-UA clients and servers (I think two each). In total the system had about 500 tags (not nodes, sorry!).

I tested things at a maximum rate of about 1 "update"/s where an "update" was changing all the tags of a particular subsystem. Performance was never an issue at all of this portion of the application, I cannot say I ever saw the CPU particularly taxed. What did cause performance issues was trying to update my tree control view and name based logging. What I gained in elegance in the code I sacrificed in performance. Also, if I never have to write another recursive tree updating routine based on hierarchical tag names I will be quite happy.

I am not at liberty to share anything as I did it as consultancy for another company, sorry.

In the end OPC-UA worked fine, and I would certainly consider it again. I will never use NSVs in a project; I just have too much distrust of them. In fairness though it has been nearly 7 years since I was scarred by them...

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.