Skip to content

Modbus RTU Protocol Guide

1. Introduction

Modbus RTU is an industrial communication protocol used for data exchange between industrial devices. It serves as a "common language" enabling communication between devices from different manufacturers.

1.1 Key Features

  • Simple structure, easy to implement
  • High reliability
  • Widely used in industrial automation
  • Supports multiple physical layers (e.g., RS-485, RS-232)

2. Working Principle

2.1 Communication Mode

  • Master-slave architecture
  • One master device can control multiple slave devices
  • Each slave device has a unique address (1-247)

2.2 Data Transmission

Data frame format: Address(1 byte) | Function Code(1 byte) | Data | CRC(2 bytes)

CRC (Cyclic Redundancy Check) is a crucial error detection mechanism in Modbus RTU protocol.

  • Uses CRC-16 algorithm (polynomial: x16 + x15 + x2 + 1)
  • Initial value: 0xFFFF
  • Calculation range: all bytes from address to data
  • Low byte first, high byte last

CRC calculation tools:

Note: For practical applications, it's recommended to use programming libraries for CRC calculation to ensure accuracy and efficiency.

2.3 Common Function Codes (Decimal)

Function CodeDescriptionExample(Hex)Explanation
01Read Coil Status01 01 00 00 00 0A 3D CCRead 10 coil states from slave 01, starting at address 0000
02Read Input Status01 02 00 00 00 08 79 CCRead 8 input states from slave 01, starting at address 0000
03Read Holding Registers01 03 00 00 00 02 C4 0BRead 2 holding registers from slave 01, starting at address 0000
04Read Input Registers01 04 00 00 00 01 31 CARead 1 input register from slave 01, starting at address 0000
05Write Single Coil01 05 00 00 FF 00 8C 3ASet coil at address 0000 to ON in slave 01
06Write Single Register01 06 00 01 00 03 98 0BWrite value 0003 to register at address 0001 in slave 01
15Write Multiple Coils01 0F 00 00 00 02 01 03 9E 9FWrite value (03) to 2 coils in slave 01, starting at address 0000
16Write Multiple Registers01 10 00 00 00 02 04 00 0A 00 0B C7 B2Write values (000A,000B) to 2 registers in slave 01, starting at address 0000

3. Practical Application Example

3.1 Temperature and Humidity Acquisition

Scenario: Reading data from a temperature and humidity sensor

  1. Communication Parameters:
  • Baud Rate: 9600
  • Data Bits: 8
  • Stop Bits: 1
  • Parity: None
  • Slave Address: 01
  1. Reading Temperature Value (Holding Register Address 0x00) Request Message:
01 03 00 00 00 01 84 0A
  • 01: Slave Address
  • 03: Function Code (Read Holding Registers)
  • 00 00: Starting Address
  • 00 01: Number of Registers
  • 84 0A: CRC Check

Response Message:

01 03 02 00 64 B9 AF
  • 01: Slave Address
  • 03: Function Code
  • 02: Byte Count
  • 00 64: Data (100, indicating 10.0°C)
  • B9 AF: CRC Check

3.2 Common Issues

  1. Communication Failure:
  • Check wiring connections
  • Verify communication parameters
  • Confirm device address
  1. Data Anomalies:
  • Check function code
  • Verify register address range
  • Confirm data format conversion

4. Debugging Tools

Note: All tools above offer trial versions. License required for commercial use.

5. Important Notes

IMPORTANT Modbus RTU has no built-in encryption mechanism. Use in trusted networks and implement additional security measures when necessary.

6. References