Today is...
Saturday, October 19, 2019
The OPC Community Forum.
Free Modbus Driver in .Net
Looking for a free modbus driver that will work with .NET.

I'd like to program a TCP/IP Modbus driver to work with .NET so I can then develop an HMI. I want to do this from the ground up, but I'm not sure where to start.

I've spent the day looking around for a Modbus driver that will work for me that is free, but one doesn't seem to exist. There are free demos, OPC servers, and simulators, but I want a truly open source modbus driver OR the ability to program my own. Kepware costs, Automated Solutions costs, FieldTalk costs, and open source stuff out there is in Java or Python.

If there is a completely free Modbus TCP/IP dll that's out there, I'd be interested in it. If not, however, I need to figure out where to get started building from the ground up.

I'm not yet a very advanced programmer, but it's things like this that help us become more advanced, right? This community has already been a tremendous help in other areas, so I'm confident you'll have good insight on this matter.

Thanks for your time and attention. I look forward to your responses.

I know of:

have not yet used it...

By Paul Wacker on 30 January, 2009 - 9:59 am

If source code in C is an option, you might consider


One of the Python drivers that you may have looked at may have been mine. Something that you might consider is to just write your program in Python or Java. Another alternative is to re-write one of the Java drivers into C#. The two languages aren't that different.

Whatever way you decide to go, I would suggest that you figure out how your overall program is going to work before deciding that one or other of the possible solutions will work for you. One problem that many drivers have (whether they are free or whether you paid thousands of dollars for it) is that the authors didn't give a lot of thought as to how to integrate the driver into a useful program. The result is that you end up writing the program around the driver instead of making the driver fit your program. If you are doing anything other than a very small program, you will find out there is a lot difference between those two situations.

You might have a look on

This is a whole SCADA system as open source.
Besides other protocols it also includes modbus

The software runs on Linux/Unix/OS-X/Windows and servers also under OpenVMS.

Alright. I'll investigate all this stuff and let you know what I decide to do. I definitely want to build the driver for my application.

It will be particularly helpful to have an HMI with driver that I don't have to pay for each time I deploy it. As it is, we've bought around 40-45 licenses for our current HMI software. Going forward and probably backward, it would be good to be able to put a new HMI everywhere without paying for a license each time.

I'll keep you all posted on my progress.

I mentioned above that one of the Python drivers that you may have looked at is mine. It's part of a package on SourceForge called MBServer (it's also used in several other packages).
The web site for the project is at

If you go to the project site on Sourceforge, you will see a screen shot of a web based HMI. That HMI page comes with the MBServer package as an example of what you can do. The demo page can be used as the starting point of your own application, and the Javascript libraries included are general purpose (they're not written just for the demo). The HMI demo uses ordinary web technologies with no ActiveX controls or Java applets. To make an HMI application, you just have to know how to make a web page.

MBServer can act as a server (slave). It can also simultaneously open multiple client (master) connections to other servers. There are many other features built in as well.

MBServer is based on the Twisted communications and application framework "". Even if you don't use MBServer, you might still want to use Twisted as the basis for your own system. I've only used a few of the Twisted features in MBServer (so far). If you would rather have a non-web based HMI, it is possible to use the Tkinter, GTK, Qt, or WxWidgets GUI toolkits instead. Twisted also does also a database API that works with Oracle, MySQL, PostgreSQL, etc. You can also do e-mail, FTP, and pretty much anything else. It's a lot easier than trying to do everything yourself. All the software you would need is free and comes with source code.

Thanks for the response. This is great stuff. I'm going to look into MBLogic and see if this will work for me. I've invested a lot of time learning .NET, so I've had an aversion to jumping into anything programmed in another language, but looking over it, this might supply me with what I need.

I'll keep you posted and let you know what I figure out.

Thanks again.

Stephen McLain

I noticed your inital posting on 1/29/09 and saw that you were still looking as of 2/3/09.

It sounds like you're determined to build your own driver, but I thought you might want to be aware of some of the benefits of off-the-shelf solutions.

Automated Solutions ASComm.NET includes field testing with hundreds of installations, is highly optimized for performance and usability with years of code refinements, has extensive cross-device testing and function support, and supports many industrial protocols. Help system is extensive and numerous examples are included.

With a multi-protocol component, as your requirements grow you have the ability to switch to other protcols like A-B Ethernet, GE Ethernet, other modbus flavors, etc. with a simple namespace change.

Some modern interface components like ASComm.NET have also evolved from pure driver (node address, starting address and quantity) to tag databases capable of scanning thousands of datapoints with register optimization, synchronous and asynchronous read/write capability, data change event notification, visual design capability, and configuration serialization. These features significanly reduce your coding time and allow you to focus on your solution.

ASComm.NET is also runtime-free in many situations.

Just some things to consider in your decision making process.


> I'll keep you posted and let you know what I figure out. <

Wondering if you've decided and the reasoning. We're looking to implement a small-scale SCADA system to integrate our server room monitoring, modbus/TCP thermostat, and modbus RTU generator.
Not big enough to warrant Wonderware type solution.


In reply to Tim: What are you trying to do? What features do you need?

I have a free stand alone web based HMI called HMIServer which you can download from "". Click on "view all files" and then select the newest version of "MB-Tools". HMIServer is one of the programs in the MB-Tools package. On-line documentation can be found at "".


I know for you its long time back but i am also held in situation like need to start from scratch.

I need to create application which can talk on modbus with field device. not sure from where to start need your guidance.

Thanks in advance.


A good place to start is OPC ... here is the OPC Server for Modbus. Install the software and connect your devices to it:

You will access your data directly from there!

Hope this was helpful

I did it with winsock in vb6. It's so eazy. You don't need a driver. Google for "winsock modbus pdf" I'll try to find a sample and post it later.

It sometimg like winsock.send =(0)chr & (0)chr & (0)chr & (0)chr & (0)chr & (TotalBites)chr & (TotalDataBytes)chr & (mode)chr & (startREG)chr (value)chr & ................NO CRC needed

Need a free modus OPC server, that can work with multiple modbus RTU serial devices. Kepware works fine with multiple devices but is not freeware, I tried Iconics modbus server but couldn't make it work with more than one device. any suggestions? thanks.

By Mustafa Al-mosawi on 25 August, 2009 - 6:25 pm

I think any search will come up rather empty, or direct you write your own TCP/IP stack and implement your own server.

Freeware is not as free as it seems, because you get freeware support, and freeware development, which can vary. If you are using this in a serious application I would go with a trusted OPC vendor that understands has implmented OPC.

Try MatrikonOPC's server for Modbus

So far as I can tell, "OPC" and "free of charge" (or even "cheap") don't go together. All the "free of charge" OPC servers that I have seen are just demo versions (usually time limited. or some other limitation).

If you are using OPC, then the software that you are using it with is usually fairly expensive as well. In that case, people are usually don't have a problem paying still more for the drivers.

On the other hand, if you are writing your own software, then using OPC for Modbus is usually rather pointless because Modbus is an open protocol. There are lots of free of charge Modbus drivers available, they just don't use OPC.

It's been a year since thie post how did things work out. I am at about the same place now that you were a year ago.
Thanks is HMI/SCADA under GPL running on almost any operating system.

Modbus is also available there. The basis for Modbus is this class.
(Please remove the spaces from the above URL)

You do not need to go into programming for Modbus communication. Filling out a ini file is enough.

Dear Stephen,

I know you've posted 3 years ago but your text is a very interesting and important subject. I'd like to know if you reach your goal, that is, did you develop the MODBUS drivers by your own? I'm asking you because I'm facing the same problems and I agree to you when you said that the best manner to solve such problem, some times is to do the job by yourself. So, if you can, please gimme some tips in order to help me to build my MODBUS TCP drivers by my own. I use to develop in C Builder and Delphi but any help will be very welcome!

Thanks in advance!

Dear Xavier

Here is a Delphi ModBus project that is active:

Personally, I'd prefer to use Synapse rather than Indy so this project that uses Syapse is interesting:

Another project to check out:

Best regards,
Paul Breneman

By Stephen McLain on 28 December, 2012 - 4:23 pm

Hey there. I'm the original author of this thread. I'll go ahead and provide an update.

After posting this and following the advice of the members here, I continued to search for a free solution out there, but I never made any progress. I ended up walking away from the project. I'm now managing the department I was working in at the time of this posting.

We're still facing a situation that threatens to make our HMI software obsolete. We did, and currently still do, utilize Modicon Momentum PLCs that communicate across Ethernet. The HMI we use is National Instruments' Lookout, version 5.1. Lookout has been nearly abandoned by NI in favor of their Labview product. This version of the Lookout software does not work with Windows Vista, 7, or 8 and is becoming obsolete.

Newer versions of Lookout have managed to come out, but the upgrade expense is very high--I'd have to buy all new licenses. I also simply wished to have more control over my HMI design and was, therefore, most inspired to pursue my own development path.

We are an OEM company with multiple deployed units (and therefore licenses). The cost of purchasing a new license for each system adds up to be rather prohibitive. This led me to search out an open source or free option.

Many of the solutions proposed within this thread were very promising, and I've revisited them. However, they've remained untouched for quite sometime now (MBLogic for instance), or they're dead ends that just lead to paid options (nmodbus and kepware). The open source projects were intriguing, but I really didn't want to assume work on an HMI solution that has already been tailored by its developer for his or her specific needs and subsequently left to die.

My major hang-up is that I think it should be so easy. All I should need is to reference a dll, have documentation to call its methods, and off we go.

Right now, I'm trying to figure out if FreeModbus on SourceForge is what I'm looking for. It's current, and as of this writing was last updated 15 hours ago.

So, that's where I'm at. Can I offer any kind of solid advice or breakthrough wisdom to solve your problems? Not yet. If I ever do, though, I'll be sure to post about it detail, so you guys have real instructions that you can use.

Hope you're all doing well. And, if your issues have come to resolution, please, let us know about it!

Just seeing if you have an update. I need a .NET control for an SLC500 through TCP/IP. I am looking at the pay-for solution from AutomatedSolutions, but the licensing is so crappy. I can't even get a custom build working with the demo because they lock it off. Anything with that level of license verification will never be used in my code. I need it to always work, not just work when it feels like it is licensed.

If nobody has done it yet, I guess I will have to roll my own. It is surprising nobody has a high level driver for these things.


Automated Solutions trial software is not restricted in any way. It is fully functioning for 30 days.

If you are experiencing problems just contact Technical Support by phone or email. Trial Edition tech support is free and available M-F 8-6 PST.

When you build your project after purchasing a development license, runtime licenses are built into your executing assembly and work 100% of the time. Standard MS component licensing is used and we have not had an issue for 20 years.

For the trial edition, the only thing you need to do to deploy to another PC is to run the trial edition setup program on the runtime PCs. Your applications built with the trial edition will run for thirty days. Again, this additional step is not required after you purchase a development license.


I wrote a simple Modbus RTU dll for use with .NET. All function codes are there and there is also simple functions for conversions such as bit packing and short to float. I know that you're looking for Modbus TCP/IP but maybe someone else can use this.

It is available for download here:

My dll ShortBus provides Modbus master functionality for RTU and TCP/IP, as well as slave simulation for RTU. It is easy to use and has good documentation. Compiled versions are available for .NET 3.5, 4.0 and 4.5. CE versions for 2.0 and 3.5 are available but don't have the TCP/IP functionality at this time. I also have a free master scanner tool (comparable to ModScan) that reads from RTU and TCP/IP slaves.

It is available for download here:

By Matt Gristwood on 13 December, 2014 - 9:14 am
1 out of 1 members thought this post was helpful...


I know it's a long time since anyone replied to this post but figured I would try and help. Have you looked into AdvancedHMI? This is completely free built in Visual Basic and has wonderful support. Go to and check it out.

> My dll ShortBus provides Modbus master functionality for
> RTU and TCP/IP, as well as slave simulation for RTU. It is

I downloaded it and it looks very nice. Very professional documentation, not something that you see all that often.

I was concerned about the lack of licensing terms, I understand that it's freeware, so I would assume that includes its inclusion in for-profit programs is permitted?

>It is available for download here:

Your links on the left are broken, to download your packages I had to click on the ones to the right.

Thanks for the programs, I've got a few abandoned Schneider PM's here at the house to try it on. :)

The link issue is with Google Sites, since the right links work I won't worry about it.

As far as licensing goes, it is free to use as desired (but the source code is not provided).

> Your links on the left are broken, to download your packages I had to click on the ones to the right.

> Thanks for the programs, I've got a few abandoned Schneider PM's here at the house to try it on. :)

Hi there,
I've sent you a couple of emails regarding shortbus.

Is it possible to change the starting address from 40001 to 0?

Please get in touch :-)

Thank you