cancel
Showing results for 
Search instead for 
Did you mean: 

UDS with RSLinx 2.43 OPC Gateway

Former Member
0 Kudos

Hello,

I am connecting the UDS to Rockwell Automation's RSLinx OPC server, RSLinx Gateway. I can successfully read data in xMII queries from our PLC's using an alias file when namespace browsing is set to FALSE. However, we have hundreds of PLC's, each with tens of thousands of tags, and I need to migrate to not using an alias file.

It was suggested that I create two data connectors: one using an alias file (DOESN'T browse the OPC namespace), and one with no alias file (DOES browse the namespace). Normal tag queries would connect to the aliased data connector. BLS would connect to the namespace browsing connector on a daily basis, and would re-create the alias file on a daily basis, and therefore browsing the OPC namespace only once a day. Then all our OPC tag data would use a data connector that references the alias file, but our alias file would be only 24 hours old, which is fine. And its certainly a lot easier than typing in 10,000 tag names by hand into an alias file.

In an attempt to browse the namespace, I have been having a lot of trouble with the UDS, but have finally gotten a combination of settings that seems to work. Here are my settings:

OPCServerName: RSLinx Remote OPC Server

ReadDescriptions: False

LookupItemID: True

CacheMode: None

NamespaceBrowsing: True

NamespacePathDelimiter: .

BrowseMask: *

BrowseMode: Hierarchial

DemandLoadMetadata: True

ReadMode: Async

ReadDelay: 0

ReadSource: Device

AcceptableDataQuality: Bad

Synchronize: False

In the query editor, I only see 1 top level group, even though I have 14 groups (PLC's) defined in RSLinx. If I delete this first, big PLC from RSLinx, and have 2 small PLC's are listed first in RSLinx, I see 2 of the 14 in the query editor. This leads me to believe that the query editor is dropping off groups above a certain limit (queries set to 200,000 row count, way above what it needs to be) when it makes a request to the UDS.

Additionally, if I click on the "configure aliases" button in the UDS admin, create a new tag, and click on the "..." button to browse to source tag list, I see the UDS admin crank though about 22,000 groups on those 14 PLC's. Then it starts going through all the tags. It seems to abort prematurely, right around 65,000 (that's only about 1.5 of the 14 PLC's currently listed in RSLinx).

The "Find Tag" dialog box only shows a hundred or so tags with no mask. If I specify a mask, then only tags that it returns are from the first 1 or few PLC's (say 0-44,000 of the 65,000 retrieved). Even though the tags were visible as being one of the 65,000 that were enumerated, they never show up in the "Find Tag" box, even with the correct mask!

The "around 65,000" number screams a memory limit in the UDS. Furthermore, it seems like the query editor has a limit around 10,000, and the "Find Tag" box has a limit of around 44,000. What is going on with the UDS?

Our OPC namespace will have an overall tag number probably in the 1 million-10 million range. Does anyone have any suggestion on how to effectively create, and periodically update a namespace alias file for this many tags? Or do we have to resign ourselves to never being able to browse tags and only paste in desired tags directly in the query editor, or entered by the xMII user.

Welcome to the very large (and heavily tree-structured) world of OPC.

Thanks!

Jason

Accepted Solutions (0)

Answers (1)

Answers (1)

Former Member
0 Kudos

Hi, Jason.

When you refer to "tags", aren't you really seeing all of the possible addresses in the PLC rather than "symbol" or "tag" names (e.g. N100:10)? I recall this being one of the major limitations of the RS/Linx OPC server. Is there a way to expose the PLC symbols instead of every single possible element in every data file?

Alternatively, a lot of customers interpose a "dumb" HMI system (no GUI) as a tag concentrator. In reality, this has the same effect as the aliasing, but sometimes the vendor's native UI (e.g. RS/View) can directly import symbols from their programming software (e.g. RS/Logix).

Another option, if you can export your symbol definitions, might be to automatically create the alias file.

- Rick

Former Member
0 Kudos

Rick,

RSLinx handles tags differently based on the age, model, and horsepower of the Allen-Bradley PLC. For older/low-horsepower devices (SLC's, PLC-5's, Micrologix models), the "tags" are specific memory locations like N100:10 (the "N" means a data file in memory for integers). For newer/high-horsepower devices (Compactlogix, Contrologix), the "tags" are plain-english with a definable datatype (real, int, array, etc) like "Cell_3_Motor_RPM".

To an OPC client, RSLinx presents either kind of PLC in the same manner, providing a logical folder structure for that type of PLC. If the user knows basic information about the memory layout of the PLC, he/she can easily find the tag they are seeking when they browse for it in a typical OPC folder structure.

For example, here is the full OPC tag name for a integer in an older PLC, and an integer in a newer PLC could be (assuming "." as an OPC delimiter):

OldPLC.T4:0.ACC

OPC topic: "OldPLC" (seen as a group by the UDS)

Datafile: "T4"

Element in datafile: "0" (T4:0 is seen as a group by the UDS)

Tagname: "ACC" (a timer accumulator integer) (seen as a tag by the UDS)

NewPLC.Program:Speed_Reference.GainFactor

OPC topic: "NewPLC" (seen as a group by the UDS)

PLC routine: "Speed_Reference" (seen as a group by the UDS)

Routine Tagname: "GainFactor" (an integer) (seen as a tag by the UDS)

So I guess the answer is that the PLC, whether new or old, presents its memory layout in a logical, hierarchical manner to the OPC client.

We could use a tag concentrator, but an HMI system typically can't go out and dynamically browse and add tags from an OPC namespace since it is designed to monitor a pre-defined list of tags. If we are hitting tag limits in the UDS, whether we manually maintain an alias list in a dumb HMI, or in an UDS alias file is really the same amount of work, and a pain to maintain at an enterprise level as PLC programs are modified and new PLC's come online. My end goal is to be able to browse tag data in the query editor, and be able to drill down to the PLC tag level.

Thanks for looking into this,

Jason

Former Member
0 Kudos

Though not well advertised, you can also create multiple instances of the UDS with different filtering rules (all connecting to the same OPC server)...

Former Member
0 Kudos

I thought about defining a filter at the UDS level. I decided against if for 2 reasons.

(1) For a single, large PLC, the Query Editor will still be hitting the 10,000 row limit for the tag queries, making just a single PLC with >10,000 tags unbrowseable.

(2) At a full-system level, we'd then have 100 UDS instances of the same UDS, each talking to the same instance of RSLinx. We'd also have 100 OPC data servers, one for each UDS instance. That would be really clunky to achieve basic functionality.

I think the UDS really needs to be re-written to handle the large number of tags and groups that are typical in the OPC world.

Looking forward to its next release,

Jason

Former Member
0 Kudos

Jason,

The limit you are hitting is actually in two places, the UDS and the Template Editor. As for the UDS side, the limit has been removed in the next release of the UDS. The equivalent to the template editor in 12.0 is also completely overhauled and I believe that this limitation is gone.

Martin.

Former Member
0 Kudos

Jason,

I think you are having very good experience in xMII UDS and Rockwell software. I can tell this based on the explanation you have given on your issue.

If you can come up with some weblog on this area that will be very helpful for many people in xMII SDN community (Like me).

Thanks,

Srinivas.