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.

1 Like

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.

I am trying to communicate with a Modbus Device (DIRIS 30A).
Modbus addresses are in the 50000 range.
Addresses I want to read in the device:

I am able to read all addresses in the device using CAS Modbus Scanner and Kepware. I am not able to do the same using Ignition.

Using Ignition, I was never able to communicate with the device using HRXXX (OPC Item path in the designer).
Using Modbus Addressing in the gateway, I am able to read UINT (16bit) but I am not able to read Float/UDINT (32bit).


Any ideas why I cant read Float/UDINT?
I am using Ignition 8.05

Try turning the “Span Gaps” setting off.

If that doesn’t work it might be worth getting Wireshark captures of the various softwares reading these registers so we can compare.

I just read my post and I realise that I am using Modbus Type : Input Register (Float) (Function 4)
I should be using Holding Register (Float) (Function 3)…
Here is my post anyway…

Turning the “Span Gaps” setting off didn’t work.

Wireshark captures monitoring tag P_AVG (address 51078 (+1 offset = 51079)):
Kepware Wireshark (communication is working):

Ignition Wireshark (communication is not working):

I don’t have my Modbus device anymore (Diris A30).
I will be able to test this device again in 1-2months (on site)…

Can you zip those captures and upload them or DM them to me? Screenshots aren’t really that useful.

I came across this thread when trying to get values from Diris, however mine had the RTU module not TCP installed, so I used a Moxa MB3170 as a middle man.

For anyone that may come across this, use this manual: https://www.socomec.com/files/live/sites/systemsite/files/SCP/6_gestion_energie/diris/diris_a40/536103b_GB.pdf

e.g. Refer to page 22, register 790, Total active power, Ignition address nodeID.HRI790, Moxa settings reverse word order false, one based addressing false, tag scaling linear 100:1

There are meters with TCP module on same system that weren’t configured by me, they are using e.g. nodeID.HRF345 for KW live 1, so far I haven’t stumbled across a manual that contains this register list.

2 posts were split to a new topic: Siemens Sentron PAC3220 over Modbus TCP