Accessing Ignition's OPC Tags from an external OPC client

Hi,

Just had a silly doubt. My question is , can NON-OPC tags in Ignition (e.g. Memory Tags, expression tags, system tags including OPC Tags etc) be accessed/subscribed/read/written to by an OPC client outside of Ignition (assuming the expose tags flag on OPC server is set to true)? Or is it that only OPC server tags can be accessed or subscribed outside Ignition?

My understanding is that OPC server in Ignition is where the various PLC drivers write/read tag data to/from. Is it correct? Can I access non OPC tags from Ignition from an OPC client outside it thru my application using OPC interface?

1 Like

Yes and no. If you enable Configure->OPC-UA Server->Settings->Expose Configured Tags->Expose Tag Providers, all configured tags (but not System & Client tags which are not part of the tag provider you can expose) on the server you enabled this on are exposed to other OPC-UA servers (such as another Ignition server).

An easy way to test this is to setup a gateway network between two Ignition servers and then setup a remote tag provider on the second one that connects to the first server with configured tags exposed. You can then browse the remote tag provider from the second ignition server. You’ll find all tag under the provider you exposed are shown, but the System and Client tag trees–as well as any other tag providers you haven’t exposed–will not show up.

Oh that means the entire address space of Ignition is on an OPC UA server (which is really good!) ! Then what tags does the OPC Tag browser show? Does it show only PLC tags that are configured in Ignition? I am a bit confused!

In Designer Tag Browser you have Tags, System, Client, and All Providers. The first can be shared (everything, including Data Types folder at top is shared). The second two cannot (as far as I know). The last one–All Providers, shows the tags that can be shared (under “default” as installed, though that name can be changed and more providers can be added) as well as tags that are shared by remote tag providers.

Ok. So we can add any number of tags providers in the tree structure (under All Providers of course). But what is remote tag provider? Which tags does the OPC Tag browser show ?

Another way to put this: if you can create/edit/delete the tag provider under under Configure->Tags->Realtime on the gateway, everything in that tag provider will be shared/exposed via OPC-UA when you set Configure->OPC-UA Server->Settings->Expose Configured Tags->Expose Tag Providers on the gateway. The Ignition tag provider is an OPC-UA server, so if you’ve exposed the tags you can browse them from another OPC-UA client (another Ignition server in the examples I’ve given–you can see them in tree in Designer, or Quick Client on Gateway).

Yet another way to put it: if it shows under All Providers in the tag tree in Designer and you’ve set Configure->OPC-UA Server->Settings->Expose Configured Tags->Expose Tag Providers on the gateway, it will be exposed to OPC-UA clients.

A Remote Tag Provider is setup on one Ignition gateway to access tags exposed by another Ignition gateway on the Gateway Network. A third-party OPC-UA client could also access the exposed tags.

[quote="PRAMANJ, post:1, topic:20414"]
can NON-OPC tags in Ignition (e.g. Memory Tags, expression tags[/quote]
Yes.

[quote="PRAMANJ, post:1, topic:20414"]
, system tags[/quote]
No

[quote="PRAMANJ, post:1, topic:20414"]
including OPC Tags etc)[/quote]
Yes, though I'm not sure I understand what you mean here as premise of question was "NON-OPC tags".

[quote="PRAMANJ, post:1, topic:20414"]
be accessed/subscribed/read/written to by an OPC client outside of Ignition (assuming the expose tags flag on OPC server is set to true)?[/quote]
Yes, except System & Client tags as noted above.

[quote="PRAMANJ, post:1, topic:20414"]
Or is it that only OPC server tags can be accessed or subscribed outside Ignition? [/quote]
Yes, only OPC-UA server tags can be accessed or subscribed outside Ignition, but the various tag types you can create (OPC, Memory, Expression, Query, Derived, Data Type Instance) are all created in Ignition's OPC-UA tag provider. From outside Ignition, all these types are OPC-UA tags.

[quote="PRAMANJ, post:1, topic:20414"]
My understanding is that OPC server in Ignition is where the various PLC drivers write/read tag data to/from. Is it correct?[/quote]
I'm not sure what is under the hood, but from the perspective of a user, Tags created in Ignition are OPC tags if they get values from a device connected to Ignition's OPC-UA server or from another OPC-UA server the gateway is connected to (Ignition or otherwise). However, these OPC tags as well as the other types are all OPC-UA tags when exposed as configured tags to other clients--it is Ignition's OPC-UA server that is exposing them.

Yes, if you mean OPC only as tags defined as OPC tags in Ignition. But tags defined as Memory, Expression, Query, and Data Type Instance in Ignition are also OPC-UA tags to other apps when exposed via Ignition's OPC-UA server and can also be accessed from an outside OPC-UA client..

My confusion stems from the fact that when I open the “OPC browser” window by clicking the “Browse OPC servers” ICON on the “Tag Browser” window in designer, I get a pop up window showing a tree view of Tags with two node in it by default (1)devices and (2)server. In the Ignition University videos it is shown that the PLC tags are dragged and dropped here (or in case of modbus devices, they are manually created here). So I thought what is shown in this “OPC Browser” pop up window are the only OPC UA tags and others are what I called non-OPC tags, because this window doesn’t show the memory tags,expression tags or any other tags visible in the main tag browser.

What is the separate OPC Browser window for? Is it only for adding PLC devices and tags within them? What are the server tags in this window?

For browsing OPC servers, whether it happens to be the connection to Ignition's built-in OPC server or any other number of 3rd party servers. Dragging tags in from here is how you create OPC tags without manually defining them by typing in an OPC Item Path.

All OPC UA servers will have a Server folder as part of their address space. The nodes and structure of this folder are defined by OPC UA.

It might help if you don’t use the word “Tags” for what you see in the OPC Browser. It makes more sense to think of them as Item Addresses, or Node Addresses, as they only point to data that each OPC server is making available, via its drivers. In contrast, the Ignition Tag Browser is the list of data values that persist in the Ignition Server. Ignition’s OPC Tags, in the Tag Browser, are data values that maintain connections (subscriptions) to OPC Item Addresses in order to reflect the actual data at that address (typically external, in a PLC) at some scan rate. Other types of Ignition Tags, in the Tag Browser, get their data in other ways (expressions, SQL) or just hold data that is written to them (memory tags).

It’s also important to know that the OPC Browser’s list of Item/Node Addresses is limited to what the specific PLC driver is capable of showing. Some protocols don’t offer any way to list addresses within the targeted PLC – such devices look empty in the OPC Browser. The user is required to either manually enter an address into every Tag they wish to subscribe, or when possible, “educate” the driver with a list of known addresses. Among the protocols that can show a directory from the target PLC, some addressing options might not be shown. The user would have to enter these manually as well.

The key point is that an OPC Item (Node) Address that is not subscribed anywhere in Ignition will not have its data brought into Ignition automatically. (Which is vital to limiting comms load on your PLCs!) OPC Items can be directly targeted by scripting (system.opc.*) or transaction groups to bypass Ignition’s Tags. The associated data is brought into Ignition or sent from Ignition directly, via the specified OPC Server(s).

So my understanding now is that the OPC browser only shows the device tags created by adding folders for the configured PLC's and dragging and dropping tags from the corresponding PLC tag browser into them. For devices like mod-bus and Siemens, where PLC tag browser is not supported, tags have to be created manually for them here . Further more, if any external OPC servers are configured on the LAN as additional Tag Providers from the gateway, we can drag and drop tags from their tag browsers as well to this OPC browser. However the memory tags, expressions tags etc (excluding the system and client tags, ) are also OPC Tags , but they are not shown in the OPC Browser. Will memory tags etc for external OPC server be visible here for draggingand dropping them in this OPC Browser?

Hope my understanding is correct.

One question in this regard, is the name space for all the OPC Tags same or each device or Tag provider (created in this OPC Browser by drag / drop etc) has a separate name space while specifying its Tag Path?

Got it! So the System tags shown in OPC Browser show the system variables for ignition's OPC UA server. However the values of these variables like MaxBrowseContinuationPoints etc are not visible shown here? Where are they configured from (is it from OPC UA configuration page etc?) Why are their values not shown here? You can only copy their tag path or refresh here.

No. The OPC Browser shows addresses that could be made into OPC Tags. And it may not show all possibilities, if the target protocol cannot "browse".

The OPC Browser only shows addresses. The addresses are turned into data when read/subscribed.

Oh that explains everything! It seems to dawn upon me now! I was all the time thinking that these are Tags in Ignition's OPC server! So they are addressed or pointers! Out of these addresses the required ones can be copied in to Ignition's Tag database , which is an OPC server or can be directly addressed using scripts. So I guess only tags that are required for display of analog/digital display and commands to PLC need to be copied in Ignition's tag data base right? And of course UDT's for equipment e.g. pumps/valves etc. So presume the binding between the OPC tags thus copied in Ignition will have a two way binding with corresponding locations in PLC's thru drivers? Is that correct?

Above aspects are not brought of in IU videos on Tags. Also the videos don't cover how to create tag providers thru the Ignition gateway server! Or perhaps I had some wrong preconceived notions.[quote="pturmel, post:10, topic:20414"]

It's also important to know that the OPC Browser's list of Item/Node Addresses is limited to what the specific PLC driver is capable of showing. Some protocols don't offer any way to list addresses within the targeted PLC -- such devices look empty in the OPC Browser. The user is required to either manually enter an address into every Tag they wish to subscribe, or when possible, "educate" the driver with a list of known addresses. Among the protocols that can show a directory from the target PLC, some addressing options might not be shown. The user would have to enter these manually as well.
[/quote]

Understood.

Makes sense.

Every thing makes sense now. You have explained it very nicely, and my doubts are clarified now.

Very good.

One clarification:

Close. Ignition's persistent tags are not an OPC server normally. They are the global "registers" for everything within Ignition proper, particularly UI data. Ignition has an option to re-publish these internal tags, including expression/sql/memory tags, as OPC Items to other servers. All or nothing, though, not individual tags.

Oh! Again I had a misconception that everything in Tag browser (except for system & client tags), is under Ignition's OPC UA server ! So ignition somehow makes them behave or look like OPC tags (all of them or none) to external OPC servers, when the flag is set! That's something to keep in mind , while using these tags from external OPC UA clients!

Thanks a lot indeed.