Stride MQTT Gateway to Modbus RTU TCP

MQTT protocol is used for machine to machine (M2M), internet of things (IoT) communication. This publish/subscribe messaging is used where limited device resources are available or network bandwidth is low. The MQTT protocol provides small size, low power usage, minimized data packets, and efficient distribution of information to one or many receivers.
Stride MQTT Gateway to Modbus RTU TCP
The Stride MQTT Gateway is an industrial 4.0 hardware component (IIoT – Industrial Internet of Things) that provides isolation and can easily interface with existing Modbus RTU and Modbus TCP communication protocols.
Stride MQTT Gateway to Modbus RTU TCP
We will be connecting a Stride MQTT Gateway to a Solo process temperature controller via Modbus RTU. (RS485) The MQTT Gateway will communicate to a Mosquitto Broker. Google MQTTLens (MQTT Client) will then read and write to the Solo process temperature controller. Let’s get started.


Previously we have discussed the following for MQTT:
Do-More Simulator MQTT Publish / SubscribeVideo
(Designer Simulator Client – HiveMQ Broker – HiveMQ Client)
BRX Do-More PLC MQTT CommunicationsVideo
(BRX Client – Mosquito Broker – MQTTLens)

Watch the video below to see the MQTT Gateway communicating to our Solo process temperature controller.

The first thing we will do is open our MQTT Gateway. This gateway will communicate on our existing Modbus RTU (RS485 Serial) and/or Modbus TCP (Ethernet) network. It will then publish or subscribe to the MQTT network using the variables that we set up.

Watch on YouTube: Stride MQTT Gateway Unboxing

Stride MQTT Gateway to Modbus RTU TCP - MQTT Org
Additional information can be found on the MQTT.org website.
Stride MQTT Gateway to Modbus RTU TCP

Stride MQTT Gateway to Modbus RTU TCP

Wiring the Stride MQTT Gateway

Stride MQTT Gateway to Modbus RTU TCP
Stride MQTT Gateway to Modbus RTU TCP


We will be using the Modbus RTU protocol. (RS485) This uses a two-wire serial communication network.

Programming our Solo Process Temperature Controller

We will be setting up our Solo with the following serial communication specifications: 9600 baud, 8 data bits, 1 stop bit and even parity.
Solo Process Temperature Controller

Stride MQTT Gateway Indication Lights

Programming the Stride MQTT Gateway

Stride MQTT Gateway to Modbus RTU TCP
Connect an Ethernet cable from the unit (RJ45) to the computer. We will be using the Google Chrome Browser to program the gateway.
Enter the default IP address.
Stride MQTT Gateway to Modbus RTU TCP
A login screen will now be displayed. Enter the default username ‘admin’ and password ‘password’.
Stride MQTT Gateway to Modbus RTU TCP
Select the LOGIN button.
Stride MQTT Gateway to Modbus RTU TCP
The change password window will now appear since we are using the default password. Enter and confirm a new password. (accautomation)
Select the SAVE button.

Network Interfaces

Select the three dots on the upper right corner of your browser.
Stride MQTT Gateway to Modbus RTU TCP
Select Network Interfaces.
Stride MQTT Gateway to Modbus RTU TCP
We will leave everything as their default settings except for the preferred and alternate DNS. (Set these to the Google DNS servers)
Select TEST INTERNET CONNECTION (ETHERNET)
Stride MQTT Gateway to Modbus RTU TCP
We will get a message at the bottom of the browser indicating that the internet connection is available.
Stride MQTT Gateway to Modbus RTU TCP
Select SAVE. You will be prompted to confirm the system network interface update. Select CONFIRM.

Channels

Channels are used to set up the Modbus communication parameters.
Stride MQTT Gateway to Modbus RTU TCP
Ensure that you have selected the Channels tab. Select the + symbol to add a channel.
Stride MQTT Gateway to Modbus RTU TCP
Select the Communication protocol.
Stride MQTT Gateway to Modbus RTU TCP
You will see that we have three different options. Modbus RTU, Modbus TCP and Modbus RTU over TCP. Select Modbus RTU for our serial communication to the Solo.
Stride MQTT Gateway to Modbus RTU TCP
Select the Baud Rate of 9600, Data Bits 8, Stop bits 1 and Parity Even. This will match the communication parameters we have in the Solo temperature controller.
Stride MQTT Gateway to Modbus RTU TCP
Select SAVE.
Stride MQTT Gateway to Modbus RTU TCP
The channel will now be added and you will receive an indication it was successfully added.

Devices

Devices are used to specify the equipment that is on the channels that we have indicated.
Stride MQTT Gateway to Modbus RTU TCP
Select the DEVICES tab. Select the + symbol.
Stride MQTT Gateway to Modbus RTU TCP
We will name the device Solo. The channel will be set for Channel 1. This will then display the Modbus RTU protocol that we set for the channel.
Stride MQTT Gateway to Modbus RTU TCP
Select the + symbol.
Stride MQTT Gateway to Modbus RTU TCP
We will now set the variables that we want to read or write.
The variable name will be PV (present value). This is a read-only 16-bit integer. The address for the variable will come from the Modbus address of the Solo.
Stride MQTT Gateway to Modbus RTU TCP
The actual address for the MQTT Gateway will be 4096. We will use the function code of 03 – Read Holding Registers.
Stride MQTT Gateway to Modbus RTU TCP
The conversion is used to translate the measured values into engineering values. (Scaling) We will not be using this function. Select OK.

Check the box beside the RO (Read-Only) PV that we have just programmed. This will call up the parameters that we need for this MQTT publishing / subscribing topic.
Stride MQTT Gateway to Modbus RTU TCP
Our topic(PUB) will be Solo/PV. The quality of service (QoS) will be left at 0. We will publish on a value change and the threshold will be set for 1.
Stride MQTT Gateway to Modbus RTU TCP
Select the + symbol again to add the set value (SV) of our Solo.
Stride MQTT Gateway to Modbus RTU TCP
Uncheck the read-only box. The format will be 16-bit (INT) unsigned. Our variable name will be SV and the address will be 4097. (The address is one less than what is in the manual.)
The Modbus function code to read is 03 – Read Holding Registers. Write will use the Modbus function code of 06 – Preset Single Register. Select OK.
Stride MQTT Gateway to Modbus RTU TCP
Check the box beside the RW (Read-Write) SV.

Our topic (PUB) will be Solo/SV and we will publish again on a value change. Select SAVE.
Stride MQTT Gateway to Modbus RTU TCP
Our Solo device is now programmed. A message will show us that we successfully edited the Solo device. You will notice a green dot on the device to indicate that the communication is good.

MQTT Settings

The MQTT settings are used to connect to our broker. Select the MQTT tab.
Stride MQTT Gateway to Modbus RTU TCP
The broker address will be the IP address of our MQTT broker (Mosquitto). Client Id will be set for ACC_Automation. We will leave all the other settings as their defaults. Select SAVE.
Stride MQTT Gateway to Modbus RTU TCP
You will notice that we will get a green dot after saving to indicate that the MQTT gateway is now connected and communicating to our MQTT broker.
Stride MQTT Gateway to Modbus RTU TCP

Stride MQTT Gateway to Modbus RTU TCP
Select the three dots in the upper right corner. Select Logout.
We have now finished programming our Stride MQTT Gateway.
Watch the video below to see the MQTT Gateway communicating to our Mosquitto Broker.

Mosquitto Broker

We will start our Mosquitto broker. The BRX Do-More PLC MQTT Communication post will describe the steps required to download and install this broker.
Mosquitto Broker
We will start the broker in verbose mode so we can see the communication from our MQTT gateway and MQTTLens client.
Mosquitto Broker
You can see our MQTT gateway establishing communication.
Mosquitto Broker
Information is now being published by our gateway.
Mosquitto Broker
Google MQTTLens has now established communication to the broker.

Google MQTTlens

We will start our MQTTlens client. The BRX Do-More PLC MQTT Communication post will describe the steps required to download and install this client.
MQTTLens Setup
Select Connections +.
MQTTLens Setup
Our connection name will be MQTT Gateway. The hostname will be the IP address of our broker. We will keep all of the other selections as their default. Select Create Connection.
MQTTLens Setup
Type Solo/PV under the Subscribe and select SUBSCRIBE.
MQTTLens Setup
Our present value from the Solo will now be read.
Type Solo/SV under the Publish and enter a value of 300 in the message. Select PUBLISH.
MQTTLens Setup
This will put the set value of 30.0 in the Solo process temperature controller.
Stride MQTT Gateway to Modbus RTU TCP
Watch the video below to see the MQTTlens client controlling our Solo process temperature controller via the Stride MQTT Gateway.

STRIDE MQTT Gateway Features

– Convert Modbus RTU/TCP to MQTT
– IIoT MQTT protocol with SSL/TLS
– Configurable via a web page
– Hardware watchdog function
– Full electrical isolation
– MQTT cloud compatible with AWS, Mosquitto and more
– Wired or Wi-Fi models available
– CE and FCC agency approvals

Stride MQTT Gateway Specifications
Stride MQTT Gateway Manual
Purchase – Stride MQTT Gateway
Stride MQTT Gateway Firmware Update

Next time we will look at connecting the Click PLC to our Stride MQTT Gateway via Modbus TCP.

Watch on YouTube: Stride MQTT Gateway Modbus RTU TCP

If you have any questions or need further information please contact me.
Thank you,
Garry



If you’re like most of my readers, you’re committed to learning about technology. Numbering systems used in PLC’s are not difficult to learn and understand. We will walk through the numbering systems used in PLCs. This includes Bits, Decimal, Hexadecimal, ASCII and Floating Point.

To get this free article, subscribe to my free email newsletter.


Use the information to inform other people how numbering systems work. Sign up now.

The ‘Robust Data Logging for Free’ eBook is also available as a free download. The link is included when you subscribe to ACC Automation.


3 thoughts on “Stride MQTT Gateway to Modbus RTU TCP”

  1. Nice walk-through, but I don’t understand this part:

    “The actual address for the MQTT Gateway will be 4096”

    Can’t find an explanation … is it just a selection of your choice?

    Reply
    • Hi Mikael,
      Good question!
      The address in the picture above this is 44097. I only looked at the last four digits 4097. 4096 is used because of the offset.
      If you read the specification, at the Application Layer, there is no Modbus Holding Register address 40000. They start at 40001. However, when you have software people writing protocols, they push their code implementation to the user layer (i.e. Application Layer). When you write a comm driver to implement the Function Code 6 Write Single (Holding) Register, there is a WORD for the Holding Register offset. These are 0-based. Hence, when implementing the protocol in code, you have to mask off the 4xxxxx part of the address, then subtract 1. For example, 40001 would fill that word in with 0x0000 (hexadecimal). 40010 would be 0x0009, 40016 would be 0x000F. Note there is no 4 on the wire. The WORD offset on the wire is -1 from the Holding Register offset. But since the same person who wrote the comm driver also wrote the Application Layer interface, they think you enter 0 for 40001 (or worse, 40000), since that is what goes out on the wire.
      I hope this explains it.
      Thank you,
      Garry

      Reply

Leave a Comment