rossmcm
Programmer
- Jun 28, 2000
- 16
I have an app written in Delphi 5 that talks to up to 30 COM ports. Most of the COM ports are implemented with Moxa NE4110S units, there is also one 'real' COM port that is local to the machine.
These Moxa units implement a COM port and digital I/O at the end of an IP address, so the COM ports are physically located on a 100 mb ethernet network. There is Moxa software that runs on the PC that maps each COM port to an IP address so you can talk to it as you would a "real" COM port.
At the Delphi app end, the COM ports are accessed via a component called Async32 that has proven in the past to be very reliable.
If I start from a clean boot and run the app, it works fine for a few hours, then things start to get sluggish until eventually it takes so long to do anything that the app grinds to a halt.
If I shut down the app and restart it the problem is still there. Only restarting the PC gets me back on air.
If I shut down the app and try another app that also uses COM ports it fails in the same way on any of these IP-based ports - takes an age to open the port and communication is orders of magnitude slower.
I can still ping the IP addresses OK.
If I inspect the packets with a sniffer, I notice lots of out-or-order responses. The network switch shows a lot of traffic. When the system is behaving, I don't see nearly as much traffic or out-of-order packets.
The physical ("real") COM port still works fine. Only the IP-based ones clog up. If I disable all the channels on the app that talk to IP-based ports the app leaps back into life.
I have updated the firmware in the Moxa units to 1.6 - no change in behaviour. I have slogged on this one for a week with no progress.
These Moxa units implement a COM port and digital I/O at the end of an IP address, so the COM ports are physically located on a 100 mb ethernet network. There is Moxa software that runs on the PC that maps each COM port to an IP address so you can talk to it as you would a "real" COM port.
At the Delphi app end, the COM ports are accessed via a component called Async32 that has proven in the past to be very reliable.
If I start from a clean boot and run the app, it works fine for a few hours, then things start to get sluggish until eventually it takes so long to do anything that the app grinds to a halt.
If I shut down the app and restart it the problem is still there. Only restarting the PC gets me back on air.
If I shut down the app and try another app that also uses COM ports it fails in the same way on any of these IP-based ports - takes an age to open the port and communication is orders of magnitude slower.
I can still ping the IP addresses OK.
If I inspect the packets with a sniffer, I notice lots of out-or-order responses. The network switch shows a lot of traffic. When the system is behaving, I don't see nearly as much traffic or out-of-order packets.
The physical ("real") COM port still works fine. Only the IP-based ones clog up. If I disable all the channels on the app that talk to IP-based ports the app leaps back into life.
I have updated the firmware in the Moxa units to 1.6 - no change in behaviour. I have slogged on this one for a week with no progress.