Today is...
Friday, January 30, 2015
Welcome to, the global online
community of automation professionals.
Featured Video...
Featured Video
Wiring and programming your servos and I/O just got a lot easier...
Our Advertisers
Help keep our servers running...
Patronize our advertisers!
Visit our Post Archive
Visual Basic App Interface to Ethernet/IP remote I/O
Looking for an ActiveX OCX to interface with Ethernet/IP remote I/O
By Mark Gustafson on 26 July, 2008 - 1:35 am

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.

By Michael Griffin on 27 July, 2008 - 11:58 am

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.

By Romulo Rodriguez on 27 July, 2008 - 11:59 am

Why don't you try python instead? Download this and try:

Java is another good option since jamod is excellent:

And if you like Ruby you may try:



very nice