Creating a module for OPC XML-DA

I just changed the package namespace of both the generated classes and the client classes.

There's no example for adding an OPC connection type because it's not really something we ever anticipated a 3rd party needing to implement. There's only a few kinds of OPC connections that exist, after all...

If you just need to grab some data points off this one piece of equipment the driver route would be fine. If you're going to have a ton of these or expect there will be other OPC XML-DA equipment in the future then it might be worth trying to build a new OPC connection type instead. I'm not sure which is a more difficult path.

I suspect using the OPC Connection extension point would be easier. (But I'm not writing any code yet, so just my $0.02.)

@nicholas.robinson Hello Nicholas, just wondering if you were able to successfully implement this? We are working on implementing a visualization system and have the same dilemma of how to best communicate with a Flexsort controller.

@luke.snider just to be clear, I am talking about Dematic Flexsort controller here.

I will split this up into the two areas that exist:

Infrastructure Data
This is things like conveyor states, running speeds, etc.
Originally Dematic indicated this data was going to be at a OPC-DA XML endpoint but once we indicated we were ready to move towards that, they indicated they didnā€™t want us to have access because there were things in there theyā€™d prefer we not have access to. In the end, they exposed those things to use through the Allen Bradley PLC. So the answer is that we never pursued OPC-DA XML any further.

Shipping messages
Every package that goes through the SICK or COGNEX scan tunnels in advance of the flex sorter, is sent as a TCP message, in our case on port 5445. These messages are read and determine what has shipped, what is recirculation, and what is overflow.

The key point here is that messages will arrive at almost the exact same time and using the standard Ignition provided TCP driver will not work. For example, if there are 15,000 messages per hour, youā€™ll only be able to read about 5,000 with the Ignition TCP driver.

To overcome this we wrote a buffered TCP driver. If that is something you need let me know and Iā€™ll happily share the module and source code.

Another minutia is that the FlexSort by default only allows one TCP connection at once so if there is already a socket connected to it, you will not be able to connect. We had to ask them to configure it to accept 2 sockets at once. Modern world I knowā€¦

Sorry for the long message, but I have spent a good deal of time on this topic.

Cheers,

Nick

@nicholas.robinson Thank you for the feedback. It helped us navigate the way forward with this project. We decided to pursue Kepware to communicate with the Flexsort controllers (we have 7 across our campus). I downloaded the trial and was able to connect and browse the tags without too much effort. We are only using this to show the sorter status and alarm data for now, but there is a quite a lot of data available through the OPC XML-DA interface - basically everything that you can see on the Flexsort UI is available.
Now to wade through our own bureaucracy to buy a Kepware license. Easier said than doneā€¦

Thanks again for your help!

Now to wade through our own bureaucracy to buy a Kepware license. Easier said than doneā€¦

This sounds like motivation for you to write the OPC XML-DA module :grinning:

Nick