Visual Basic App Interface to Ethernet/IP remote I/O


Thread Starter

Mark Gustafson

Anybody ever find an ActiveX OCX to allow a PC based Visual Basic or C++ application read and write directly through an ethernet port to any Ethernet/IP Remote I/O system? I want to write a PC based controller / HMI to read and write to 256 inputs and 256 outputs via a common PC RJ-45 Ethernet port. Open source would be much better then some proprietary source. I goodled ActiveX Ethernet/IP remote I/O and get just crap. ActiveX data aquistion is better, but the companies who offer the ActiveX want $900 per year for the license, which seems a bit high. I have used CimQuest ActiveX for AB PLC's in the past. let me know if you have heard of any kind of new tech for this. thanks, M.G
I used Automated Solutions' Modbus/TCP ActiveX a couple of years ago in an VB6 HMI / VisionPro application. It has been a very reliable way to both scan I/O and swap bits with a PLC. The best I/O read/write scan time I could depend on was about 75 mSec.

Michael Griffin

Do you have a specific reason for using Ethernet/IP? This is a proprietary protocol, so support for it is somewhat limited. If you use an open protocol such as Modbus/TCP, you have a lot more choice available to you.

Also, why do you want to use ActiveX? I was under the impression that ActiveX is obsolete and is being phased out. Again, with Modbus/TCP there are lots of free source code libraries available that you can link directly into your application.

Regardless of what software or protocol you use, something to keep in mind is whether the I/O is all in one rack or whether it is scattered in different addresses. If the I/O is in multiple racks or units, you either have to poll them one at a time (which can be slow), or use a more sophisticated approach. One method for example is to run as a separate process as a proxy server which polls all the I/O in parallel (it doesn't wait for one module to respond before polling the next one). Your main application then polls that proxy server to get all the information at once without delay. This greatly simplifies your main application while improving overall performance.

I have a project with about half a dozen separate packages at
which you might want to look at. The download page is at:
There is documentation is at: and the MBServer package has additional on-line documentation.

This project is in Python rather than the C++ or VB that you asked about, but you might find the explanations it gives to be useful (or you might decide to do your project in Python). The SimpleClient library can be used as a simple Modbus/TCP client library. The MBServer can run as a stand alone proxy to gather information which can then be read by another program.