Modbus Master Simulator
Modbus Master is a free simulator developed by EQUINOX that allows you to poll Modbus slave automation devices.
It supports the following protocol variants:
- Modbus ASCII
- Modbus RTU
- Modbus TCP
Regardless of the variant used, it supports data transport both via serial ports and Ethernet (TCP/IP), providing you with greater flexibility than other simulators available in the market.
License and Download
This program is open-source software available under the GPLv3 license.
It can be redistributed and used without restrictions, at the user’s responsibility and without warranty.
The program is portable, unzip the ZIP file and start using it.
How to Use
Main Window Parameters
|Function code||Type of data to poll: Coils, Input Contacts, Holding Registers, Input Registers|
|Slave address||Modbus slave address to poll|
|First data object||Address of the first object to poll (of the selected data type). The base address of the data type to poll (10,000 for Input Registers, 30,000 for Input Registers, 40,000 for Holding Registers) should not be considered in this parameter.|
|Quantity||Number of objects to poll|
|Mode||Polling mode (see the table below)|
|Variant||Modbus variant to use: TCP, RTU, or ASCII. Any of the three variants can be used with both serial ports and TCP/IP sockets (according to the configuration set in Settings –> Communication)|
|Scan rate||How often polls will be sent (in seconds)|
|Data format||Format in which received data will be presented (list format or table format)|
|Poll once||Poll only once|
|Poll continuously||Poll continuously at intervals defined by “Scan rate”|
|Poll (step “x”)||Poll consecutive blocks of “x” objects each until reaching the total defined in “Quantity,” starting at object “First data object,” with intervals defined by “Scan rate”|
These are specified in the Settings –> Communication menu.
|Connection type||Select “Serial” for serial ports and TCP/IP for socket usage. This selection does not determine the Modbus variant to use (RTU, TCP, or ASCII) and can be used with any of them, both through serial ports and sockets.|
|Serial port||Serial port to use (only for “Connection type” of “Serial”)|
|Bitrate||Speed: 1200, 2400, 4800, 9600, 19200, 38400, 57600, or 115200 bps|
|Parity||Parity: even, odd, mark, space, or none|
|Data bits||Number of data bits|
|Stop Bits||Number of stop bits|
|Host||Host to which the simulator will connect. It can be an IP address or a hostname|
|Port||Host port where the Modbus slave you want to connect to is listening|
Data Presentation Formats
In this mode, cells are displayed, one for each object of the selected data type. Cells corresponding to the polled objects will be filled with the corresponding value (0 or 1 for digital data types or the appropriate value for analog data).
The list of polled objects is displayed. The first column is the object’s address, the second is its name (see the next section: “modbus.map file”), the third column is the current value, the fourth column is the value from the previous poll (useful for comparisons between polls), and the fifth column is the timestamp when each object was polled.
The simulator allows you to define object names for each data type. These names will be used when the data is presented in “List Format.”
To do this, create a file named “modbus.map” in the same folder as the program. The content of the file should follow the example format below:
|1,2,2048,CTRL.CBCSWI1.Pos.Oper.ctlVal Select open (1=Select)|
|1,2,2049,CTRL.CBCSWI1.Pos.Oper.ctlVal Select close (1=Select)|
|1,2,2050,CTRL.CBCSWI1.Pos.Oper.ctlVal Cancel selection (1=Cancel)|
|1,2,2051,CTRL.CBCSWI1.Pos.Oper.ctlVal Execute selection (1=Execute)|
These are four parameters separated by commas:
|Parameter 1||Modbus slave address|
|Parameter 2||Data type (1 for Coils, 2 for Input Status, 3 for Holding Registers, 4 for Input registers)|
|Parameter 3||Object address|
|Parameter 4||Object name|