Hi All,
here to present an open-source multi-platform Modbus suite (libraries and tools).
- Native 32/64 bit architecture Intel/ARM : Windows, Linux, FreeBSD, macOS
- Full Modbus specifications compliant: all functions are implemented, both in Master and Slave.
- Supports TCP, RTU, ASCII and UDP, RTU Over TCP, RTU Over UDP, for both Master and Slave.
- Fully thread safe.
- Advanced debugging and raw transfer functions that allow the experimentation and implementation of particular software using few lines of code such as gateways, sniffers or protocol converters.
- Stress tests performed (test sources included)
- Released under lgpl v3: you can distribute your commercial software linked with SnapModbus without the requirement to distribute the source code of your application and without the requirement that your application be itself distributed under LGPL.

There are dozens of excellent libraries that implement Modbus, both free and commercial.
So, the question is: did we need any more libraries? How are they different?

The main purpose of this suite is to greatly simplify the commissioning of a Modbus system, Generally, the communication libraries focus only on the way of transferring data to and from the peripheral, limiting themselves to the syntax and showing an "educational" aspect where all the devices are homogeneous.

The reality is quite different, we often find ourselves faced with a "field" made up of various peripherals of different technology (Ethernet or serial) which have different response times and whose data need to be updated with different methods and times. The challenging work is not how to exchange data with one device, but how to exchange data with all of them efficiently.

SnapMB's goal (which I hope it has achieved) is to manage a complex field as easily and efficiently as possible. This through the abstraction of the transfer protocol (a TCP or RTU client are the same object and its behavior can be changed on the fly) and the availability of two architecture models:

- Virtual Bus: a protocol-independent half-duplex way to communicate with all devices, regardless of their technology (Ethernet or Serial), using the same syntax.
- Fully parallel management: a multithreaded way to peer-to-peer data exchange with all devices (including RTU devices) simultaneously.

Wrapper and examples provided for: C, C++, C#, Delphi/Lazarus, LabVIEW.
Hope it can help.

Dave Nardella
Can you tell those of us who aren't programmers/coders how to install this on a Windows 10 box? I got lost when getting an error message (no Path) after clicking on build64.bat
Unfortunately I can't anwer your question. What I did, I copied the files Device.pas, SnapMB.pas and the corresponding SnapMB.dll into my Lazarus project folder and created a ModbusTCP client. I can connect to the ADAM 6017 Modbus device and get the analog input signals. I'm running this on a Windows 11 machine, but planning to run a similar application on a ARM touch panel.