ModSlaveSim - Programmable Modbus slave simulator

ModSlaveSim is a programmable simulator that enables realistic simulation of a single Modbus slave in its environment. Connect your Modbus masters to ModSlaveSim, instead of a real Modbus slave device, in order to test and configure the masters.

ModSlaveSim deployment example

Using a simple control language you can simulate a Modbus slave measuring environment properties (e.g. flow rate), controlling the environment (e.g. opening valves), performing internal calculations (e.g. averages), and responding to Modbus commands from masters.

ModSlaveSim's main features are:

  • The Modbus device registers are displayed as they change in the simulation.
  • Cross-platform: runs on any system that supports Java JRE 6 or later (serial communications is only supported on Windows, Linux x86 and Raspberry Pi ARM architectures).
  • Manual and troubleshooting guide.
  • Simulation examples included in the download, which can be loaded from the File menu.
  • Informative log of all Modbus messages sent and received providing interpreted data to aid understanding. The log may optionally include register values that have been read, or written to, by a master. The log may also include, or be restricted to, Modbus messages as raw data (in Hex).
  • Optional logging to a file, or a window, of Modbus messages sent and received.
  • All configuration settings may be saved to, and restored from, a file in XML format.
  • Register definitions may be imported and exported in CSV format.
  • Full support for coils, discrete inputs, input registers and holding registers, using the following commands:
    • 1 Read Coils
    • 2 Read Discrete Inputs
    • 3 Read Holding Registers
    • 4 Read Input Registers
    • 5 Write Single Coil
    • 6 Write Single Holding Register
    • 8 Diagnostics
    • 11 Get Comm Event Counter
    • 15 Write Multiple Coils
    • 16 Write Multiple Holding Registers
    • 17 Report Slave ID
    • 22 Mask Write Holding Register
    • 23 Read/Write Multiple Holding Registers
  • Supports network and serial (RS232/RS422/RS485) interfaces using the following protocol variants:
    • Modbus TCP (also known as Modbus TCP/IP)
    • Modbus RTU
    • Modbus ASCII
    • Modbus RTU encapsulated in TCP
    • Modbus ASCII encapsulated in TCP
  • All known extensions of the Modbus protocol for handling 32-bit and 64-bit integers and floating-point numbers are supported (including Enron/Daniels Modbus).
  • Flexible address mapping allows separate or overlaid address spaces (for coils, discrete inputs, input registers, and holding registers) with arbitrary bases.
  • Registers can be individually configured for type (integer or float), size (16/32/64-bit), and radix (binary, octal, decimal, or hex).

You can download the complete version of ModSlaveSim for a free 3-day evaluation period.

Screenshot

ModSlaveSim main window