First off, I am a PLC guy so I really don’t know much about how 3rd party software connects to RSLinx or other OPC servers to communicate with my PLCs. We have many systems where we have some software packages that connect to RSLinx to get data to/from our PLCs. Since I am now using Ignition for my HMI panels and it has an OPC-UA server built-in it is a waste of money to keep buying RSLinx on top of that. I want to point our software guys in the right direction so they can use the Ignition OPC-UA server instead of RSLinx OPC-DA. Any links to documentation or examples that would help this change would be greatly appreciated.
Ignition OPC-UA has a limited number of drivers for Allen-Bradley devices. You can use it instead of RSLinx and these are the supported devices:
ControlLogix 5500 connected through 1756-ENET/A, 1756-ENET/B or 1756-EN2T
MicroLogix 1100 and 1400 direct
MicroLogix 1100 and 1400 connected through 1761-NET-ENI
MicroLogix 1100/1400 connected through Spectrum Controls WebPort 500
PLC-5 L/20E, L/40E, L/80E direct
All PLC-5 processors connected through DH+ via the 1756-DHRIO module
SLC505, SLC504, SLC503 connected through 1761-NET-ENI
SLC504 connected through 1756-DHRIO
SLC505, SLC504, SLC503 connected through Spectrum Controls WebPort 500
Basically we have only Allen-Bradley TCP drivers. This page has more information as well:
Hope this helps.
I am using the OPC-UA server for communications from my Ignition tags to my PLCs. We also have some custom software packages (not Ignition) that need to communicate to the PLCs as well. Right now those packages are set up to use RSLinx for that and we are still purchasing RSLinx for that purpose. We would like to use the Ignition OPC-UA server since that is already there. I want to give some information to the software guys about how to change from the RSLinx OPC-DA type of connection to the new OPC-UA interface. I tried to get some information from OPCFoundation but it looks like you have to pay to become a member to download the specifications and SDK (if we need that).
Off the top of my head I’m not sure of any products that go UA -> COM. The focus right now from everyone is the other way around.
Furthermore, I suspect that any company with a wrapper would be selling it for around $500 (seems to be the price point for wrappers), so if you needed to install one at each machine, you probably wouldn’t be saving much.
I’ll try to take another look around, though.
I am not looking for a product or wrapper to convert COM to UA. I am looking for information on how to change our software interface. Right now we use RSLinx OPC server to communicate from our custom (php based) software application to our PLCs. We would like to use the Ignition OPC-UA server instead. Do we need an SDK, or is there information on how to connect to the ignition OPC-UA server to get data from our PLCs into our custom application?
I understand that you don’t want COM->UA… when you say you use RSLinx, I assume you use classic OPC, and so I was suggesting UA->COM, so that you wouldn’t have to change anything at all. If you use RSLinx’s native interface, then I’m way off and that wouldn’t be an option.
If you want to change your application to talk UA to our server, you’ll need a UA SDK (and frankly, some time). So, I don’t really know if that’s the best option, even if it would be the most “future proof” in the sense that you could also use other UA servers.
There aren’t any other ways to connect to the server right now. I suppose you could implement some sort of a bridge using the module SDK that did whatever you wanted, but that would take some time. The only other option I can think of, which actually isn’t all too bad, would be to setup an External Driving SQLTags provider and tie into that. That is, your app would basically interact with the server through a database. This thread has a link to a white paper we wrote describing the SQLTags system, and how to write your own driver. In this case, you’re not exactly writing a driver, but you’ll have to know what the tables are doing in order to interact with the data. You would setup SQLTags for all of your data points, and then you would have some daemon that loaded the tags and watched for values (basically, you load the sqlt_core table, and then periodically query where “valuechange>lastcheck”, and update the tags in your program).
Hope this helps a bit,
OK, thanks for your help. The idea you proposed would probably work but we would have to poll to look for changed data in the database manually instead of the OPC server polling the PLC and notifying us of a change and getting the data directly. That’s not a big deal though. This would not be an option for the applications where we just have the Panel Edition though from what I understand because we could not set up SQLTags to load PLC data into a SQL table. So, I think taking the time to implement the UA SDK is the right way to go.