Applications / Simulators & Emulators / Modbus TCP Server Simulator
Simulators & Emulators

Headless multi-port Modbus TCP meter simulator

Replace third-party meter simulators GUI instances with a single scalable application to load-test Modbus TCP clients against 50+ virtual meters simultaneously.

What it is

Modbus TCP Server Simulator is a headless Java application that binds multiple TCP ports and serves simulated Modbus TCP meters on each. It loads register data directly from third-party meter simulators document files, ensuring byte-for-byte compatibility with the third-party meter simulators GUI. One instance replaces the need for multiple third-party meter simulators windows—each running only one port—making it ideal for fleet and load-testing scenarios. The default configuration simulates a smart meters meter across 51 ports (502–552), matching the live platform database exactly.

Key benefits

Fleet testing at scale

Simulate 50+ meters on a single machine without spawning dozens of third-party meter simulators GUI windows. Each port runs on a dedicated lightweight worker, eliminating process-per-meter overhead.

Byte-identical register data

Reads third-party meter simulators binary documents directly, ensuring the exact meter state you configured in third-party meter simulators is what your client poller sees over the wire.

Write command testing

Supports Modbus write functions (FC06 single register, FC16 multiple registers), enabling round-trip validation of device control workflows.

No external protocol dependencies

Implements Modbus TCP MBAP and PDU framing directly, reducing deployment complexity and ensuring deterministic behavior in test environments.

Capabilities

  • Multi-port binding: ranges (502-552) and lists (502,600,601); each port runs independently on a lightweight worker
  • Register data from third-party meter simulators documents: merge multiple document blocks into one slave image, or use the bundled smart meters meter
  • Read functions: FC01/02/03/04 (coils, discrete inputs, holding registers, input registers)
  • Write functions: FC06/16 (single and multiple register mutations) with in-memory state persistence
  • Slave ID override: specify a custom unit ID at startup, or inherit from the document
  • Exception handling: illegal function codes and out-of-spec quantities return proper Modbus exceptions
  • JDK 21 runtime with automatic toolchain provisioning via Gradle

Put Modbus TCP Server Simulator to work on your estate.

Request a demo →