• sales

    +86-0755-88291180

Modbus RTU Relay 16CH User Guide

Demo

Software

Hardware Test

RS485

  • Connect the USB TO 485 and the target board with the cables, connect A --> A and B --> B, as shown below:


  • Download Sscom5.13.1_for_Modbus_RTU_Relay_16CH and open it on the PC, open the corresponding port, and set the baud rate as 9600. Clicking on multiple strings opens multiple string-sending windows. Clicking on the corresponding function will send the corresponding command.
  • If you need to send other commands, select "HEX" as the sending format and choose "Modbus CRC16" as the checksum. When entering the command, if the first six bytes are provided and you click on "Send," the CRC checksum will be automatically added.


  • For detailed control commands, please check the development protocol.

Demo Test

Note: RS485 cannot be directly connected to the Raspberry Pi's serial port as it may damage the devices. It requires a level converter for RS485. It is recommended to use an RS485 CAN HAT module with the Raspberry Pi. For NUCLEO-F103RB and Arduino, it is recommended to use an RS485 CAN Shield module.

Raspberry Pi

Open the Raspberry Pi, and input the following commands to enter the configure interface:

sudo raspi-config
Choose Interfacing Options -> Serial, disable shell visit, enable the hardware serial port


And then reboot the Raspberry Pi:

sudo reboot

Open /boot/config.txt file, and find the following configure sentence to enable the serial ports. If there is none, you can add it at the end of the file.

enable_uart=1

For Raspberry Pi 3B users, the serial port is for Bluetooth and needs to be removed.

#dtoverlay=pi3-miniuart-bt

And then reboot the Raspberry Pi:

sudo reboot

If you want to insert the RS485 CAN HAT into the Raspberry Pi, connect the A and B ports of the Modbus RTU Relay module and the RS485 CAN HAT module.
If you use other 485 devices, you need to make sure A-A and B-B.
Run the following commands:

sudo apt-get install unzip
wget https://www.waveshare.com/w/upload/f/f0/Modbus_RTU_Relay_16CH_Code.zip
unzip Modbus_RTU_Relay_16CH_Code.zip
cd Modbus_RTU_Relay_16CH_Code/Python3
sudo python3 main.py

SRM32

The STM32 demos are based on the NUCLEO-F103RB and the RS485 CAN Shield module.
Find the STM32 program file directory and open the STM32 project. Note that before using the computer to ensure that the keil5 software has been installed, download the program to the development board can be downloaded.
Normal operation of the relay module will turn on and then turn off in turn. The serial port will output the command sent.

Arduino

The Arduino demos are based on the NUO PLUS and RS485 CAN Shield modules.
Use Arduino IDE to open the program, select the corresponding development board and then download the program.
The relay module will turn on and then turn off in order to run normally. The serial port will output the commands sent.

Development Protocol

Function Code Introduction

Function CodeNote
01Read relay status
03Read the address and version
05Write a single relay
06Set baud rate and address
0FWrite all relays

Single Relay Control

Sending Code: 01 05 00 00 FF 00 8C 3A

FieldsMeaningRemarks
01Device Address0x00 is the broadcast address; 0x01-0xFF is the device address
0505 commandControl the relay command
00 00AddressControl the register address of the relay, 0x00 - 0x000F
FF 00Command0xFF00: relay on
0x0000: relay off;
0x5500: relay flip
8C 3ACRC16CRC16 checksum of the first 6 bytes of data

Return code: 01 05 00 00 FF 00 8C 3A

FieldMeaningRemarks
01Device Address0x00 is the broadcast address; 0x01-0xFF is the device address
0505 commandControl the relay commands
00 00AddressControl the register address of the relay: 0x0000-0x000F
FF 00Command0xFF00: relay on;
0x0000: relay off;
0x5500: relay flip
8C 3ACRC16CRC16 checksum of the first 6 bytes of data

For example:
[No. 1 address device]: No. 0 relay on: 01 05 00 00 FF 00 8C 3A
No. 0 relay off: 01 05 00 00 00 00 CD CA
No. 1 relay on: 01 05 00 01 FF 00 DD FA
No. 1 relay off: 01 05 00 01 00 00 9C 0A
No. 2 relay on: 01 05 00 02 FF 00 2D FA
No. 2 relay off: 01 05 00 02 00 00 6C 0A
No. 3 relay on: 01 05 00 03 FF 00 7C 3A
No. 3 relay off: 01 05 00 03 00 00 3D CA
No. 0 relay flip: 01 05 00 00 55 00 F2 9A
No. 1 relay flip: 01 05 00 01 55 00 A3 5A
No. 2 relay flip: 01 05 00 02 55 00 53 5A
No. 3 relay flip: 01 05 00 03 55 00 02 9A

Control All Relays

Sending code: 01 05 00 FF FF 00 BC 0A

FieldsMeaningNote
01Device Address0x00 is the broadcast address; 0x01-0xFF is the device address
0505 commandControl relay commands
00 FFAddressFixed 0x00FF
FF 00Command0xFF00: Relay on
0x0000: Relay off
0x5500: Relay flip
BC 0ACRC16CRC16 checksum of the first 6 bytes of data

Return code: 01 05 00 FF FF 00 BC 0A

FieldsMeaningCode
01Device Address0x00 is the broadcast address; 0x01-0xFF indicates the device address
0505 commandControl the relay commands
00 FFAddressFixed 0x00FF
FF 00Commands0xFF00: relay on
0x0000: relay off
0x5500: relay flip
BC 0ACRC16CRC16 checksum of the first 6 bytes of data

For example:

[No. 1 address device]:

All relays on: 01 05 00 FF FF 00 BC 0A
All relays off: 01 05 00 FF 00 00 FD FA
All relays flip: 01 05 00 FF 55 00 C2 AA

Read the Relay Status

Sending code: 01 01 00 00 00 10 3D C6

FieldsMeaningNote
01Device Address0x00 is the broadcast address; 0x01-0xFF indicates the device address
0101 CommandQuery Relay Status Command
00 00Relay Start AddressFixed 0x0000
00 10Relay NumbersFixed 0x0010
3D C6CRC16CRC16 checksum of the first 6 bytes of data

Return code: 01 01 02 00 00 B9 FC

FieldMeaningNote
01Device Address0x00 is the broadcast address, 0x01-0xFF is the device address
0101 CommandQuery Relay Status Command
02Number of bytesReturns all bytes of the status information
00 00Status of the queryReturned relay status
Bit0: the first relay status;
Bit1: the second relay status;
Bit2: the third relay status;
……
Bit15: the 16th relay status.
B9 FCCRC16CRC16 checksum of the first 6 bytes of data

For example:

[NO.1 address device]

Send: 01 01 00 00 00 08 3D CC
Return: 01 01 02 00 00 B9 FC //All relays off
Send: 01 01 00 00 00 08 3D CC
Return: 01 01 02 00 01 78 3C //Relay 0 is on, the rest of the relays are off.
Send: 01 01 00 00 00 08 3D CC
Return: 01 01 02 00 41 79 CC //Relays 0 and 6 are on, the rest are off

Write Relay Status

Sending code: 01 0F 00 00 00 10 02 FF FF E3 90

FieldMeaningNote
01Device address0x00 is the broadcast address; 0x01-0xFF is the device address
0F0F CommandWrite relay status command
00 00Relay start addressFixed 0x0000
00 10Relay numbersFixed 0x0010
02Byte countFixed 0x02
FF FFRelay statusBit0: control the first relay;
Bit1: control the second relay;
Bit2: control the third relay;
……
Bit15: control the 16th relay
E3 90CRC16CRC16 checksum of the first 6 bytes of data

Return code: 01 0F 00 00 00 10 54 07

FieldMeaningNote
01Device Address0x00 is the broadcast address; 0x01-0xFF is the device address
0F0F commandAll register control commands
00 00Relay start addressFixed 0x0000
00 10Relay numbersFixed 0x0010
54 07CRC16CRC16 checksum of the first 6 bytes of data

For example:

[No.1 address device]

All relays on: 01 0F 00 00 00 10 02 FF FF E3 90
All relays off: 01 0F 00 00 00 10 02 00 00 E2 20
0-1 ON; 3-15 OFF: 01 0F 00 00 00 10 02 00 03 A2 21

Relay Flash On and Flash Off Command

Sending code: 01 05 02 00 00 07 8D B0

FieldMeaningNote
01Device Address0x00 is the broadcast address, 0x01-0xFF is the device address
0505 CommandSingle control demmand
02Command02 is the command for flashing on, 04 is the command for flashing off
00Relay AddressThe address of the relay to be controlled: 0x00~0x0F
00 07Interval timeDelay time for data *100ms
Value: 0x0007, Delay: 7*100MS = 700MS
8D B0CRC16CRC16 checksum of the first 6 bytes of data

Return code: 01 05 02 00 00 07 8D B0

FieldMeaningNote
01Device Address0x00 is the broadcast address; 0x01-0xFF is the device adress
0505 CommandSingle control command
02Command02 is the command for flashing on, 04 is the command for flashing off
00Relay AddressThe address of the relay to be controlled: 0x00~0x0F
00 07Interval timeDelay time for data*100ms
Value: 0x0007, delay: 7*100MS = 700MS
8D B0CRC16CRC16 checksum of the first 6 bytes of data

Note:

The maximum setting for the flash on/flash off time is 0x7FFF.

For example:

[No.1 address device]

Relay 0 flashes on: 01 05 02 00 00 07 8D B0 //700MS = 7*100MS = 700MS
Relay 1 flashes on: 01 05 02 01 00 08 9C 74 //800MS
Relay 0 flashes off: 01 05 04 00 00 05 0C F9 //500MS
Relay 1 flashes off: 01 05 04 01 00 06 1D 38 //600MS

Set the Baudrate Command

Sending code: 00 06 20 00 00 05 43 D8

FieldMeaningNote
00Device Address0x00 is the broadcast address, 0x01-0xFF is the device address
0606 CommandSet the baud rate and the device address
20 00Command Register0x2000 is the configurable baudrate, 0x4000 sets the device address
00Checksum Method0x00: no checksum, 0x01: even parity, and 0x02: odd parity
05Baudrate valueThe baud value corrsponding to
0x00 : 4800
0x01 : 9600
0x02 : 19200
0x03 : 38400
0x04 : 57600
0x05 : 115200
0x06 : 128000
0x07 : 256000
43 D8CRC16CRC16 checksum of the first 6 bytes of data

Return code: 00 06 20 00 00 05 43 D8

FieldMeaningNote
00Device address0x00 is the broadcast address; 0x01-0xFF is the device address
0606 CommandSet the baudrate and the device address
20 00Command Register0x2000 is the configurable baudrate, 0x4000 sets the device address
00Checksum Method0x00 is no checksum, 0x01 is odd check, 0x02 is even check
05BaudrateThe baud value corrsponding to
0x00 : 4800
0x01 : 9600
0x02 : 19200
0x03 : 38400
0x04 : 57600
0x05 : 115200
0x06 : 128000
0x07 : 256000
43 D8CRC16CRC16 checksum of the first 6 bytes of data

For example:

[No.1 address device]

Set the baudrate 4800: 00 06 20 00 00 00 83 DB
Set the baudrate 9600: 00 06 20 00 00 01 42 1B
Set the baudrate 115200: 00 06 20 00 00 05 43 D8

Set the Device Address Comand

Sending code: 00 06 40 00 00 01 5C 1B

FieldMeaningNote
00Device Address0x00 is the broadcast address, 0x01-0xFF is the device address
0606 CommandConfigurable baudrate and device address
40 00Command Register0x2000 is for setting the baudrate, and 0x4000 is for setting the device address
00 01Device addressSet the device address, 0x0001-0x00FF
5C 1BCRC16CRC16 checksum of the first 6 bytes of data

Return code: 00 06 40 00 00 01 5C 1B

FieldMeaningNote
00Device Address0x00 is the broadcast address, 0x01-0xFF is the device address
0606 CommandSet the baudrate and the device address
40 00Command Register0x2000 is for setting the baudrate, 0x4000 is for setting the device address
00 01Device addressSet the device address, 0x0001-0x00FF
5C 1BCRC16CRC16 checksum of the first 6 bytes of data

For example:

[No.1 address device]

Set the device address as 0x01: 00 06 40 00 00 01 5C 1b
Set the device address as 0x02: 00 06 40 00 00 02 1C 1A
Set the device address as 0x03: 00 06 40 00 00 03 DD DA

Read the Device Address Command

Sending code: 00 03 40 00 00 01 90 1B

FieldMeaningNote
00Device address0x00 is the broadcast address; 0x01-0xFF is the device address
0303 CommandRead the device address command
40 00Command register0x0200 is to read the software version, 0x0040 is to read the device address
00 01Bytes numberFixed 0x0001
90 1BCRC16CRC16 checksum of the first 6 bytes of data

Return code: 01 03 02 00 01 79 84

FieldMeaningNote
00Device address0x00 indicates the broadcast address; 0x01-0xFF indicates the device address
0303 commandRead software version, read device address command
02Byte numberReturn the number of bytes
00 01Device addressSet device address, 0x0001-0x00FF
79 84CRC16CRC16 checksum of the first 6 bytes of data

For example:

[NO.1 address device]

Sending: 00 03 40 00 00 01 90 1B Return: 01 03 02 00 01 79 84 //address 0x01
[NO.2 address device]

Sending: 00 03 40 00 00 01 90 1B
Return: 02 03 02 00 02 7D 85 //Address 0x02
[NO.3 address device]

Sending: 00 03 40 00 00 01 90 1B
Return: 03 03 02 00 03 81 85 //Address: 0x03

Read Software Version Command

Sending code: 00 03 80 00 00 01 AC 1B

FieldMeaningNote
01Device Address0x00 indicates the broadcast address; 0x01-0xFF indicates the device address
0303 CommandRead software version, read device address command
80 00Command Register0x4000 is to read the device address, 0x8000 is to read the software version
00 01Byte NumberFixed 0x0001
8F CACRC16CRC16 checksum of the first 6 bytes of data

Return code: 01 03 02 00 64 B9 AF

FieldMeaningNote
01Device Address0x00 indicates the broadcast address; 0x01-0xFF indicates the device address
0303 Commandread the software version and the device address commands
02Byte NumberReturn code
00 64Software VersionConvert to decimal and move the decimal point two places to the left to indicate the software version


0x0064 = 100 = V1.00

B9 AFCRC16CRC16 checksum of the first 6 bytes of data

For example:

Sending: 00 03 80 00 00 01 AC 1B
Return: 01 03 02 00 64 B9 AF //0x0064 = 100 =V1.00