I am trying to communicate with an TSI AeroTrak 7510 using the Modbus TCP driver. Not sure what makes this device different than other Modbus devices I have communicated with but
I realized that I needed to pick a unique Modbus Unit ID for each address I am reading why would this matter with Modbus TCP?
Any idea what makes this device require use of the Modbus Unit ID feature?
Got any docs for this device?
What happens when you don't use different unit ID per address?
Have you connected any other Modbus software to see what happens (modpoll, etc...)?
AeroTrak_Remotes_Modbus_Reference_5001430C.pdf (699.4 KB)
See attached Modbus address reference.
We have a few of these talking through a Prosoft Gateway and don't need to reference Unit ID.
One other observation is that it seem like the ignition TCP driver honors some security that the other Modbus devices don't. I can't write to an address until I login using the web page interface of the device. This is a problem because the manual explains that I need to login over modus to enable writes but I can't write to the registers that it wants me to write the password to.
The Prosoft device does not require login or password to write over Modbus from what I can tell.
Maybe you can use Wireshark or a managed switch packet capture to compare the difference. There's nothing weird going on with the Ignition Modbus driver.
Supports modbus function codes 3 and 6 only.
Given this, you'd want to un-check the "Allow Write Multiple Registers Request" advanced setting.
This is a bit of a mystery:
Read Circular Buffer Data
The circular buffer stores records in the 32 byte record buffer format, and is located at registers
40225 - 88225. Each record is 16 registers long so the first record is located at 40225 - 40240, and
the last record is located at 88209 – 88225.
Modbus registers max out at 65535...
I'm guessing some clueless software engineer doesn't understand that the
4 is a prefix, and thinks 40000 is simply a base address.
Well I unchecked the Allow Write Multiple Register Request I can now write the register I need to without login.
I still for some reason need to pick a unique Unit ID for each register I want to read/write to but it is working so I am moving on.
Maybe because the "Span Gaps" setting (enabled by default) is combining them into a request for a range the device objects to, and by adding unique unit id you prevent that from happening. You're lucky this device just ignores unit id if that's it.
@Kevin.Herron disabling the span gaps allowed me to remove the Unit ID's Thanks