Hi, I am wondering if I could get an explanation of the Modbus register addressing that is used by Argos.
I’m using Modbus RTU via the RS485 port, and I have found that all of my addresses are one less than what I specified when I set up the Template for my device (100 becomes 99, 201 becomes 200, etc.)
I was initially getting mixed results with a lot of errors and bogus-looking data, so I attached a sniffer and discovered that all of my addresses were off by one. Everything works fine if I add one to all of my addresses, but that hardly seems to be an acceptable solution.
I am aware of the confusion surrounding the use of “Standard Modbus” register types and offsets (40001 offset for holding registers), but since you have us specify the register type separately I don’t see why this would be an issue. My guess is that an underlying library uses those offsets and the wrong offset is being added (40000 instead of 40001). In any case, it is producing the wrong addresses according to my understanding of the modbus spec. The “data address” of 100 should correspond to register number 400001, which should use function codes 0x03 to read and 0x06 to write with address 100.
I’m evaluating the EC350 in comparison with some other IoT routers to determine what my company will use in the future for monitoring our own products during field trials, and it will be difficult to recommend this product with an issue like this (unless there is a reasonable explanation).