Modsak - Modbus diagnostic program

Modsak is a versatile Modbus diagnostic program. It will be of interest to device manufacturers, software developers, system integrators and field service engineers. Modsak can be used to test or simulate almost any device or system that uses the Modbus protocol: slave devices, PLC's, HMI's, MMI's, DCS's, RTU's, SCADA systems, bridges, gateways, device servers, etc.

If you are a device manufacturer, you can connect Modsak to the device you are developing to test its handling of the Modbus protocol and also its general operation.

Software developers can use Modsak to simulate the environment (Modbus masters, slaves and bridges) in which their software has to operate.

System integrators can plug Modsak into a system to temporarily replace Modbus components they don't yet have; or when components refuse to talk to each other Modsak can be used to try out different configuration settings.

Modsak running on a portable computer will be a valuable tool for field service engineers, enabling them to monitor the communications between system components, or to send their own requests to the Modbus slaves in the system. Modsak's informative tracing and troubleshooting guide will aid problem solving.

Modsak's main features are:

  • Can be configured to run in one of three modes:
    • Master mode, where requests can be sent to a Modbus slave. The user can send individual requests, and Modsak can also continually poll (send read and write requests to) the slave.
    • Slave mode, where it simulates a Modbus device.
    • Monitor mode, where it relays messages between a Modbus master and a Modbus slave. In monitor mode, Modsak may be used like a breakout box or protocol analyzer to observe the messages being exchanged between a master and a slave. Monitor mode also allows Modsak to be used as a gateway or bridge, or as a simple protocol converter that converts between Modbus protocol variants.

    If you only require master capabilities, you could try ModMaster instead of Modsak.

  • Commands (and command sequences) may be defined and saved for re-use.
  • Informative tracing of all Modbus messages sent and received providing interpreted data to aid understanding. The tracing may optionally include register values that have been read or written. All data that is sent or received may also be traced as raw data (in hex).
  • Logging to a file, or a window, of tracing and diagnostic messages.
  • All configuration settings may be saved to and restored from files, in XML format.
  • Register definitions may be imported/exported in CSV format.
  • Full support for coils, discrete inputs, input registers, holding registers and file 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
    • 7 Read Exception Status
    • 8 Diagnostics
    • 11 Get Comm Event Counter
    • 12 Get Comm Event Log
    • 15 Write Multiple Coils
    • 16 Write Multiple Holding Registers
    • 17 Report Slave ID
    • 20 Read File Record
    • 21 Write File Record
    • 22 Mask Write Holding Register
    • 23 Read/Write Multiple Holding Registers
    • 24 Read FIFO Queue
    • 43/14 Read Device Identification
    • Custom commands
    • Invalid commands - for testing the slave's error handling
  • 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
    • Modbus UDP (also known as Modbus TCP encapsulated in UDP)
    • Modbus RTU encapsulated in UDP
    • Modbus ASCII encapsulated in UDP
  • All known extensions of the Modbus protocol for handling 32-bit and 64-bit integers and floating-point numbers are supported (including Enron/Daniel Modbus).
  • Can transfer a mixture of integers and floats, of different sizes, in a single message.
  • 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, unsigned integer or float), size (1/8/16/32/64-bit), radix (binary, octal, decimal, hex, or char), and scale/offset.
  • Configurable limits for register values, with highlighting of values out of range.
  • Supports broadcast requests (slave ID 0) in both master and slave modes.
  • Full support for exception responses 10/0x0A ("Gateway Path Unavailable") and 11/0x0B ("Target Device Failed To Respond").
  • Optional checking of messages for conformance to the arbitrary size limits imposed by the Modbus specification.
  • 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.

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

Screenshot

Modsak main window