Here is something that doesn't look quite right. In your WireShark capture look at packet 17 and 18. The request says to read 76 consecutive 16 bit registers starting at 29 (which would be address 40030)(function code 3 is the holding register read)
Then look at packet 18, the response shows registers 0-44 are all zero. Since the request started at 29, that would mean registers 29-72 are all 0's,
Now look at packet 19 and 20. This says to read 12 registers starting at 57. The result shows register 57 is 650.
So how can the first read say register 57 is 0, but the next read says it is 650? Something doesn't add up with the values coming from your device. Is your device treating each register as a 32 bit where 40001 starts at 0, but 40002 starts at 4, instead of the normal 2?