burt4munger 0 Posted October 28, 2020 So i have read and understand the various permutations on modbus addressing, that is, 0 based, 30-40000, and 50000+ (i am ignoring the 400001 ones). My system has 5 or 6 modbus devices from different manufacturers, and I have had DAQFactory using some 42006 kinds of addresses, where I think it is subtracting stripping the 4 and subtracting 1 before it sends the address down the wire, and all was well. Now, I have a device that seems intent on wanting the 0 based addressing, and fails access to any any addresses until I use the "write to a modbus address over 50000" trick to force the scheme back to a 0 index approach...then the new device works fine, but all the other addresses are now off by one. I really don't want to have to go and find all the locations that specify modbus address constants and subtract one from them, because i will have to go back and test each and every different system to make sure it still works. Is there an explicit control of the scheme, so that I can specify which address mode to use for a given device access? What i see now is even for testing, if I read an address over 50000, the mode changes to 0 index, all the prior devices begin to fail, and the only way to change it back is to restart the program. this fails, until I read an address over 50000, then this works fine, but other addresses like 42006 start failing ?device.plc1.ReadHoldingFloat(17,28673,1) P-ModbusRTU 0002: Illegal Data Address Share this post Link to post Share on other sites
AzeoTech 0 Posted October 29, 2020 No, there isn't an explicit way of controlling the mode. This is something I hope will be changed. Probably the easiest solution for you is to make a duplicate driver. So, let's assume you are using the ModbusTCP driver. RTU is very similar, just different file names. Do this: 1) copy pModbusTCP.dll and pModbusTCP.dds to, say, pModbusTCP2.dll and pModbusTCP2.dds 2) edit the new pModbusTCP2.dds file with a text editor: change the first line from: P,ModbusTCP,PModbusTCP.dll to: P,ModbusTCP2,PModbusTCP2.dll and save. 3) Restart DAQFactory Now when you go to the device configuration, there will be two protocols, ModbusTCP and ModbusTCP2. Create a new device with ModbusTCP2 for your new device and leave the old one as is. By creating a copy, you have two completely separate drivers, which both just happen to talk ModbusTCP. But one can be setup for 40000 mode, while the other uses 0 indexed. Share this post Link to post Share on other sites
burt4munger 0 Posted October 29, 2020 Ah, this will work great! Thank you! Share this post Link to post Share on other sites