Any OPC UA server for Logix that "properly" supports Logix UDT tags

AlfredoQuintero

Lifetime Supporting Member
Join Date
Feb 2015
Location
Yokohama
Posts
1,549
Hello:
Today I have been testing a number of OPCUA servers with Logix symbolic client functionality. I discovered that when you create a user defined data type in the PLC program, and create a variable/tag of the UDT, the OPCUA servers that I tested will configure the OPCUA address space showing the different elements of the user-defined type tag as individual OPCUA nodes, as opposed to one OPCUA node of the UDT! So say your Logix program has a UDT that has one bool element that you call OP, another bool element that you call ER and then you have four DINTs, like DIN_1, DIN_2, DIN_3 and DIN_4, the OPCUA client will see six different OPCUA nodes, as opposed to only one tag with OP(bool), ER(bool),DIN_1(DINT), DIN_2(DINT), DIN_3(DINT) and DIN_4(DINT).
We would like our OPCUA client to have just one OPCUA node to poll and get all the data in the PLC's UDT tag through only one OPCUA node. If you happen to know an OPCUA server for Logix that supports this capability, I will be very grateful if you can let me know the product's name.
(I did not test Rockwell's FactoryTalk, we did ask Rockwell Japan and I can share their reply in this post when I get it).
 
Not helpful but every few months, I chip away at UDT support with pylogix and every time, I want to boil my head. BOOL and BOOL arrays are the worst.
 
I’m working on a closely related problem, and it’s tough.

I’ll try to circle back to this discussion.

Thanks a lot, both dmroeder and JeremyM, for your copmments an confirmation of my fears. It must be tough indeed, and likely the other OCPUA servers may have this limitation. Interestingly though, I was told (but have not confirmed) that the OPCUA server embedded in S7-1500 does provide OPCUA items with the UDT of the particular tag in the S7-1500 program, so it seems at least Siemens has figured this out.

The problem in our case is the OPC UA client and the OPC UA server (talking to Logix) are oceans and continents apart. So having the OPCUA client poll hundreds of tags (i.e. OPCUA nodes) per second is probably not realistic. I have one idea that might sound crazy at first but I think is doable. Since the customer has a secure VPN between the computer room in Japan and the different factories in different parts of the world, I will advice them to use a CompactLogix to poll the UDT tags with a simple Logix program which I was able to develop thanks to Ken and others on a different post. The CompactLogix needs only one MESSAGE instruction per tag, and from each remote ControlLogix or CompactLogix in the shop floor we need a only few of these UDT tags per second. Then we setup the OPCUA server and the OPCUA client on the same room, same switch (same physical as well as logical network), here in Japan. The OPCUA server gets the tag data from the CompactLogix "client" and serves the data in its OPCUA server address space. The OPCUA client will have to configure hundreds of OPCUA nodes, but it does not matter because this is going through a local switch, which can be set at 1 GB.
If I do not find an OPCUA server which can properly convert UDT logix tags into equivalent OPCUA UDT types, I will try advising the customer this solution.
As always, if you believe the above idea is totally crazy, I can welcome your enlightenment and even scorn in the benefit of my learning.
 
I have tested with the Keptware OPC UA server for ControlLogix.
It seems this server's implementation of OPCUA address space is more efficient than Softing's. It seems to be reflecting the user-defined tags in the CompactLogix program as OPCUA node withe the same UDT.

Tried to use Ignition but I am not succeeding.
 
I have used your hardware method in the past. In the water industry we call it a "data concentrator". You have full control of the polling routine, which you typically don't with most OPC servers.

Depending on memory and processor speed (not that familiar with Contrologix) and how many tags, you might need extra processors. The nice thing with this approach is that it's scalable, and you can implement redundancy.

Of course it's extra hardware cost, plus programming.
 
I have used your hardware method in the past. In the water industry we call it a "data concentrator". You have full control of the polling routine, which you typically don't with most OPC servers.

Depending on memory and processor speed (not that familiar with Contrologix) and how many tags, you might need extra processors. The nice thing with this approach is that it's scalable, and you can implement redundancy.

Of course it's extra hardware cost, plus programming.

This is precisely what my customer is trying to do. The problem with an OPCUA server that does not reflect the user data type in its OPCUA nodes for the corresponding user-data types in the Logix program tags is that it makes it very difficult to configure the OPCUA client (this is a Linux OPCUA client without GUI for setup), and also since the OPCUA client and the OPCUA server are one ocean apart, it increases the traffic enormously if Logix user data type are broken into the elements of the user-data types on the OPCUA server side. The customer is investigating with Rockwell whether FactoryTalk can support this functionality properly, but at least I think Keptware does the job and it seems it is plan A at the momenr. I have not had time to test the other solutions, but I have learned that even though OPCUA is a standard, there are nuances and it is really good that OPCUA vendors do provide evaluation versions of their product, and when trying a new protocol it is good to do some testing before buying.
 
Last edited:
I am so interested in this topic. Please update your final solution if you can.
It seems data connection is not so easy, Automation Direct C-More cannot read ControlLogix UDT either. It must be hard, otherwise C-More engineers would have fixed the bug on C-More.
 
...It must be hard...

It gets complicated because UDT supports nested UDT, with no limit on the levels allowed, that I can find.

In theory you could have a top level UDT and all other scoped variables in the single UDT and then read the single UDT. :oops:
 

Similar Topics

Hello everyone, I wanted to share my findings with getting the new OPC UA server working (I think you might be interested in this JeremyM :lolis:)...
Replies
8
Views
2,007
Hi All, Has anybody had any experience with this module - Softing OPC UA Server Controllogix module (setup, operation, etc.)? For this new...
Replies
7
Views
2,779
Hi guys: Recently I installed and external OPC server (Clarinet) from videojet, this is capturing info from several videojet printers. I'm using...
Replies
7
Views
4,578
Hello at everybody, I am new in this forum, I have got a communication problem beetwen Inat OPC Server, that runs in a virtual machine and RS...
Replies
4
Views
6,665
What OPC server version do I need to communicate with Allen Bradley CompactLogix 1769-L45 ?
Replies
16
Views
11,247
Back
Top Bottom