Checksum error in one program but not another

I am trying to set modbus RS485 2 wire communications with a Newport INF-B process meter. My end goal is to use a PLC to communicate with this device, but I have have trouble getting that going. So to verify I have meter settings and wiring correct I am using my PC to start with. I have a MOXA Uport usb serial device connected to my computer. The MOXA is setup for RS485 two wire on port one (Com 1).

I started with the software that came with the meter, Infinity Configuration software, and used the modbus section of the software to send a read request to register HEX 0B (Dec 11). I am also using Serial Port Monitor software to see the commands being sent and received through the serial port. Attached are screen captures of the Infinity and Serial Port Monitor. There were no problems using the Infinity software.

Then I tried using Modbus Poll software to read the same register. Attached is a screen shot of the Modbus Poll Settings and the Serial Port Monitor after the command was sent. You can see that only 2 of the four bytes were returned and there is a checksum error. This is the same problem I am having when trying to use the PLC.

The command sent from each of these applications looks the same. Why the difference in response?

I am hoping someone can help me correct this issue?


This is a case of a misleading error message being returned.

According to your attached packet captures, your master is sending the following request:
01 03 00 0B 00 01 F5 C8 - Device 1, Read Holding Registers, Register Address 11, Number of Registers 1

But your slave is responding with this:
01 03 04 00 10 00 FB BA 75 - Device 1, Read Holding Registers, 4 data bytes, Data 0x001000FB

The slave's response is not a valid Modbus response to the request. The master is requesting 1 register, but the slave is returning data for 2 registers. A Modbus register is 2 bytes, not 4.

There is, however, a variant of Modbus called Enron/Daniel that does use 4 bytes per Modbus register. I believe you need to check the "Enron/Daniel Mode" checkbox in Modbus Poll to tell it to expect 4 bytes per register (though I'm not sure if Modbus Poll only applies this to registers in the 4x5001 - 4x5999 and 4x7001 - 4x7999 ranges). Details on this can be found here:

You will need to check your PLC to confirm whether or not it supports the Enron/Daniel version of Modbus. If not, you may need to use a gateway to convert Enron/Daniel to standard Modbus, such as this:
Unfortunately checking the Enron/Daniel Mode option did not help. Looks like it only works in the upper registers. I looked at the manual for the gateway you linked to and I could find nothing about this conversion. Before I buy I need confirmation this will work?
Yes, the Mirius will work for this application. I am the product specialist at ICC for the Mirius. You can email me directly (email is in my profile) or submit a support ticket on our website if you have additional questions on the Mirius or need assistance configuring the gateway.

Details can be found in the Modbus RTU Master driver manual here: RTU Master.pdf

The configuration settings are called "Word-Size Register" and "Word Count" found in the Holding Register Service Object Settings under 32-Bit Options.

The Mirius is configured using our ICC Configuration Studio software, which is available as a free download here: