Modbus TCP to MQTT using Hive MQTT

From Silbo Networks

1. Summary:

  • In this guide, Modbus TCP to MQTT function will be configured using third-party MQTT broker services (in this example https://www.hivemq.com/).
  • The Router will be used as TCP Master and MODSIM (application) will be used as TCP slave.
  • PC will act as MQTT Publisher and Subscriber.

2. Prerequisites:

  • Connecting board to device Connect your router to your device via
  • Ethernet cable:

Directly connect router port with RJ45 wire to your device.

  • Wireless network connection:

Connect router to your device using Wi-Fi, check device name and password on the device’s label.

For Example: SSID: APClient_37B11241001

                            PWD: 12345678

3. Login to device:

  • To enter the router’s Web interface (web IU), type 192.168.100.1

(wireless LAN IP) into the URL field of your internet browser.

  • Use the following login information when prompted for authentication.

Username: admin

4. Configure Modbus TCP Slave (MODSIM):

Download and Open MODSIM:

1.) Click on File

2.) New

3.) Address: Start bit address

4.) Length: No of registers to be read

5.) Select based on parameters to read

6.) Device Id: Set Slave ID

7.) Connect to Modbus TCP service port

8.) TCP port : 502

9.) Click ok

5. Configure Modbus TCP Master (Router):

After login, go to configuration=> Modbus configuration,

1.) Click on Add Device.


2.) Parameters Configuration:


Field Value Description
Device Name Invendis Any name of your choice.
Port no 1.) RS485 Port-1

2.) RS232 Port-2

Depending on the port that is available on your router.
Meter ID Default = 1 Can change as per your device.
Meter Model abcd Any name of your choice.
Function code read coils (1)

read input coils (2)

read holding registers (3)

read input registers (4)

Specifies the type of register being addressed by Modbus request.
Slave Address 1 According to the device connected to poll data, slave ID is mentioned.
Modbus Protocol 1.) RTU = 300 | 1200 | 1800 | 2400 | 4800 | 19200 | 38400 | default: 9600

2.) TCP

*Modbus Comm IP

-192.168.10.147

*Modbus Comm Port

-502 (default)

*Modbus Comm Timeout

-10

1.) Serial data transmission rate (in bits per second).

2.)

*Modbus Comm IP = IP of the device you are communicating with.

*Modbus Comm Port = TCP port number

*Modbus Comm Timeout = As per your requirement.

Start Register 0 First Modbus register from which data will be read.
No of Register 10 Number of Modbus registers that will be read during the request.


3.) Register config:

If you want to add additional parameters in single slave Address.

    Option 1: Default mapping

    Option 2: Custom mapping

Field Value Description
Default mapping 1.) Tag Name = (Ex: FQ)

2.) Data type = 8bit INT | 8bit UINT | 16bit INT, high byte first | 16bit INT, low byte first | 16bit UINT, high byte first | 16bit UINT, low byte first | 32bit float (various Byte order) | 32bit INT (various Byte order) | 32bit UINT (various Byte order) | 1 bit; default: Hexadecimal

1.) Input value name.

2.) Defines how read data will be stored.

Custom mapping 1.) Register name:

2.) Start register:

3.) Register count:

4.) Data type = 8bit INT | 8bit UINT | 16bit INT, high byte first | 16bit INT, low byte first | 16bit UINT, high byte first | 16bit UINT, low byte first | 32bit float (various Byte order) | 32bit INT (various Byte order) | 32bit UINT (various Byte order) | 1 bit; Hexadecimal; default: 32-bit floating point

1.) Input value name.

2.) First register in custom register block.

3.) Path to file in which the custom register block will be stored.

4.) Defines how read data will be stored.

6. Cloud Configuration (MQTT Gateway) on Modbus TCP Master:

Open routers WebUI and navigate to Configuration à Cloud Configuration

1.) Site ID: Give name accordingly

2.) Cloud/Protocol: HTTP; MQTT; Azure à Select protocol in use

3.) MQTT Host: Host name as per the MQTT broker selected ( in use hivemq.com)

4.) MQTT Port: 1883 (default)

5.) Authentication Mode: no authentication; username/password; TLS

                                       further added procedure if selected the other two)

6.) RS485 Topic (optional): Give a topic name and copy it

7.) Save

7. Configure hivemq.com MQTT Broker:

It is an open server so no need to login

1.) Click MQTT

2.) Public MQTT Broker

3.) Try MQTT Browse client

4.) Click on connect, wait until the light turns green

5.) Click on Add new subscription

6.) Paste the topic name copied from MQTT Gateway (refer cloud configuration)

7.) Click on subscribe

8. Testing MQTT Publisher and Subscriber on hivemq.com:

1.) Navigate to Appmanagerà IO Utilities

2.) Enter Slave ID assigned (in this example slave id = 1)

3.) Click Read to generate output.

4.) Output

5.) Once you see “TCP Modbus read successful” we can publish data on hive MQTT.


6.) Navigate to Appmanager a Application start/stop

7.) click on start, wait until the sign turns to stop


Open Hivemq.com and data should start publishing, this means that MQTT Gateway on Modbus TCP Master router is working correctly, and Modbus TCP Slave receives request.