ModbusPal - Java MODBUS simulator

ModbusPal Logo

Download v1.6b ModbusPal Wiki Bug Tracker Contact

What is ModbusPal?

ModbusPal is a MODBUS slave simulator. Its purpose is to offer an easy to use interface with the capabilities to reproduce complex and realistic MODBUS environments.

The core of ModbusPal is written in Java. TCP/IP is supported natively, and the serial communication is supported if RxTx library is installed on the computer.

Other simulation tools offer built-in functions to "animate" the data of the virtual MODBUS slaves. But there are always situations where predefined functions cannot reproduce the reality. The approach of ModbusPal is to let the user write external scripts: what predefined functions can't do, scripts will.

The second key feature of ModbusPal is the "Learn" mode. As ModbusPal receives MODBUS requests from the master, it will dynamically create the missing resources: slaves, registers and coils are generated on-the-fly.

ModbusPal is free and open source, released under the GPL license.

What does ModbusPal do?

In its latest version, ModbusPal simulates only MODBUS slaves. The MODBUS protocol is not fully implemented (RTU, Serial, TCP/IP, registers, coils), but its getting better and better.

ModbusPal can simulate up to 247 MODBUS slaves. Each slave can has holding registers and coils. Each register or coil can be animated by being associated to a dynamic value generator, called "automation".

There are so many different devices in the field using MODBUs in so many different ways that it is impossible to create a universal similator. Unless, like ModbusPal, the user is encouraged to create scripts that implement the specifities of the simulated devices. ModbusPal lets the user create Python scripts of many different kinds:

ModbusPal can be embedded in another Java application as a third-party library. Most of the source code is commented, and the Javadoc is also available for download.

Also introduced in v1.6, each MODBUS slave has behavioral settings such as:>/p>

What's new in v1.6?