Ignition8 with Modbus TCP problems



I’m starting a demo/proof of concept with Ignition 8 for the plant where I’m currently working and as a starting point I’d like to get a modbus TCP device (SOCOMEC Diris A40 electricity meter) connected via Modbus.

I tried reaching the device with Ananas64 and I can read correctly with the read holding register function. However, I can’t seem to get Ignition to communicate with the device at all. The device addresses are in the 50000 region (still Holding registers), so the Ignition addresses should be in the 10000 range, I also configured the device ID which for this one is set at 255 and played with the zero based addressing bit without any luck.

All of a sudden, the ignition designer is telling me that the tag quality is uncertain whilst before it was always set to either Bad_Stale or Configuration Error (until I sorted the unit ID). I tried the Quick OPC Server from the gateway, but it doesn’t give me any indication as to what may be happening.

Any ideas on what may be the issue? This is a fresh installation of Ignition8. I have used Ignition 7.9 with Modbus without any problems so am struggling to understand what’s wrong here.



Can you get values from this device with another piece of software like Modscan?

If so, it would be useful to compare settings and to get a Wireshark capture of the successful traffic.




I can get data using ananas64 (which seems similar to Modscan) from the device.
I just downloaded Wireshark and will have a look at what may be going on.

I’ll post some more details here.



I didn’t manage to get Wireshark going, but I had another try at getting the comms to work and happened to notice this on the driver information:

"The address in the device that mapping will begin at. Note that since the table has already been selected by the Modbus Type property, this number should range between 1-9999. "

Since the addresses I’m trying to reach are Holding registers in the 50000 range, the address is above 9999 which could be why the driver isn’t cooperating.

I did try to read HR0 and I get values, but when trying to read 40000 (or 40001) from the device I don’t get a reply, so perhaps there is some way that the driver behaves that I’m not really sure how to get around.

Any ideas?


Ok, the meter I have apparently implements a non-standard (that’s the last I’ll ever use from them) Modbus protocol where their 50000 ranged addresses are in fact 90000 (40000 from the Holding Register + 50000 for the range).
However, I was trying to read HR50512 and kept getting Bad_Stale quality from the tag. Would this be from the driver?



It’s still unclear to me what addresses you’re supposed to be reading, which is why I was hoping for a Wireshark to clear it up.

Many devices erroneously refer to HR’s as starting in the 40000 range when they really mean HR0 or HR1. The problem is it’s ambiguous because 40000 is also a valid holding register address. If they didn’t have their heads up their assess they would at least use 6 digits when specifying to unambiguate - 400000 clearly means HR0 because 400000 isn’t a valid address, so you can assume they are using the ‘4’ to mean HR.



You may have a hard time using the Ignition Modbus driver for a Modbus device with non-standard addressing.

The Ignition Modbus driver uses register designations (HR, IR, C, etc) to prepend the standard starting address number (3XXXXX, 4XXXXX) onto the beginning of the register number. For example HR1 will become the address 400001.

I am able to read a non-standard address device. For example, I am reading an inverter input register 775 using the Ignition address: IRI30775 which is converted to reading Modbus address 330775. I only found out this quirk by testing the communication using Kepware and the wireshark feature built into Kepware. Luckily my non-standard address still uses the standard Modbus starting address.

I don’t know how you would be able to read an address in the 9XXXXX range using the Ignition Modbus driver.