GE PLCs only provide Diagnostics when connected to OPCUA

I am evaluating Ignition for use with GE PLCs of various types (90-30, 90-70, 90-90, R3xi, etc).

When I set up the device in the Gateway Configuration, it shows “Connected”. I am using the Modbus TCP driver and have even tried the Modbus RTU TCP driver.

But when I go to the OPC browser or the Quick Client, it only gives me a tag folder for Diagnostics with associated tags populating it, but nothing else.

Is anyone familiar with how to access the PLC tags for GE PLCs? I went to the GE support site but they provide little if any help. (Could that be due to them protecting their precious iFix and Proficy? B-))

There’s no browsing or tag enumeration in the Modbus protocol. You’ll have to manually create tags addressing the Modbus registers that have the data you’re interested in.

What those registers are will depend on how you’ve configured/mapped the data in the PLC.

https://docs.inductiveautomation.com/display/DOC79/Modbus+Addressing

Thank you, Kevin. I’ll dig into that document.

Any plans to provide a GE-specific driver in the Ignition OPCUA, similar to the AB driver?

I think @pturmel was interested in developing one, but we won’t be doing it in-house. The protocol is not openly documented and new GE products have OPC UA built in.

GE’s SRTP protocol (undocumented version of SNP on ethernet) is on my to-do list, but not near the top. And I only have a single 90-30 model 364 in my lab to test against. /-:

Ok, I have a GE PLC that I have named ProtoWW and it is part of my OPC server called TestOPC, which is of type OPC-UA. This is the same server as what all my AB PLCs are connected to.
One of the tags in the PLC is R00096. So I created a tag called TestTag2 and used the path [ProtoWW]H96. But the tag is not returning any values. See below:

Is there something else going wrong? (All my AB tags are still producing data) Do I need to create another OPC server just for the GE devices?

Check that. It should be [ProtoWW]HR96****

Check the logs for messages from the Modbus driver.

I get “Received response with ExceptionCode: 0x02 (IllegalDataAddress).”

But how am I using an illegal data address? I’m using the syntax provided by the Modbus protocol.

That exception code comes from the PLC.

Some common things to check:

  • You set up any mappings necessary in the PLC
  • You have the correct address (could be off-by-one)
  • You have the correct unit/slave ID. By default Ignition uses 0. Using another value the address would look like e.g. [ProtoWW]1.HR96

The register tag is %R000148. This is mapped from an internal tag that generates the “seconds” from the PLC clock.
I can see the data in the PLC (Proficy Machine Edition) and in Kepware (as R148).
According to Modbus procedures, I’m supposed to lead a ‘Holding Register’ with a 4 (so 400148 would be my address in the Modbus protocol)
However, for Ignition OPC-UA, using the Modbus TCP driver, I should only have to write the tag as HR148, which is what I am using.

So the address is correct. (I’ve even tried multiple addresses with no luck.) This is a simple PLC setup so the unit/slave ID should be the default. (I have tried several variations with no luck)

I am able to access tags and view the data in them from the Diagnostics branch of the device, such as HostName, Item Count, and Count.

From a quick google, it appears that Modbus mappings are not enabled by default. You apparently need to set the Modbus Address Space Mapping Type == Standard Modbus Addressing.

1 Like

And that is done where? In the PLC or in the gateway?

In the PLC. Under CPU Settings. (I don’t have one myself…)

Bada BING! Thanks http://forum.inductiveautomation.com/users/pturmel !