Simply Modbus logo
← Previous: TCP Client

Modbus TCP Client Manual

Installation, Configuration, and Operation Manual

versions 8.x.x

Table of Contents

Installation

System Requirements:
Windows NT, 95, 2000, XP, Windows7, Windows8, Windows10 & 11
display resolution: 800 x 600 minimum

Download

Simply Modbus TCP Client 8.1.2

Download the installation file and unzip the contents into a folder. Run setup.exe and follow the installation wizard.

Starting the Program

Click on the Simply Modbus TCP Client item in the start menu to start the program.
Unlicensed versions will start with the Loading Demo window, which takes about 15 seconds.

TCP Client Tool - Loading Demo Screenshot

Press "Enter key" to enter a license key and unlock the full version.

Enter License Key dialog box

Demonstration mode has full functionality and limits sending and receiving to 6 messages. It can then be restarted to send and receive more messages.


The main read window is then shown.

TCP Client Tool - Main Window Screenshot

Control color Controls (inputs) that can be changed by the user.
Indicator color Indicators (outputs) that cannot be directly changed.

Modbus mode

Modbus mode selector

Select "Modbus TCP" or "Modbus RTU-over-TCP" protocol.     Modbus TCP

Request indicator with TCP message

Modbus TCP messages include a 6 byte TCP header followed by the same data in a modbus RTU message.

Request indicator with RTU message

Modbus RTU-over-TCP messages includes a cyclic redundancy check (CRC) as the last 2 bytes of the Request. These are error detection bytes that are not present in Modbus TCP messages.

Network Settings

IP Address selector

Select the IP Address of the Server (Slave device) that you wish to connect to.

Port selector

Select the Server's Port to connect to.

CONNECT button

Press the Connect button and the program will attempt to connect to the Modbus Server.
Each 6 second attempt will count up on the button after the word CONNECTING.
The program will keep trying to connect until a connection is made or the button is pressed again.

NOT CONNECTED indicator

Press the Connect button and the program will attempt to connect to the Modbus Server.
Each 6 second attempt will count up on the button after the word CONNECTING.
The connection status is displayed as CONNECTED or NOT CONNECTED.

Building a Request

Request Message selectors

When in TCP Mode, The first 7 bytes in the Request is the MBAP header. The 7th byte is the Slave ID.
When in RTU-over-TCP Mode, the first six bytes of the MBAP header are not present. The Request starts with the Slave ID.

SlaveID selector

SlaveID:  The 7th byte in the Request string in TCP Mode (The 1st byte in RTU-over-TCP mode)
The unit address of the Slave device to get data from. normal range: 1 to 247.     SlaveID

2byte ID selector

2byte ID:  Setting a Slave ID over 255 will automatically check this box and allow Slave IDs up to 65535.
    SlaveID

Remains on for all addresses until a Slave ID below 256 is entered and the box manually unchecked.

Function Code selector

Function code:  The 8th byte in the Request string in TCP Mode (The 2nd byte in RTU-over-TCP mode
Used to select which table to read from.
The main Read Window supports Function codes 01, 02, 03 & 04     Function codes

First Register selector

First Register:  The 9th & 10th bytes in the Request string in TCP Mode (The 3rd & 4th bytes in RTU-over-TCP mode)
The register (or coil) number at the start of the block to read.     Data tables

Offset selector

Offset:  This value is subtracted from the First Register to get the data address used in the Request.     Data tables

Number of Registers selector

Number of Registers:  The 11th & 12th bytes in the Request string. in TCP Mode (The 5th & 6th bytes in RTU-over-TCP mode)
The quantity of registers (or coils) requested.

Register Size selector

Register size:  The size of the requested registers.
    16 bit registers - standard modbus registers.
     1 bit coils - standard modbus coils.
    32 bit registers - most Enron modbus registers.     Data tables

Events selector

Events:  Selected for Enron Event polls from register 32.     Events

History selector

History:  Selected for Enron History polls from registers 701-799.     History

Use defaults selector

Use defaults:  When checked, the program will automatically populate the circled settings to default values as the value in "First Register" changes. To use non-default settings, or to keep these controls from changing with First Register, uncheck "Use defaults".

Default values

First Register Function Code Offset Register Size
1-10000 01 1 1 bit coils
10001-20000 02 10001 1 bit coils
20001-30000 03 0 32 bit regs
30001-40000 04 30001 16 bit regs
40001+ 03 40001 16 bit regs

Enron Exceptions:

First Register Function Code Offset Register Size
32 (events) 03 0 32 bit regs
701-799 (history) 03 0 32 bit regs
1001-1999 (boolean) 03 0 1 bit coils
3001-3999 (short int) 03 0 16 bit regs
5001-5999 (long int) 03 0 32 bit regs
7001-7999 (float) 03 0 32 bit regs

Sending a Request

Fail in timeout time selector

Set "fail in" time large enough to keep the program from timing out before the full response is received. The default is 2 seconds.

SEND button

Press SEND to transmit the request to the slave device. As the program waits for a response, a red progress bar is shown. The program stops when the expected response bytes are received or the "fail in" time is reached.
This button is greyed ou when not connected to a network.

Progress bar - waiting for response

The response time and a progress bar are shown as the program waits for a response. It stops when the expected response bytes are received or the "fail in" time is reached.

Reading the Response

After pressing SEND, the response bytes received from the slave device are displayed in the response indicator.

Response Indicator

The expected CRC and expected response bytes show a red background when the response has different values.

The data in the response is copied into in the results table.

Results Table

A notes column is provided to enter labels.
Clear Notes button    Press clear notes to erase the whole notes column.

Data Types

Select the data types in the first column. The table will be adjusted to show the correct number of bytes in each row.
Available Data Types to select

These are the available Datatypes that can be selected.     Data Types

Copy Down Data Types button

Press copy down to set all Data Types to match the top row.

High Byte first and High Word first

High Byte first and High Word first check boxes

The bytes and words can be swapped by toggling these check boxes.     Byte/Word Order

Send Continuously

Send Continuously check box

Check this box to sent requests back-to-back continuously. A pause between sends can be eneterd as the seconds between the start of one send request until the start of the next send request. This will continuously send the same command unless combined with the load before send feature (see below). The wait time is shown in a progress bar.

Load Before Send - Sending a series of requests

Load before Send check box

When this box is selected, and the SEND button is pressed (or SEND CONTINUOUSLY is selected), the program will Restore a previously defined Configuration File and then SEND the request as saved in the file.

The filenames must be in the format:   request-1.txt, request-2.txt, etc...
and saved in the default folder (where the exe file is saved)

If request-1.txt doesn t exist, a window showing instructions similar to these will appear.

SEND CONTINUOUSLY is not saved in the configuration files.
SEND CONTINUOUSLY is always set to unselected when you use the RESTORE CFG button to restore a configuration file.
This keeps polling from automatically starting when you manually restore a configuration file.

If a request-*.txt Configuration file is being loaded during a Load before Send,
and the file was saved with LOAD BEFORE SEND selected,
then both SEND CONTINUOUSLY and  LOAD BEFORE SEND will both be selected. 
Following the LOAD and SEND, the program will wait for the TIME BETWEEN SENDS to expire 
before the next LOAD (request2.txt) and SEND.

The program will continue to automatically LOAD, SEND and WAIT through a series of request-*.txt files  
as long as each file has LOAD BEFORE SEND selected.
When the end of the series is reached and the next file is not found, the series will start over with request-1.txt  
and continue until SEND CONTINUOUSLY is manually unchecked.

When a file is LOADED without LOAD BEFORE SEND selected,
following this last SEND, the series will STOP..

The series can be stopped at any time by unchecking SEND CONTINOUSLY.

Log Results

Log Results button

Press LOG to save the results to a tabbed-text file for later analysis.

The default location for the log file is in the "installed in" folder.
register# and notes are used as column headers in the file.
When data is received, a row is added to the file with date/time stamp and the results.
Pressing the button again will close the file and stop logging the results.

Byte History Log

All bytes sent and received are added to the byte history log with date/time stamps.
The maximum size of the byte log is 50,000 bytes when the oldest 10,000 is removed to keep the program from slowing down.

Byte Log indicator and buttons

Save Byte Log button

Press Save Bytes to Display a 'Save As..' dialog box to save log contents to a text file.

Clear Byte Log button class="image">

Press Clear Bytes to empty the byte log contents.

Statistics

Poll Statistics indicators

The seconds taken for the slave to respond to last message.
The number of message responses received (meeting the expected response bytes).
The number of message with an incomplete or absent response

Statistics indicators and reset button

The longest amount of seconds taken for a response (not including failed responses).
The average amount of seconds taken for a response (not including failed responses).
The shortest amount of seconds taken for a response (not including failed responses).
Press Reset to set all statistical values back to zero.

Save and Restore Configurations

Save Configuration button

Press Save Configuration to display a 'Save As..' dialog box to save the current settings to a text file.

Restore Configuration button

Press Restore Configuration to display an 'Open File' dialog box to select a previously saved settings file.

Configuration File Format

The file is saved in tabbed-text format (tab separated values).
Sending it to, or opening it from, a spreadsheet program like Excel will use the tabs as column delimiters as shown here...

Configuration File contents

Text in red is shown as reference notes and not included in the file.
Columns A & B contain the setting descriptions and their values.
Column C contains the data type numbers 0 through 13 for the selected data types.
Column D contains the selected data type descriptions.
Column E contains the register numbers (hex values plus offset).
Column F contains the register values from the last poll, if any.
Cell G1 contains the result string from the last poll, if any.

Writing Data

WRITE button to open Write window

Press the WRITE button to write coils and registers in a separate window.

Send a Write Data command

About Box

ABOUT button

Press the About button to display the About Box and see the full version number and if you are in demo mode.

TCP Client tool ABOUT box

Context help

Contect Help indicator

Press Control-H to open the Context Help box which shows additional help information as you hover over the controls and indicators.

Contect Help pop-up

Troubleshooting

If you see no response after hitting send
  • Check slave device is powered on and connected to the network
  • Check the IP Address and Port in the Modbus Server (Slave device) to make sure it matches the settings in the TCP Client program (Master device)
  • Check IP Address and port number.
  • Check mode. TCP or RTU-over-TCP.
  • Check slave ID.
  • Check slave device tables to verify the addresses of registers or coils.
  • Check offset to verify the hexadecimal address in the request message.
  • Check "fail in" time is not too low causing the program to time out before the response is received.