Modbus RTU 写多个레지스터详解

1. 프로토콜개요
Modbus RTU 是一种串行통신 프로토콜,用于산업 자동화中的设备间통신。主要特点是简单、稳定。在这个모드中,데이터是以2진수的形式传输的。
2. 写多个레지스터
当我们需要修改一个设备(例如,모터驱动器或센서)上的多个매개변수时,我们可以使用“写多个레지스터”功能。
3. 请求형식
一个표준的Modbus RTU写多个레지스터的请求包含以下部分:
- 设备주소: 1바이트,标识要통신的目标设备。
- 기능 코드: 1바이트,写多个레지스터的기능 코드为
0x10。 - 시작레지스터주소: 2바이트,指定第一个要쓰기的레지스터的주소。
- 레지스터 수량: 2바이트,指定要쓰기的레지스터的总数量。
- 바이트计数: 1바이트,表示后续要쓰기的데이터总바이트数。
- 데이터: 根据需要쓰기的레지스터 수량变化,每个레지스터为2바이트。
- CRC 검증: 2바이트,用于验证消息的完整性。
4. 例子
假设我们要向주소为 0x01 的设备쓰기,从레지스터주소 0x3000 开始,连续的4个레지스터。我们要쓰기的데이터是:0x1234, 0x5678, 0x9ABC, 0xDEF0。
构造的消息为:
01 (设备주소) 10 (기능 코드) 30 00 (시작레지스터주소) 00 04 (레지스터 수량) 08 (바이트计数,4레지스터*2바이트/레지스터) 12 34 56 78 9A BC DE F0 (데이터) ?? ?? (CRC 검증, 实际值需要使用crc16-modbus来계산)
要注意,CRC 검증值是基于整个消息(除CRC外的部分)来계산的。你需要使用Modbus RTU的CRC算法来得到这个值,并将它추가到消息的尾部。
5. 보내기并대기
完成消息后,通过适当的串行通讯인터페이스(如RS-485)보내기它,并대기从设备的响应。响应형식和请求类似,但不包含바이트计数和데이터部分。
嘉
嘉