Modbus OPC Driver Testing

I started testing the Modbus driver using an Acromag Combination Digital & Analog I/O module.
Below are few issue I ran into that need clarification.

1- Changing the device addressing table required multiple saves before the device would connect.
2- The OPC Quick Client Status = Good, Value = Correct value in the device, and Quality = Bad_NoDataAvailable. Why would the Quality field indicate Bad_NoDataAvailable?
3- Trying to write a value to a coil address stops the OPC Quick Client from reading the device data.

This not an issue but why can’t you use an underscore in the Device Name? The program works correctly and does prompt you to use alphanumeric characters only.

I’m sure Kevin and Tom will be addressing your main points - but the underscore issue was an oversight - this has been fixed and an update will be available later today.

I haven’t seen this problem.

Which build of Ignition do you have? If you don’t have version 7.0.8 build 4847 please download and upgrade.

Let us known if the problem still persists.

I updated Igntion from version from 7.0.7 to 7.0.8 build 4847 and the modbus module to 1.0.8.
The issues listed above still persist.

Adding the underscore to Device Name is working.

[quote=“rhoag”]I updated Igntion from version from 7.0.7 to 7.0.8 build 4847 and the modbus module to 1.0.8.
The issues listed above still persist.

Adding the underscore to Device Name is working.[/quote]

I’ve fixed issue #2 (reads returning Bad_NoDataAvailable). You should be able to grab a development build later today (anything > 4851 will contain the fix).

As for #1 and #3 Tom and I are investigating still. I will update this thread when we know more.

Issue #1 seems to be fixed but maybe related to Issue #4. The Address Configuration only needs to saved once as long as no tags use a Coil in the Modbus Type.

Issue #2 has been corrected.

Issue #3 The OPC Quick Client now keeps reading the device data after a write command has been issued to a coil address using the OPC Quick Client write [w] button.

Issue #4 Coil Addressing is not working. When a tag is setup using a Coil type address the following issues occur.

1- OPC Quick Client Status = Good, Value = No text or Data is displayed, and Quality = Bad_Timeout. If I change the address to type a Discrete Input it works properly.

2- When I setup a subscription to a tag that has a Coil address type all of the non-coil type tags Quality = Bad_Timeout. As soon as the subscription to the coil type tags are deleted or stopped all of the other tags Quality = Good and the data is displayed correctly.

I’m unable to reproduce the same in-house. Can you send us a log by doing the following steps?

  1. Make sure the problem Modbus device is in the OPC-UA device list. It is not required, but it will help if there is only one Modbus device while capturing the log.

  2. In the Gateway, select Console and then select the Levels tab.

  3. Type in Modbus and click the Set button.

  4. Set the trace level for xopc.drivers.modbus.ModbusDriver to “TRACE”

  5. Reproduce the problem.

  6. Set the trace level for xopc.drivers.modbus.ModbusDriver back to “INFO”

  7. Zip up and email the wrapper.log files to The warpper.log files are in the Ignition installation directory.

This will provide us with details to help zero in on the problem.


I just sent the requested files to the email address list aboved with the subject: “Modbus OPC Driver Testing”. Let me know if you need anything else or if you need to access my computer directly.

Thank for the log files.

This is what is happening:
When the Modbus driver requests coils from the Acromag, the response the Acromag sends back has an incorrect value in the byte count field for the Modbus TCP protocol. Reading inputs has the correct length.

There are two things we can try to resolve this. First make sure the latest firmware version is installed in the Acromag.

And second, is to use the register mirroring option of the Acromag. Holding registers 42000 to 42005 are holding registers that map to DO0 to DO5. To do so put the following addresses mapping in Ignition:
Prefix Start End Modbus Type Modbus DataType

Out 0 5 Holding Register 2000 Boolean

You may have to change the ranges if you are not using all of the outputs on the Acromag.
In the Acromag, when DO0 is on holding register 42000 will be non zero and Out0 in Ignition will be true. When Do0 is off 42000 will be zero and Out0 will be false.

I Hope this helps and let me know your results,


Thanks for the update.

I did try using the holding registers and they also do not work.
I did some testing using another OPC Server (Kepware) and found the same problems.
I contacted Acromag about the problems and sent then a wireshark capture to review. I should have answer by Monday afternoon.

I also have an Advantech remote I/O module to test. I will post my results for this device as well.

Thanks for your help.

Acromag acknowledged the problem and it will require a firmware update. Customer firmware updates are not possible so I had to send the units back to them.

The main communication protocol for the module I’m using is Ethernet/IP, but the module also provides one Modbus TCP/IP connection. The problem with Modbus communication is only related to Ethernet/IP modules and not there Modbus TCP/IP only modules. I have not had any problems with Ethernet/IP communication protocol and found the module easy to connect to my Allen Bradley ControlLogix PLC.

Like Inductive Automation, Acromag was very quick to respond to my problem and provided a fix.