[quote=“Pat”]Food for thought -
You might be saying, " I just need to know what the value is that’s sitting in the PLC’s memory location N7:15. What difference does it make whether I have Ignition get the value directly using an OPC path of N7:15 or if I have Ignition get the value ‘indirectly’ from a tag in an OPC server by using an OPC path of MyTank/Level? You say tomato, I say tomoto." Well from the standpoint of just getting the value that resides in N7:15 into Ignition it doesn’t matter, but in the big scope of things it can make a difference.
It’s easier to make a mistake typing in a PLC’s memory address as opposed to typing in a nickname or tag. The fewer times you need to associate N7:15 with MyTank/Level the fewer mistakes you are going to make. If you don’t subscribe to this philosophy then some of these examples will be mute to you.
Here are some benefits to using tags in an OPC server -
(1) - Set it and forget it 6 years ago I set-up the tags in an OPC server for my customer. Since that time I’ve never had to concern myself with what the PLC’s memory address is for MyTank/Level. Keep in mind that back then my customer was using WW, then I switched them to FPMI/FSQL, and now they are using Ignition. Had I not set up tags in my OPC server there’s a minimum of two additional times that I would have had to remap N7:15 = MyTank/Level.
(2) -Single point of change. Back when I was switching my customer from WW over to FPMI/FSQL a lot of changes were being made to the PLC programs to make them more consistent with one another and to improve network data transmission. This caused a lot of the PLC’s memory locations to change. In my case I only had to go to the OPC Server find the tag MyTank/Level and change the PLC address to say N7:13. Had I not been using tags in the OPC Server I would have had to go into WW and FPMI/FSQL and change the memory locations for those tags since they were using both systems during the change over. How about even in a single Ignition installation, you could have a tag that directly references a PLC memory address, and you could have a transaction group that directly references that same PLC memory address, if that memory address ever changes you need to remember to change it in two different places in your Ignition project.
(3) - Mixed PLC system. Let’s say you have PLCs from Allen-Bradley and AutomationDirect, their addressing is completely different. So if you’re using Ignition to directly map to the PLC’s memory location you’re going to have MyTank1/Level with an OPC path of N7:15 and MyTank2/Level with an OPC path of V2000 because MyTank1 is connected to an AB processor and MyTank2 is connected to an AD processor. So now when you are creating tags in Ignition you’re going to have to remember how to address the memory locations of the AB processor along with how to address the memory locations of the AD processor.
(4) -Consistency of data. I do all the scaling in the OPC server, I know that the values received from tags in the OPC server are scaled ‘real world’ values. Take the case of a mixed system of PLC manufactures again, AB supports floating point values, AD does not. If you were using Ignition to directly access the PLCs memory locations then in addition to having to remember how to address the memory locations of two different manufactures’ PLCs, you now need to remember which analog values you need to scale and which ones you don’t and what is the scaling on those values.
(5) - Less mistakes from the get go. When I’m working in Ignition I have a lot of things going on in my mind, how I want the GUI to look, behave, what data needs to be recorded, how to present it, how the users are going to interact with it, etc. When I’m creating tags in my OPC server I have only one thing on my mind, making sure that the tag MyTank/Level = N7:15 is correct. I’m less likely to make a mistake while creating a tag in the OPC server because creating the tag and making sure it’s correct is my only concern. Granted if you have a small system this isn’t a big deal, but when you get into a system that has 1000’s of tags it becomes a concern.
(6) -Security. Letting other OPC clients directly access the PLC’s memory addresses through the OPC server should be a big No No. You shouldn’t allow another OPC client to get a value from the PLC by referencing N7:15, you should tell them you can get that value by referencing MyTank/Level. What if someone using a different OPC client said they needed to send a value to the PLC and you told them to use N7:5 and they mistakenly typed in N7:15, whoops! You should tell them, sure use the value MyTank/GallonsPerFoot.
(7) - Speed at adding Ignition tags. The tags in the OPC Server are already complete, I need to get that data into Ignition. I have a Tank UDT, I create a new Tank UDT tag, set the OPC path and I’m done. Yes, at some point I had to take time and determine how I wanted all my tags to be structured and enter that into the OPC server, but I did that once, 6 years ago.
I think it’s great that drivers are included with Ignition’s OPC-UA server, and I certainly don’t way to take away from the work they have done, but there are some good advantages to using tags in a 3rd party OPC server.[/quote]
Pat, you make some very good points that i will keep in mind for future integration.