To whom it may concern,
I have been testing Modbus TCP communication between a Galil RIO-47300 and a Flexy 205. The coil and contact reads are straight forward, but I’m having issues reading from the analog registers. (So Modbus Function codes 1 and 2 work, but 3 and 4 aren’t working) I’m guessing the format is just off slightly since the Galil device is issuing a response to the Modbus function codes, but after the Galil response the Ewon sends a reset [RST, ACK] message.
I am attaching a couple Wireshark captures showing the communication attempts, I have 3 of them that were taken with the analog output registers in different states. (All outputs at 0v, all output registers around -10v, and finally one with all registers at around positive 10v) I do see the values in the Galil response frame changing when I compare the response frames of the 3 captures to each other, so the Galil does seem to be sending us the requested information. I’m also attaching a .Tar file that has the support files showing how I set up the communication. (The I/O server parameters seem to be correct since the coil and contact reads worked, although I deleted those coil/contact reads to make things simpler to look at)
The Ewon is 192.168.1.25 while the Galil is 192.168.1.15. (The laptop is 192.168.1.77)
Galil communication info can be found here on PDF page 27 of the attached PDF, I have the setup on my desk so if we need any more packet captures or anything like that feel free to ask. Do you see why the comms are getting reset?
30001 attempt analog max scale.pcapng (134.1 KB) 30001 attempt analog negative max scale.pcapng (53.9 KB) 30001 attempt.pcapng (18.0 KB)
MOVED TO STAFF NOTE (87 KB)
PDF with Galil RIO message frame info:
RIO manual.pdf (8.6 MB)
To whom it may concern,
Would mind resending those files? For some reason the forum stripped them out of your post.
Sure thing, I’ll post them again. I’ll just post two PCaps since that’s enough to show the difference in message data.
Sorry for the delay, I just had a chance to look over the pcaps quickly and I can see that there is a good response to the first ‘Read Input Registers’ command:
But then it sends the ACK, doesn’t get a response, and sends the RST:
And then there are no more commands sent…
But I assume you already knew that… Can you tell me:
- How are the devices connected? Directly with ethernet, through a switch, over WiFi?
- Have you tried increasing the timeout?
- Can you try setting ErrorRetry to 3? (see screenshot below)
1: Sorry about that, I’ve got a Flexy 205 hooked up to a TP-Link Ethernet switch, same with the Galil RIO. I’m using Port Mirroring to see all the messages in Wireshark.
2: Yes, I just tested it at 20,000 MS, it did the same pattern of comms just with 20 sec intervals instead.
I’d agree that the ACK followed by RST, ACK is a concern, I can contact Galil to see if they have any comments on that side of it.
Looks like the same thing is happening no matter what the update time or retries are.
I’m going to escalate this to the Ewon team to see if they know what’s causing this. I tend to think it’s related to the Galil not responding to the ACK after the Ewon receives the Modbus data, but I could be wrong. You’ll get an email with a case number in a few minutes.
I spoke to a colleague and he asked if you have tried to query the device with a Modbus scanner simulator (like CAS Modbus Scanner). If you haven’t tested that yet, I would recommend it, to see if you can receive good responses to the same queries that you are sending with the Flexy. If you want to provide a temp eCatcher user for me, I can test it from here as well.
After a chat with Galil, I realized a parameter in a manual was mis-labeled so I changed that parameter and it’s working now. I’ll attach the example of the two communicating to show what the good communication looks like for others attempting the same thing. I’ll attach my RIO program since that was a bit of a learning curve, I can also attach my backup.tar file.
For reference, that parameter/command was MI, commanding MI0 causes it to send data in 32 bit format, so I changed it to MI1 (16 bit) and it’s working. After I do more testing I might try to get the 32 bit side working, but that’s a stretch goal for now since I have to test this same system with a Galil DMC controller for a customer.
RIO program.dmc (463 Bytes)
MOVED TO STAFF NOTE (20.5 KB)
Working function 4.pcapng (3.6 KB)
Do you mind sending those files to my personal email? There is a glitch on the forum right now (getting fixed Monday) that is eating the files. I’m only missing the .dmc and .pcapng file.