PLC5 PD Blocks

I would like to archive data from PID blocks addressing components found in the PD files such as PD90:20.OUT which is a valid address in the PLC5 using RLInx Pro.

I get an error message saying

Error Getting Details
An error occurred reading OPC item details:
Object reference not set to an instance of an object.

What does this message mean and is there a work around or some way to get this data without moving the values into other files in the PLC?


This is a problem we’re having with some versions of RSLinx (I believe it only affects >=2.5). It only affects BROWSING, or more specifically trying to bring items down into the group.

If you were to create a new OPC item manually in the group, and set its item path to [TOPIC]Address - in this case [PD90]20.OUT (I think) - it should work.

We’re trying to see what we can do to work around this problem. Long story short, RSLinx is one of the most un-compliant servers around, and it’s a constant struggle to keep it working with our software. We try because there are so many installations of it. Kind of interesting, I just notice the other day that the release notes for 2.5.1 say that they don’t even support “browsing in .net clients”. As far as OPC goes, there’s not exactly a separate definition for .net apps… :-/ Anyhow, Sorry for the rant!

Feel free to reply if you have any questions/problems creating the point manually.


Thanks Colby,

I may play around a little trying to create manual entries, or I may temporarily map the values to other Integer or Floating Point files. For now my only quick question is what other OPC servers do you reccomend for use with PLC5’s and SLC500’s other then RSLinx?


Hi Rollie-

First off, I’m pretty sure that the error will occur irregardless of the data types involved, so redirecting the data may not be worth the time. Playing around with CSV import might make it a bit easier to manually create the tags you need.

As for other OPC servers, I usually end up recommending Kepware. It’s a very good/stable server, and our customers have always been happy with it. Beyond that, some other companies that make AB servers are Matrikon and Cyberlogics. You can take a look at the individual servers to see what features they offer compared to the others, they all run about the same price.

The biggest thing that people immediately notice when moving away from rslinx is the fact that browsing isn’t as automatic. That is, in rslinx, once you create a topic you can browse the device. In other servers, you may have to import memory maps or create tags manually if you want to be able to browse. A bit of a nuisance, but generally worth it for how much better the other servers are in general.

Hope that helps,

A number of years ago I used an OPC-based SCADA package and was put off by the number of times you had to define a point - in the OPC server, in the HMI, in the logger, in the trender and in the alarm package.

When I came to use Factory SQL I thought I was going to have to configure each point in both the OPC server (KEPWare) and FactorySQL (or SQLTags). However, what I’ve ended up doing is configuring the channels and devices in the OPC server, and defining the points in FactorySQL or SQLTags using the direct PLC address - this is called Dynamic Tag addressing.

I’m communicating with a PLC-5 amongst other devices, but I’m not using the PD files, so I don’t know for sure if this approach will work - worth a try though, as it immediately halves the amount of point configuration you need to do 8)

Thanks for all the good advice.
I tried manually creating an item and it worked just fine.
For my immediate application I have only 20 PID loops, so the extra effort is not that great. For the time being it should get me past this particular problem.

I’m an end user, so a long term solution for future projects may not be that big of an issue for me.

Now I can move on to the other variables.

Absorption Corp

I’m glad it work. When we release 4.0.2, the browsing in RSLinx will work again, but it looks like it won’t be retrieving the data types correctly. It’s a problem with the property retrieval function. I’m mostly posting this just for other people who happen upon this thread.