I needed to learn about Modbus recently, which although I’m in the heart of Canada’s SCADA-rich Oil and Gas country, has somehow eluded me up to now.
Modbus is a communication protocol for industrial devices developed in 1979 by Modicon, now Schneider Electric. It was originally designed for communicating with programmable logic controllers (PLCs), but has since become popular for industrial sensors and instruments in general. Modbus.org, a U.S. non-profit trade association, now controls the Modbus protocol and provides free access to protocol specifications and technical resources.
When developing a device which will communicate using Modbus, there may be value in using a master controller or a slave device simulator, or make use of readily-available utility software and libraries.
Master Simulators
A Modbus Master simulator is used to query data from devices and can be a valuable test when developing a Modbus Slave device. A large number of Master simulators are readily available, including free of charge, open source, and commercial software.
Free
QModMaster is a free and open-source Qt-based Modbus master based on libmodbus (see Libraries below). QModMaster is licensed using the LGPL and includes a bus monitor for examining traffic on the bus.
Modbus Tester from Schneider Electric is a free proprietary Windows GUI program for reading Modbus registers. It supports Modbus RTU and TCP.
Modpoll from proconX is a free proprietary Windows command-line program supporting Modbus ASCII, RTU and TCP. Modpoll is a demonstration utility for proconX’s commercial driver libraries.
RMMS (Radzio! Modbus Master Simulator) is a free proprietary Windows utility (GUI) and claims to replace commercial ModScan and Modbus Poll utilities. It supports Modbus RTU and TCP, and multiple Modbus slave devices.
Commercial
Simply Modbus Master (RTU and ASCII ). The Free mode allows six request messages before the application must be re-started. C$60. A slave simulator and TCP client are also available. The website has a nice intro to Modbus and Modbus Enron.
Modbus Poll from modbus tools was designed to help developers of Modbus slave devices and others to test and simulate the Modbus protocol. Using a multiple document interface, several Modbus slaves and/or data areas can be monitored at the same time. US$129 per developer. The modbus tools website also has a good intro to Modbus.
ModScan32 from WinTECH Software is a was developed to verify correct protocol operation in new or existing systems. Extensions provide third-party data acquisition using Control Automation routines or the MS Jet Database engine. A debug mode displays raw serial data to and from a connected device, and ModScan32 can execute test scripts with stimulus messages and expected responses for production testing. Single user license US$64.95. WinTech also provide a number of other Modbus-related utilities.
Slave Simulators
A Slave simulator provides a source of data for a Modbus Master, and can be useful as a known source of data when setting up a test workflow for a device being developed. A Slave simulator can also be used to create a model of a new device being developed, and act as both the development specification and a source of expected behavior for validating the device being developed.
Free
ModRSsim2 was forked from MOD_RSSIM and seems to be the more active of the two now with a number of updates including compiling on Visual Studio 2010. ModRSsim2 supports RS-232 and TCP/IP connections, the full range of Modbus addresses for all four Modbus types (0xxxxx, 1xxxx, 3xxxx, & 4xxxx addresses), as well as diagnostics with complete traffic byte capture and logging capability. ModRSsim2 supports CSV loading and a scripting environment for testing as well as HTML custom displays. It is free and open-source, and licensed under the GPL.
pyModSlave is a free and open-source Qt-based Python-code ModBus RTU and TCP slave from the developer of QModMaster. A Windows executable is provided and pyModSlave includes a bus monitor for examining all traffic on the bus. pyModSlave is licensed under the LGPL
MOD_RSSIM is a Windows-based Modbus PLC Simulator (and basis of ModRSsim2 above). It is free and open-source, and started as a test program for a SCADA/HMI with Modbus RTU and TCP/IP. Typical uses are to verify device configuration, support development of Modbus master and slave drivers for embedded and desktop platforms, and as an educational tool to learn Modbus protocols.
Commercial
WinModbus (www.winmodbus.com). Modbus Slave Simulator for Windows. GBP62.50. Lifetime support. 14-day functional demo for evaluation. Polished website.
UnSlave Modbus Slave Simulator . UnSlave simulates any number of Modbus slaves. UnSlave is provided free from Unserver, possibly as a source of test data for Unserver’s Modbus REST API Server, which provides data from Modbus networks and devices to higher-level clients – and is monetized. The Unserver website includes a nice Complete Modbus Guide.
Libraries
A number of Modbus libraries are available.
FreeMODBUS is a free implementation of the Modbus protocol with separate ASCII/RTU and TCP ports for a variety of embedded systems. FreeMODBUS is licensed using the BSD 3-clause license.
libmodbus is a library for Linux, Mac OS X, FreeBSD, QNX and Win32. The library is written in C, supports RTU (serial) and TCP (Ethernet) communications, and is licensed using the BSD 3-clause license.
Other Resources
Peter Chipkin has a nice list of various Modbus-related tools.
com0com is a kernel-mode virtual serial port driver for Windows. An unlimited number of virtual COM port pairs can be created, and any pair can be used to connect one COM port based application to another. The module is signed with a test certificate, and requires configuring Windows to load test-signed boot modules.
I also suggest taking a look at the CAS Modbus Scanner. It’s a free Modbus master application meant for people who don’t know anything about Modbus! https://store.chipkin.com/products/tools/cas-modbus-scanner
Hi,
Yet another Freeware Modbus-TCP Server Simulator with quite better functionality…
http : // tdogan dot net / #mss
Hi Talat, thanks for the news. I will try MSS when I have some time. Cheers, Dale.
gone away?
tdogan.net is no longer available, I will remove the link but leave the post for reference.
And I’ll also mention the OpenPLC project at https://www.openplcproject.com/
Thanks Ed, great reference.
Thanks for the information, Dale!
You’re the best!
Thanks for the summary. I’m looking for something to test a Daniels dialect link which uses function code 65 for FP values. Do you know of one?
Hi Allison, the commercial ModScan software supports a “DANIEL/ENROM/OMNI” transmission mode in addition to “Standard”, but I don’t recall seeing DANIEL support in the other simulators.
If you want an open simulator, you may want to review the capabilities of the modbus library used by qModMaster (http://www.libmodbus.org/) used by qModMaster to see if DANIEL support is baked-in. If it is, forcing qModMaster to use DANIEL mode may not be difficult. Good luck!
Fwiw Alison reported selecting the 64bit version of the WinTECH packages. At the time she was working on set-up and still confident in her choice.
I have used Modbus Tools (old but works) and ModbusMonitor to simulator total complex projects in Windows 10 with good luck.
Thanks for references to more commercial tools, especially ModbusMonitor which appears to be unique as an Android app.
Modbus Tools: https://www.modbustools.com
ModbusMonitor: https://www.modbusmonitor.com
Cheers,
Dale
Modbus Monitor: https://modbusmonitor.com
There’s also “mbpoll” which looks like a rewrite of the “modpoll” command-line utility (it uses exactly the same command-line syntax), but using libmodbus instead of the FieldTalk driver, and adding a few useful options such as quiet mode.
Thanks for the heads-up!
Thanks,
I discovered UnSlave thanks to you!
Very useful.
Little late to the party here, but I wanted to share an open source multipurpose Modbus GUI tool I have been working on called ModbusMechanic. It’s Java based so it runs on any platform.
I originally wrote it to quickly read and simulate float data from instruments but now it does quite a few other things including act as a TCP->RTU gateway and scan the RTU bus for active nodes. Couple of my co-workers found it useful, and I’m always looking for feedback to improve it.
I hope the community finds it useful!
https://modbusmechanic.scifidryer.com
Thanks Matt, I appreciate the notice and will add it to the list after trying it out.
Having used Modbus Poll and ModScan32 for many years (I particularly liked the register naming feature in the former) I initiated a development project in-house to make a master simulator that would allow us to work with the kind of instrument specifications we typically have to exchange with out customers (mixing different register and data types, applying scaling, units, descriptions, grouping etc.). I also wanted the ability to trend and log values and get help during debugging by getting the traffic decoded / described in text. So now there is another shareware option available:
https://www.softpedia.com/get/Others/Miscellaneous/Modbus-Test-Master.shtml
I wanted to give Eltima Serial Port Monitor a shout-out. Eltima is commercial proprietary software with a two week trial period, which was put to very good use.
https://www.eltima.com/products/serial-port-monitor
I know this post is a few years old, but I wanted to toss out another commercial product that functions as a Modbus Simulator. It’s called SimServe by SCADAmatic. It can simulate Modbus ASCII, RTU, or TCP/IP. It provides a user interface that allows the user to setup a network topology of multiple devices simultaneously.