🌐 This page is not yet available in English. Showing the Chinese version. Back to Chinese page.
Modbus RTU 写多个register详解

1. 协议概述
Modbus RTU 是一种串行通信协议,用于Automation中equipment间通信。主要特点是简单、稳定。在这个模式中,data是以binary的形式传输的。
2. 写多个register
当我们需要修改一A device(例如,电机驱动器或传感器)上的多个参数时,我们可以使用“写多个register”Function。
3. Requestformat
一个标准的Modbus RTU写多个register的Request包含以下部分:
- Device address: 1byte,标识要通信的目标设备。
- function code: 1byte,写多个register的function code为
0x10。 - Starting register address: 2byte,指定第一个要写入的register的address。
- number of registers: 2byte,指定要写入的register的总quantity。
- byte计数: 1byte,表示后续要写入的data总byte count。
- data: 根据需要写入的number of registers变化,每个register为2byte。
- CRC check: 2byte,用于验证消息的完整性。
4. 例子
假设我们要向address为 0x01 equipment写入,从register address 0x3000 开始,连续的4个register。我们要写入的data是:0x1234, 0x5678, 0x9ABC, 0xDEF0。
构造的消息为:
01 (Device address) 10 (function code) 30 00 (Starting register address) 00 04 (number of registers) 08 (byte计数,4register*2byte/register) 12 34 56 78 9A BC DE F0 (data) ?? ?? (CRC check, 实际值需要使用crc16-modbus来计算)
要注意,CRC check值是基于整个消息(除CRC外的部分)来计算的。你需要使用Modbus RTU的CRC算法来得到这个值,并将它添加到消息的尾部。
5. send并等待
Complete消息后,通过适当的串行通讯接口(如RS-485)send它,并等待从设备的Response。Responseformat和Request类似,但不包含byte计数和data部分。
嘉
嘉