Modbus TCP Slave ID causing Illegal Data Address Errors

I am a new intern and I am working on a system that has multiple PowerLogic meters chained together so that only a single Ethernet card is used. I am able to address the master device just fine, but when I go to interact with the slave device using the recommended unit ID convention I keep getting the error.

When creating a tag I use: [DEVICE]slaveID.HR.REGISTER;
e.g.: [CM4000]60.HR.1000

Does anyone have any insight on how I can fix this and be able to talk to the other devices as there are about 10 connected to the single master device?

This isn't the correct syntax, this is: [CM4000]60.HR1000

I fixed that error, and now the tag reads "Bad" instead of configuration error, and I am still getting that illegal address error.

What's the full error from the logs?

This means you're reading an address the device doesn't consider legal/valid for some reason.

Sometimes it can be fixed by turning off the "Span Gaps" setting on the device connection, and other times it means you simply aren't addressing the right data.

While reading through some old forum posts here I saw that some people had some success with toggling the span gaps option, but that did not solve my issue.

When I look at the logs, I don't see anything especially helpful in there. Maybe I am simply not looking in the right place, but this is what is shown when I look at the logs. (The magnifying glass simply tells me which device is throwing the error)

If you set the logging level to TRACE for the ReadHoldingRegistersRequest logger you can see exactly which requested registers generate that response. (or use Wireshark)

This may not be something you fix in Ignition, but rather some configuration in the device, or just that you have bad information about what addresses to be reading.

1 Like